Skip to content

Commit a9d9d93

Browse files
stainless-app[bot]stainless-bot
authored andcommitted
feat(api): manual updates (#357)
1 parent 59e41c2 commit a9d9d93

File tree

252 files changed

+64
-2
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

252 files changed

+64
-2
lines changed

.devcontainer/Dockerfile

100644100755
File mode changed.

.devcontainer/devcontainer.json

100644100755
File mode changed.

.github/workflows/ci.yml

100644100755
File mode changed.

.github/workflows/create_asana_task.yaml

100644100755
File mode changed.

.github/workflows/publish-pypi.yml

100644100755
File mode changed.

.github/workflows/release-doctor.yml

100644100755
File mode changed.

.gitignore

100644100755
File mode changed.

.python-version

100644100755
File mode changed.

.release-please-manifest.json

100644100755
File mode changed.

.stats.yml

100644100755
File mode changed.

Brewfile

100644100755
File mode changed.

CHANGELOG.md

100644100755
File mode changed.

CONTRIBUTING.md

100644100755
File mode changed.

LICENSE

100644100755
File mode changed.

README.md

100644100755
File mode changed.

SECURITY.md

100644100755
File mode changed.

api.md

100644100755
File mode changed.

bin/check-release-environment

100644100755
File mode changed.

bin/publish-pypi

100644100755
File mode changed.

codegen.log

100644100755
File mode changed.

examples/.keep

100644100755
File mode changed.

mypy.ini

100644100755
File mode changed.

noxfile.py

100644100755
File mode changed.

pyproject.toml

100644100755
File mode changed.

release-please-config.json

100644100755
File mode changed.

requirements-dev.lock

100644100755
File mode changed.

requirements.lock

100644100755
File mode changed.

scripts/test

+3
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,6 @@ fi
5454

5555
echo "==> Running tests"
5656
rye run pytest "$@"
57+
58+
echo "==> Running Pydantic v1 tests"
59+
rye run nox -s test-pydantic-v1 -- "$@"

scripts/utils/ruffen-docs.py

100644100755
File mode changed.

src/orb/__init__.py

100644100755
File mode changed.

src/orb/_base_client.py

100644100755
File mode changed.

src/orb/_client.py

100644100755
File mode changed.

src/orb/_compat.py

100644100755
File mode changed.

src/orb/_constants.py

100644100755
File mode changed.

src/orb/_exceptions.py

100644100755
File mode changed.

src/orb/_files.py

100644100755
File mode changed.

src/orb/_legacy_response.py

100644100755
File mode changed.

src/orb/_models.py

100644100755
+2
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,8 @@ def is_basemodel(type_: type) -> bool:
380380

381381
def is_basemodel_type(type_: type) -> TypeGuard[type[BaseModel] | type[GenericModel]]:
382382
origin = get_origin(type_) or type_
383+
if not inspect.isclass(origin):
384+
return False
383385
return issubclass(origin, BaseModel) or issubclass(origin, GenericModel)
384386

385387

src/orb/_qs.py

100644100755
File mode changed.

src/orb/_resource.py

100644100755
File mode changed.

src/orb/_response.py

100644100755
File mode changed.

src/orb/_streaming.py

100644100755
File mode changed.

src/orb/_types.py

100644100755
File mode changed.

src/orb/_utils/__init__.py

100644100755
File mode changed.

src/orb/_utils/_logs.py

100644100755
File mode changed.

src/orb/_utils/_proxy.py

100644100755
File mode changed.

src/orb/_utils/_reflection.py

100644100755
File mode changed.

src/orb/_utils/_streams.py

100644100755
File mode changed.

src/orb/_utils/_sync.py

100644100755
File mode changed.

src/orb/_utils/_transform.py

100644100755
File mode changed.

src/orb/_utils/_typing.py

100644100755
File mode changed.

src/orb/_utils/_utils.py

100644100755
File mode changed.

src/orb/_version.py

100644100755
File mode changed.

src/orb/lib/.keep

100644100755
File mode changed.

src/orb/pagination.py

100644100755
File mode changed.

src/orb/py.typed

100644100755
File mode changed.

src/orb/resources/__init__.py

100644100755
File mode changed.

src/orb/resources/alerts.py

100644100755
File mode changed.

src/orb/resources/coupons/__init__.py

100644100755
File mode changed.

src/orb/resources/coupons/coupons.py

100644100755
File mode changed.

src/orb/resources/coupons/subscriptions.py

100644100755
File mode changed.

src/orb/resources/credit_notes.py

100644100755
File mode changed.

src/orb/resources/customers/__init__.py

100644100755
File mode changed.

src/orb/resources/customers/balance_transactions.py

100644100755
File mode changed.

src/orb/resources/customers/costs.py

100644100755
File mode changed.

src/orb/resources/customers/credits/__init__.py

100644100755
File mode changed.

src/orb/resources/customers/credits/credits.py

100644100755
File mode changed.

src/orb/resources/customers/credits/ledger.py

100644100755
File mode changed.

src/orb/resources/customers/credits/top_ups.py

100644100755
File mode changed.

src/orb/resources/customers/customers.py

100644100755
File mode changed.

src/orb/resources/events/__init__.py

100644100755
File mode changed.

src/orb/resources/events/backfills.py

100644100755
File mode changed.

src/orb/resources/events/events.py

100644100755
File mode changed.

src/orb/resources/invoice_line_items.py

100644100755
File mode changed.

src/orb/resources/invoices.py

100644100755
File mode changed.

src/orb/resources/items.py

100644100755
File mode changed.

src/orb/resources/metrics.py

100644100755
File mode changed.

src/orb/resources/plans/__init__.py

100644100755
File mode changed.

src/orb/resources/plans/external_plan_id.py

100644100755
File mode changed.

src/orb/resources/plans/plans.py

100644100755
File mode changed.

src/orb/resources/prices/__init__.py

100644100755
File mode changed.

src/orb/resources/prices/external_price_id.py

100644100755
File mode changed.

src/orb/resources/prices/prices.py

100644100755
File mode changed.

src/orb/resources/subscriptions.py

100644100755
File mode changed.

src/orb/resources/top_level.py

100644100755
File mode changed.

src/orb/types/__init__.py

100644100755
File mode changed.

src/orb/types/alert.py

100644100755
File mode changed.

src/orb/types/alert_create_for_customer_params.py

100644100755
File mode changed.

src/orb/types/alert_create_for_external_customer_params.py

100644100755
File mode changed.

src/orb/types/alert_create_for_subscription_params.py

100644100755
File mode changed.

src/orb/types/alert_list_params.py

100644100755
File mode changed.

src/orb/types/alert_update_params.py

100644100755
File mode changed.

src/orb/types/billable_metric.py

100644100755
File mode changed.

src/orb/types/coupon.py

100644100755
File mode changed.

src/orb/types/coupon_create_params.py

100644100755
File mode changed.

src/orb/types/coupon_list_params.py

100644100755
File mode changed.

src/orb/types/coupons/__init__.py

100644100755
File mode changed.

src/orb/types/coupons/subscription_list_params.py

100644100755
File mode changed.

src/orb/types/credit_note.py

100644100755
File mode changed.

src/orb/types/credit_note_list_params.py

100644100755
File mode changed.

src/orb/types/customer.py

100644100755
File mode changed.

src/orb/types/customer_create_params.py

100644100755
File mode changed.

src/orb/types/customer_list_params.py

100644100755
File mode changed.

src/orb/types/customer_update_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customer_update_params.py

100644100755
File mode changed.

src/orb/types/customers/__init__.py

100644100755
File mode changed.

src/orb/types/customers/balance_transaction_create_params.py

100644100755
File mode changed.

src/orb/types/customers/balance_transaction_create_response.py

100644100755
File mode changed.

src/orb/types/customers/balance_transaction_list_params.py

100644100755
File mode changed.

src/orb/types/customers/balance_transaction_list_response.py

100644100755
File mode changed.

src/orb/types/customers/cost_list_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/cost_list_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/cost_list_params.py

100644100755
File mode changed.

src/orb/types/customers/cost_list_response.py

100644100755
File mode changed.

src/orb/types/customers/credit_list_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/credit_list_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/credit_list_params.py

100644100755
File mode changed.

src/orb/types/customers/credit_list_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/__init__.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_create_entry_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_create_entry_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_create_entry_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_create_entry_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_list_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_list_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_list_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/ledger_list_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_create_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_create_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_create_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_create_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_list_by_external_id_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_list_by_external_id_response.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_list_params.py

100644100755
File mode changed.

src/orb/types/customers/credits/top_up_list_response.py

100644100755
File mode changed.

src/orb/types/evaluate_price_group.py

100644100755
File mode changed.

src/orb/types/event_deprecate_response.py

100644100755
File mode changed.

src/orb/types/event_ingest_params.py

100644100755
File mode changed.

src/orb/types/event_ingest_response.py

100644100755
File mode changed.

src/orb/types/event_search_params.py

100644100755
File mode changed.

src/orb/types/event_search_response.py

100644100755
File mode changed.

src/orb/types/event_update_params.py

100644100755
File mode changed.

src/orb/types/event_update_response.py

100644100755
File mode changed.

src/orb/types/events/__init__.py

100644100755
File mode changed.

src/orb/types/events/backfill_close_response.py

100644100755
File mode changed.

src/orb/types/events/backfill_create_params.py

100644100755
File mode changed.

src/orb/types/events/backfill_create_response.py

100644100755
File mode changed.

src/orb/types/events/backfill_fetch_response.py

100644100755
File mode changed.

src/orb/types/events/backfill_list_params.py

100644100755
File mode changed.

src/orb/types/events/backfill_list_response.py

100644100755
File mode changed.

src/orb/types/events/backfill_revert_response.py

100644100755
File mode changed.

src/orb/types/invoice.py

100644100755
File mode changed.

src/orb/types/invoice_create_params.py

100644100755
File mode changed.

src/orb/types/invoice_fetch_upcoming_params.py

100644100755
File mode changed.

src/orb/types/invoice_fetch_upcoming_response.py

100644100755
File mode changed.

src/orb/types/invoice_line_item_create_params.py

100644100755
File mode changed.

src/orb/types/invoice_line_item_create_response.py

100644100755
File mode changed.

src/orb/types/invoice_list_params.py

100644100755
File mode changed.

src/orb/types/invoice_mark_paid_params.py

100644100755
File mode changed.

src/orb/types/invoice_update_params.py

100644100755
File mode changed.

src/orb/types/item.py

100644100755
File mode changed.

src/orb/types/item_create_params.py

100644100755
File mode changed.

src/orb/types/item_list_params.py

100644100755
File mode changed.

src/orb/types/item_update_params.py

100644100755
File mode changed.

src/orb/types/metric_create_params.py

100644100755
File mode changed.

src/orb/types/metric_list_params.py

100644100755
File mode changed.

src/orb/types/metric_update_params.py

100644100755
File mode changed.

src/orb/types/plan.py

100644100755
File mode changed.

src/orb/types/plan_create_params.py

100644100755
File mode changed.

src/orb/types/plan_list_params.py

100644100755
File mode changed.

src/orb/types/plan_update_params.py

100644100755
File mode changed.

src/orb/types/plans/__init__.py

100644100755
File mode changed.

src/orb/types/plans/external_plan_id_update_params.py

100644100755
File mode changed.

src/orb/types/price.py

100644100755
File mode changed.

src/orb/types/price_create_params.py

100644100755
File mode changed.

src/orb/types/price_evaluate_params.py

100644100755
File mode changed.

src/orb/types/price_evaluate_response.py

100644100755
File mode changed.

src/orb/types/price_list_params.py

100644100755
File mode changed.

src/orb/types/price_update_params.py

100644100755
File mode changed.

src/orb/types/prices/__init__.py

100644100755
File mode changed.

src/orb/types/prices/external_price_id_update_params.py

100644100755
File mode changed.

src/orb/types/shared/__init__.py

100644100755
File mode changed.

src/orb/types/shared/billing_cycle_relative_date.py

100644100755
File mode changed.

src/orb/types/shared/discount.py

100644100755
File mode changed.

src/orb/types/shared/pagination_metadata.py

100644100755
File mode changed.

src/orb/types/shared_params/__init__.py

100644100755
File mode changed.

src/orb/types/shared_params/billing_cycle_relative_date.py

100644100755
File mode changed.

src/orb/types/shared_params/discount.py

100644100755
File mode changed.

src/orb/types/subscription.py

100644100755
File mode changed.

src/orb/types/subscription_cancel_params.py

100644100755
File mode changed.

src/orb/types/subscription_create_params.py

100644100755
File mode changed.

src/orb/types/subscription_fetch_costs_params.py

100644100755
File mode changed.

src/orb/types/subscription_fetch_costs_response.py

100644100755
File mode changed.

src/orb/types/subscription_fetch_schedule_params.py

100644100755
File mode changed.

src/orb/types/subscription_fetch_schedule_response.py

100644100755
File mode changed.

src/orb/types/subscription_fetch_usage_params.py

100644100755
File mode changed.

src/orb/types/subscription_list_params.py

100644100755
File mode changed.

src/orb/types/subscription_price_intervals_params.py

100644100755
File mode changed.

src/orb/types/subscription_schedule_plan_change_params.py

100644100755
File mode changed.

src/orb/types/subscription_trigger_phase_params.py

100644100755
File mode changed.

src/orb/types/subscription_unschedule_fixed_fee_quantity_updates_params.py

100644100755
File mode changed.

src/orb/types/subscription_update_fixed_fee_quantity_params.py

100644100755
File mode changed.

src/orb/types/subscription_update_params.py

100644100755
File mode changed.

src/orb/types/subscription_usage.py

100644100755
File mode changed.

src/orb/types/subscriptions.py

100644100755
File mode changed.

src/orb/types/top_level_ping_response.py

100644100755
File mode changed.

tests/__init__.py

100644100755
File mode changed.

tests/api_resources/__init__.py

100644100755
File mode changed.

tests/api_resources/coupons/__init__.py

100644100755
File mode changed.

tests/api_resources/coupons/test_subscriptions.py

100644100755
File mode changed.

tests/api_resources/customers/__init__.py

100644100755
File mode changed.

tests/api_resources/customers/credits/__init__.py

100644100755
File mode changed.

tests/api_resources/customers/credits/test_ledger.py

100644100755
File mode changed.

tests/api_resources/customers/credits/test_top_ups.py

100644100755
File mode changed.

tests/api_resources/customers/test_balance_transactions.py

100644100755
File mode changed.

tests/api_resources/customers/test_costs.py

100644100755
File mode changed.

tests/api_resources/customers/test_credits.py

100644100755
File mode changed.

tests/api_resources/events/__init__.py

100644100755
File mode changed.

tests/api_resources/events/test_backfills.py

100644100755
File mode changed.

tests/api_resources/plans/__init__.py

100644100755
File mode changed.

tests/api_resources/plans/test_external_plan_id.py

100644100755
File mode changed.

tests/api_resources/prices/__init__.py

100644100755
File mode changed.

tests/api_resources/prices/test_external_price_id.py

100644100755
File mode changed.

tests/api_resources/test_alerts.py

100644100755
File mode changed.

tests/api_resources/test_coupons.py

100644100755
File mode changed.

tests/api_resources/test_credit_notes.py

100644100755
File mode changed.

tests/api_resources/test_customers.py

100644100755
File mode changed.

tests/api_resources/test_events.py

100644100755
File mode changed.

tests/api_resources/test_invoice_line_items.py

100644100755
File mode changed.

tests/api_resources/test_invoices.py

100644100755
File mode changed.

tests/api_resources/test_items.py

100644100755
File mode changed.

tests/api_resources/test_metrics.py

100644100755
File mode changed.

tests/api_resources/test_plans.py

100644100755
File mode changed.

tests/api_resources/test_prices.py

100644100755
File mode changed.

tests/api_resources/test_subscriptions.py

100644100755
File mode changed.

tests/api_resources/test_top_level.py

100644100755
File mode changed.

tests/conftest.py

100644100755
File mode changed.

tests/sample_file.txt

100644100755
File mode changed.

tests/test_client.py

100644100755
File mode changed.

tests/test_deepcopy.py

100644100755
File mode changed.

tests/test_extract_files.py

100644100755
File mode changed.

tests/test_files.py

100644100755
File mode changed.

tests/test_legacy_response.py

100644100755
+21-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
from typing import cast
2+
from typing import Any, Union, cast
33
from typing_extensions import Annotated
44

55
import httpx
@@ -81,3 +81,23 @@ def test_response_parse_annotated_type(client: Orb) -> None:
8181
)
8282
assert obj.foo == "hello!"
8383
assert obj.bar == 2
84+
85+
86+
class OtherModel(pydantic.BaseModel):
87+
a: str
88+
89+
90+
@pytest.mark.parametrize("client", [False], indirect=True) # loose validation
91+
def test_response_parse_expect_model_union_non_json_content(client: Orb) -> None:
92+
response = LegacyAPIResponse(
93+
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
94+
client=client,
95+
stream=False,
96+
stream_cls=None,
97+
cast_to=str,
98+
options=FinalRequestOptions.construct(method="get", url="/foo"),
99+
)
100+
101+
obj = response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
102+
assert isinstance(obj, str)
103+
assert obj == "foo"

