dodopayments 1.32.0__tar.gz → 1.34.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of dodopayments might be problematic. Click here for more details.
- dodopayments-1.34.1/.release-please-manifest.json +3 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/CHANGELOG.md +36 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/PKG-INFO +55 -3
- {dodopayments-1.32.0 → dodopayments-1.34.1}/README.md +51 -2
- {dodopayments-1.32.0 → dodopayments-1.34.1}/api.md +8 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/pyproject.toml +5 -2
- {dodopayments-1.32.0 → dodopayments-1.34.1}/requirements-dev.lock +31 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/requirements.lock +27 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/__init__.py +2 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_base_client.py +38 -2
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_version.py +1 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/products/products.py +90 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/subscriptions.py +2 -2
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/__init__.py +2 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment.py +3 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment_list_response.py +2 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/product.py +22 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/product_create_params.py +11 -1
- dodopayments-1.34.1/src/dodopayments/types/product_update_files_params.py +11 -0
- dodopayments-1.34.1/src/dodopayments/types/product_update_files_response.py +11 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/product_update_params.py +14 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_change_plan_params.py +1 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/customers/test_customer_portal.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/invoices/test_payments.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/products/test_images.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_addons.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_brands.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_customers.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_discounts.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_disputes.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_license_key_instances.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_license_keys.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_licenses.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_misc.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_payments.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_payouts.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_products.py +106 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_refunds.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_subscriptions.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/test_webhook_events.py +3 -1
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/conftest.py +36 -5
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_client.py +118 -117
- dodopayments-1.32.0/.release-please-manifest.json +0 -3
- {dodopayments-1.32.0 → dodopayments-1.34.1}/.gitignore +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/CONTRIBUTING.md +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/LICENSE +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/SECURITY.md +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/bin/check-release-environment +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/bin/publish-pypi +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/examples/.keep +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/mypy.ini +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/noxfile.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/release-please-config.json +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodo_payments/lib/.keep +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_client.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_compat.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_constants.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_exceptions.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_files.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_models.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_qs.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_resource.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_streaming.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_types.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_logs.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_proxy.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_reflection.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_resources_proxy.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_streams.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_sync.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_transform.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_typing.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/_utils/_utils.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/lib/.keep +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/pagination.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/py.typed +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/addons.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/brands.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/customers/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/customers/customer_portal.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/customers/customers.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/discounts.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/disputes.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/invoices/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/invoices/invoices.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/invoices/payments.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/license_key_instances.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/license_keys.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/licenses.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/misc.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/payments.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/payouts.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/products/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/products/images.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/refunds.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/resources/webhook_events.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_cart_response_item.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_update_images_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/addon_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/attach_existing_customer_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/billing_address.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/billing_address_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_create_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_list_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_retrieve_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_update_images_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/brand_update_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/country_code.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/create_new_customer_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/currency.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_limited_details.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_portal_session.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_request_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customer_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customers/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/customers/customer_portal_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/discount.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/discount_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/discount_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/discount_type.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/discount_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute_list_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute_retrieve_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute_stage.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/dispute_status.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/intent_status.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/invoices/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_activate_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_deactivate_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_duration.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_duration_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_instance.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_instance_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_instance_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_status.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_key_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_validate_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/license_validate_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/misc_list_supported_countries_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/one_time_product_cart_item.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/one_time_product_cart_item_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment_create_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payment_retrieve_line_items_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payout_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/payout_list_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/price.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/price_param.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/product_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/product_list_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/products/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/products/image_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/products/image_update_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/refund.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/refund_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/refund_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/refund_status.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_charge_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_charge_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_create_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_create_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_list_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_status.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/subscription_update_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/tax_category.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/time_interval.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/webhook_event.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/src/dodopayments/types/webhook_event_list_params.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/customers/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/invoices/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/api_resources/products/__init__.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/sample_file.txt +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_deepcopy.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_extract_files.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_files.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_models.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_qs.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_required_args.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_response.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_streaming.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_transform.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_utils/test_proxy.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/test_utils/test_typing.py +0 -0
- {dodopayments-1.32.0 → dodopayments-1.34.1}/tests/utils.py +0 -0
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.34.1 (2025-06-21)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v1.34.0...v1.34.1](https://github.com/dodopayments/dodopayments-python/compare/v1.34.0...v1.34.1)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **client:** add support for aiohttp ([ff6068c](https://github.com/dodopayments/dodopayments-python/commit/ff6068c83742a492bd78888312976d79df35c34d))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Documentation
|
|
13
|
+
|
|
14
|
+
* **client:** fix httpx.Timeout documentation reference ([21e4aef](https://github.com/dodopayments/dodopayments-python/commit/21e4aef206be5ab337a2682c0833b2e850df1043))
|
|
15
|
+
|
|
16
|
+
## 1.34.0 (2025-06-18)
|
|
17
|
+
|
|
18
|
+
Full Changelog: [v1.32.0...v1.34.0](https://github.com/dodopayments/dodopayments-python/compare/v1.32.0...v1.34.0)
|
|
19
|
+
|
|
20
|
+
### Features
|
|
21
|
+
|
|
22
|
+
* **api:** updated to version 1.34.0 ([b83c3a8](https://github.com/dodopayments/dodopayments-python/commit/b83c3a87e253e3c74e9160ffe98d9b8fedaa8af1))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* **client:** correctly parse binary response | stream ([4d41dc7](https://github.com/dodopayments/dodopayments-python/commit/4d41dc78632a83e98d91dd763858b61625d75cdc))
|
|
28
|
+
* **tests:** fix: tests which call HTTP endpoints directly with the example parameters ([10cf09b](https://github.com/dodopayments/dodopayments-python/commit/10cf09b005788fff2e01ec99d1ec70f71f09a80d))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Chores
|
|
32
|
+
|
|
33
|
+
* **ci:** enable for pull requests ([ff898a1](https://github.com/dodopayments/dodopayments-python/commit/ff898a143cc3a7ce7ccccfc435f0af9a21f826d8))
|
|
34
|
+
* **internal:** update conftest.py ([c0c8eef](https://github.com/dodopayments/dodopayments-python/commit/c0c8eefc8e397aeb0933476ffd8b48c7ab9c0c72))
|
|
35
|
+
* **readme:** update badges ([6b1593c](https://github.com/dodopayments/dodopayments-python/commit/6b1593c2fe586d7fbabdeac3c7683fcad6256f63))
|
|
36
|
+
* **tests:** add tests for httpx client instantiation & proxies ([c7b0949](https://github.com/dodopayments/dodopayments-python/commit/c7b09497f1fe1f83bbd5a259174276a57ab7fafa))
|
|
37
|
+
* **tests:** run tests in parallel ([d46598b](https://github.com/dodopayments/dodopayments-python/commit/d46598b3cef4df023e692e84cb9265b7d9c8f22a))
|
|
38
|
+
|
|
3
39
|
## 1.32.0 (2025-06-09)
|
|
4
40
|
|
|
5
41
|
Full Changelog: [v1.30.2...v1.32.0](https://github.com/dodopayments/dodopayments-python/compare/v1.30.2...v1.32.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dodopayments
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.34.1
|
|
4
4
|
Summary: The official Python library for the Dodo Payments API
|
|
5
5
|
Project-URL: Homepage, https://github.com/dodopayments/dodopayments-python
|
|
6
6
|
Project-URL: Repository, https://github.com/dodopayments/dodopayments-python
|
|
@@ -27,11 +27,14 @@ Requires-Dist: httpx<1,>=0.23.0
|
|
|
27
27
|
Requires-Dist: pydantic<3,>=1.9.0
|
|
28
28
|
Requires-Dist: sniffio
|
|
29
29
|
Requires-Dist: typing-extensions<5,>=4.10
|
|
30
|
+
Provides-Extra: aiohttp
|
|
31
|
+
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
32
|
+
Requires-Dist: httpx-aiohttp>=0.1.6; extra == 'aiohttp'
|
|
30
33
|
Description-Content-Type: text/markdown
|
|
31
34
|
|
|
32
35
|
# Dodo Payments Python API library
|
|
33
36
|
|
|
34
|
-
[](https://pypi.org/project/dodopayments/)
|
|
37
|
+
[>)](https://pypi.org/project/dodopayments/)
|
|
35
38
|
|
|
36
39
|
The [Dodo Payments](https://dodopayments.com) Python library provides convenient access to the Dodo Payments REST API from any Python 3.8+
|
|
37
40
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -129,6 +132,55 @@ asyncio.run(main())
|
|
|
129
132
|
|
|
130
133
|
Functionality between the synchronous and asynchronous clients is otherwise identical.
|
|
131
134
|
|
|
135
|
+
### With aiohttp
|
|
136
|
+
|
|
137
|
+
By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
|
|
138
|
+
|
|
139
|
+
You can enable this by installing `aiohttp`:
|
|
140
|
+
|
|
141
|
+
```sh
|
|
142
|
+
# install from PyPI
|
|
143
|
+
pip install dodopayments[aiohttp]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
147
|
+
|
|
148
|
+
```python
|
|
149
|
+
import os
|
|
150
|
+
import asyncio
|
|
151
|
+
from dodopayments import DefaultAioHttpClient
|
|
152
|
+
from dodopayments import AsyncDodoPayments
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
async def main() -> None:
|
|
156
|
+
async with AsyncDodoPayments(
|
|
157
|
+
bearer_token=os.environ.get(
|
|
158
|
+
"DODO_PAYMENTS_API_KEY"
|
|
159
|
+
), # This is the default and can be omitted
|
|
160
|
+
http_client=DefaultAioHttpClient(),
|
|
161
|
+
) as client:
|
|
162
|
+
payment = await client.payments.create(
|
|
163
|
+
billing={
|
|
164
|
+
"city": "city",
|
|
165
|
+
"country": "AF",
|
|
166
|
+
"state": "state",
|
|
167
|
+
"street": "street",
|
|
168
|
+
"zipcode": "zipcode",
|
|
169
|
+
},
|
|
170
|
+
customer={"customer_id": "customer_id"},
|
|
171
|
+
product_cart=[
|
|
172
|
+
{
|
|
173
|
+
"product_id": "product_id",
|
|
174
|
+
"quantity": 0,
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
)
|
|
178
|
+
print(payment.payment_id)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
asyncio.run(main())
|
|
182
|
+
```
|
|
183
|
+
|
|
132
184
|
## Using types
|
|
133
185
|
|
|
134
186
|
Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
|
|
@@ -322,7 +374,7 @@ client.with_options(max_retries=5).payments.create(
|
|
|
322
374
|
### Timeouts
|
|
323
375
|
|
|
324
376
|
By default requests time out after 1 minute. You can configure this with a `timeout` option,
|
|
325
|
-
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
|
377
|
+
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
|
|
326
378
|
|
|
327
379
|
```python
|
|
328
380
|
from dodopayments import DodoPayments
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Dodo Payments Python API library
|
|
2
2
|
|
|
3
|
-
[](https://pypi.org/project/dodopayments/)
|
|
3
|
+
[>)](https://pypi.org/project/dodopayments/)
|
|
4
4
|
|
|
5
5
|
The [Dodo Payments](https://dodopayments.com) Python library provides convenient access to the Dodo Payments REST API from any Python 3.8+
|
|
6
6
|
application. The library includes type definitions for all request params and response fields,
|
|
@@ -98,6 +98,55 @@ asyncio.run(main())
|
|
|
98
98
|
|
|
99
99
|
Functionality between the synchronous and asynchronous clients is otherwise identical.
|
|
100
100
|
|
|
101
|
+
### With aiohttp
|
|
102
|
+
|
|
103
|
+
By default, the async client uses `httpx` for HTTP requests. However, for improved concurrency performance you may also use `aiohttp` as the HTTP backend.
|
|
104
|
+
|
|
105
|
+
You can enable this by installing `aiohttp`:
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
# install from PyPI
|
|
109
|
+
pip install dodopayments[aiohttp]
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
import os
|
|
116
|
+
import asyncio
|
|
117
|
+
from dodopayments import DefaultAioHttpClient
|
|
118
|
+
from dodopayments import AsyncDodoPayments
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
async def main() -> None:
|
|
122
|
+
async with AsyncDodoPayments(
|
|
123
|
+
bearer_token=os.environ.get(
|
|
124
|
+
"DODO_PAYMENTS_API_KEY"
|
|
125
|
+
), # This is the default and can be omitted
|
|
126
|
+
http_client=DefaultAioHttpClient(),
|
|
127
|
+
) as client:
|
|
128
|
+
payment = await client.payments.create(
|
|
129
|
+
billing={
|
|
130
|
+
"city": "city",
|
|
131
|
+
"country": "AF",
|
|
132
|
+
"state": "state",
|
|
133
|
+
"street": "street",
|
|
134
|
+
"zipcode": "zipcode",
|
|
135
|
+
},
|
|
136
|
+
customer={"customer_id": "customer_id"},
|
|
137
|
+
product_cart=[
|
|
138
|
+
{
|
|
139
|
+
"product_id": "product_id",
|
|
140
|
+
"quantity": 0,
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
)
|
|
144
|
+
print(payment.payment_id)
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
asyncio.run(main())
|
|
148
|
+
```
|
|
149
|
+
|
|
101
150
|
## Using types
|
|
102
151
|
|
|
103
152
|
Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typing.html#typing.TypedDict). Responses are [Pydantic models](https://docs.pydantic.dev) which also provide helper methods for things like:
|
|
@@ -291,7 +340,7 @@ client.with_options(max_retries=5).payments.create(
|
|
|
291
340
|
### Timeouts
|
|
292
341
|
|
|
293
342
|
By default requests time out after 1 minute. You can configure this with a `timeout` option,
|
|
294
|
-
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
|
343
|
+
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/timeouts/#fine-tuning-the-configuration) object:
|
|
295
344
|
|
|
296
345
|
```python
|
|
297
346
|
from dodopayments import DodoPayments
|
|
@@ -184,7 +184,13 @@ Methods:
|
|
|
184
184
|
Types:
|
|
185
185
|
|
|
186
186
|
```python
|
|
187
|
-
from dodopayments.types import
|
|
187
|
+
from dodopayments.types import (
|
|
188
|
+
LicenseKeyDuration,
|
|
189
|
+
Price,
|
|
190
|
+
Product,
|
|
191
|
+
ProductListResponse,
|
|
192
|
+
ProductUpdateFilesResponse,
|
|
193
|
+
)
|
|
188
194
|
```
|
|
189
195
|
|
|
190
196
|
Methods:
|
|
@@ -195,6 +201,7 @@ Methods:
|
|
|
195
201
|
- <code title="get /products">client.products.<a href="./src/dodopayments/resources/products/products.py">list</a>(\*\*<a href="src/dodopayments/types/product_list_params.py">params</a>) -> <a href="./src/dodopayments/types/product_list_response.py">SyncDefaultPageNumberPagination[ProductListResponse]</a></code>
|
|
196
202
|
- <code title="delete /products/{id}">client.products.<a href="./src/dodopayments/resources/products/products.py">delete</a>(id) -> None</code>
|
|
197
203
|
- <code title="post /products/{id}/unarchive">client.products.<a href="./src/dodopayments/resources/products/products.py">unarchive</a>(id) -> None</code>
|
|
204
|
+
- <code title="put /products/{id}/files">client.products.<a href="./src/dodopayments/resources/products/products.py">update_files</a>(id, \*\*<a href="src/dodopayments/types/product_update_files_params.py">params</a>) -> <a href="./src/dodopayments/types/product_update_files_response.py">ProductUpdateFilesResponse</a></code>
|
|
198
205
|
|
|
199
206
|
## Images
|
|
200
207
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dodopayments"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.34.1"
|
|
4
4
|
description = "The official Python library for the Dodo Payments API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -37,6 +37,8 @@ classifiers = [
|
|
|
37
37
|
Homepage = "https://github.com/dodopayments/dodopayments-python"
|
|
38
38
|
Repository = "https://github.com/dodopayments/dodopayments-python"
|
|
39
39
|
|
|
40
|
+
[project.optional-dependencies]
|
|
41
|
+
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.6"]
|
|
40
42
|
|
|
41
43
|
[tool.rye]
|
|
42
44
|
managed = true
|
|
@@ -54,6 +56,7 @@ dev-dependencies = [
|
|
|
54
56
|
"importlib-metadata>=6.7.0",
|
|
55
57
|
"rich>=13.7.1",
|
|
56
58
|
"nest_asyncio==1.6.0",
|
|
59
|
+
"pytest-xdist>=3.6.1",
|
|
57
60
|
]
|
|
58
61
|
|
|
59
62
|
[tool.rye.scripts]
|
|
@@ -125,7 +128,7 @@ replacement = '[\1](https://github.com/dodopayments/dodopayments-python/tree/mai
|
|
|
125
128
|
|
|
126
129
|
[tool.pytest.ini_options]
|
|
127
130
|
testpaths = ["tests"]
|
|
128
|
-
addopts = "--tb=short"
|
|
131
|
+
addopts = "--tb=short -n auto"
|
|
129
132
|
xfail_strict = true
|
|
130
133
|
asyncio_mode = "auto"
|
|
131
134
|
asyncio_default_fixture_loop_scope = "session"
|
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
# universal: false
|
|
11
11
|
|
|
12
12
|
-e file:.
|
|
13
|
+
aiohappyeyeballs==2.6.1
|
|
14
|
+
# via aiohttp
|
|
15
|
+
aiohttp==3.12.8
|
|
16
|
+
# via dodopayments
|
|
17
|
+
# via httpx-aiohttp
|
|
18
|
+
aiosignal==1.3.2
|
|
19
|
+
# via aiohttp
|
|
13
20
|
annotated-types==0.6.0
|
|
14
21
|
# via pydantic
|
|
15
22
|
anyio==4.4.0
|
|
@@ -17,6 +24,10 @@ anyio==4.4.0
|
|
|
17
24
|
# via httpx
|
|
18
25
|
argcomplete==3.1.2
|
|
19
26
|
# via nox
|
|
27
|
+
async-timeout==5.0.1
|
|
28
|
+
# via aiohttp
|
|
29
|
+
attrs==25.3.0
|
|
30
|
+
# via aiohttp
|
|
20
31
|
certifi==2023.7.22
|
|
21
32
|
# via httpcore
|
|
22
33
|
# via httpx
|
|
@@ -30,18 +41,27 @@ distro==1.8.0
|
|
|
30
41
|
exceptiongroup==1.2.2
|
|
31
42
|
# via anyio
|
|
32
43
|
# via pytest
|
|
44
|
+
execnet==2.1.1
|
|
45
|
+
# via pytest-xdist
|
|
33
46
|
filelock==3.12.4
|
|
34
47
|
# via virtualenv
|
|
48
|
+
frozenlist==1.6.2
|
|
49
|
+
# via aiohttp
|
|
50
|
+
# via aiosignal
|
|
35
51
|
h11==0.14.0
|
|
36
52
|
# via httpcore
|
|
37
53
|
httpcore==1.0.2
|
|
38
54
|
# via httpx
|
|
39
55
|
httpx==0.28.1
|
|
40
56
|
# via dodopayments
|
|
57
|
+
# via httpx-aiohttp
|
|
41
58
|
# via respx
|
|
59
|
+
httpx-aiohttp==0.1.6
|
|
60
|
+
# via dodopayments
|
|
42
61
|
idna==3.4
|
|
43
62
|
# via anyio
|
|
44
63
|
# via httpx
|
|
64
|
+
# via yarl
|
|
45
65
|
importlib-metadata==7.0.0
|
|
46
66
|
iniconfig==2.0.0
|
|
47
67
|
# via pytest
|
|
@@ -49,6 +69,9 @@ markdown-it-py==3.0.0
|
|
|
49
69
|
# via rich
|
|
50
70
|
mdurl==0.1.2
|
|
51
71
|
# via markdown-it-py
|
|
72
|
+
multidict==6.4.4
|
|
73
|
+
# via aiohttp
|
|
74
|
+
# via yarl
|
|
52
75
|
mypy==1.14.1
|
|
53
76
|
mypy-extensions==1.0.0
|
|
54
77
|
# via mypy
|
|
@@ -63,6 +86,9 @@ platformdirs==3.11.0
|
|
|
63
86
|
# via virtualenv
|
|
64
87
|
pluggy==1.5.0
|
|
65
88
|
# via pytest
|
|
89
|
+
propcache==0.3.1
|
|
90
|
+
# via aiohttp
|
|
91
|
+
# via yarl
|
|
66
92
|
pydantic==2.10.3
|
|
67
93
|
# via dodopayments
|
|
68
94
|
pydantic-core==2.27.1
|
|
@@ -72,7 +98,9 @@ pygments==2.18.0
|
|
|
72
98
|
pyright==1.1.399
|
|
73
99
|
pytest==8.3.3
|
|
74
100
|
# via pytest-asyncio
|
|
101
|
+
# via pytest-xdist
|
|
75
102
|
pytest-asyncio==0.24.0
|
|
103
|
+
pytest-xdist==3.7.0
|
|
76
104
|
python-dateutil==2.8.2
|
|
77
105
|
# via time-machine
|
|
78
106
|
pytz==2023.3.post1
|
|
@@ -94,11 +122,14 @@ tomli==2.0.2
|
|
|
94
122
|
typing-extensions==4.12.2
|
|
95
123
|
# via anyio
|
|
96
124
|
# via dodopayments
|
|
125
|
+
# via multidict
|
|
97
126
|
# via mypy
|
|
98
127
|
# via pydantic
|
|
99
128
|
# via pydantic-core
|
|
100
129
|
# via pyright
|
|
101
130
|
virtualenv==20.24.5
|
|
102
131
|
# via nox
|
|
132
|
+
yarl==1.20.0
|
|
133
|
+
# via aiohttp
|
|
103
134
|
zipp==3.17.0
|
|
104
135
|
# via importlib-metadata
|
|
@@ -10,11 +10,22 @@
|
|
|
10
10
|
# universal: false
|
|
11
11
|
|
|
12
12
|
-e file:.
|
|
13
|
+
aiohappyeyeballs==2.6.1
|
|
14
|
+
# via aiohttp
|
|
15
|
+
aiohttp==3.12.8
|
|
16
|
+
# via dodopayments
|
|
17
|
+
# via httpx-aiohttp
|
|
18
|
+
aiosignal==1.3.2
|
|
19
|
+
# via aiohttp
|
|
13
20
|
annotated-types==0.6.0
|
|
14
21
|
# via pydantic
|
|
15
22
|
anyio==4.4.0
|
|
16
23
|
# via dodopayments
|
|
17
24
|
# via httpx
|
|
25
|
+
async-timeout==5.0.1
|
|
26
|
+
# via aiohttp
|
|
27
|
+
attrs==25.3.0
|
|
28
|
+
# via aiohttp
|
|
18
29
|
certifi==2023.7.22
|
|
19
30
|
# via httpcore
|
|
20
31
|
# via httpx
|
|
@@ -22,15 +33,28 @@ distro==1.8.0
|
|
|
22
33
|
# via dodopayments
|
|
23
34
|
exceptiongroup==1.2.2
|
|
24
35
|
# via anyio
|
|
36
|
+
frozenlist==1.6.2
|
|
37
|
+
# via aiohttp
|
|
38
|
+
# via aiosignal
|
|
25
39
|
h11==0.14.0
|
|
26
40
|
# via httpcore
|
|
27
41
|
httpcore==1.0.2
|
|
28
42
|
# via httpx
|
|
29
43
|
httpx==0.28.1
|
|
30
44
|
# via dodopayments
|
|
45
|
+
# via httpx-aiohttp
|
|
46
|
+
httpx-aiohttp==0.1.6
|
|
47
|
+
# via dodopayments
|
|
31
48
|
idna==3.4
|
|
32
49
|
# via anyio
|
|
33
50
|
# via httpx
|
|
51
|
+
# via yarl
|
|
52
|
+
multidict==6.4.4
|
|
53
|
+
# via aiohttp
|
|
54
|
+
# via yarl
|
|
55
|
+
propcache==0.3.1
|
|
56
|
+
# via aiohttp
|
|
57
|
+
# via yarl
|
|
34
58
|
pydantic==2.10.3
|
|
35
59
|
# via dodopayments
|
|
36
60
|
pydantic-core==2.27.1
|
|
@@ -41,5 +65,8 @@ sniffio==1.3.0
|
|
|
41
65
|
typing-extensions==4.12.2
|
|
42
66
|
# via anyio
|
|
43
67
|
# via dodopayments
|
|
68
|
+
# via multidict
|
|
44
69
|
# via pydantic
|
|
45
70
|
# via pydantic-core
|
|
71
|
+
yarl==1.20.0
|
|
72
|
+
# via aiohttp
|
|
@@ -37,7 +37,7 @@ from ._exceptions import (
|
|
|
37
37
|
UnprocessableEntityError,
|
|
38
38
|
APIResponseValidationError,
|
|
39
39
|
)
|
|
40
|
-
from ._base_client import DefaultHttpxClient, DefaultAsyncHttpxClient
|
|
40
|
+
from ._base_client import DefaultHttpxClient, DefaultAioHttpClient, DefaultAsyncHttpxClient
|
|
41
41
|
from ._utils._logs import setup_logging as _setup_logging
|
|
42
42
|
|
|
43
43
|
__all__ = [
|
|
@@ -80,6 +80,7 @@ __all__ = [
|
|
|
80
80
|
"DEFAULT_CONNECTION_LIMITS",
|
|
81
81
|
"DefaultHttpxClient",
|
|
82
82
|
"DefaultAsyncHttpxClient",
|
|
83
|
+
"DefaultAioHttpClient",
|
|
83
84
|
]
|
|
84
85
|
|
|
85
86
|
if not _t.TYPE_CHECKING:
|
|
@@ -1071,7 +1071,14 @@ class SyncAPIClient(BaseClient[httpx.Client, Stream[Any]]):
|
|
|
1071
1071
|
) -> ResponseT:
|
|
1072
1072
|
origin = get_origin(cast_to) or cast_to
|
|
1073
1073
|
|
|
1074
|
-
if
|
|
1074
|
+
if (
|
|
1075
|
+
inspect.isclass(origin)
|
|
1076
|
+
and issubclass(origin, BaseAPIResponse)
|
|
1077
|
+
# we only want to actually return the custom BaseAPIResponse class if we're
|
|
1078
|
+
# returning the raw response, or if we're not streaming SSE, as if we're streaming
|
|
1079
|
+
# SSE then `cast_to` doesn't actively reflect the type we need to parse into
|
|
1080
|
+
and (not stream or bool(response.request.headers.get(RAW_RESPONSE_HEADER)))
|
|
1081
|
+
):
|
|
1075
1082
|
if not issubclass(origin, APIResponse):
|
|
1076
1083
|
raise TypeError(f"API Response types must subclass {APIResponse}; Received {origin}")
|
|
1077
1084
|
|
|
@@ -1282,6 +1289,24 @@ class _DefaultAsyncHttpxClient(httpx.AsyncClient):
|
|
|
1282
1289
|
super().__init__(**kwargs)
|
|
1283
1290
|
|
|
1284
1291
|
|
|
1292
|
+
try:
|
|
1293
|
+
import httpx_aiohttp
|
|
1294
|
+
except ImportError:
|
|
1295
|
+
|
|
1296
|
+
class _DefaultAioHttpClient(httpx.AsyncClient):
|
|
1297
|
+
def __init__(self, **_kwargs: Any) -> None:
|
|
1298
|
+
raise RuntimeError("To use the aiohttp client you must have installed the package with the `aiohttp` extra")
|
|
1299
|
+
else:
|
|
1300
|
+
|
|
1301
|
+
class _DefaultAioHttpClient(httpx_aiohttp.HttpxAiohttpClient): # type: ignore
|
|
1302
|
+
def __init__(self, **kwargs: Any) -> None:
|
|
1303
|
+
kwargs.setdefault("timeout", DEFAULT_TIMEOUT)
|
|
1304
|
+
kwargs.setdefault("limits", DEFAULT_CONNECTION_LIMITS)
|
|
1305
|
+
kwargs.setdefault("follow_redirects", True)
|
|
1306
|
+
|
|
1307
|
+
super().__init__(**kwargs)
|
|
1308
|
+
|
|
1309
|
+
|
|
1285
1310
|
if TYPE_CHECKING:
|
|
1286
1311
|
DefaultAsyncHttpxClient = httpx.AsyncClient
|
|
1287
1312
|
"""An alias to `httpx.AsyncClient` that provides the same defaults that this SDK
|
|
@@ -1290,8 +1315,12 @@ if TYPE_CHECKING:
|
|
|
1290
1315
|
This is useful because overriding the `http_client` with your own instance of
|
|
1291
1316
|
`httpx.AsyncClient` will result in httpx's defaults being used, not ours.
|
|
1292
1317
|
"""
|
|
1318
|
+
|
|
1319
|
+
DefaultAioHttpClient = httpx.AsyncClient
|
|
1320
|
+
"""An alias to `httpx.AsyncClient` that changes the default HTTP transport to `aiohttp`."""
|
|
1293
1321
|
else:
|
|
1294
1322
|
DefaultAsyncHttpxClient = _DefaultAsyncHttpxClient
|
|
1323
|
+
DefaultAioHttpClient = _DefaultAioHttpClient
|
|
1295
1324
|
|
|
1296
1325
|
|
|
1297
1326
|
class AsyncHttpxClientWrapper(DefaultAsyncHttpxClient):
|
|
@@ -1574,7 +1603,14 @@ class AsyncAPIClient(BaseClient[httpx.AsyncClient, AsyncStream[Any]]):
|
|
|
1574
1603
|
) -> ResponseT:
|
|
1575
1604
|
origin = get_origin(cast_to) or cast_to
|
|
1576
1605
|
|
|
1577
|
-
if
|
|
1606
|
+
if (
|
|
1607
|
+
inspect.isclass(origin)
|
|
1608
|
+
and issubclass(origin, BaseAPIResponse)
|
|
1609
|
+
# we only want to actually return the custom BaseAPIResponse class if we're
|
|
1610
|
+
# returning the raw response, or if we're not streaming SSE, as if we're streaming
|
|
1611
|
+
# SSE then `cast_to` doesn't actively reflect the type we need to parse into
|
|
1612
|
+
and (not stream or bool(response.request.headers.get(RAW_RESPONSE_HEADER)))
|
|
1613
|
+
):
|
|
1578
1614
|
if not issubclass(origin, AsyncAPIResponse):
|
|
1579
1615
|
raise TypeError(f"API Response types must subclass {AsyncAPIResponse}; Received {origin}")
|
|
1580
1616
|
|