tests/test_models.py

100644100755
File mode changed.

tests/test_qs.py

100644100755
File mode changed.

tests/test_required_args.py

100644100755
File mode changed.

tests/test_response.py

100644100755
+38-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
from typing import List, cast
2+
from typing import Any, List, Union, cast
33
from typing_extensions import Annotated
44

55
import httpx
@@ -188,3 +188,40 @@ async def test_async_response_parse_annotated_type(async_client: AsyncOrb) -> No
188188
)
189189
assert obj.foo == "hello!"
190190
assert obj.bar == 2
191+
192+
193+
class OtherModel(BaseModel):
194+
a: str
195+
196+
197+
@pytest.mark.parametrize("client", [False], indirect=True) # loose validation
198+
def test_response_parse_expect_model_union_non_json_content(client: Orb) -> None:
199+
response = APIResponse(
200+
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
201+
client=client,
202+
stream=False,
203+
stream_cls=None,
204+
cast_to=str,
205+
options=FinalRequestOptions.construct(method="get", url="/foo"),
206+
)
207+
208+
obj = response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
209+
assert isinstance(obj, str)
210+
assert obj == "foo"
211+
212+
213+
@pytest.mark.asyncio
214+
@pytest.mark.parametrize("async_client", [False], indirect=True) # loose validation
215+
async def test_async_response_parse_expect_model_union_non_json_content(async_client: AsyncOrb) -> None:
216+
response = AsyncAPIResponse(
217+
raw=httpx.Response(200, content=b"foo", headers={"Content-Type": "application/text"}),
218+
client=async_client,
219+
stream=False,
220+
stream_cls=None,
221+
cast_to=str,
222+
options=FinalRequestOptions.construct(method="get", url="/foo"),
223+
)
224+
225+
obj = await response.parse(to=cast(Any, Union[CustomModel, OtherModel]))
226+
assert isinstance(obj, str)
227+
assert obj == "foo"

tests/test_streaming.py

100644100755
File mode changed.

tests/test_transform.py

100644100755
File mode changed.

tests/test_utils/test_proxy.py

100644100755
File mode changed.

tests/test_utils/test_typing.py

100644100755
File mode changed.

tests/utils.py

100644100755
File mode changed.

0 commit comments

Comments
 (0)