From dc551ae039b55600ca7150bf7b15e1f997a2c246 Mon Sep 17 00:00:00 2001
From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com>
Date: Tue, 12 May 2026 19:46:09 +0000
Subject: [PATCH 1/2] SDK regeneration
---
.fern/metadata.json | 4 +-
poetry.lock | 979 +-------------
reference.md | 953 ++++++++++++-
src/schematic/__init__.py | 156 ++-
src/schematic/base_client.py | 19 +
src/schematic/billing/client.py | 24 +
src/schematic/billing/raw_client.py | 20 +
.../types/count_billing_products_params.py | 5 +
.../types/list_billing_products_params.py | 5 +
src/schematic/checkout/client.py | 41 +
src/schematic/checkout/raw_client.py | 33 +
src/schematic/credits/__init__.py | 6 +
src/schematic/credits/client.py | 109 ++
src/schematic/credits/raw_client.py | 237 ++++
src/schematic/credits/types/__init__.py | 6 +
...count_billing_plan_credit_grants_params.py | 1 +
.../list_billing_plan_credit_grants_params.py | 1 +
.../list_company_credit_balances_params.py | 23 +
.../list_company_credit_balances_response.py | 25 +
src/schematic/events/client.py | 30 +-
src/schematic/events/raw_client.py | 18 +
.../events/types/list_events_params.py | 1 +
src/schematic/features/client.py | 24 +
src/schematic/features/raw_client.py | 20 +
.../features/types/count_features_params.py | 6 +
.../features/types/list_features_params.py | 6 +
src/schematic/insights/__init__.py | 70 +
src/schematic/insights/client.py | 586 ++++++++
src/schematic/insights/raw_client.py | 1200 +++++++++++++++++
src/schematic/insights/types/__init__.py | 68 +
.../insights/types/get_activity_params.py | 23 +
.../insights/types/get_activity_response.py | 25 +
...onment_feature_usage_time_series_params.py | 28 +
...ment_feature_usage_time_series_response.py | 25 +
...ironment_trait_usage_time_series_params.py | 28 +
...onment_trait_usage_time_series_response.py | 25 +
.../insights/types/get_plan_growth_params.py | 23 +
.../types/get_plan_growth_response.py | 25 +
.../insights/types/get_summary_response.py | 24 +
.../types/get_top_features_by_usage_params.py | 26 +
.../get_top_features_by_usage_response.py | 25 +
src/schematic/integrationsapi/__init__.py | 30 +-
src/schematic/integrationsapi/client.py | 451 +++++++
src/schematic/integrationsapi/raw_client.py | 1092 ++++++++++++++-
.../integrationsapi/types/__init__.py | 26 +-
.../types/list_integrations_params.py | 39 +
.../types/list_integrations_response.py | 25 +
.../load_sample_data_set_v_2_response.py | 24 +
.../types/run_integration_response.py | 24 +
.../types/start_data_import_response.py | 24 +
.../types/uninstall_integration_response.py | 24 +
src/schematic/plans/client.py | 32 +
src/schematic/plans/raw_client.py | 28 +
.../plans/types/count_plans_params.py | 5 +
.../plans/types/list_plans_params.py | 5 +
src/schematic/types/__init__.py | 92 ++
.../types/activity_entry_response_data.py | 25 +
.../types/activity_response_response_data.py | 20 +
.../types/api_key_create_response_data.py | 2 +
.../api_key_integration_response_data.py | 23 +
src/schematic/types/api_key_response_data.py | 2 +
.../types/audit_log_list_response_data.py | 2 +
.../types/audit_log_response_data.py | 2 +
.../types/billing_credit_bundle_view.py | 2 +-
src/schematic/types/billing_credit_view.py | 2 +
...billing_plan_credit_grant_response_data.py | 1 +
...ange_subscription_internal_request_body.py | 2 +
.../types/change_subscription_request_body.py | 2 +
.../types/clerk_integration_config.py | 27 +
.../company_credit_balance_response_data.py | 23 +
.../types/company_matching_criteria.py | 5 +
.../types/company_plan_credit_grant_view.py | 78 ++
.../company_plan_with_billing_sub_view.py | 4 +-
..._billing_plan_credit_grant_request_body.py | 1 +
.../types/create_event_request_body.py | 5 +
src/schematic/types/credit_currency_price.py | 21 +
src/schematic/types/data_event_payload.py | 1 +
...lan_entitlements_response_response_data.py | 2 +
...feature_usage_time_series_response_data.py | 22 +
...t_trait_usage_time_series_response_data.py | 22 +
.../environment_usage_point_response_data.py | 21 +
.../types/event_detail_response_data.py | 3 +
src/schematic/types/event_response_data.py | 1 +
.../types/insights_summary_response_data.py | 25 +
.../types/integration_capabilities.py | 21 +
src/schematic/types/integration_config.py | 64 +
.../types/integration_response_data.py | 26 +
src/schematic/types/integration_state.py | 5 +
.../integrations_data_set_response_data.py | 19 +
.../types/integrations_list_response_data.py | 29 +
.../types/integrations_response_data.py | 26 +
src/schematic/types/mrr_response_data.py | 20 +
src/schematic/types/orb_integration_config.py | 22 +
src/schematic/types/plan_credit_grant_view.py | 1 +
.../types/plan_growth_point_response_data.py | 23 +
.../types/plan_growth_response_data.py | 20 +
.../types/rules_engine_schema_version.py | 2 +-
.../types/stripe_integration_config.py | 52 +
.../top_feature_by_usage_response_data.py | 24 +
.../top_features_by_usage_response_data.py | 20 +
...update_auto_topup_override_request_body.py | 22 +
..._billing_plan_credit_grant_request_body.py | 1 +
102 files changed, 6608 insertions(+), 1009 deletions(-)
create mode 100644 src/schematic/credits/types/list_company_credit_balances_params.py
create mode 100644 src/schematic/credits/types/list_company_credit_balances_response.py
create mode 100644 src/schematic/insights/__init__.py
create mode 100644 src/schematic/insights/client.py
create mode 100644 src/schematic/insights/raw_client.py
create mode 100644 src/schematic/insights/types/__init__.py
create mode 100644 src/schematic/insights/types/get_activity_params.py
create mode 100644 src/schematic/insights/types/get_activity_response.py
create mode 100644 src/schematic/insights/types/get_environment_feature_usage_time_series_params.py
create mode 100644 src/schematic/insights/types/get_environment_feature_usage_time_series_response.py
create mode 100644 src/schematic/insights/types/get_environment_trait_usage_time_series_params.py
create mode 100644 src/schematic/insights/types/get_environment_trait_usage_time_series_response.py
create mode 100644 src/schematic/insights/types/get_plan_growth_params.py
create mode 100644 src/schematic/insights/types/get_plan_growth_response.py
create mode 100644 src/schematic/insights/types/get_summary_response.py
create mode 100644 src/schematic/insights/types/get_top_features_by_usage_params.py
create mode 100644 src/schematic/insights/types/get_top_features_by_usage_response.py
create mode 100644 src/schematic/integrationsapi/types/list_integrations_params.py
create mode 100644 src/schematic/integrationsapi/types/list_integrations_response.py
create mode 100644 src/schematic/integrationsapi/types/load_sample_data_set_v_2_response.py
create mode 100644 src/schematic/integrationsapi/types/run_integration_response.py
create mode 100644 src/schematic/integrationsapi/types/start_data_import_response.py
create mode 100644 src/schematic/integrationsapi/types/uninstall_integration_response.py
create mode 100644 src/schematic/types/activity_entry_response_data.py
create mode 100644 src/schematic/types/activity_response_response_data.py
create mode 100644 src/schematic/types/api_key_integration_response_data.py
create mode 100644 src/schematic/types/clerk_integration_config.py
create mode 100644 src/schematic/types/company_credit_balance_response_data.py
create mode 100644 src/schematic/types/company_matching_criteria.py
create mode 100644 src/schematic/types/company_plan_credit_grant_view.py
create mode 100644 src/schematic/types/credit_currency_price.py
create mode 100644 src/schematic/types/environment_feature_usage_time_series_response_data.py
create mode 100644 src/schematic/types/environment_trait_usage_time_series_response_data.py
create mode 100644 src/schematic/types/environment_usage_point_response_data.py
create mode 100644 src/schematic/types/insights_summary_response_data.py
create mode 100644 src/schematic/types/integration_capabilities.py
create mode 100644 src/schematic/types/integration_config.py
create mode 100644 src/schematic/types/integration_response_data.py
create mode 100644 src/schematic/types/integration_state.py
create mode 100644 src/schematic/types/integrations_data_set_response_data.py
create mode 100644 src/schematic/types/integrations_list_response_data.py
create mode 100644 src/schematic/types/integrations_response_data.py
create mode 100644 src/schematic/types/mrr_response_data.py
create mode 100644 src/schematic/types/orb_integration_config.py
create mode 100644 src/schematic/types/plan_growth_point_response_data.py
create mode 100644 src/schematic/types/plan_growth_response_data.py
create mode 100644 src/schematic/types/stripe_integration_config.py
create mode 100644 src/schematic/types/top_feature_by_usage_response_data.py
create mode 100644 src/schematic/types/top_features_by_usage_response_data.py
create mode 100644 src/schematic/types/update_auto_topup_override_request_body.py
diff --git a/.fern/metadata.json b/.fern/metadata.json
index da44bf6..a752dfe 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -1,5 +1,5 @@
{
- "cliVersion": "4.76.1",
+ "cliVersion": "5.6.0",
"generatorName": "fernapi/fern-python-sdk",
"generatorVersion": "4.64.1",
"generatorConfig": {
@@ -23,6 +23,6 @@
}
]
},
- "originGitCommit": "5315b1ba06c9c71f00ac501c3e7ea3092701cd7b",
+ "originGitCommit": "4fd82021eff164a6f2484d4504850c46fe8f4a95",
"sdkVersion": "1.2.0"
}
\ No newline at end of file
diff --git a/poetry.lock b/poetry.lock
index 25e2811..936150b 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,172 +1,4 @@
-# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
-
-[[package]]
-name = "aiohappyeyeballs"
-version = "2.6.1"
-description = "Happy Eyeballs for asyncio"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"},
- {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"},
-]
-
-[[package]]
-name = "aiohttp"
-version = "3.13.5"
-description = "Async http client/server framework (asyncio)"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02222e7e233295f40e011c1b00e3b0bd451f22cf853a0304c3595633ee47da4b"},
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bace460460ed20614fa6bc8cb09966c0b8517b8c58ad8046828c6078d25333b5"},
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f546a4dc1e6a5edbb9fd1fd6ad18134550e096a5a43f4ad74acfbd834fc6670"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c86969d012e51b8e415a8c6ce96f7857d6a87d6207303ab02d5d11ef0cad2274"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b6f6cd1560c5fa427e3b6074bb24d2c64e225afbb7165008903bd42e4e33e28a"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:636bc362f0c5bbc7372bc3ae49737f9e3030dbce469f0f422c8f38079780363d"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a7cbeb06d1070f1d14895eeeed4dac5913b22d7b456f2eb969f11f4b3993796"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca9ef7517fd7874a1a08970ae88f497bf5c984610caa0bf40bd7e8450852b95"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:019a67772e034a0e6b9b17c13d0a8fe56ad9fb150fc724b7f3ffd3724288d9e5"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f34ecee82858e41dd217734f0c41a532bd066bcaab636ad830f03a30b2a96f2a"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4eac02d9af4813ee289cd63a361576da36dba57f5a1ab36377bc2600db0cbb73"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4beac52e9fe46d6abf98b0176a88154b742e878fdf209d2248e99fcdf73cd297"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c180f480207a9b2475f2b8d8bd7204e47aec952d084b2a2be58a782ffcf96074"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2837fb92951564d6339cedae4a7231692aa9f73cbc4fb2e04263b96844e03b4e"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9010032a0b9710f58012a1e9c222528763d860ba2ee1422c03473eab47703e7"},
- {file = "aiohttp-3.13.5-cp310-cp310-win32.whl", hash = "sha256:7c4b6668b2b2b9027f209ddf647f2a4407784b5d88b8be4efcc72036f365baf9"},
- {file = "aiohttp-3.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:cd3db5927bf9167d5a6157ddb2f036f6b6b0ad001ac82355d43e97a4bde76d76"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3"},
- {file = "aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06"},
- {file = "aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14"},
- {file = "aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3"},
- {file = "aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5029cc80718bbd545123cd8fe5d15025eccaaaace5d0eeec6bd556ad6163d61"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4bb6bf5811620003614076bdc807ef3b5e38244f9d25ca5fe888eaccea2a9832"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a84792f8631bf5a94e52d9cc881c0b824ab42717165a5579c760b830d9392ac9"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:57653eac22c6a4c13eb22ecf4d673d64a12f266e72785ab1c8b8e5940d0e8090"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5e5f7debc7a57af53fdf5c5009f9391d9f4c12867049d509bf7bb164a6e295b"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c719f65bebcdf6716f10e9eff80d27567f7892d8988c06de12bbbd39307c6e3a"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d97f93fdae594d886c5a866636397e2bcab146fd7a132fd6bb9ce182224452f8"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3df334e39d4c2f899a914f1dba283c1aadc311790733f705182998c6f7cae665"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe6970addfea9e5e081401bcbadf865d2b6da045472f58af08427e108d618540"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7becdf835feff2f4f335d7477f121af787e3504b48b449ff737afb35869ba7bb"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:676e5651705ad5d8a70aeb8eb6936c436d8ebbd56e63436cb7dd9bb36d2a9a46"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9b16c653d38eb1a611cc898c41e76859ca27f119d25b53c12875fd0474ae31a8"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:999802d5fa0389f58decd24b537c54aa63c01c3219ce17d1214cbda3c2b22d2d"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ec707059ee75732b1ba130ed5f9580fe10ff75180c812bc267ded039db5128c6"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d6d44a5b48132053c2f6cd5c8cb14bc67e99a63594e336b0f2af81e94d5530c"},
- {file = "aiohttp-3.13.5-cp313-cp313-win32.whl", hash = "sha256:329f292ed14d38a6c4c435e465f48bebb47479fd676a0411936cc371643225cc"},
- {file = "aiohttp-3.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:69f571de7500e0557801c0b51f4780482c0ec5fe2ac851af5a92cfce1af1cb83"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:eb4639f32fd4a9904ab8fb45bf3383ba71137f3d9d4ba25b3b3f3109977c5b8c"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:7e5dc4311bd5ac493886c63cbf76ab579dbe4641268e7c74e48e774c74b6f2be"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:756c3c304d394977519824449600adaf2be0ccee76d206ee339c5e76b70ded25"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecc26751323224cf8186efcf7fbcbc30f4e1d8c7970659daf25ad995e4032a56"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10a75acfcf794edf9d8db50e5a7ec5fc818b2a8d3f591ce93bc7b1210df016d2"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f7a18f258d124cd678c5fe072fe4432a4d5232b0657fca7c1847f599233c83a"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:df6104c009713d3a89621096f3e3e88cc323fd269dbd7c20afe18535094320be"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:241a94f7de7c0c3b616627aaad530fe2cb620084a8b144d3be7b6ecfe95bae3b"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c974fb66180e58709b6fc402846f13791240d180b74de81d23913abe48e96d94"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6e27ea05d184afac78aabbac667450c75e54e35f62238d44463131bd3f96753d"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a79a6d399cef33a11b6f004c67bb07741d91f2be01b8d712d52c75711b1e07c7"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c632ce9c0b534fbe25b52c974515ed674937c5b99f549a92127c85f771a78772"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fceedde51fbd67ee2bcc8c0b33d0126cc8b51ef3bbde2f86662bd6d5a6f10ec5"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f92995dfec9420bb69ae629abf422e516923ba79ba4403bc750d94fb4a6c68c1"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20ae0ff08b1f2c8788d6fb85afcb798654ae6ba0b747575f8562de738078457b"},
- {file = "aiohttp-3.13.5-cp314-cp314-win32.whl", hash = "sha256:b20df693de16f42b2472a9c485e1c948ee55524786a0a34345511afdd22246f3"},
- {file = "aiohttp-3.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:f85c6f327bf0b8c29da7d93b1cabb6363fb5e4e160a32fa241ed2dce21b73162"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1efb06900858bb618ff5cee184ae2de5828896c448403d51fb633f09e109be0a"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fee86b7c4bd29bdaf0d53d14739b08a106fdda809ca5fe032a15f52fae5fe254"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:20058e23909b9e65f9da62b396b77dfa95965cbe840f8def6e572538b1d32e36"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cf20a8d6868cb15a73cab329ffc07291ba8c22b1b88176026106ae39aa6df0f"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:330f5da04c987f1d5bdb8ae189137c77139f36bd1cb23779ca1a354a4b027800"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f1cbf0c7926d315c3c26c2da41fd2b5d2fe01ac0e157b78caefc51a782196cf"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:53fc049ed6390d05423ba33103ded7281fe897cf97878f369a527070bd95795b"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:898703aa2667e3c5ca4c54ca36cd73f58b7a38ef87a5606414799ebce4d3fd3a"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0494a01ca9584eea1e5fbd6d748e61ecff218c51b576ee1999c23db7066417d8"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6cf81fe010b8c17b09495cbd15c1d35afbc8fb405c0c9cf4738e5ae3af1d65be"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c564dd5f09ddc9d8f2c2d0a301cd30a79a2cc1b46dd1a73bef8f0038863d016b"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2994be9f6e51046c4f864598fd9abeb4fba6e88f0b2152422c9666dcd4aea9c6"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:157826e2fa245d2ef46c83ea8a5faf77ca19355d278d425c29fda0beb3318037"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a8aca50daa9493e9e13c0f566201a9006f080e7c50e5e90d0b06f53146a54500"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3b13560160d07e047a93f23aaa30718606493036253d5430887514715b67c9d9"},
- {file = "aiohttp-3.13.5-cp314-cp314t-win32.whl", hash = "sha256:9a0f4474b6ea6818b41f82172d799e4b3d29e22c2c520ce4357856fced9af2f8"},
- {file = "aiohttp-3.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:18a2f6c1182c51baa1d28d68fea51513cb2a76612f038853c0ad3c145423d3d9"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:347542f0ea3f95b2a955ee6656461fa1c776e401ac50ebce055a6c38454a0adf"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:178c7b5e62b454c2bc790786e6058c3cc968613b4419251b478c153a4aec32b1"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af545c2cffdb0967a96b6249e6f5f7b0d92cdfd267f9d5238d5b9ca63e8edb10"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:206b7b3ef96e4ce211754f0cd003feb28b7d81f0ad26b8d077a5d5161436067f"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ee5e86776273de1795947d17bddd6bb19e0365fd2af4289c0d2c5454b6b1d36b"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95d14ca7abefde230f7639ec136ade282655431fd5db03c343b19dda72dd1643"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:912d4b6af530ddb1338a66229dac3a25ff11d4448be3ec3d6340583995f56031"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e999f0c88a458c836d5fb521814e92ed2172c649200336a6df514987c1488258"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39380e12bd1f2fdab4285b6e055ad48efbaed5c836433b142ed4f5b9be71036a"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9efcc0f11d850cefcafdd9275b9576ad3bfb539bed96807663b32ad99c4d4b88"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:147b4f501d0292077f29d5268c16bb7c864a1f054d7001c4c1812c0421ea1ed0"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d147004fede1b12f6013a6dbb2a26a986a671a03c6ea740ddc76500e5f1c399f"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:9277145d36a01653863899c665243871434694bcc3431922c3b35c978061bdb8"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4e704c52438f66fdd89588346183d898bb42167cf88f8b7ff1c0f9fc957c348f"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a8a4d3427e8de1312ddf309cc482186466c79895b3a139fed3259fc01dfa9a5b"},
- {file = "aiohttp-3.13.5-cp39-cp39-win32.whl", hash = "sha256:6f497a6876aa4b1a102b04996ce4c1170c7040d83faa9387dd921c16e30d5c83"},
- {file = "aiohttp-3.13.5-cp39-cp39-win_amd64.whl", hash = "sha256:cb979826071c0986a5f08333a36104153478ce6018c58cba7f9caddaf63d5d67"},
- {file = "aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1"},
-]
-
-[package.dependencies]
-aiohappyeyeballs = ">=2.5.0"
-aiosignal = ">=1.4.0"
-async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""}
-attrs = ">=17.3.0"
-frozenlist = ">=1.1.1"
-multidict = ">=4.5,<7.0"
-propcache = ">=0.2.0"
-yarl = ">=1.17.0,<2.0"
-
-[package.extras]
-speedups = ["Brotli (>=1.2)", "aiodns (>=3.3.0)", "backports.zstd", "brotlicffi (>=1.2)"]
-
-[[package]]
-name = "aiosignal"
-version = "1.4.0"
-description = "aiosignal: a list of registered asynchronous callbacks"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e"},
- {file = "aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7"},
-]
-
-[package.dependencies]
-frozenlist = ">=1.1.0"
-typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""}
+# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "annotated-types"
@@ -204,28 +36,6 @@ doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)",
test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
trio = ["trio (>=0.26.1)"]
-[[package]]
-name = "async-timeout"
-version = "5.0.1"
-description = "Timeout context manager for asyncio programs"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"},
- {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"},
-]
-
-[[package]]
-name = "attrs"
-version = "26.1.0"
-description = "Classes Without Boilerplate"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"},
- {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"},
-]
-
[[package]]
name = "certifi"
version = "2026.4.22"
@@ -279,145 +89,6 @@ files = [
[package.extras]
testing = ["hatch", "pre-commit", "pytest", "tox"]
-[[package]]
-name = "frozenlist"
-version = "1.8.0"
-description = "A list-like structure which implements collections.abc.MutableSequence"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011"},
- {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565"},
- {file = "frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad"},
- {file = "frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2"},
- {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186"},
- {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e"},
- {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450"},
- {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef"},
- {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4"},
- {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff"},
- {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c"},
- {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f"},
- {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7"},
- {file = "frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a"},
- {file = "frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6"},
- {file = "frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e"},
- {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84"},
- {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9"},
- {file = "frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93"},
- {file = "frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f"},
- {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695"},
- {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52"},
- {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581"},
- {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567"},
- {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b"},
- {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92"},
- {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d"},
- {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd"},
- {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967"},
- {file = "frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25"},
- {file = "frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b"},
- {file = "frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a"},
- {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1"},
- {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b"},
- {file = "frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4"},
- {file = "frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383"},
- {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4"},
- {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8"},
- {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b"},
- {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52"},
- {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29"},
- {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3"},
- {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143"},
- {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608"},
- {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa"},
- {file = "frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf"},
- {file = "frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746"},
- {file = "frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd"},
- {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a"},
- {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7"},
- {file = "frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40"},
- {file = "frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027"},
- {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822"},
- {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121"},
- {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5"},
- {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e"},
- {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11"},
- {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1"},
- {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1"},
- {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8"},
- {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed"},
- {file = "frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496"},
- {file = "frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231"},
- {file = "frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62"},
- {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94"},
- {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c"},
- {file = "frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52"},
- {file = "frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51"},
- {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65"},
- {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82"},
- {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714"},
- {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d"},
- {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506"},
- {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51"},
- {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e"},
- {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0"},
- {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41"},
- {file = "frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b"},
- {file = "frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888"},
- {file = "frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042"},
- {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0"},
- {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f"},
- {file = "frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c"},
- {file = "frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2"},
- {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8"},
- {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686"},
- {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e"},
- {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a"},
- {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128"},
- {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f"},
- {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7"},
- {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30"},
- {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7"},
- {file = "frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806"},
- {file = "frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0"},
- {file = "frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b"},
- {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d"},
- {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed"},
- {file = "frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930"},
- {file = "frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c"},
- {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24"},
- {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37"},
- {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a"},
- {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2"},
- {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef"},
- {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe"},
- {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8"},
- {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a"},
- {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e"},
- {file = "frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df"},
- {file = "frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd"},
- {file = "frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79"},
- {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8b7138e5cd0647e4523d6685b0eac5d4be9a184ae9634492f25c6eb38c12a47"},
- {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a6483e309ca809f1efd154b4d37dc6d9f61037d6c6a81c2dc7a15cb22c8c5dca"},
- {file = "frozenlist-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b9290cf81e95e93fdf90548ce9d3c1211cf574b8e3f4b3b7cb0537cf2227068"},
- {file = "frozenlist-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:59a6a5876ca59d1b63af8cd5e7ffffb024c3dc1e9cf9301b21a2e76286505c95"},
- {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6dc4126390929823e2d2d9dc79ab4046ed74680360fc5f38b585c12c66cdf459"},
- {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:332db6b2563333c5671fecacd085141b5800cb866be16d5e3eb15a2086476675"},
- {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9ff15928d62a0b80bb875655c39bf517938c7d589554cbd2669be42d97c2cb61"},
- {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7bf6cdf8e07c8151fba6fe85735441240ec7f619f935a5205953d58009aef8c6"},
- {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:48e6d3f4ec5c7273dfe83ff27c91083c6c9065af655dc2684d2c200c94308bb5"},
- {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:1a7607e17ad33361677adcd1443edf6f5da0ce5e5377b798fba20fae194825f3"},
- {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3a935c3a4e89c733303a2d5a7c257ea44af3a56c8202df486b7f5de40f37e1"},
- {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:940d4a017dbfed9daf46a3b086e1d2167e7012ee297fef9e1c545c4d022f5178"},
- {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b9be22a69a014bc47e78072d0ecae716f5eb56c15238acca0f43d6eb8e4a5bda"},
- {file = "frozenlist-1.8.0-cp39-cp39-win32.whl", hash = "sha256:1aa77cb5697069af47472e39612976ed05343ff2e84a3dcf15437b232cbfd087"},
- {file = "frozenlist-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:7398c222d1d405e796970320036b1b563892b65809d9e5261487bb2c7f7b5c6a"},
- {file = "frozenlist-1.8.0-cp39-cp39-win_arm64.whl", hash = "sha256:b4f3b365f31c6cd4af24545ca0a244a53688cad8834e32f56831c4923b50a103"},
- {file = "frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d"},
- {file = "frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad"},
-]
-
[[package]]
name = "h11"
version = "0.16.0"
@@ -476,40 +147,18 @@ zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "idna"
-version = "3.13"
+version = "3.14"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "idna-3.13-py3-none-any.whl", hash = "sha256:892ea0cde124a99ce773decba204c5552b69c3c67ffd5f232eb7696135bc8bb3"},
- {file = "idna-3.13.tar.gz", hash = "sha256:585ea8fe5d69b9181ec1afba340451fba6ba764af97026f92a91d4eef164a242"},
+ {file = "idna-3.14-py3-none-any.whl", hash = "sha256:e677eaf072e290f7b725f9acf0b3a2bd55f9fd6f7c70abe5f0e34823d0accf69"},
+ {file = "idna-3.14.tar.gz", hash = "sha256:466d810d7a2cc1022bea9b037c39728d51ae7dad40d480fc9b7d7ecf98ba8ee3"},
]
[package.extras]
all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
-[[package]]
-name = "importlib-resources"
-version = "6.4.5"
-description = "Read resources from Python packages"
-optional = true
-python-versions = ">=3.8"
-files = [
- {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"},
- {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"},
-]
-
-[package.dependencies]
-zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
-
-[package.extras]
-check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
-cover = ["pytest-cov"]
-doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-enabler = ["pytest-enabler (>=2.2)"]
-test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"]
-type = ["pytest-mypy"]
-
[[package]]
name = "iniconfig"
version = "2.1.0"
@@ -521,164 +170,6 @@ files = [
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
]
-[[package]]
-name = "multidict"
-version = "6.7.1"
-description = "multidict implementation"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5"},
- {file = "multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8"},
- {file = "multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190"},
- {file = "multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962"},
- {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505"},
- {file = "multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122"},
- {file = "multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df"},
- {file = "multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db"},
- {file = "multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d"},
- {file = "multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e"},
- {file = "multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0"},
- {file = "multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0"},
- {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa"},
- {file = "multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a"},
- {file = "multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b"},
- {file = "multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6"},
- {file = "multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172"},
- {file = "multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd"},
- {file = "multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a"},
- {file = "multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a"},
- {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba"},
- {file = "multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511"},
- {file = "multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19"},
- {file = "multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf"},
- {file = "multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23"},
- {file = "multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2"},
- {file = "multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed"},
- {file = "multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d"},
- {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33"},
- {file = "multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3"},
- {file = "multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5"},
- {file = "multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df"},
- {file = "multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1"},
- {file = "multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963"},
- {file = "multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd"},
- {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52"},
- {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108"},
- {file = "multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32"},
- {file = "multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8"},
- {file = "multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118"},
- {file = "multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee"},
- {file = "multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2"},
- {file = "multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37"},
- {file = "multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1"},
- {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b"},
- {file = "multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d"},
- {file = "multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f"},
- {file = "multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5"},
- {file = "multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581"},
- {file = "multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a"},
- {file = "multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d"},
- {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9"},
- {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2"},
- {file = "multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7"},
- {file = "multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5"},
- {file = "multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2"},
- {file = "multidict-6.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:65573858d27cdeaca41893185677dc82395159aa28875a8867af66532d413a8f"},
- {file = "multidict-6.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c524c6fb8fc342793708ab111c4dbc90ff9abd568de220432500e47e990c0358"},
- {file = "multidict-6.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aa23b001d968faef416ff70dc0f1ab045517b9b42a90edd3e9bcdb06479e31d5"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6704fa2b7453b2fb121740555fa1ee20cd98c4d011120caf4d2b8d4e7c76eec0"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:121a34e5bfa410cdf2c8c49716de160de3b1dbcd86b49656f5681e4543bcd1a8"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:026d264228bcd637d4e060844e39cdc60f86c479e463d49075dedc21b18fbbe0"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0e697826df7eb63418ee190fd06ce9f1803593bb4b9517d08c60d9b9a7f69d8f"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bb08271280173720e9fea9ede98e5231defcbad90f1624bea26f32ec8a956e2f"},
- {file = "multidict-6.7.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6b3228e1d80af737b72925ce5fb4daf5a335e49cd7ab77ed7b9fdfbf58c526e"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3943debf0fbb57bdde5901695c11094a9a36723e5c03875f87718ee15ca2f4d2"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:98c5787b0a0d9a41d9311eae44c3b76e6753def8d8870ab501320efe75a6a5f8"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08ccb2a6dc72009093ebe7f3f073e5ec5964cba9a706fa94b1a1484039b87941"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb351f72c26dc9abe338ca7294661aa22969ad8ffe7ef7d5541d19f368dc854a"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ac1c665bad8b5d762f5f85ebe4d94130c26965f11de70c708c75671297c776de"},
- {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fa6609d0364f4f6f58351b4659a1f3e0e898ba2a8c5cac04cb2c7bc556b0bc5"},
- {file = "multidict-6.7.1-cp39-cp39-win32.whl", hash = "sha256:6f77ce314a29263e67adadc7e7c1bc699fcb3a305059ab973d038f87caa42ed0"},
- {file = "multidict-6.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:f537b55778cd3cbee430abe3131255d3a78202e0f9ea7ffc6ada893a4bcaeea4"},
- {file = "multidict-6.7.1-cp39-cp39-win_arm64.whl", hash = "sha256:749aa54f578f2e5f439538706a475aa844bfa8ef75854b1401e6e528e4937cf9"},
- {file = "multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56"},
- {file = "multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d"},
-]
-
-[package.dependencies]
-typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""}
-
[[package]]
name = "mypy"
version = "1.13.0"
@@ -745,13 +236,13 @@ files = [
[[package]]
name = "packaging"
-version = "26.1"
+version = "26.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f"},
- {file = "packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de"},
+ {file = "packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e"},
+ {file = "packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"},
]
[[package]]
@@ -769,137 +260,6 @@ files = [
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
-[[package]]
-name = "propcache"
-version = "0.4.1"
-description = "Accelerated property cache"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db"},
- {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8"},
- {file = "propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925"},
- {file = "propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21"},
- {file = "propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5"},
- {file = "propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db"},
- {file = "propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7"},
- {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4"},
- {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60"},
- {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f"},
- {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900"},
- {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c"},
- {file = "propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb"},
- {file = "propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37"},
- {file = "propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581"},
- {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf"},
- {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5"},
- {file = "propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e"},
- {file = "propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566"},
- {file = "propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165"},
- {file = "propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc"},
- {file = "propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48"},
- {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570"},
- {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85"},
- {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e"},
- {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757"},
- {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f"},
- {file = "propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1"},
- {file = "propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6"},
- {file = "propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239"},
- {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2"},
- {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403"},
- {file = "propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207"},
- {file = "propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72"},
- {file = "propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367"},
- {file = "propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4"},
- {file = "propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf"},
- {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3"},
- {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778"},
- {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6"},
- {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9"},
- {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75"},
- {file = "propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8"},
- {file = "propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db"},
- {file = "propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1"},
- {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf"},
- {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311"},
- {file = "propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74"},
- {file = "propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe"},
- {file = "propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af"},
- {file = "propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c"},
- {file = "propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f"},
- {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1"},
- {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24"},
- {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa"},
- {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61"},
- {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66"},
- {file = "propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81"},
- {file = "propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e"},
- {file = "propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1"},
- {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b"},
- {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566"},
- {file = "propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835"},
- {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e"},
- {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859"},
- {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b"},
- {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0"},
- {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af"},
- {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393"},
- {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874"},
- {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7"},
- {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1"},
- {file = "propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717"},
- {file = "propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37"},
- {file = "propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a"},
- {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12"},
- {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c"},
- {file = "propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded"},
- {file = "propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641"},
- {file = "propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4"},
- {file = "propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44"},
- {file = "propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d"},
- {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b"},
- {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e"},
- {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f"},
- {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49"},
- {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144"},
- {file = "propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f"},
- {file = "propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153"},
- {file = "propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992"},
- {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f"},
- {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393"},
- {file = "propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0"},
- {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a"},
- {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be"},
- {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc"},
- {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a"},
- {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89"},
- {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726"},
- {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367"},
- {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36"},
- {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455"},
- {file = "propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85"},
- {file = "propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1"},
- {file = "propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9"},
- {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d233076ccf9e450c8b3bc6720af226b898ef5d051a2d145f7d765e6e9f9bcff"},
- {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:357f5bb5c377a82e105e44bd3d52ba22b616f7b9773714bff93573988ef0a5fb"},
- {file = "propcache-0.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbc3b6dfc728105b2a57c06791eb07a94229202ea75c59db644d7d496b698cac"},
- {file = "propcache-0.4.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:182b51b421f0501952d938dc0b0eb45246a5b5153c50d42b495ad5fb7517c888"},
- {file = "propcache-0.4.1-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4b536b39c5199b96fc6245eb5fb796c497381d3942f169e44e8e392b29c9ebcc"},
- {file = "propcache-0.4.1-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:db65d2af507bbfbdcedb254a11149f894169d90488dd3e7190f7cdcb2d6cd57a"},
- {file = "propcache-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd2dbc472da1f772a4dae4fa24be938a6c544671a912e30529984dd80400cd88"},
- {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:daede9cd44e0f8bdd9e6cc9a607fc81feb80fae7a5fc6cecaff0e0bb32e42d00"},
- {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:71b749281b816793678ae7f3d0d84bd36e694953822eaad408d682efc5ca18e0"},
- {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:0002004213ee1f36cfb3f9a42b5066100c44276b9b72b4e1504cddd3d692e86e"},
- {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fe49d0a85038f36ba9e3ffafa1103e61170b28e95b16622e11be0a0ea07c6781"},
- {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:99d43339c83aaf4d32bda60928231848eee470c6bda8d02599cc4cebe872d183"},
- {file = "propcache-0.4.1-cp39-cp39-win32.whl", hash = "sha256:a129e76735bc792794d5177069691c3217898b9f5cee2b2661471e52ffe13f19"},
- {file = "propcache-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:948dab269721ae9a87fd16c514a0a2c2a1bdb23a9a61b969b0f9d9ee2968546f"},
- {file = "propcache-0.4.1-cp39-cp39-win_arm64.whl", hash = "sha256:5fd37c406dd6dc85aa743e214cef35dc54bbdd1419baac4f6ae5e5b1a2976938"},
- {file = "propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237"},
- {file = "propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d"},
-]
-
[[package]]
name = "pydantic"
version = "2.10.6"
@@ -1032,26 +392,6 @@ files = [
[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
-[[package]]
-name = "pyjwt"
-version = "2.12.1"
-description = "JSON Web Token implementation in Python"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c"},
- {file = "pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b"},
-]
-
-[package.dependencies]
-typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
-
-[package.extras]
-crypto = ["cryptography (>=3.4.0)"]
-dev = ["coverage[toml] (==7.10.7)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=8.4.2,<9.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"]
-docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
-tests = ["coverage[toml] (==7.10.7)", "pytest (>=8.4.2,<9.0.0)"]
-
[[package]]
name = "pytest"
version = "7.4.4"
@@ -1126,25 +466,6 @@ files = [
[package.dependencies]
six = ">=1.5"
-[[package]]
-name = "redis"
-version = "5.3.1"
-description = "Python client for Redis database and key-value store"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "redis-5.3.1-py3-none-any.whl", hash = "sha256:dc1909bd24669cc31b5f67a039700b16ec30571096c5f1f0d9d2324bff31af97"},
- {file = "redis-5.3.1.tar.gz", hash = "sha256:ca49577a531ea64039b5a36db3d6cd1a0c7a60c34124d46924a45b956e8cf14c"},
-]
-
-[package.dependencies]
-async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""}
-PyJWT = ">=2.9.0"
-
-[package.extras]
-hiredis = ["hiredis (>=3.0.0)"]
-ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"]
-
[[package]]
name = "ruff"
version = "0.11.5"
@@ -1272,291 +593,7 @@ files = [
{file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"},
]
-[[package]]
-name = "wasmtime"
-version = "25.0.0"
-description = "A WebAssembly runtime powered by Wasmtime"
-optional = true
-python-versions = ">=3.8"
-files = [
- {file = "wasmtime-25.0.0-py3-none-any.whl", hash = "sha256:22aa59fc6e01deec8a6703046f82466090d5811096a3bb5c169907e36c842af1"},
- {file = "wasmtime-25.0.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:13e9a718e9d580c1738782cc19f4dcb9fb068f7e51778ea621fd664f4433525b"},
- {file = "wasmtime-25.0.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5bdf1214ee3ee78a4a8a92da339f4c4c8c109e65af881b37f4adfc05d02af426"},
- {file = "wasmtime-25.0.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:b4364e14d44e3b7afe6a40bf608e9d0d2c40b09dece441d20f4f6e31906b729c"},
- {file = "wasmtime-25.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:a07445073cf36a6e5d1dc28246a897dcbdaa537ba8be8805be65422ecca297eb"},
- {file = "wasmtime-25.0.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:53d5f614348a28aabdf80ae4f6fdfa803031af1f74ada03826fd4fd43aeee6c8"},
- {file = "wasmtime-25.0.0-py3-none-win_amd64.whl", hash = "sha256:f8a2a213b9179965db2d2eedececd69a37e287e902330509afae51c71a3a6842"},
-]
-
-[package.dependencies]
-importlib-resources = ">=5.10"
-
-[package.extras]
-testing = ["componentize-py", "coverage", "pycparser", "pytest", "pytest-mypy"]
-
-[[package]]
-name = "websockets"
-version = "13.1"
-description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
-optional = true
-python-versions = ">=3.8"
-files = [
- {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"},
- {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"},
- {file = "websockets-13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f779498eeec470295a2b1a5d97aa1bc9814ecd25e1eb637bd9d1c73a327387f6"},
- {file = "websockets-13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676df3fe46956fbb0437d8800cd5f2b6d41143b6e7e842e60554398432cf29b"},
- {file = "websockets-13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7affedeb43a70351bb811dadf49493c9cfd1ed94c9c70095fd177e9cc1541fa"},
- {file = "websockets-13.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1971e62d2caa443e57588e1d82d15f663b29ff9dfe7446d9964a4b6f12c1e700"},
- {file = "websockets-13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5f2e75431f8dc4a47f31565a6e1355fb4f2ecaa99d6b89737527ea917066e26c"},
- {file = "websockets-13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58cf7e75dbf7e566088b07e36ea2e3e2bd5676e22216e4cad108d4df4a7402a0"},
- {file = "websockets-13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c90d6dec6be2c7d03378a574de87af9b1efea77d0c52a8301dd831ece938452f"},
- {file = "websockets-13.1-cp310-cp310-win32.whl", hash = "sha256:730f42125ccb14602f455155084f978bd9e8e57e89b569b4d7f0f0c17a448ffe"},
- {file = "websockets-13.1-cp310-cp310-win_amd64.whl", hash = "sha256:5993260f483d05a9737073be197371940c01b257cc45ae3f1d5d7adb371b266a"},
- {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"},
- {file = "websockets-13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ceec59f59d092c5007e815def4ebb80c2de330e9588e101cf8bd94c143ec78a5"},
- {file = "websockets-13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1dca61c6db1166c48b95198c0b7d9c990b30c756fc2923cc66f68d17dc558fd"},
- {file = "websockets-13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308e20f22c2c77f3f39caca508e765f8725020b84aa963474e18c59accbf4c02"},
- {file = "websockets-13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d516c325e6540e8a57b94abefc3459d7dab8ce52ac75c96cad5549e187e3a7"},
- {file = "websockets-13.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c6e35319b46b99e168eb98472d6c7d8634ee37750d7693656dc766395df096"},
- {file = "websockets-13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f9fee94ebafbc3117c30be1844ed01a3b177bb6e39088bc6b2fa1dc15572084"},
- {file = "websockets-13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c1e90228c2f5cdde263253fa5db63e6653f1c00e7ec64108065a0b9713fa1b3"},
- {file = "websockets-13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6548f29b0e401eea2b967b2fdc1c7c7b5ebb3eeb470ed23a54cd45ef078a0db9"},
- {file = "websockets-13.1-cp311-cp311-win32.whl", hash = "sha256:c11d4d16e133f6df8916cc5b7e3e96ee4c44c936717d684a94f48f82edb7c92f"},
- {file = "websockets-13.1-cp311-cp311-win_amd64.whl", hash = "sha256:d04f13a1d75cb2b8382bdc16ae6fa58c97337253826dfe136195b7f89f661557"},
- {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"},
- {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"},
- {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"},
- {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"},
- {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"},
- {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"},
- {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"},
- {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"},
- {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"},
- {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"},
- {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"},
- {file = "websockets-13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9ab1e71d3d2e54a0aa646ab6d4eebfaa5f416fe78dfe4da2839525dc5d765c6"},
- {file = "websockets-13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b9d7439d7fab4dce00570bb906875734df13d9faa4b48e261c440a5fec6d9708"},
- {file = "websockets-13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327b74e915cf13c5931334c61e1a41040e365d380f812513a255aa804b183418"},
- {file = "websockets-13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:325b1ccdbf5e5725fdcb1b0e9ad4d2545056479d0eee392c291c1bf76206435a"},
- {file = "websockets-13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:346bee67a65f189e0e33f520f253d5147ab76ae42493804319b5716e46dddf0f"},
- {file = "websockets-13.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a0fa841646320ec0d3accdff5b757b06e2e5c86ba32af2e0815c96c7a603c5"},
- {file = "websockets-13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:18503d2c5f3943e93819238bf20df71982d193f73dcecd26c94514f417f6b135"},
- {file = "websockets-13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9cd1af7e18e5221d2878378fbc287a14cd527fdd5939ed56a18df8a31136bb2"},
- {file = "websockets-13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:70c5be9f416aa72aab7a2a76c90ae0a4fe2755c1816c153c1a2bcc3333ce4ce6"},
- {file = "websockets-13.1-cp313-cp313-win32.whl", hash = "sha256:624459daabeb310d3815b276c1adef475b3e6804abaf2d9d2c061c319f7f187d"},
- {file = "websockets-13.1-cp313-cp313-win_amd64.whl", hash = "sha256:c518e84bb59c2baae725accd355c8dc517b4a3ed8db88b4bc93c78dae2974bf2"},
- {file = "websockets-13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c7934fd0e920e70468e676fe7f1b7261c1efa0d6c037c6722278ca0228ad9d0d"},
- {file = "websockets-13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:149e622dc48c10ccc3d2760e5f36753db9cacf3ad7bc7bbbfd7d9c819e286f23"},
- {file = "websockets-13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a569eb1b05d72f9bce2ebd28a1ce2054311b66677fcd46cf36204ad23acead8c"},
- {file = "websockets-13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95df24ca1e1bd93bbca51d94dd049a984609687cb2fb08a7f2c56ac84e9816ea"},
- {file = "websockets-13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8dbb1bf0c0a4ae8b40bdc9be7f644e2f3fb4e8a9aca7145bfa510d4a374eeb7"},
- {file = "websockets-13.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035233b7531fb92a76beefcbf479504db8c72eb3bff41da55aecce3a0f729e54"},
- {file = "websockets-13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e4450fc83a3df53dec45922b576e91e94f5578d06436871dce3a6be38e40f5db"},
- {file = "websockets-13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:463e1c6ec853202dd3657f156123d6b4dad0c546ea2e2e38be2b3f7c5b8e7295"},
- {file = "websockets-13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6d6855bbe70119872c05107e38fbc7f96b1d8cb047d95c2c50869a46c65a8e96"},
- {file = "websockets-13.1-cp38-cp38-win32.whl", hash = "sha256:204e5107f43095012b00f1451374693267adbb832d29966a01ecc4ce1db26faf"},
- {file = "websockets-13.1-cp38-cp38-win_amd64.whl", hash = "sha256:485307243237328c022bc908b90e4457d0daa8b5cf4b3723fd3c4a8012fce4c6"},
- {file = "websockets-13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b37c184f8b976f0c0a231a5f3d6efe10807d41ccbe4488df8c74174805eea7d"},
- {file = "websockets-13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163e7277e1a0bd9fb3c8842a71661ad19c6aa7bb3d6678dc7f89b17fbcc4aeb7"},
- {file = "websockets-13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b889dbd1342820cc210ba44307cf75ae5f2f96226c0038094455a96e64fb07a"},
- {file = "websockets-13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:586a356928692c1fed0eca68b4d1c2cbbd1ca2acf2ac7e7ebd3b9052582deefa"},
- {file = "websockets-13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd6abf1e070a6b72bfeb71049d6ad286852e285f146682bf30d0296f5fbadfa"},
- {file = "websockets-13.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2aad13a200e5934f5a6767492fb07151e1de1d6079c003ab31e1823733ae79"},
- {file = "websockets-13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:df01aea34b6e9e33572c35cd16bae5a47785e7d5c8cb2b54b2acdb9678315a17"},
- {file = "websockets-13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e54affdeb21026329fb0744ad187cf812f7d3c2aa702a5edb562b325191fcab6"},
- {file = "websockets-13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ef8aa8bdbac47f4968a5d66462a2a0935d044bf35c0e5a8af152d58516dbeb5"},
- {file = "websockets-13.1-cp39-cp39-win32.whl", hash = "sha256:deeb929efe52bed518f6eb2ddc00cc496366a14c726005726ad62c2dd9017a3c"},
- {file = "websockets-13.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c65ffa900e7cc958cd088b9a9157a8141c991f8c53d11087e6fb7277a03f81d"},
- {file = "websockets-13.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5dd6da9bec02735931fccec99d97c29f47cc61f644264eb995ad6c0c27667238"},
- {file = "websockets-13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2510c09d8e8df777177ee3d40cd35450dc169a81e747455cc4197e63f7e7bfe5"},
- {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c3cf67185543730888b20682fb186fc8d0fa6f07ccc3ef4390831ab4b388d9"},
- {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcc03c8b72267e97b49149e4863d57c2d77f13fae12066622dc78fe322490fe6"},
- {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004280a140f220c812e65f36944a9ca92d766b6cc4560be652a0a3883a79ed8a"},
- {file = "websockets-13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2620453c075abeb0daa949a292e19f56de518988e079c36478bacf9546ced23"},
- {file = "websockets-13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9156c45750b37337f7b0b00e6248991a047be4aa44554c9886fe6bdd605aab3b"},
- {file = "websockets-13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:80c421e07973a89fbdd93e6f2003c17d20b69010458d3a8e37fb47874bd67d51"},
- {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82d0ba76371769d6a4e56f7e83bb8e81846d17a6190971e38b5de108bde9b0d7"},
- {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9875a0143f07d74dc5e1ded1c4581f0d9f7ab86c78994e2ed9e95050073c94d"},
- {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11e38ad8922c7961447f35c7b17bffa15de4d17c70abd07bfbe12d6faa3e027"},
- {file = "websockets-13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4059f790b6ae8768471cddb65d3c4fe4792b0ab48e154c9f0a04cefaabcd5978"},
- {file = "websockets-13.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:25c35bf84bf7c7369d247f0b8cfa157f989862c49104c5cf85cb5436a641d93e"},
- {file = "websockets-13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:83f91d8a9bb404b8c2c41a707ac7f7f75b9442a0a876df295de27251a856ad09"},
- {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a43cfdcddd07f4ca2b1afb459824dd3c6d53a51410636a2c7fc97b9a8cf4842"},
- {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a2ef1381632a2f0cb4efeff34efa97901c9fbc118e01951ad7cfc10601a9bb"},
- {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bf774c754c35dbb487360b12c5727adab887f1622b8aed5755880a21c4a20"},
- {file = "websockets-13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:95858ca14a9f6fa8413d29e0a585b31b278388aa775b8a81fa24830123874678"},
- {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"},
- {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"},
-]
-
-[[package]]
-name = "yarl"
-version = "1.22.0"
-description = "Yet another URL library"
-optional = false
-python-versions = ">=3.9"
-files = [
- {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e"},
- {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f"},
- {file = "yarl-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf"},
- {file = "yarl-1.22.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a"},
- {file = "yarl-1.22.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c"},
- {file = "yarl-1.22.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147"},
- {file = "yarl-1.22.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb"},
- {file = "yarl-1.22.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6"},
- {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0"},
- {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda"},
- {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc"},
- {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737"},
- {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467"},
- {file = "yarl-1.22.0-cp310-cp310-win32.whl", hash = "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea"},
- {file = "yarl-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca"},
- {file = "yarl-1.22.0-cp310-cp310-win_arm64.whl", hash = "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b"},
- {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511"},
- {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6"},
- {file = "yarl-1.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028"},
- {file = "yarl-1.22.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d"},
- {file = "yarl-1.22.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503"},
- {file = "yarl-1.22.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65"},
- {file = "yarl-1.22.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e"},
- {file = "yarl-1.22.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d"},
- {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7"},
- {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967"},
- {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed"},
- {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6"},
- {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e"},
- {file = "yarl-1.22.0-cp311-cp311-win32.whl", hash = "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca"},
- {file = "yarl-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b"},
- {file = "yarl-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376"},
- {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f"},
- {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2"},
- {file = "yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74"},
- {file = "yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df"},
- {file = "yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb"},
- {file = "yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2"},
- {file = "yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82"},
- {file = "yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a"},
- {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124"},
- {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa"},
- {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7"},
- {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d"},
- {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520"},
- {file = "yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8"},
- {file = "yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c"},
- {file = "yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74"},
- {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53"},
- {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a"},
- {file = "yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c"},
- {file = "yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601"},
- {file = "yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a"},
- {file = "yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df"},
- {file = "yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2"},
- {file = "yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b"},
- {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273"},
- {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a"},
- {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d"},
- {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02"},
- {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67"},
- {file = "yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95"},
- {file = "yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d"},
- {file = "yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b"},
- {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10"},
- {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3"},
- {file = "yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9"},
- {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f"},
- {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0"},
- {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e"},
- {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708"},
- {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f"},
- {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d"},
- {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8"},
- {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5"},
- {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f"},
- {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62"},
- {file = "yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03"},
- {file = "yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249"},
- {file = "yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b"},
- {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4"},
- {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683"},
- {file = "yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b"},
- {file = "yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e"},
- {file = "yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590"},
- {file = "yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2"},
- {file = "yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da"},
- {file = "yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784"},
- {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b"},
- {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694"},
- {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d"},
- {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd"},
- {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da"},
- {file = "yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2"},
- {file = "yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79"},
- {file = "yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33"},
- {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1"},
- {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca"},
- {file = "yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53"},
- {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c"},
- {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf"},
- {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face"},
- {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b"},
- {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486"},
- {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138"},
- {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a"},
- {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529"},
- {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093"},
- {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c"},
- {file = "yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e"},
- {file = "yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27"},
- {file = "yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1"},
- {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3aa27acb6de7a23785d81557577491f6c38a5209a254d1191519d07d8fe51748"},
- {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:af74f05666a5e531289cb1cc9c883d1de2088b8e5b4de48004e5ca8a830ac859"},
- {file = "yarl-1.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:62441e55958977b8167b2709c164c91a6363e25da322d87ae6dd9c6019ceecf9"},
- {file = "yarl-1.22.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b580e71cac3f8113d3135888770903eaf2f507e9421e5697d6ee6d8cd1c7f054"},
- {file = "yarl-1.22.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e81fda2fb4a07eda1a2252b216aa0df23ebcd4d584894e9612e80999a78fd95b"},
- {file = "yarl-1.22.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:99b6fc1d55782461b78221e95fc357b47ad98b041e8e20f47c1411d0aacddc60"},
- {file = "yarl-1.22.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:088e4e08f033db4be2ccd1f34cf29fe994772fb54cfe004bbf54db320af56890"},
- {file = "yarl-1.22.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4e1f6f0b4da23e61188676e3ed027ef0baa833a2e633c29ff8530800edccba"},
- {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:84fc3ec96fce86ce5aa305eb4aa9358279d1aa644b71fab7b8ed33fe3ba1a7ca"},
- {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5dbeefd6ca588b33576a01b0ad58aa934bc1b41ef89dee505bf2932b22ddffba"},
- {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14291620375b1060613f4aab9ebf21850058b6b1b438f386cc814813d901c60b"},
- {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a4fcfc8eb2c34148c118dfa02e6427ca278bfd0f3df7c5f99e33d2c0e81eae3e"},
- {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:029866bde8d7b0878b9c160e72305bbf0a7342bcd20b9999381704ae03308dc8"},
- {file = "yarl-1.22.0-cp39-cp39-win32.whl", hash = "sha256:4dcc74149ccc8bba31ce1944acee24813e93cfdee2acda3c172df844948ddf7b"},
- {file = "yarl-1.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:10619d9fdee46d20edc49d3479e2f8269d0779f1b031e6f7c2aa1c76be04b7ed"},
- {file = "yarl-1.22.0-cp39-cp39-win_arm64.whl", hash = "sha256:dd7afd3f8b0bfb4e0d9fc3c31bfe8a4ec7debe124cfd90619305def3c8ca8cd2"},
- {file = "yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff"},
- {file = "yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71"},
-]
-
-[package.dependencies]
-idna = ">=2.0"
-multidict = ">=4.0"
-propcache = ">=0.2.1"
-
-[[package]]
-name = "zipp"
-version = "3.20.2"
-description = "Backport of pathlib-compatible object wrapper for zip files"
-optional = true
-python-versions = ">=3.8"
-files = [
- {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"},
- {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"},
-]
-
-[package.extras]
-check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
-cover = ["pytest-cov"]
-doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-enabler = ["pytest-enabler (>=2.2)"]
-test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
-type = ["pytest-mypy"]
-
-[extras]
-datastream = ["wasmtime", "websockets"]
-rulesengine = ["wasmtime"]
-
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
-content-hash = "7f8cd32f6180e0e5180d40c7376b4ba77af39b5647c1c2e9b93f49aea5eb3ac3"
+content-hash = "bcf31a142c86d9e556553c8c260a93b563ac64a043076dbd48b26111d422c26e"
diff --git a/reference.md b/reference.md
index f87be82..7ff2249 100644
--- a/reference.md
+++ b/reference.md
@@ -3351,6 +3351,7 @@ client.billing.list_billing_products(
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -3421,6 +3422,14 @@ client.billing.list_billing_products(
-
+**recurring_charges_only:** `typing.Optional[bool]` — Filter to products that have at least one recurring price
+
+
+
+
+
+-
+
**with_one_time_charges:** `typing.Optional[bool]` — Filter products that are one time charges
@@ -3511,6 +3520,7 @@ client.billing.count_billing_products(
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -3581,6 +3591,14 @@ client.billing.count_billing_products(
-
+**recurring_charges_only:** `typing.Optional[bool]` — Filter to products that have at least one recurring price
+
+
+
+
+
+-
+
**with_one_time_charges:** `typing.Optional[bool]` — Filter products that are one time charges
@@ -4394,6 +4412,65 @@ client.credits.soft_delete_billing_credit(
+
+
+
+
+client.credits.list_company_credit_balances(...) -> ListCompanyCreditBalancesResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.credits.list_company_credit_balances(
+ company_id="company_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**company_id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
@@ -5957,6 +6034,9 @@ client.credits.list_billing_plan_credit_grants(
"plan_ids"
],
plan_version_id="plan_version_id",
+ plan_version_ids=[
+ "plan_version_ids"
+ ],
limit=1000000,
offset=1000000,
)
@@ -6015,6 +6095,14 @@ client.credits.list_billing_plan_credit_grants(
-
+**plan_version_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]`
+
+
+
+
+
+-
+
**limit:** `typing.Optional[int]` — Page limit (default 100)
@@ -6333,6 +6421,9 @@ client.credits.count_billing_plan_credit_grants(
"plan_ids"
],
plan_version_id="plan_version_id",
+ plan_version_ids=[
+ "plan_version_ids"
+ ],
limit=1000000,
offset=1000000,
)
@@ -6391,6 +6482,14 @@ client.credits.count_billing_plan_credit_grants(
-
+**plan_version_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]`
+
+
+
+
+
+-
+
**limit:** `typing.Optional[int]` — Page limit (default 100)
@@ -6677,7 +6776,7 @@ client.credits.count_credit_event_ledger(
-
```python
-from schematic import Schematic, UpdateAddOnRequestBody, UpdateCreditBundleRequestBody, UpdatePayInAdvanceRequestBody
+from schematic import Schematic, UpdateAddOnRequestBody, UpdateAutoTopupOverrideRequestBody, UpdateCreditBundleRequestBody, UpdatePayInAdvanceRequestBody
from schematic.environment import SchematicEnvironment
client = Schematic(
@@ -6692,6 +6791,11 @@ client.checkout.internal(
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -6824,7 +6928,7 @@ client.checkout.get_checkout_data(
-
```python
-from schematic import Schematic, UpdateAddOnRequestBody, UpdateCreditBundleRequestBody, UpdatePayInAdvanceRequestBody
+from schematic import Schematic, UpdateAddOnRequestBody, UpdateAutoTopupOverrideRequestBody, UpdateCreditBundleRequestBody, UpdatePayInAdvanceRequestBody
from schematic.environment import SchematicEnvironment
client = Schematic(
@@ -6839,6 +6943,11 @@ client.checkout.preview_checkout_internal(
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -13474,6 +13583,7 @@ client = Schematic(
client.plans.list_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -13514,6 +13624,14 @@ client.plans.list_plans(
-
+**company_scoped_only:** `typing.Optional[bool]` — Only return plans that are scoped to a company (custom plans assigned to a company)
+
+
+
+
+
+-
+
**exclude_company_scoped:** `typing.Optional[bool]` — Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -14046,6 +14164,14 @@ client.plans.upsert_plan_for_billing_product(
-
+**external_resource_version:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**icon:** `typing.Optional[PlanIcon]`
@@ -14261,6 +14387,7 @@ client = Schematic(
client.plans.count_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -14301,6 +14428,14 @@ client.plans.count_plans(
-
+**company_scoped_only:** `typing.Optional[bool]` — Only return plans that are scoped to a company (custom plans assigned to a company)
+
+
+
+
+
+-
+
**exclude_company_scoped:** `typing.Optional[bool]` — Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -15501,6 +15636,7 @@ client.events.list_events(
"flag_check"
],
flag_id="flag_id",
+ idempotency_key="idempotency_key",
user_id="user_id",
limit=1000000,
offset=1000000,
@@ -15552,6 +15688,14 @@ client.events.list_events(
-
+**idempotency_key:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**user_id:** `typing.Optional[str]`
@@ -15785,6 +15929,7 @@ client.features.list_features(
ids=[
"ids"
],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -15831,6 +15976,14 @@ client.features.list_features(
-
+**managed_by:** `typing.Optional[BillingProviderType]` — Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
+
+
+
+
+-
+
**plan_version_id:** `typing.Optional[str]` — Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -16485,6 +16638,7 @@ client.features.count_features(
ids=[
"ids"
],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -16531,6 +16685,14 @@ client.features.count_features(
-
+**managed_by:** `typing.Optional[BillingProviderType]` — Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
+
+
+
+
+-
+
**plan_version_id:** `typing.Optional[str]` — Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -17317,8 +17479,8 @@ client.features.count_flags(
-## integrationsapi
-client.integrationsapi.get_integration_webhook_url(...) -> GetIntegrationWebhookUrlResponse
+## insights
+client.insights.get_activity(...) -> GetActivityResponse
-
@@ -17339,8 +17501,8 @@ client = Schematic(
environment=SchematicEnvironment.DEFAULT,
)
-client.integrationsapi.get_integration_webhook_url(
- type="type",
+client.insights.get_activity(
+ limit=1000000,
)
```
@@ -17357,7 +17519,784 @@ client.integrationsapi.get_integration_webhook_url(
-
-**type:** `str` — type
+**limit:** `typing.Optional[int]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.insights.get_environment_feature_usage_time_series(...) -> GetEnvironmentFeatureUsageTimeSeriesResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+import datetime
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.insights.get_environment_feature_usage_time_series(
+ end_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**end_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**feature_id:** `str`
+
+
+
+
+
+-
+
+**start_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**granularity:** `typing.Optional[TimeSeriesGranularity]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.insights.get_plan_growth(...) -> GetPlanGrowthResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.insights.get_plan_growth(
+ months=1000000,
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**months:** `typing.Optional[int]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.insights.get_summary() -> GetSummaryResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.insights.get_summary()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.insights.get_top_features_by_usage(...) -> GetTopFeaturesByUsageResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+import datetime
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.insights.get_top_features_by_usage(
+ end_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+ limit=1000000,
+ start_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**end_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**start_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**limit:** `typing.Optional[int]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.insights.get_environment_trait_usage_time_series(...) -> GetEnvironmentTraitUsageTimeSeriesResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+import datetime
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.insights.get_environment_trait_usage_time_series(
+ end_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat("2024-01-15T09:30:00+00:00"),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**end_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**feature_id:** `str`
+
+
+
+
+
+-
+
+**start_time:** `datetime.datetime`
+
+
+
+
+
+-
+
+**granularity:** `typing.Optional[TimeSeriesGranularity]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## integrationsapi
+client.integrationsapi.run_integration(...) -> RunIntegrationResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.run_integration(
+ integration_id="integration_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**integration_id:** `str` — integration_id
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.integrationsapi.list_integrations(...) -> ListIntegrationsResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.list_integrations(
+ billing_only=True,
+ exclude_ids=[
+ "exclude_ids"
+ ],
+ id="id",
+ state="active",
+ type="clerk",
+ limit=1000000,
+ offset=1000000,
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**billing_only:** `typing.Optional[bool]`
+
+
+
+
+
+-
+
+**exclude_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]`
+
+
+
+
+
+-
+
+**id:** `typing.Optional[str]`
+
+
+
+
+
+-
+
+**state:** `typing.Optional[IntegrationState]`
+
+
+
+
+
+-
+
+**type:** `typing.Optional[IntegrationType]`
+
+
+
+
+
+-
+
+**limit:** `typing.Optional[int]` — Page limit (default 100)
+
+
+
+
+
+-
+
+**offset:** `typing.Optional[int]` — Page offset (default 0)
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.integrationsapi.get_integration_webhook_url(...) -> GetIntegrationWebhookUrlResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.get_integration_webhook_url(
+ type="type",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**type:** `str` — type
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.integrationsapi.start_data_import(...) -> StartDataImportResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.start_data_import(
+ integration_id="integration_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**integration_id:** `str`
+
+
+
+
+
+-
+
+**company_matching_criteria:** `typing.Optional[CompanyMatchingCriteria]`
+
+
+
+
+
+-
+
+**company_matching_field:** `typing.Optional[str]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.integrationsapi.load_sample_data_set_v_2() -> LoadSampleDataSetV2Response
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.load_sample_data_set_v_2()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.integrationsapi.uninstall_integration(...) -> UninstallIntegrationResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.integrationsapi.uninstall_integration(
+ integration_id="integration_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**integration_id:** `str` — integration_id
diff --git a/src/schematic/__init__.py b/src/schematic/__init__.py
index 7fae489..b88ba26 100644
--- a/src/schematic/__init__.py
+++ b/src/schematic/__init__.py
@@ -10,9 +10,12 @@
AccountMemberPermission,
AccountMemberResponseData,
AccountMemberRole,
+ ActivityEntryResponseData,
+ ActivityResponseResponseData,
ActorType,
ApiError,
ApiKeyCreateResponseData,
+ ApiKeyIntegrationResponseData,
ApiKeyResponseData,
ApiKeyScope,
AuditLogListResponseData,
@@ -72,13 +75,17 @@
CheckoutDataResponseData,
CheckoutSettingsResponseData,
CheckoutSubscription,
+ ClerkIntegrationConfig,
+ CompanyCreditBalanceResponseData,
CompanyDetailResponseData,
CompanyEventPeriodMetricsResponseData,
CompanyLedgerResponseData,
+ CompanyMatchingCriteria,
CompanyMembershipDetailResponseData,
CompanyMembershipResponseData,
CompanyOverrideNoteResponseData,
CompanyOverrideResponseData,
+ CompanyPlanCreditGrantView,
CompanyPlanDetailResponseData,
CompanyPlanInvalidReason,
CompanyPlanWithBillingSubView,
@@ -123,6 +130,7 @@
CreditBundleCurrencyPriceResponseData,
CreditBundlePurchaseResponseData,
CreditCompanyGrantView,
+ CreditCurrencyPrice,
CreditCurrencyPriceRequestBody,
CreditCurrencyPriceResponseData,
CreditEventLedgerResponseData,
@@ -171,8 +179,11 @@
EntityTraitValue,
EntityType,
EnvironmentDetailResponseData,
+ EnvironmentFeatureUsageTimeSeriesResponseData,
EnvironmentResponseData,
+ EnvironmentTraitUsageTimeSeriesResponseData,
EnvironmentType,
+ EnvironmentUsagePointResponseData,
EventBody,
EventBodyFlagCheck,
EventBodyIdentify,
@@ -203,8 +214,19 @@
FlagType,
FlagView,
GenericPreviewObject,
+ InsightsSummaryResponseData,
+ IntegrationCapabilities,
+ IntegrationConfig,
+ IntegrationConfig_Clerk,
+ IntegrationConfig_Orb,
+ IntegrationConfig_Stripe,
+ IntegrationResponseData,
+ IntegrationState,
IntegrationType,
IntegrationWebhookUrlResponseData,
+ IntegrationsDataSetResponseData,
+ IntegrationsListResponseData,
+ IntegrationsResponseData,
InvoiceRequestBody,
InvoiceResponseData,
InvoiceStatus,
@@ -217,6 +239,8 @@
MeterRequestBody,
MetricPeriod,
MetricPeriodMonthReset,
+ MrrResponseData,
+ OrbIntegrationConfig,
OrderedPlansInGroup,
PaymentMethodRequestBody,
PaymentMethodResponseData,
@@ -239,6 +263,8 @@
PlanGroupPlanDetailResponseData,
PlanGroupPlanEntitlementsOrder,
PlanGroupResponseData,
+ PlanGrowthPointResponseData,
+ PlanGrowthResponseData,
PlanIcon,
PlanIssueResponseData,
PlanResponseData,
@@ -304,17 +330,21 @@
SkippedEntitlementResponseData,
SortDirection,
StripeEmbedInfo,
+ StripeIntegrationConfig,
SubscriptionStatus,
SubscriptionTraitUpdate,
SubscriptionType,
TemporaryAccessTokenResourceType,
TemporaryAccessTokenResponseData,
TimeSeriesGranularity,
+ TopFeatureByUsageResponseData,
+ TopFeaturesByUsageResponseData,
TraitDefinition,
TraitDefinitionComparableType,
TraitType,
TrialStatus,
UpdateAddOnRequestBody,
+ UpdateAutoTopupOverrideRequestBody,
UpdateBillingPlanCreditGrantRequestBody,
UpdateCreditBundleRequestBody,
UpdateEntitlementReqCommon,
@@ -357,6 +387,7 @@
entitlements,
events,
features,
+ insights,
integrationsapi,
planbundle,
plangroups,
@@ -533,6 +564,8 @@
ListBillingCreditsResponse,
ListBillingPlanCreditGrantsParams,
ListBillingPlanCreditGrantsResponse,
+ ListCompanyCreditBalancesParams,
+ ListCompanyCreditBalancesResponse,
ListCompanyGrantsParams,
ListCompanyGrantsResponse,
ListCreditBundlesParams,
@@ -618,7 +651,28 @@
UpdateFlagRulesResponse,
UpsertFeatureForBillingProductResponse,
)
- from .integrationsapi import GetIntegrationWebhookUrlResponse
+ from .insights import (
+ GetActivityParams,
+ GetActivityResponse,
+ GetEnvironmentFeatureUsageTimeSeriesParams,
+ GetEnvironmentFeatureUsageTimeSeriesResponse,
+ GetEnvironmentTraitUsageTimeSeriesParams,
+ GetEnvironmentTraitUsageTimeSeriesResponse,
+ GetPlanGrowthParams,
+ GetPlanGrowthResponse,
+ GetSummaryResponse,
+ GetTopFeaturesByUsageParams,
+ GetTopFeaturesByUsageResponse,
+ )
+ from .integrationsapi import (
+ GetIntegrationWebhookUrlResponse,
+ ListIntegrationsParams,
+ ListIntegrationsResponse,
+ LoadSampleDataSetV2Response,
+ RunIntegrationResponse,
+ StartDataImportResponse,
+ UninstallIntegrationResponse,
+ )
from .planbundle import CreatePlanBundleResponse, UpdatePlanBundleResponse
from .plangroups import CreatePlanGroupResponse, GetPlanGroupParams, GetPlanGroupResponse, UpdatePlanGroupResponse
from .planmigrations import (
@@ -686,9 +740,12 @@
"AccountMemberPermission": ".types",
"AccountMemberResponseData": ".types",
"AccountMemberRole": ".types",
+ "ActivityEntryResponseData": ".types",
+ "ActivityResponseResponseData": ".types",
"ActorType": ".types",
"ApiError": ".types",
"ApiKeyCreateResponseData": ".types",
+ "ApiKeyIntegrationResponseData": ".types",
"ApiKeyResponseData": ".types",
"ApiKeyScope": ".types",
"AsyncSchematic": ".client",
@@ -756,13 +813,17 @@
"CheckoutInternalResponse": ".checkout",
"CheckoutSettingsResponseData": ".types",
"CheckoutSubscription": ".types",
+ "ClerkIntegrationConfig": ".types",
+ "CompanyCreditBalanceResponseData": ".types",
"CompanyDetailResponseData": ".types",
"CompanyEventPeriodMetricsResponseData": ".types",
"CompanyLedgerResponseData": ".types",
+ "CompanyMatchingCriteria": ".types",
"CompanyMembershipDetailResponseData": ".types",
"CompanyMembershipResponseData": ".types",
"CompanyOverrideNoteResponseData": ".types",
"CompanyOverrideResponseData": ".types",
+ "CompanyPlanCreditGrantView": ".types",
"CompanyPlanDetailResponseData": ".types",
"CompanyPlanInvalidReason": ".types",
"CompanyPlanWithBillingSubView": ".types",
@@ -888,6 +949,7 @@
"CreditBundleCurrencyPriceResponseData": ".types",
"CreditBundlePurchaseResponseData": ".types",
"CreditCompanyGrantView": ".types",
+ "CreditCurrencyPrice": ".types",
"CreditCurrencyPriceRequestBody": ".types",
"CreditCurrencyPriceResponseData": ".types",
"CreditEventLedgerResponseData": ".types",
@@ -959,8 +1021,11 @@
"EntityTraitValue": ".types",
"EntityType": ".types",
"EnvironmentDetailResponseData": ".types",
+ "EnvironmentFeatureUsageTimeSeriesResponseData": ".types",
"EnvironmentResponseData": ".types",
+ "EnvironmentTraitUsageTimeSeriesResponseData": ".types",
"EnvironmentType": ".types",
+ "EnvironmentUsagePointResponseData": ".types",
"EventBody": ".types",
"EventBodyFlagCheck": ".types",
"EventBodyIdentify": ".types",
@@ -995,6 +1060,8 @@
"GetAccountMemberResponse": ".accounts",
"GetActiveCompanySubscriptionParams": ".companies",
"GetActiveCompanySubscriptionResponse": ".companies",
+ "GetActivityParams": ".insights",
+ "GetActivityResponse": ".insights",
"GetApiKeyResponse": ".accounts",
"GetAuditLogResponse": ".accounts",
"GetCheckoutDataResponse": ".checkout",
@@ -1007,7 +1074,11 @@
"GetEntityTraitDefinitionResponse": ".companies",
"GetEntityTraitValuesParams": ".companies",
"GetEntityTraitValuesResponse": ".companies",
+ "GetEnvironmentFeatureUsageTimeSeriesParams": ".insights",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse": ".insights",
"GetEnvironmentResponse": ".accounts",
+ "GetEnvironmentTraitUsageTimeSeriesParams": ".insights",
+ "GetEnvironmentTraitUsageTimeSeriesResponse": ".insights",
"GetEventResponse": ".events",
"GetEventSummariesParams": ".events",
"GetEventSummariesResponse": ".events",
@@ -1025,6 +1096,8 @@
"GetPlanEntitlementResponse": ".entitlements",
"GetPlanGroupParams": ".plangroups",
"GetPlanGroupResponse": ".plangroups",
+ "GetPlanGrowthParams": ".insights",
+ "GetPlanGrowthResponse": ".insights",
"GetPlanParams": ".plans",
"GetPlanResponse": ".plans",
"GetPlanTraitResponse": ".companies",
@@ -1033,13 +1106,27 @@
"GetSegmentIntegrationStatusResponse": ".events",
"GetSingleBillingCreditResponse": ".credits",
"GetSingleBillingPlanCreditGrantResponse": ".credits",
+ "GetSummaryResponse": ".insights",
+ "GetTopFeaturesByUsageParams": ".insights",
+ "GetTopFeaturesByUsageResponse": ".insights",
"GetUserResponse": ".companies",
"GetWebhookEventResponse": ".webhooks",
"GetWebhookResponse": ".webhooks",
"GetWhoAmIResponse": ".accounts",
"GrantBillingCreditsToCompanyResponse": ".credits",
+ "InsightsSummaryResponseData": ".types",
+ "IntegrationCapabilities": ".types",
+ "IntegrationConfig": ".types",
+ "IntegrationConfig_Clerk": ".types",
+ "IntegrationConfig_Orb": ".types",
+ "IntegrationConfig_Stripe": ".types",
+ "IntegrationResponseData": ".types",
+ "IntegrationState": ".types",
"IntegrationType": ".types",
"IntegrationWebhookUrlResponseData": ".types",
+ "IntegrationsDataSetResponseData": ".types",
+ "IntegrationsListResponseData": ".types",
+ "IntegrationsResponseData": ".types",
"InternalServerError": ".errors",
"InvoiceRequestBody": ".types",
"InvoiceResponseData": ".types",
@@ -1068,6 +1155,8 @@
"ListBillingProductsResponse": ".billing",
"ListCompaniesParams": ".companies",
"ListCompaniesResponse": ".companies",
+ "ListCompanyCreditBalancesParams": ".credits",
+ "ListCompanyCreditBalancesResponse": ".credits",
"ListCompanyGrantsParams": ".credits",
"ListCompanyGrantsResponse": ".credits",
"ListCompanyMembershipsParams": ".companies",
@@ -1108,6 +1197,8 @@
"ListFlagsResponse": ".features",
"ListGrantsForCreditParams": ".credits",
"ListGrantsForCreditResponse": ".credits",
+ "ListIntegrationsParams": ".integrationsapi",
+ "ListIntegrationsResponse": ".integrationsapi",
"ListInvoicesParams": ".billing",
"ListInvoicesResponse": ".billing",
"ListMetersParams": ".billing",
@@ -1134,6 +1225,7 @@
"ListWebhookEventsResponse": ".webhooks",
"ListWebhooksParams": ".webhooks",
"ListWebhooksResponse": ".webhooks",
+ "LoadSampleDataSetV2Response": ".integrationsapi",
"LocalCache": ".client",
"LookupCompanyParams": ".companies",
"LookupCompanyResponse": ".companies",
@@ -1146,7 +1238,9 @@
"MeterRequestBody": ".types",
"MetricPeriod": ".types",
"MetricPeriodMonthReset": ".types",
+ "MrrResponseData": ".types",
"NotFoundError": ".errors",
+ "OrbIntegrationConfig": ".types",
"OrderedPlansInGroup": ".types",
"PaymentMethodRequestBody": ".types",
"PaymentMethodResponseData": ".types",
@@ -1169,6 +1263,8 @@
"PlanGroupPlanDetailResponseData": ".types",
"PlanGroupPlanEntitlementsOrder": ".types",
"PlanGroupResponseData": ".types",
+ "PlanGrowthPointResponseData": ".types",
+ "PlanGrowthResponseData": ".types",
"PlanIcon": ".types",
"PlanIssueResponseData": ".types",
"PlanResponseData": ".types",
@@ -1232,6 +1328,7 @@
"RulesengineTraitDefinition": ".types",
"RulesengineTraitDefinitionComparableType": ".types",
"RulesengineUser": ".types",
+ "RunIntegrationResponse": ".integrationsapi",
"ScheduledCheckoutResponseData": ".types",
"ScheduledCheckoutStatus": ".types",
"ScheduledDowngradeConfigBehavior": ".types",
@@ -1244,20 +1341,26 @@
"SkippedEntitlementResponseData": ".types",
"SoftDeleteBillingCreditResponse": ".credits",
"SortDirection": ".types",
+ "StartDataImportResponse": ".integrationsapi",
"StripeEmbedInfo": ".types",
+ "StripeIntegrationConfig": ".types",
"SubscriptionStatus": ".types",
"SubscriptionTraitUpdate": ".types",
"SubscriptionType": ".types",
"TemporaryAccessTokenResourceType": ".types",
"TemporaryAccessTokenResponseData": ".types",
"TimeSeriesGranularity": ".types",
+ "TopFeatureByUsageResponseData": ".types",
+ "TopFeaturesByUsageResponseData": ".types",
"TraitDefinition": ".types",
"TraitDefinitionComparableType": ".types",
"TraitType": ".types",
"TrialStatus": ".types",
"UnauthorizedError": ".errors",
+ "UninstallIntegrationResponse": ".integrationsapi",
"UpdateAddOnRequestBody": ".types",
"UpdateApiKeyResponse": ".accounts",
+ "UpdateAutoTopupOverrideRequestBody": ".types",
"UpdateBillingCreditResponse": ".credits",
"UpdateBillingPlanCreditGrantRequestBody": ".types",
"UpdateBillingPlanCreditGrantResponse": ".credits",
@@ -1334,6 +1437,7 @@
"entitlements": ".entitlements",
"events": ".events",
"features": ".features",
+ "insights": ".insights",
"integrationsapi": ".integrationsapi",
"planbundle": ".planbundle",
"plangroups": ".plangroups",
@@ -1369,9 +1473,12 @@ def __dir__():
"AccountMemberPermission",
"AccountMemberResponseData",
"AccountMemberRole",
+ "ActivityEntryResponseData",
+ "ActivityResponseResponseData",
"ActorType",
"ApiError",
"ApiKeyCreateResponseData",
+ "ApiKeyIntegrationResponseData",
"ApiKeyResponseData",
"ApiKeyScope",
"AsyncSchematic",
@@ -1439,13 +1546,17 @@ def __dir__():
"CheckoutInternalResponse",
"CheckoutSettingsResponseData",
"CheckoutSubscription",
+ "ClerkIntegrationConfig",
+ "CompanyCreditBalanceResponseData",
"CompanyDetailResponseData",
"CompanyEventPeriodMetricsResponseData",
"CompanyLedgerResponseData",
+ "CompanyMatchingCriteria",
"CompanyMembershipDetailResponseData",
"CompanyMembershipResponseData",
"CompanyOverrideNoteResponseData",
"CompanyOverrideResponseData",
+ "CompanyPlanCreditGrantView",
"CompanyPlanDetailResponseData",
"CompanyPlanInvalidReason",
"CompanyPlanWithBillingSubView",
@@ -1571,6 +1682,7 @@ def __dir__():
"CreditBundleCurrencyPriceResponseData",
"CreditBundlePurchaseResponseData",
"CreditCompanyGrantView",
+ "CreditCurrencyPrice",
"CreditCurrencyPriceRequestBody",
"CreditCurrencyPriceResponseData",
"CreditEventLedgerResponseData",
@@ -1642,8 +1754,11 @@ def __dir__():
"EntityTraitValue",
"EntityType",
"EnvironmentDetailResponseData",
+ "EnvironmentFeatureUsageTimeSeriesResponseData",
"EnvironmentResponseData",
+ "EnvironmentTraitUsageTimeSeriesResponseData",
"EnvironmentType",
+ "EnvironmentUsagePointResponseData",
"EventBody",
"EventBodyFlagCheck",
"EventBodyIdentify",
@@ -1678,6 +1793,8 @@ def __dir__():
"GetAccountMemberResponse",
"GetActiveCompanySubscriptionParams",
"GetActiveCompanySubscriptionResponse",
+ "GetActivityParams",
+ "GetActivityResponse",
"GetApiKeyResponse",
"GetAuditLogResponse",
"GetCheckoutDataResponse",
@@ -1690,7 +1807,11 @@ def __dir__():
"GetEntityTraitDefinitionResponse",
"GetEntityTraitValuesParams",
"GetEntityTraitValuesResponse",
+ "GetEnvironmentFeatureUsageTimeSeriesParams",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse",
"GetEnvironmentResponse",
+ "GetEnvironmentTraitUsageTimeSeriesParams",
+ "GetEnvironmentTraitUsageTimeSeriesResponse",
"GetEventResponse",
"GetEventSummariesParams",
"GetEventSummariesResponse",
@@ -1708,6 +1829,8 @@ def __dir__():
"GetPlanEntitlementResponse",
"GetPlanGroupParams",
"GetPlanGroupResponse",
+ "GetPlanGrowthParams",
+ "GetPlanGrowthResponse",
"GetPlanParams",
"GetPlanResponse",
"GetPlanTraitResponse",
@@ -1716,13 +1839,27 @@ def __dir__():
"GetSegmentIntegrationStatusResponse",
"GetSingleBillingCreditResponse",
"GetSingleBillingPlanCreditGrantResponse",
+ "GetSummaryResponse",
+ "GetTopFeaturesByUsageParams",
+ "GetTopFeaturesByUsageResponse",
"GetUserResponse",
"GetWebhookEventResponse",
"GetWebhookResponse",
"GetWhoAmIResponse",
"GrantBillingCreditsToCompanyResponse",
+ "InsightsSummaryResponseData",
+ "IntegrationCapabilities",
+ "IntegrationConfig",
+ "IntegrationConfig_Clerk",
+ "IntegrationConfig_Orb",
+ "IntegrationConfig_Stripe",
+ "IntegrationResponseData",
+ "IntegrationState",
"IntegrationType",
"IntegrationWebhookUrlResponseData",
+ "IntegrationsDataSetResponseData",
+ "IntegrationsListResponseData",
+ "IntegrationsResponseData",
"InternalServerError",
"InvoiceRequestBody",
"InvoiceResponseData",
@@ -1751,6 +1888,8 @@ def __dir__():
"ListBillingProductsResponse",
"ListCompaniesParams",
"ListCompaniesResponse",
+ "ListCompanyCreditBalancesParams",
+ "ListCompanyCreditBalancesResponse",
"ListCompanyGrantsParams",
"ListCompanyGrantsResponse",
"ListCompanyMembershipsParams",
@@ -1791,6 +1930,8 @@ def __dir__():
"ListFlagsResponse",
"ListGrantsForCreditParams",
"ListGrantsForCreditResponse",
+ "ListIntegrationsParams",
+ "ListIntegrationsResponse",
"ListInvoicesParams",
"ListInvoicesResponse",
"ListMetersParams",
@@ -1817,6 +1958,7 @@ def __dir__():
"ListWebhookEventsResponse",
"ListWebhooksParams",
"ListWebhooksResponse",
+ "LoadSampleDataSetV2Response",
"LocalCache",
"LookupCompanyParams",
"LookupCompanyResponse",
@@ -1829,7 +1971,9 @@ def __dir__():
"MeterRequestBody",
"MetricPeriod",
"MetricPeriodMonthReset",
+ "MrrResponseData",
"NotFoundError",
+ "OrbIntegrationConfig",
"OrderedPlansInGroup",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
@@ -1852,6 +1996,8 @@ def __dir__():
"PlanGroupPlanDetailResponseData",
"PlanGroupPlanEntitlementsOrder",
"PlanGroupResponseData",
+ "PlanGrowthPointResponseData",
+ "PlanGrowthResponseData",
"PlanIcon",
"PlanIssueResponseData",
"PlanResponseData",
@@ -1915,6 +2061,7 @@ def __dir__():
"RulesengineTraitDefinition",
"RulesengineTraitDefinitionComparableType",
"RulesengineUser",
+ "RunIntegrationResponse",
"ScheduledCheckoutResponseData",
"ScheduledCheckoutStatus",
"ScheduledDowngradeConfigBehavior",
@@ -1927,20 +2074,26 @@ def __dir__():
"SkippedEntitlementResponseData",
"SoftDeleteBillingCreditResponse",
"SortDirection",
+ "StartDataImportResponse",
"StripeEmbedInfo",
+ "StripeIntegrationConfig",
"SubscriptionStatus",
"SubscriptionTraitUpdate",
"SubscriptionType",
"TemporaryAccessTokenResourceType",
"TemporaryAccessTokenResponseData",
"TimeSeriesGranularity",
+ "TopFeatureByUsageResponseData",
+ "TopFeaturesByUsageResponseData",
"TraitDefinition",
"TraitDefinitionComparableType",
"TraitType",
"TrialStatus",
"UnauthorizedError",
+ "UninstallIntegrationResponse",
"UpdateAddOnRequestBody",
"UpdateApiKeyResponse",
+ "UpdateAutoTopupOverrideRequestBody",
"UpdateBillingCreditResponse",
"UpdateBillingPlanCreditGrantRequestBody",
"UpdateBillingPlanCreditGrantResponse",
@@ -2017,6 +2170,7 @@ def __dir__():
"entitlements",
"events",
"features",
+ "insights",
"integrationsapi",
"planbundle",
"plangroups",
diff --git a/src/schematic/base_client.py b/src/schematic/base_client.py
index 0dbd075..864ba7b 100644
--- a/src/schematic/base_client.py
+++ b/src/schematic/base_client.py
@@ -22,6 +22,7 @@
from .entitlements.client import AsyncEntitlementsClient, EntitlementsClient
from .events.client import AsyncEventsClient, EventsClient
from .features.client import AsyncFeaturesClient, FeaturesClient
+ from .insights.client import AsyncInsightsClient, InsightsClient
from .integrationsapi.client import AsyncIntegrationsapiClient, IntegrationsapiClient
from .planbundle.client import AsyncPlanbundleClient, PlanbundleClient
from .plangroups.client import AsyncPlangroupsClient, PlangroupsClient
@@ -112,6 +113,7 @@ def __init__(
self._dataexports: typing.Optional[DataexportsClient] = None
self._events: typing.Optional[EventsClient] = None
self._features: typing.Optional[FeaturesClient] = None
+ self._insights: typing.Optional[InsightsClient] = None
self._integrationsapi: typing.Optional[IntegrationsapiClient] = None
self._planbundle: typing.Optional[PlanbundleClient] = None
self._plangroups: typing.Optional[PlangroupsClient] = None
@@ -209,6 +211,14 @@ def features(self):
self._features = FeaturesClient(client_wrapper=self._client_wrapper)
return self._features
+ @property
+ def insights(self):
+ if self._insights is None:
+ from .insights.client import InsightsClient # noqa: E402
+
+ self._insights = InsightsClient(client_wrapper=self._client_wrapper)
+ return self._insights
+
@property
def integrationsapi(self):
if self._integrationsapi is None:
@@ -355,6 +365,7 @@ def __init__(
self._dataexports: typing.Optional[AsyncDataexportsClient] = None
self._events: typing.Optional[AsyncEventsClient] = None
self._features: typing.Optional[AsyncFeaturesClient] = None
+ self._insights: typing.Optional[AsyncInsightsClient] = None
self._integrationsapi: typing.Optional[AsyncIntegrationsapiClient] = None
self._planbundle: typing.Optional[AsyncPlanbundleClient] = None
self._plangroups: typing.Optional[AsyncPlangroupsClient] = None
@@ -452,6 +463,14 @@ def features(self):
self._features = AsyncFeaturesClient(client_wrapper=self._client_wrapper)
return self._features
+ @property
+ def insights(self):
+ if self._insights is None:
+ from .insights.client import AsyncInsightsClient # noqa: E402
+
+ self._insights = AsyncInsightsClient(client_wrapper=self._client_wrapper)
+ return self._insights
+
@property
def integrationsapi(self):
if self._integrationsapi is None:
diff --git a/src/schematic/billing/client.py b/src/schematic/billing/client.py
index 5faffeb..adf387a 100644
--- a/src/schematic/billing/client.py
+++ b/src/schematic/billing/client.py
@@ -1220,6 +1220,7 @@ def list_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -1244,6 +1245,9 @@ def list_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -1284,6 +1288,7 @@ def list_billing_products(
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -1299,6 +1304,7 @@ def list_billing_products(
price_usage_type=price_usage_type,
provider_type=provider_type,
q=q,
+ recurring_charges_only=recurring_charges_only,
with_one_time_charges=with_one_time_charges,
with_prices_only=with_prices_only,
with_zero_price=with_zero_price,
@@ -1318,6 +1324,7 @@ def count_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -1342,6 +1349,9 @@ def count_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -1382,6 +1392,7 @@ def count_billing_products(
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -1397,6 +1408,7 @@ def count_billing_products(
price_usage_type=price_usage_type,
provider_type=provider_type,
q=q,
+ recurring_charges_only=recurring_charges_only,
with_one_time_charges=with_one_time_charges,
with_prices_only=with_prices_only,
with_zero_price=with_zero_price,
@@ -2870,6 +2882,7 @@ async def list_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -2894,6 +2907,9 @@ async def list_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -2939,6 +2955,7 @@ async def main() -> None:
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -2957,6 +2974,7 @@ async def main() -> None:
price_usage_type=price_usage_type,
provider_type=provider_type,
q=q,
+ recurring_charges_only=recurring_charges_only,
with_one_time_charges=with_one_time_charges,
with_prices_only=with_prices_only,
with_zero_price=with_zero_price,
@@ -2976,6 +2994,7 @@ async def count_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -3000,6 +3019,9 @@ async def count_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -3045,6 +3067,7 @@ async def main() -> None:
price_usage_type="licensed",
provider_type="orb",
q="q",
+ recurring_charges_only=True,
with_one_time_charges=True,
with_prices_only=True,
with_zero_price=True,
@@ -3063,6 +3086,7 @@ async def main() -> None:
price_usage_type=price_usage_type,
provider_type=provider_type,
q=q,
+ recurring_charges_only=recurring_charges_only,
with_one_time_charges=with_one_time_charges,
with_prices_only=with_prices_only,
with_zero_price=with_zero_price,
diff --git a/src/schematic/billing/raw_client.py b/src/schematic/billing/raw_client.py
index d2d02aa..0c51e8d 100644
--- a/src/schematic/billing/raw_client.py
+++ b/src/schematic/billing/raw_client.py
@@ -2347,6 +2347,7 @@ def list_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -2371,6 +2372,9 @@ def list_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -2407,6 +2411,7 @@ def list_billing_products(
"price_usage_type": price_usage_type,
"provider_type": provider_type,
"q": q,
+ "recurring_charges_only": recurring_charges_only,
"with_one_time_charges": with_one_time_charges,
"with_prices_only": with_prices_only,
"with_zero_price": with_zero_price,
@@ -2503,6 +2508,7 @@ def count_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -2527,6 +2533,9 @@ def count_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -2563,6 +2572,7 @@ def count_billing_products(
"price_usage_type": price_usage_type,
"provider_type": provider_type,
"q": q,
+ "recurring_charges_only": recurring_charges_only,
"with_one_time_charges": with_one_time_charges,
"with_prices_only": with_prices_only,
"with_zero_price": with_zero_price,
@@ -5134,6 +5144,7 @@ async def list_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -5158,6 +5169,9 @@ async def list_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -5194,6 +5208,7 @@ async def list_billing_products(
"price_usage_type": price_usage_type,
"provider_type": provider_type,
"q": q,
+ "recurring_charges_only": recurring_charges_only,
"with_one_time_charges": with_one_time_charges,
"with_prices_only": with_prices_only,
"with_zero_price": with_zero_price,
@@ -5290,6 +5305,7 @@ async def count_billing_products(
price_usage_type: typing.Optional[BillingPriceUsageType] = None,
provider_type: typing.Optional[BillingProviderType] = None,
q: typing.Optional[str] = None,
+ recurring_charges_only: typing.Optional[bool] = None,
with_one_time_charges: typing.Optional[bool] = None,
with_prices_only: typing.Optional[bool] = None,
with_zero_price: typing.Optional[bool] = None,
@@ -5314,6 +5330,9 @@ async def count_billing_products(
q : typing.Optional[str]
+ recurring_charges_only : typing.Optional[bool]
+ Filter to products that have at least one recurring price
+
with_one_time_charges : typing.Optional[bool]
Filter products that are one time charges
@@ -5350,6 +5369,7 @@ async def count_billing_products(
"price_usage_type": price_usage_type,
"provider_type": provider_type,
"q": q,
+ "recurring_charges_only": recurring_charges_only,
"with_one_time_charges": with_one_time_charges,
"with_prices_only": with_prices_only,
"with_zero_price": with_zero_price,
diff --git a/src/schematic/billing/types/count_billing_products_params.py b/src/schematic/billing/types/count_billing_products_params.py
index 8571863..cdb3137 100644
--- a/src/schematic/billing/types/count_billing_products_params.py
+++ b/src/schematic/billing/types/count_billing_products_params.py
@@ -33,6 +33,11 @@ class CountBillingProductsParams(UniversalBaseModel):
price_usage_type: typing.Optional[BillingPriceUsageType] = None
provider_type: typing.Optional[BillingProviderType] = None
q: typing.Optional[str] = None
+ recurring_charges_only: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Filter to products that have at least one recurring price
+ """
+
with_one_time_charges: typing.Optional[bool] = pydantic.Field(default=None)
"""
Filter products that are one time charges
diff --git a/src/schematic/billing/types/list_billing_products_params.py b/src/schematic/billing/types/list_billing_products_params.py
index 535e85d..dae2772 100644
--- a/src/schematic/billing/types/list_billing_products_params.py
+++ b/src/schematic/billing/types/list_billing_products_params.py
@@ -33,6 +33,11 @@ class ListBillingProductsParams(UniversalBaseModel):
price_usage_type: typing.Optional[BillingPriceUsageType] = None
provider_type: typing.Optional[BillingProviderType] = None
q: typing.Optional[str] = None
+ recurring_charges_only: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Filter to products that have at least one recurring price
+ """
+
with_one_time_charges: typing.Optional[bool] = pydantic.Field(default=None)
"""
Filter products that are one time charges
diff --git a/src/schematic/checkout/client.py b/src/schematic/checkout/client.py
index 5f57a2f..1fbed9e 100644
--- a/src/schematic/checkout/client.py
+++ b/src/schematic/checkout/client.py
@@ -7,6 +7,7 @@
from ..core.request_options import RequestOptions
from ..types.plan_selection import PlanSelection
from ..types.update_add_on_request_body import UpdateAddOnRequestBody
+from ..types.update_auto_topup_override_request_body import UpdateAutoTopupOverrideRequestBody
from ..types.update_credit_bundle_request_body import UpdateCreditBundleRequestBody
from ..types.update_pay_in_advance_request_body import UpdatePayInAdvanceRequestBody
from .raw_client import AsyncRawCheckoutClient, RawCheckoutClient
@@ -41,6 +42,7 @@ def internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -57,6 +59,8 @@ def internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -88,6 +92,7 @@ def internal(
from schematic import (
Schematic,
UpdateAddOnRequestBody,
+ UpdateAutoTopupOverrideRequestBody,
UpdateCreditBundleRequestBody,
UpdatePayInAdvanceRequestBody,
)
@@ -102,6 +107,11 @@ def internal(
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -122,6 +132,7 @@ def internal(
"""
_response = self._raw_client.internal(
add_on_ids=add_on_ids,
+ auto_topup_overrides=auto_topup_overrides,
company_id=company_id,
credit_bundles=credit_bundles,
new_plan_id=new_plan_id,
@@ -177,6 +188,7 @@ def preview_checkout_internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -193,6 +205,8 @@ def preview_checkout_internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -224,6 +238,7 @@ def preview_checkout_internal(
from schematic import (
Schematic,
UpdateAddOnRequestBody,
+ UpdateAutoTopupOverrideRequestBody,
UpdateCreditBundleRequestBody,
UpdatePayInAdvanceRequestBody,
)
@@ -238,6 +253,11 @@ def preview_checkout_internal(
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -258,6 +278,7 @@ def preview_checkout_internal(
"""
_response = self._raw_client.preview_checkout_internal(
add_on_ids=add_on_ids,
+ auto_topup_overrides=auto_topup_overrides,
company_id=company_id,
credit_bundles=credit_bundles,
new_plan_id=new_plan_id,
@@ -592,6 +613,7 @@ async def internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -608,6 +630,8 @@ async def internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -641,6 +665,7 @@ async def internal(
from schematic import (
AsyncSchematic,
UpdateAddOnRequestBody,
+ UpdateAutoTopupOverrideRequestBody,
UpdateCreditBundleRequestBody,
UpdatePayInAdvanceRequestBody,
)
@@ -658,6 +683,11 @@ async def main() -> None:
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -681,6 +711,7 @@ async def main() -> None:
"""
_response = await self._raw_client.internal(
add_on_ids=add_on_ids,
+ auto_topup_overrides=auto_topup_overrides,
company_id=company_id,
credit_bundles=credit_bundles,
new_plan_id=new_plan_id,
@@ -744,6 +775,7 @@ async def preview_checkout_internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -760,6 +792,8 @@ async def preview_checkout_internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -793,6 +827,7 @@ async def preview_checkout_internal(
from schematic import (
AsyncSchematic,
UpdateAddOnRequestBody,
+ UpdateAutoTopupOverrideRequestBody,
UpdateCreditBundleRequestBody,
UpdatePayInAdvanceRequestBody,
)
@@ -810,6 +845,11 @@ async def main() -> None:
price_id="price_id",
)
],
+ auto_topup_overrides=[
+ UpdateAutoTopupOverrideRequestBody(
+ plan_credit_grant_id="plan_credit_grant_id",
+ )
+ ],
company_id="company_id",
credit_bundles=[
UpdateCreditBundleRequestBody(
@@ -833,6 +873,7 @@ async def main() -> None:
"""
_response = await self._raw_client.preview_checkout_internal(
add_on_ids=add_on_ids,
+ auto_topup_overrides=auto_topup_overrides,
company_id=company_id,
credit_bundles=credit_bundles,
new_plan_id=new_plan_id,
diff --git a/src/schematic/checkout/raw_client.py b/src/schematic/checkout/raw_client.py
index cde331d..0134955 100644
--- a/src/schematic/checkout/raw_client.py
+++ b/src/schematic/checkout/raw_client.py
@@ -20,6 +20,7 @@
from ..types.api_error import ApiError as types_api_error_ApiError
from ..types.plan_selection import PlanSelection
from ..types.update_add_on_request_body import UpdateAddOnRequestBody
+from ..types.update_auto_topup_override_request_body import UpdateAutoTopupOverrideRequestBody
from ..types.update_credit_bundle_request_body import UpdateCreditBundleRequestBody
from ..types.update_pay_in_advance_request_body import UpdatePayInAdvanceRequestBody
from .types.cancel_subscription_response import CancelSubscriptionResponse
@@ -43,6 +44,7 @@ def internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -59,6 +61,8 @@ def internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -92,6 +96,11 @@ def internal(
"add_on_ids": convert_and_respect_annotation_metadata(
object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
),
+ "auto_topup_overrides": convert_and_respect_annotation_metadata(
+ object_=auto_topup_overrides,
+ annotation=typing.Sequence[UpdateAutoTopupOverrideRequestBody],
+ direction="write",
+ ),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"credit_bundles": convert_and_respect_annotation_metadata(
@@ -307,6 +316,7 @@ def preview_checkout_internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -323,6 +333,8 @@ def preview_checkout_internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -356,6 +368,11 @@ def preview_checkout_internal(
"add_on_ids": convert_and_respect_annotation_metadata(
object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
),
+ "auto_topup_overrides": convert_and_respect_annotation_metadata(
+ object_=auto_topup_overrides,
+ annotation=typing.Sequence[UpdateAutoTopupOverrideRequestBody],
+ direction="write",
+ ),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"credit_bundles": convert_and_respect_annotation_metadata(
@@ -1029,6 +1046,7 @@ async def internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -1045,6 +1063,8 @@ async def internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -1078,6 +1098,11 @@ async def internal(
"add_on_ids": convert_and_respect_annotation_metadata(
object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
),
+ "auto_topup_overrides": convert_and_respect_annotation_metadata(
+ object_=auto_topup_overrides,
+ annotation=typing.Sequence[UpdateAutoTopupOverrideRequestBody],
+ direction="write",
+ ),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"credit_bundles": convert_and_respect_annotation_metadata(
@@ -1293,6 +1318,7 @@ async def preview_checkout_internal(
self,
*,
add_on_ids: typing.Sequence[UpdateAddOnRequestBody],
+ auto_topup_overrides: typing.Sequence[UpdateAutoTopupOverrideRequestBody],
company_id: str,
credit_bundles: typing.Sequence[UpdateCreditBundleRequestBody],
new_plan_id: str,
@@ -1309,6 +1335,8 @@ async def preview_checkout_internal(
----------
add_on_ids : typing.Sequence[UpdateAddOnRequestBody]
+ auto_topup_overrides : typing.Sequence[UpdateAutoTopupOverrideRequestBody]
+
company_id : str
credit_bundles : typing.Sequence[UpdateCreditBundleRequestBody]
@@ -1342,6 +1370,11 @@ async def preview_checkout_internal(
"add_on_ids": convert_and_respect_annotation_metadata(
object_=add_on_ids, annotation=typing.Sequence[UpdateAddOnRequestBody], direction="write"
),
+ "auto_topup_overrides": convert_and_respect_annotation_metadata(
+ object_=auto_topup_overrides,
+ annotation=typing.Sequence[UpdateAutoTopupOverrideRequestBody],
+ direction="write",
+ ),
"company_id": company_id,
"coupon_external_id": coupon_external_id,
"credit_bundles": convert_and_respect_annotation_metadata(
diff --git a/src/schematic/credits/__init__.py b/src/schematic/credits/__init__.py
index 13c1dd5..67a9887 100644
--- a/src/schematic/credits/__init__.py
+++ b/src/schematic/credits/__init__.py
@@ -37,6 +37,8 @@
ListBillingCreditsResponse,
ListBillingPlanCreditGrantsParams,
ListBillingPlanCreditGrantsResponse,
+ ListCompanyCreditBalancesParams,
+ ListCompanyCreditBalancesResponse,
ListCompanyGrantsParams,
ListCompanyGrantsResponse,
ListCreditBundlesParams,
@@ -82,6 +84,8 @@
"ListBillingCreditsResponse": ".types",
"ListBillingPlanCreditGrantsParams": ".types",
"ListBillingPlanCreditGrantsResponse": ".types",
+ "ListCompanyCreditBalancesParams": ".types",
+ "ListCompanyCreditBalancesResponse": ".types",
"ListCompanyGrantsParams": ".types",
"ListCompanyGrantsResponse": ".types",
"ListCreditBundlesParams": ".types",
@@ -150,6 +154,8 @@ def __dir__():
"ListBillingCreditsResponse",
"ListBillingPlanCreditGrantsParams",
"ListBillingPlanCreditGrantsResponse",
+ "ListCompanyCreditBalancesParams",
+ "ListCompanyCreditBalancesResponse",
"ListCompanyGrantsParams",
"ListCompanyGrantsResponse",
"ListCreditBundlesParams",
diff --git a/src/schematic/credits/client.py b/src/schematic/credits/client.py
index 57fa403..8cc0234 100644
--- a/src/schematic/credits/client.py
+++ b/src/schematic/credits/client.py
@@ -43,6 +43,7 @@
from .types.grant_billing_credits_to_company_response import GrantBillingCreditsToCompanyResponse
from .types.list_billing_credits_response import ListBillingCreditsResponse
from .types.list_billing_plan_credit_grants_response import ListBillingPlanCreditGrantsResponse
+from .types.list_company_credit_balances_response import ListCompanyCreditBalancesResponse
from .types.list_company_grants_response import ListCompanyGrantsResponse
from .types.list_credit_bundles_response import ListCreditBundlesResponse
from .types.list_credit_event_ledger_response import ListCreditEventLedgerResponse
@@ -356,6 +357,38 @@ def soft_delete_billing_credit(
_response = self._raw_client.soft_delete_billing_credit(credit_id, request_options=request_options)
return _response.data
+ def list_company_credit_balances(
+ self, *, company_id: str, request_options: typing.Optional[RequestOptions] = None
+ ) -> ListCompanyCreditBalancesResponse:
+ """
+ Parameters
+ ----------
+ company_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListCompanyCreditBalancesResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.credits.list_company_credit_balances(
+ company_id="company_id",
+ )
+ """
+ _response = self._raw_client.list_company_credit_balances(
+ company_id=company_id, request_options=request_options
+ )
+ return _response.data
+
def list_credit_bundles(
self,
*,
@@ -1227,6 +1260,7 @@ def list_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -1244,6 +1278,8 @@ def list_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -1271,6 +1307,7 @@ def list_billing_plan_credit_grants(
plan_id="plan_id",
plan_ids=["plan_ids"],
plan_version_id="plan_version_id",
+ plan_version_ids=["plan_version_ids"],
limit=1000000,
offset=1000000,
)
@@ -1281,6 +1318,7 @@ def list_billing_plan_credit_grants(
plan_id=plan_id,
plan_ids=plan_ids,
plan_version_id=plan_version_id,
+ plan_version_ids=plan_version_ids,
limit=limit,
offset=offset,
request_options=request_options,
@@ -1302,6 +1340,7 @@ def create_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
@@ -1338,6 +1377,8 @@ def create_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -1388,6 +1429,7 @@ def create_billing_plan_credit_grant(
auto_topup_expiry_type=auto_topup_expiry_type,
auto_topup_expiry_unit=auto_topup_expiry_unit,
auto_topup_expiry_unit_count=auto_topup_expiry_unit_count,
+ auto_topup_self_service=auto_topup_self_service,
auto_topup_threshold_credits=auto_topup_threshold_credits,
auto_topup_threshold_percent=auto_topup_threshold_percent,
expiry_type=expiry_type,
@@ -1445,6 +1487,7 @@ def update_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
credit_amount: typing.Optional[int] = OMIT,
@@ -1478,6 +1521,8 @@ def update_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -1524,6 +1569,7 @@ def update_billing_plan_credit_grant(
auto_topup_expiry_type=auto_topup_expiry_type,
auto_topup_expiry_unit=auto_topup_expiry_unit,
auto_topup_expiry_unit_count=auto_topup_expiry_unit_count,
+ auto_topup_self_service=auto_topup_self_service,
auto_topup_threshold_credits=auto_topup_threshold_credits,
auto_topup_threshold_percent=auto_topup_threshold_percent,
credit_amount=credit_amount,
@@ -1583,6 +1629,7 @@ def count_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -1600,6 +1647,8 @@ def count_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -1627,6 +1676,7 @@ def count_billing_plan_credit_grants(
plan_id="plan_id",
plan_ids=["plan_ids"],
plan_version_id="plan_version_id",
+ plan_version_ids=["plan_version_ids"],
limit=1000000,
offset=1000000,
)
@@ -1637,6 +1687,7 @@ def count_billing_plan_credit_grants(
plan_id=plan_id,
plan_ids=plan_ids,
plan_version_id=plan_version_id,
+ plan_version_ids=plan_version_ids,
limit=limit,
offset=offset,
request_options=request_options,
@@ -2129,6 +2180,46 @@ async def main() -> None:
_response = await self._raw_client.soft_delete_billing_credit(credit_id, request_options=request_options)
return _response.data
+ async def list_company_credit_balances(
+ self, *, company_id: str, request_options: typing.Optional[RequestOptions] = None
+ ) -> ListCompanyCreditBalancesResponse:
+ """
+ Parameters
+ ----------
+ company_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListCompanyCreditBalancesResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.credits.list_company_credit_balances(
+ company_id="company_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.list_company_credit_balances(
+ company_id=company_id, request_options=request_options
+ )
+ return _response.data
+
async def list_credit_bundles(
self,
*,
@@ -3120,6 +3211,7 @@ async def list_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -3137,6 +3229,8 @@ async def list_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -3169,6 +3263,7 @@ async def main() -> None:
plan_id="plan_id",
plan_ids=["plan_ids"],
plan_version_id="plan_version_id",
+ plan_version_ids=["plan_version_ids"],
limit=1000000,
offset=1000000,
)
@@ -3182,6 +3277,7 @@ async def main() -> None:
plan_id=plan_id,
plan_ids=plan_ids,
plan_version_id=plan_version_id,
+ plan_version_ids=plan_version_ids,
limit=limit,
offset=offset,
request_options=request_options,
@@ -3203,6 +3299,7 @@ async def create_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
@@ -3239,6 +3336,8 @@ async def create_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -3297,6 +3396,7 @@ async def main() -> None:
auto_topup_expiry_type=auto_topup_expiry_type,
auto_topup_expiry_unit=auto_topup_expiry_unit,
auto_topup_expiry_unit_count=auto_topup_expiry_unit_count,
+ auto_topup_self_service=auto_topup_self_service,
auto_topup_threshold_credits=auto_topup_threshold_credits,
auto_topup_threshold_percent=auto_topup_threshold_percent,
expiry_type=expiry_type,
@@ -3362,6 +3462,7 @@ async def update_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
credit_amount: typing.Optional[int] = OMIT,
@@ -3395,6 +3496,8 @@ async def update_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -3449,6 +3552,7 @@ async def main() -> None:
auto_topup_expiry_type=auto_topup_expiry_type,
auto_topup_expiry_unit=auto_topup_expiry_unit,
auto_topup_expiry_unit_count=auto_topup_expiry_unit_count,
+ auto_topup_self_service=auto_topup_self_service,
auto_topup_threshold_credits=auto_topup_threshold_credits,
auto_topup_threshold_percent=auto_topup_threshold_percent,
credit_amount=credit_amount,
@@ -3516,6 +3620,7 @@ async def count_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -3533,6 +3638,8 @@ async def count_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -3565,6 +3672,7 @@ async def main() -> None:
plan_id="plan_id",
plan_ids=["plan_ids"],
plan_version_id="plan_version_id",
+ plan_version_ids=["plan_version_ids"],
limit=1000000,
offset=1000000,
)
@@ -3578,6 +3686,7 @@ async def main() -> None:
plan_id=plan_id,
plan_ids=plan_ids,
plan_version_id=plan_version_id,
+ plan_version_ids=plan_version_ids,
limit=limit,
offset=offset,
request_options=request_options,
diff --git a/src/schematic/credits/raw_client.py b/src/schematic/credits/raw_client.py
index 13165e0..e745709 100644
--- a/src/schematic/credits/raw_client.py
+++ b/src/schematic/credits/raw_client.py
@@ -55,6 +55,7 @@
from .types.grant_billing_credits_to_company_response import GrantBillingCreditsToCompanyResponse
from .types.list_billing_credits_response import ListBillingCreditsResponse
from .types.list_billing_plan_credit_grants_response import ListBillingPlanCreditGrantsResponse
+from .types.list_company_credit_balances_response import ListCompanyCreditBalancesResponse
from .types.list_company_grants_response import ListCompanyGrantsResponse
from .types.list_credit_bundles_response import ListCreditBundlesResponse
from .types.list_credit_event_ledger_response import ListCreditEventLedgerResponse
@@ -704,6 +705,108 @@ def soft_delete_billing_credit(
status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
)
+ def list_company_credit_balances(
+ self, *, company_id: str, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[ListCompanyCreditBalancesResponse]:
+ """
+ Parameters
+ ----------
+ company_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[ListCompanyCreditBalancesResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "billing/credits/balance",
+ method="GET",
+ params={
+ "company_id": company_id,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListCompanyCreditBalancesResponse,
+ parse_obj_as(
+ type_=ListCompanyCreditBalancesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
def list_credit_bundles(
self,
*,
@@ -2600,6 +2703,7 @@ def list_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -2617,6 +2721,8 @@ def list_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -2640,6 +2746,7 @@ def list_billing_plan_credit_grants(
"plan_id": plan_id,
"plan_ids": plan_ids,
"plan_version_id": plan_version_id,
+ "plan_version_ids": plan_version_ids,
"limit": limit,
"offset": offset,
},
@@ -2738,6 +2845,7 @@ def create_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
@@ -2774,6 +2882,8 @@ def create_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -2807,6 +2917,7 @@ def create_billing_plan_credit_grant(
"auto_topup_expiry_type": auto_topup_expiry_type,
"auto_topup_expiry_unit": auto_topup_expiry_unit,
"auto_topup_expiry_unit_count": auto_topup_expiry_unit_count,
+ "auto_topup_self_service": auto_topup_self_service,
"auto_topup_threshold_credits": auto_topup_threshold_credits,
"auto_topup_threshold_percent": auto_topup_threshold_percent,
"credit_amount": credit_amount,
@@ -3006,6 +3117,7 @@ def update_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
credit_amount: typing.Optional[int] = OMIT,
@@ -3039,6 +3151,8 @@ def update_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -3072,6 +3186,7 @@ def update_billing_plan_credit_grant(
"auto_topup_expiry_type": auto_topup_expiry_type,
"auto_topup_expiry_unit": auto_topup_expiry_unit,
"auto_topup_expiry_unit_count": auto_topup_expiry_unit_count,
+ "auto_topup_self_service": auto_topup_self_service,
"auto_topup_threshold_credits": auto_topup_threshold_credits,
"auto_topup_threshold_percent": auto_topup_threshold_percent,
"credit_amount": credit_amount,
@@ -3283,6 +3398,7 @@ def count_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -3300,6 +3416,8 @@ def count_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -3323,6 +3441,7 @@ def count_billing_plan_credit_grants(
"plan_id": plan_id,
"plan_ids": plan_ids,
"plan_version_id": plan_version_id,
+ "plan_version_ids": plan_version_ids,
"limit": limit,
"offset": offset,
},
@@ -4311,6 +4430,108 @@ async def soft_delete_billing_credit(
status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
)
+ async def list_company_credit_balances(
+ self, *, company_id: str, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[ListCompanyCreditBalancesResponse]:
+ """
+ Parameters
+ ----------
+ company_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[ListCompanyCreditBalancesResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "billing/credits/balance",
+ method="GET",
+ params={
+ "company_id": company_id,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListCompanyCreditBalancesResponse,
+ parse_obj_as(
+ type_=ListCompanyCreditBalancesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
async def list_credit_bundles(
self,
*,
@@ -6207,6 +6428,7 @@ async def list_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -6224,6 +6446,8 @@ async def list_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -6247,6 +6471,7 @@ async def list_billing_plan_credit_grants(
"plan_id": plan_id,
"plan_ids": plan_ids,
"plan_version_id": plan_version_id,
+ "plan_version_ids": plan_version_ids,
"limit": limit,
"offset": offset,
},
@@ -6345,6 +6570,7 @@ async def create_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
@@ -6381,6 +6607,8 @@ async def create_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -6414,6 +6642,7 @@ async def create_billing_plan_credit_grant(
"auto_topup_expiry_type": auto_topup_expiry_type,
"auto_topup_expiry_unit": auto_topup_expiry_unit,
"auto_topup_expiry_unit_count": auto_topup_expiry_unit_count,
+ "auto_topup_self_service": auto_topup_self_service,
"auto_topup_threshold_credits": auto_topup_threshold_credits,
"auto_topup_threshold_percent": auto_topup_threshold_percent,
"credit_amount": credit_amount,
@@ -6613,6 +6842,7 @@ async def update_billing_plan_credit_grant(
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = OMIT,
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = OMIT,
auto_topup_expiry_unit_count: typing.Optional[int] = OMIT,
+ auto_topup_self_service: typing.Optional[bool] = OMIT,
auto_topup_threshold_credits: typing.Optional[int] = OMIT,
auto_topup_threshold_percent: typing.Optional[int] = OMIT,
credit_amount: typing.Optional[int] = OMIT,
@@ -6646,6 +6876,8 @@ async def update_billing_plan_credit_grant(
auto_topup_expiry_unit_count : typing.Optional[int]
+ auto_topup_self_service : typing.Optional[bool]
+
auto_topup_threshold_credits : typing.Optional[int]
auto_topup_threshold_percent : typing.Optional[int]
@@ -6679,6 +6911,7 @@ async def update_billing_plan_credit_grant(
"auto_topup_expiry_type": auto_topup_expiry_type,
"auto_topup_expiry_unit": auto_topup_expiry_unit,
"auto_topup_expiry_unit_count": auto_topup_expiry_unit_count,
+ "auto_topup_self_service": auto_topup_self_service,
"auto_topup_threshold_credits": auto_topup_threshold_credits,
"auto_topup_threshold_percent": auto_topup_threshold_percent,
"credit_amount": credit_amount,
@@ -6890,6 +7123,7 @@ async def count_billing_plan_credit_grants(
plan_id: typing.Optional[str] = None,
plan_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
plan_version_id: typing.Optional[str] = None,
+ plan_version_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
request_options: typing.Optional[RequestOptions] = None,
@@ -6907,6 +7141,8 @@ async def count_billing_plan_credit_grants(
plan_version_id : typing.Optional[str]
+ plan_version_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
limit : typing.Optional[int]
Page limit (default 100)
@@ -6930,6 +7166,7 @@ async def count_billing_plan_credit_grants(
"plan_id": plan_id,
"plan_ids": plan_ids,
"plan_version_id": plan_version_id,
+ "plan_version_ids": plan_version_ids,
"limit": limit,
"offset": offset,
},
diff --git a/src/schematic/credits/types/__init__.py b/src/schematic/credits/types/__init__.py
index f83605b..d06f5e9 100644
--- a/src/schematic/credits/types/__init__.py
+++ b/src/schematic/credits/types/__init__.py
@@ -36,6 +36,8 @@
from .list_billing_credits_response import ListBillingCreditsResponse
from .list_billing_plan_credit_grants_params import ListBillingPlanCreditGrantsParams
from .list_billing_plan_credit_grants_response import ListBillingPlanCreditGrantsResponse
+ from .list_company_credit_balances_params import ListCompanyCreditBalancesParams
+ from .list_company_credit_balances_response import ListCompanyCreditBalancesResponse
from .list_company_grants_params import ListCompanyGrantsParams
from .list_company_grants_response import ListCompanyGrantsResponse
from .list_credit_bundles_params import ListCreditBundlesParams
@@ -80,6 +82,8 @@
"ListBillingCreditsResponse": ".list_billing_credits_response",
"ListBillingPlanCreditGrantsParams": ".list_billing_plan_credit_grants_params",
"ListBillingPlanCreditGrantsResponse": ".list_billing_plan_credit_grants_response",
+ "ListCompanyCreditBalancesParams": ".list_company_credit_balances_params",
+ "ListCompanyCreditBalancesResponse": ".list_company_credit_balances_response",
"ListCompanyGrantsParams": ".list_company_grants_params",
"ListCompanyGrantsResponse": ".list_company_grants_response",
"ListCreditBundlesParams": ".list_credit_bundles_params",
@@ -148,6 +152,8 @@ def __dir__():
"ListBillingCreditsResponse",
"ListBillingPlanCreditGrantsParams",
"ListBillingPlanCreditGrantsResponse",
+ "ListCompanyCreditBalancesParams",
+ "ListCompanyCreditBalancesResponse",
"ListCompanyGrantsParams",
"ListCompanyGrantsResponse",
"ListCreditBundlesParams",
diff --git a/src/schematic/credits/types/count_billing_plan_credit_grants_params.py b/src/schematic/credits/types/count_billing_plan_credit_grants_params.py
index 4cca569..00d4421 100644
--- a/src/schematic/credits/types/count_billing_plan_credit_grants_params.py
+++ b/src/schematic/credits/types/count_billing_plan_credit_grants_params.py
@@ -26,6 +26,7 @@ class CountBillingPlanCreditGrantsParams(UniversalBaseModel):
plan_id: typing.Optional[str] = None
plan_ids: typing.Optional[typing.List[str]] = None
plan_version_id: typing.Optional[str] = None
+ plan_version_ids: typing.Optional[typing.List[str]] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/credits/types/list_billing_plan_credit_grants_params.py b/src/schematic/credits/types/list_billing_plan_credit_grants_params.py
index 6c1a67b..2eed56d 100644
--- a/src/schematic/credits/types/list_billing_plan_credit_grants_params.py
+++ b/src/schematic/credits/types/list_billing_plan_credit_grants_params.py
@@ -26,6 +26,7 @@ class ListBillingPlanCreditGrantsParams(UniversalBaseModel):
plan_id: typing.Optional[str] = None
plan_ids: typing.Optional[typing.List[str]] = None
plan_version_id: typing.Optional[str] = None
+ plan_version_ids: typing.Optional[typing.List[str]] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/credits/types/list_company_credit_balances_params.py b/src/schematic/credits/types/list_company_credit_balances_params.py
new file mode 100644
index 0000000..c500b12
--- /dev/null
+++ b/src/schematic/credits/types/list_company_credit_balances_params.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class ListCompanyCreditBalancesParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ company_id: typing.Optional[str] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/credits/types/list_company_credit_balances_response.py b/src/schematic/credits/types/list_company_credit_balances_response.py
new file mode 100644
index 0000000..165fc51
--- /dev/null
+++ b/src/schematic/credits/types/list_company_credit_balances_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.company_credit_balance_response_data import CompanyCreditBalanceResponseData
+from .list_company_credit_balances_params import ListCompanyCreditBalancesParams
+
+
+class ListCompanyCreditBalancesResponse(UniversalBaseModel):
+ data: typing.List[CompanyCreditBalanceResponseData]
+ params: ListCompanyCreditBalancesParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/events/client.py b/src/schematic/events/client.py
index 908afd8..4782084 100644
--- a/src/schematic/events/client.py
+++ b/src/schematic/events/client.py
@@ -128,6 +128,7 @@ def list_events(
event_subtype: typing.Optional[str] = None,
event_types: typing.Optional[typing.Union[EventType, typing.Sequence[EventType]]] = None,
flag_id: typing.Optional[str] = None,
+ idempotency_key: typing.Optional[str] = None,
user_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -144,6 +145,8 @@ def list_events(
flag_id : typing.Optional[str]
+ idempotency_key : typing.Optional[str]
+
user_id : typing.Optional[str]
limit : typing.Optional[int]
@@ -172,6 +175,7 @@ def list_events(
event_subtype="event_subtype",
event_types=["flag_check"],
flag_id="flag_id",
+ idempotency_key="idempotency_key",
user_id="user_id",
limit=1000000,
offset=1000000,
@@ -182,6 +186,7 @@ def list_events(
event_subtype=event_subtype,
event_types=event_types,
flag_id=flag_id,
+ idempotency_key=idempotency_key,
user_id=user_id,
limit=limit,
offset=offset,
@@ -194,6 +199,7 @@ def create_event(
*,
event_type: EventType,
body: typing.Optional[EventBody] = OMIT,
+ idempotency_key: typing.Optional[str] = OMIT,
sent_at: typing.Optional[dt.datetime] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreateEventResponse:
@@ -205,6 +211,9 @@ def create_event(
body : typing.Optional[EventBody]
+ idempotency_key : typing.Optional[str]
+ Optional client-supplied key. Duplicate events with the same key (scoped to the environment) are dropped for 24h.
+
sent_at : typing.Optional[dt.datetime]
Optionally provide a timestamp at which the event was sent to Schematic
@@ -228,7 +237,11 @@ def create_event(
)
"""
_response = self._raw_client.create_event(
- event_type=event_type, body=body, sent_at=sent_at, request_options=request_options
+ event_type=event_type,
+ body=body,
+ idempotency_key=idempotency_key,
+ sent_at=sent_at,
+ request_options=request_options,
)
return _response.data
@@ -412,6 +425,7 @@ async def list_events(
event_subtype: typing.Optional[str] = None,
event_types: typing.Optional[typing.Union[EventType, typing.Sequence[EventType]]] = None,
flag_id: typing.Optional[str] = None,
+ idempotency_key: typing.Optional[str] = None,
user_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -428,6 +442,8 @@ async def list_events(
flag_id : typing.Optional[str]
+ idempotency_key : typing.Optional[str]
+
user_id : typing.Optional[str]
limit : typing.Optional[int]
@@ -461,6 +477,7 @@ async def main() -> None:
event_subtype="event_subtype",
event_types=["flag_check"],
flag_id="flag_id",
+ idempotency_key="idempotency_key",
user_id="user_id",
limit=1000000,
offset=1000000,
@@ -474,6 +491,7 @@ async def main() -> None:
event_subtype=event_subtype,
event_types=event_types,
flag_id=flag_id,
+ idempotency_key=idempotency_key,
user_id=user_id,
limit=limit,
offset=offset,
@@ -486,6 +504,7 @@ async def create_event(
*,
event_type: EventType,
body: typing.Optional[EventBody] = OMIT,
+ idempotency_key: typing.Optional[str] = OMIT,
sent_at: typing.Optional[dt.datetime] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> CreateEventResponse:
@@ -497,6 +516,9 @@ async def create_event(
body : typing.Optional[EventBody]
+ idempotency_key : typing.Optional[str]
+ Optional client-supplied key. Duplicate events with the same key (scoped to the environment) are dropped for 24h.
+
sent_at : typing.Optional[dt.datetime]
Optionally provide a timestamp at which the event was sent to Schematic
@@ -528,7 +550,11 @@ async def main() -> None:
asyncio.run(main())
"""
_response = await self._raw_client.create_event(
- event_type=event_type, body=body, sent_at=sent_at, request_options=request_options
+ event_type=event_type,
+ body=body,
+ idempotency_key=idempotency_key,
+ sent_at=sent_at,
+ request_options=request_options,
)
return _response.data
diff --git a/src/schematic/events/raw_client.py b/src/schematic/events/raw_client.py
index bcc8153..2324805 100644
--- a/src/schematic/events/raw_client.py
+++ b/src/schematic/events/raw_client.py
@@ -274,6 +274,7 @@ def list_events(
event_subtype: typing.Optional[str] = None,
event_types: typing.Optional[typing.Union[EventType, typing.Sequence[EventType]]] = None,
flag_id: typing.Optional[str] = None,
+ idempotency_key: typing.Optional[str] = None,
user_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -290,6 +291,8 @@ def list_events(
flag_id : typing.Optional[str]
+ idempotency_key : typing.Optional[str]
+
user_id : typing.Optional[str]
limit : typing.Optional[int]
@@ -314,6 +317,7 @@ def list_events(
"event_subtype": event_subtype,
"event_types": event_types,
"flag_id": flag_id,
+ "idempotency_key": idempotency_key,
"user_id": user_id,
"limit": limit,
"offset": offset,
@@ -403,6 +407,7 @@ def create_event(
*,
event_type: EventType,
body: typing.Optional[EventBody] = OMIT,
+ idempotency_key: typing.Optional[str] = OMIT,
sent_at: typing.Optional[dt.datetime] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[CreateEventResponse]:
@@ -414,6 +419,9 @@ def create_event(
body : typing.Optional[EventBody]
+ idempotency_key : typing.Optional[str]
+ Optional client-supplied key. Duplicate events with the same key (scoped to the environment) are dropped for 24h.
+
sent_at : typing.Optional[dt.datetime]
Optionally provide a timestamp at which the event was sent to Schematic
@@ -431,6 +439,7 @@ def create_event(
json={
"body": convert_and_respect_annotation_metadata(object_=body, annotation=EventBody, direction="write"),
"event_type": event_type,
+ "idempotency_key": idempotency_key,
"sent_at": sent_at,
},
headers={
@@ -934,6 +943,7 @@ async def list_events(
event_subtype: typing.Optional[str] = None,
event_types: typing.Optional[typing.Union[EventType, typing.Sequence[EventType]]] = None,
flag_id: typing.Optional[str] = None,
+ idempotency_key: typing.Optional[str] = None,
user_id: typing.Optional[str] = None,
limit: typing.Optional[int] = None,
offset: typing.Optional[int] = None,
@@ -950,6 +960,8 @@ async def list_events(
flag_id : typing.Optional[str]
+ idempotency_key : typing.Optional[str]
+
user_id : typing.Optional[str]
limit : typing.Optional[int]
@@ -974,6 +986,7 @@ async def list_events(
"event_subtype": event_subtype,
"event_types": event_types,
"flag_id": flag_id,
+ "idempotency_key": idempotency_key,
"user_id": user_id,
"limit": limit,
"offset": offset,
@@ -1063,6 +1076,7 @@ async def create_event(
*,
event_type: EventType,
body: typing.Optional[EventBody] = OMIT,
+ idempotency_key: typing.Optional[str] = OMIT,
sent_at: typing.Optional[dt.datetime] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[CreateEventResponse]:
@@ -1074,6 +1088,9 @@ async def create_event(
body : typing.Optional[EventBody]
+ idempotency_key : typing.Optional[str]
+ Optional client-supplied key. Duplicate events with the same key (scoped to the environment) are dropped for 24h.
+
sent_at : typing.Optional[dt.datetime]
Optionally provide a timestamp at which the event was sent to Schematic
@@ -1091,6 +1108,7 @@ async def create_event(
json={
"body": convert_and_respect_annotation_metadata(object_=body, annotation=EventBody, direction="write"),
"event_type": event_type,
+ "idempotency_key": idempotency_key,
"sent_at": sent_at,
},
headers={
diff --git a/src/schematic/events/types/list_events_params.py b/src/schematic/events/types/list_events_params.py
index 1667c88..b19676e 100644
--- a/src/schematic/events/types/list_events_params.py
+++ b/src/schematic/events/types/list_events_params.py
@@ -16,6 +16,7 @@ class ListEventsParams(UniversalBaseModel):
event_subtype: typing.Optional[str] = None
event_types: typing.Optional[typing.List[EventType]] = None
flag_id: typing.Optional[str] = None
+ idempotency_key: typing.Optional[str] = None
limit: typing.Optional[int] = pydantic.Field(default=None)
"""
Page limit (default 100)
diff --git a/src/schematic/features/client.py b/src/schematic/features/client.py
index d8a6be2..8f8cffc 100644
--- a/src/schematic/features/client.py
+++ b/src/schematic/features/client.py
@@ -54,6 +54,7 @@ def list_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -73,6 +74,9 @@ def list_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -110,6 +114,7 @@ def list_features(
boolean_require_event=True,
feature_type=["boolean"],
ids=["ids"],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -122,6 +127,7 @@ def list_features(
boolean_require_event=boolean_require_event,
feature_type=feature_type,
ids=ids,
+ managed_by=managed_by,
plan_version_id=plan_version_id,
q=q,
without_company_override_for=without_company_override_for,
@@ -447,6 +453,7 @@ def count_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -466,6 +473,9 @@ def count_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -503,6 +513,7 @@ def count_features(
boolean_require_event=True,
feature_type=["boolean"],
ids=["ids"],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -515,6 +526,7 @@ def count_features(
boolean_require_event=boolean_require_event,
feature_type=feature_type,
ids=ids,
+ managed_by=managed_by,
plan_version_id=plan_version_id,
q=q,
without_company_override_for=without_company_override_for,
@@ -1013,6 +1025,7 @@ async def list_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -1032,6 +1045,9 @@ async def list_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -1074,6 +1090,7 @@ async def main() -> None:
boolean_require_event=True,
feature_type=["boolean"],
ids=["ids"],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -1089,6 +1106,7 @@ async def main() -> None:
boolean_require_event=boolean_require_event,
feature_type=feature_type,
ids=ids,
+ managed_by=managed_by,
plan_version_id=plan_version_id,
q=q,
without_company_override_for=without_company_override_for,
@@ -1454,6 +1472,7 @@ async def count_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -1473,6 +1492,9 @@ async def count_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -1515,6 +1537,7 @@ async def main() -> None:
boolean_require_event=True,
feature_type=["boolean"],
ids=["ids"],
+ managed_by="orb",
plan_version_id="plan_version_id",
q="q",
without_company_override_for="without_company_override_for",
@@ -1530,6 +1553,7 @@ async def main() -> None:
boolean_require_event=boolean_require_event,
feature_type=feature_type,
ids=ids,
+ managed_by=managed_by,
plan_version_id=plan_version_id,
q=q,
without_company_override_for=without_company_override_for,
diff --git a/src/schematic/features/raw_client.py b/src/schematic/features/raw_client.py
index 6b60fba..cd9e048 100644
--- a/src/schematic/features/raw_client.py
+++ b/src/schematic/features/raw_client.py
@@ -56,6 +56,7 @@ def list_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -75,6 +76,9 @@ def list_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -108,6 +112,7 @@ def list_features(
"boolean_require_event": boolean_require_event,
"feature_type": feature_type,
"ids": ids,
+ "managed_by": managed_by,
"plan_version_id": plan_version_id,
"q": q,
"without_company_override_for": without_company_override_for,
@@ -855,6 +860,7 @@ def count_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -874,6 +880,9 @@ def count_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -907,6 +916,7 @@ def count_features(
"boolean_require_event": boolean_require_event,
"feature_type": feature_type,
"ids": ids,
+ "managed_by": managed_by,
"plan_version_id": plan_version_id,
"q": q,
"without_company_override_for": without_company_override_for,
@@ -2162,6 +2172,7 @@ async def list_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -2181,6 +2192,9 @@ async def list_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -2214,6 +2228,7 @@ async def list_features(
"boolean_require_event": boolean_require_event,
"feature_type": feature_type,
"ids": ids,
+ "managed_by": managed_by,
"plan_version_id": plan_version_id,
"q": q,
"without_company_override_for": without_company_override_for,
@@ -2961,6 +2976,7 @@ async def count_features(
boolean_require_event: typing.Optional[bool] = None,
feature_type: typing.Optional[typing.Union[FeatureType, typing.Sequence[FeatureType]]] = None,
ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ managed_by: typing.Optional[BillingProviderType] = None,
plan_version_id: typing.Optional[str] = None,
q: typing.Optional[str] = None,
without_company_override_for: typing.Optional[str] = None,
@@ -2980,6 +2996,9 @@ async def count_features(
ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+ managed_by : typing.Optional[BillingProviderType]
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+
plan_version_id : typing.Optional[str]
Filter by plan version ID when used with without_plan_entitlement_for; if not provided, the latest published version is used
@@ -3013,6 +3032,7 @@ async def count_features(
"boolean_require_event": boolean_require_event,
"feature_type": feature_type,
"ids": ids,
+ "managed_by": managed_by,
"plan_version_id": plan_version_id,
"q": q,
"without_company_override_for": without_company_override_for,
diff --git a/src/schematic/features/types/count_features_params.py b/src/schematic/features/types/count_features_params.py
index 2938333..74883e8 100644
--- a/src/schematic/features/types/count_features_params.py
+++ b/src/schematic/features/types/count_features_params.py
@@ -4,6 +4,7 @@
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.billing_provider_type import BillingProviderType
from ...types.feature_type import FeatureType
@@ -28,6 +29,11 @@ class CountFeaturesParams(UniversalBaseModel):
Page limit (default 100)
"""
+ managed_by: typing.Optional[BillingProviderType] = pydantic.Field(default=None)
+ """
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+ """
+
offset: typing.Optional[int] = pydantic.Field(default=None)
"""
Page offset (default 0)
diff --git a/src/schematic/features/types/list_features_params.py b/src/schematic/features/types/list_features_params.py
index 1756467..df863c5 100644
--- a/src/schematic/features/types/list_features_params.py
+++ b/src/schematic/features/types/list_features_params.py
@@ -4,6 +4,7 @@
import pydantic
from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.billing_provider_type import BillingProviderType
from ...types.feature_type import FeatureType
@@ -28,6 +29,11 @@ class ListFeaturesParams(UniversalBaseModel):
Page limit (default 100)
"""
+ managed_by: typing.Optional[BillingProviderType] = pydantic.Field(default=None)
+ """
+ Filter for features managed by a billing provider, or by Schematic (no billing provider)
+ """
+
offset: typing.Optional[int] = pydantic.Field(default=None)
"""
Page offset (default 0)
diff --git a/src/schematic/insights/__init__.py b/src/schematic/insights/__init__.py
new file mode 100644
index 0000000..08da82c
--- /dev/null
+++ b/src/schematic/insights/__init__.py
@@ -0,0 +1,70 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from .types import (
+ GetActivityParams,
+ GetActivityResponse,
+ GetEnvironmentFeatureUsageTimeSeriesParams,
+ GetEnvironmentFeatureUsageTimeSeriesResponse,
+ GetEnvironmentTraitUsageTimeSeriesParams,
+ GetEnvironmentTraitUsageTimeSeriesResponse,
+ GetPlanGrowthParams,
+ GetPlanGrowthResponse,
+ GetSummaryResponse,
+ GetTopFeaturesByUsageParams,
+ GetTopFeaturesByUsageResponse,
+ )
+_dynamic_imports: typing.Dict[str, str] = {
+ "GetActivityParams": ".types",
+ "GetActivityResponse": ".types",
+ "GetEnvironmentFeatureUsageTimeSeriesParams": ".types",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse": ".types",
+ "GetEnvironmentTraitUsageTimeSeriesParams": ".types",
+ "GetEnvironmentTraitUsageTimeSeriesResponse": ".types",
+ "GetPlanGrowthParams": ".types",
+ "GetPlanGrowthResponse": ".types",
+ "GetSummaryResponse": ".types",
+ "GetTopFeaturesByUsageParams": ".types",
+ "GetTopFeaturesByUsageResponse": ".types",
+}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = [
+ "GetActivityParams",
+ "GetActivityResponse",
+ "GetEnvironmentFeatureUsageTimeSeriesParams",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse",
+ "GetEnvironmentTraitUsageTimeSeriesParams",
+ "GetEnvironmentTraitUsageTimeSeriesResponse",
+ "GetPlanGrowthParams",
+ "GetPlanGrowthResponse",
+ "GetSummaryResponse",
+ "GetTopFeaturesByUsageParams",
+ "GetTopFeaturesByUsageResponse",
+]
diff --git a/src/schematic/insights/client.py b/src/schematic/insights/client.py
new file mode 100644
index 0000000..586db67
--- /dev/null
+++ b/src/schematic/insights/client.py
@@ -0,0 +1,586 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ..core.request_options import RequestOptions
+from ..types.time_series_granularity import TimeSeriesGranularity
+from .raw_client import AsyncRawInsightsClient, RawInsightsClient
+from .types.get_activity_response import GetActivityResponse
+from .types.get_environment_feature_usage_time_series_response import GetEnvironmentFeatureUsageTimeSeriesResponse
+from .types.get_environment_trait_usage_time_series_response import GetEnvironmentTraitUsageTimeSeriesResponse
+from .types.get_plan_growth_response import GetPlanGrowthResponse
+from .types.get_summary_response import GetSummaryResponse
+from .types.get_top_features_by_usage_response import GetTopFeaturesByUsageResponse
+
+
+class InsightsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawInsightsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawInsightsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawInsightsClient
+ """
+ return self._raw_client
+
+ def get_activity(
+ self, *, limit: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> GetActivityResponse:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetActivityResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_activity(
+ limit=1000000,
+ )
+ """
+ _response = self._raw_client.get_activity(limit=limit, request_options=request_options)
+ return _response.data
+
+ def get_environment_feature_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetEnvironmentFeatureUsageTimeSeriesResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetEnvironmentFeatureUsageTimeSeriesResponse
+ OK
+
+ Examples
+ --------
+ import datetime
+
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_environment_feature_usage_time_series(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+ """
+ _response = self._raw_client.get_environment_feature_usage_time_series(
+ end_time=end_time,
+ feature_id=feature_id,
+ start_time=start_time,
+ granularity=granularity,
+ request_options=request_options,
+ )
+ return _response.data
+
+ def get_plan_growth(
+ self, *, months: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> GetPlanGrowthResponse:
+ """
+ Parameters
+ ----------
+ months : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetPlanGrowthResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_plan_growth(
+ months=1000000,
+ )
+ """
+ _response = self._raw_client.get_plan_growth(months=months, request_options=request_options)
+ return _response.data
+
+ def get_summary(self, *, request_options: typing.Optional[RequestOptions] = None) -> GetSummaryResponse:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetSummaryResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_summary()
+ """
+ _response = self._raw_client.get_summary(request_options=request_options)
+ return _response.data
+
+ def get_top_features_by_usage(
+ self,
+ *,
+ end_time: dt.datetime,
+ start_time: dt.datetime,
+ limit: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetTopFeaturesByUsageResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ start_time : dt.datetime
+
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetTopFeaturesByUsageResponse
+ OK
+
+ Examples
+ --------
+ import datetime
+
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_top_features_by_usage(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ limit=1000000,
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+ """
+ _response = self._raw_client.get_top_features_by_usage(
+ end_time=end_time, start_time=start_time, limit=limit, request_options=request_options
+ )
+ return _response.data
+
+ def get_environment_trait_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetEnvironmentTraitUsageTimeSeriesResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetEnvironmentTraitUsageTimeSeriesResponse
+ OK
+
+ Examples
+ --------
+ import datetime
+
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.insights.get_environment_trait_usage_time_series(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+ """
+ _response = self._raw_client.get_environment_trait_usage_time_series(
+ end_time=end_time,
+ feature_id=feature_id,
+ start_time=start_time,
+ granularity=granularity,
+ request_options=request_options,
+ )
+ return _response.data
+
+
+class AsyncInsightsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawInsightsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawInsightsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawInsightsClient
+ """
+ return self._raw_client
+
+ async def get_activity(
+ self, *, limit: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> GetActivityResponse:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetActivityResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_activity(
+ limit=1000000,
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_activity(limit=limit, request_options=request_options)
+ return _response.data
+
+ async def get_environment_feature_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetEnvironmentFeatureUsageTimeSeriesResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetEnvironmentFeatureUsageTimeSeriesResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+ import datetime
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_environment_feature_usage_time_series(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_environment_feature_usage_time_series(
+ end_time=end_time,
+ feature_id=feature_id,
+ start_time=start_time,
+ granularity=granularity,
+ request_options=request_options,
+ )
+ return _response.data
+
+ async def get_plan_growth(
+ self, *, months: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> GetPlanGrowthResponse:
+ """
+ Parameters
+ ----------
+ months : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetPlanGrowthResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_plan_growth(
+ months=1000000,
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_plan_growth(months=months, request_options=request_options)
+ return _response.data
+
+ async def get_summary(self, *, request_options: typing.Optional[RequestOptions] = None) -> GetSummaryResponse:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetSummaryResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_summary()
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_summary(request_options=request_options)
+ return _response.data
+
+ async def get_top_features_by_usage(
+ self,
+ *,
+ end_time: dt.datetime,
+ start_time: dt.datetime,
+ limit: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetTopFeaturesByUsageResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ start_time : dt.datetime
+
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetTopFeaturesByUsageResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+ import datetime
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_top_features_by_usage(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ limit=1000000,
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_top_features_by_usage(
+ end_time=end_time, start_time=start_time, limit=limit, request_options=request_options
+ )
+ return _response.data
+
+ async def get_environment_trait_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetEnvironmentTraitUsageTimeSeriesResponse:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetEnvironmentTraitUsageTimeSeriesResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+ import datetime
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.insights.get_environment_trait_usage_time_series(
+ end_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ feature_id="feature_id",
+ granularity="daily",
+ start_time=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_environment_trait_usage_time_series(
+ end_time=end_time,
+ feature_id=feature_id,
+ start_time=start_time,
+ granularity=granularity,
+ request_options=request_options,
+ )
+ return _response.data
diff --git a/src/schematic/insights/raw_client.py b/src/schematic/insights/raw_client.py
new file mode 100644
index 0000000..44f4256
--- /dev/null
+++ b/src/schematic/insights/raw_client.py
@@ -0,0 +1,1200 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+from json.decoder import JSONDecodeError
+
+from ..core.api_error import ApiError as core_api_error_ApiError
+from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ..core.datetime_utils import serialize_datetime
+from ..core.http_response import AsyncHttpResponse, HttpResponse
+from ..core.parse_error import ParsingError
+from ..core.pydantic_utilities import parse_obj_as
+from ..core.request_options import RequestOptions
+from ..errors.forbidden_error import ForbiddenError
+from ..errors.internal_server_error import InternalServerError
+from ..errors.not_found_error import NotFoundError
+from ..errors.unauthorized_error import UnauthorizedError
+from ..types.api_error import ApiError as types_api_error_ApiError
+from ..types.time_series_granularity import TimeSeriesGranularity
+from .types.get_activity_response import GetActivityResponse
+from .types.get_environment_feature_usage_time_series_response import GetEnvironmentFeatureUsageTimeSeriesResponse
+from .types.get_environment_trait_usage_time_series_response import GetEnvironmentTraitUsageTimeSeriesResponse
+from .types.get_plan_growth_response import GetPlanGrowthResponse
+from .types.get_summary_response import GetSummaryResponse
+from .types.get_top_features_by_usage_response import GetTopFeaturesByUsageResponse
+from pydantic import ValidationError
+
+
+class RawInsightsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def get_activity(
+ self, *, limit: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[GetActivityResponse]:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetActivityResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/activity",
+ method="GET",
+ params={
+ "limit": limit,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetActivityResponse,
+ parse_obj_as(
+ type_=GetActivityResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_environment_feature_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[GetEnvironmentFeatureUsageTimeSeriesResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetEnvironmentFeatureUsageTimeSeriesResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/feature-usage-timeseries",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "feature_id": feature_id,
+ "granularity": granularity,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetEnvironmentFeatureUsageTimeSeriesResponse,
+ parse_obj_as(
+ type_=GetEnvironmentFeatureUsageTimeSeriesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_plan_growth(
+ self, *, months: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[GetPlanGrowthResponse]:
+ """
+ Parameters
+ ----------
+ months : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetPlanGrowthResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/plan-growth",
+ method="GET",
+ params={
+ "months": months,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetPlanGrowthResponse,
+ parse_obj_as(
+ type_=GetPlanGrowthResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_summary(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[GetSummaryResponse]:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetSummaryResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/summary",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetSummaryResponse,
+ parse_obj_as(
+ type_=GetSummaryResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_top_features_by_usage(
+ self,
+ *,
+ end_time: dt.datetime,
+ start_time: dt.datetime,
+ limit: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[GetTopFeaturesByUsageResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ start_time : dt.datetime
+
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetTopFeaturesByUsageResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/top-features",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "limit": limit,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetTopFeaturesByUsageResponse,
+ parse_obj_as(
+ type_=GetTopFeaturesByUsageResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_environment_trait_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[GetEnvironmentTraitUsageTimeSeriesResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetEnvironmentTraitUsageTimeSeriesResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "insights/trait-usage-timeseries",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "feature_id": feature_id,
+ "granularity": granularity,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetEnvironmentTraitUsageTimeSeriesResponse,
+ parse_obj_as(
+ type_=GetEnvironmentTraitUsageTimeSeriesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+
+class AsyncRawInsightsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def get_activity(
+ self, *, limit: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[GetActivityResponse]:
+ """
+ Parameters
+ ----------
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetActivityResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/activity",
+ method="GET",
+ params={
+ "limit": limit,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetActivityResponse,
+ parse_obj_as(
+ type_=GetActivityResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_environment_feature_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[GetEnvironmentFeatureUsageTimeSeriesResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetEnvironmentFeatureUsageTimeSeriesResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/feature-usage-timeseries",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "feature_id": feature_id,
+ "granularity": granularity,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetEnvironmentFeatureUsageTimeSeriesResponse,
+ parse_obj_as(
+ type_=GetEnvironmentFeatureUsageTimeSeriesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_plan_growth(
+ self, *, months: typing.Optional[int] = None, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[GetPlanGrowthResponse]:
+ """
+ Parameters
+ ----------
+ months : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetPlanGrowthResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/plan-growth",
+ method="GET",
+ params={
+ "months": months,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetPlanGrowthResponse,
+ parse_obj_as(
+ type_=GetPlanGrowthResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_summary(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[GetSummaryResponse]:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetSummaryResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/summary",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetSummaryResponse,
+ parse_obj_as(
+ type_=GetSummaryResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_top_features_by_usage(
+ self,
+ *,
+ end_time: dt.datetime,
+ start_time: dt.datetime,
+ limit: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[GetTopFeaturesByUsageResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ start_time : dt.datetime
+
+ limit : typing.Optional[int]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetTopFeaturesByUsageResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/top-features",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "limit": limit,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetTopFeaturesByUsageResponse,
+ parse_obj_as(
+ type_=GetTopFeaturesByUsageResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_environment_trait_usage_time_series(
+ self,
+ *,
+ end_time: dt.datetime,
+ feature_id: str,
+ start_time: dt.datetime,
+ granularity: typing.Optional[TimeSeriesGranularity] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[GetEnvironmentTraitUsageTimeSeriesResponse]:
+ """
+ Parameters
+ ----------
+ end_time : dt.datetime
+
+ feature_id : str
+
+ start_time : dt.datetime
+
+ granularity : typing.Optional[TimeSeriesGranularity]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetEnvironmentTraitUsageTimeSeriesResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "insights/trait-usage-timeseries",
+ method="GET",
+ params={
+ "end_time": serialize_datetime(end_time),
+ "feature_id": feature_id,
+ "granularity": granularity,
+ "start_time": serialize_datetime(start_time),
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetEnvironmentTraitUsageTimeSeriesResponse,
+ parse_obj_as(
+ type_=GetEnvironmentTraitUsageTimeSeriesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
diff --git a/src/schematic/insights/types/__init__.py b/src/schematic/insights/types/__init__.py
new file mode 100644
index 0000000..c796994
--- /dev/null
+++ b/src/schematic/insights/types/__init__.py
@@ -0,0 +1,68 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from .get_activity_params import GetActivityParams
+ from .get_activity_response import GetActivityResponse
+ from .get_environment_feature_usage_time_series_params import GetEnvironmentFeatureUsageTimeSeriesParams
+ from .get_environment_feature_usage_time_series_response import GetEnvironmentFeatureUsageTimeSeriesResponse
+ from .get_environment_trait_usage_time_series_params import GetEnvironmentTraitUsageTimeSeriesParams
+ from .get_environment_trait_usage_time_series_response import GetEnvironmentTraitUsageTimeSeriesResponse
+ from .get_plan_growth_params import GetPlanGrowthParams
+ from .get_plan_growth_response import GetPlanGrowthResponse
+ from .get_summary_response import GetSummaryResponse
+ from .get_top_features_by_usage_params import GetTopFeaturesByUsageParams
+ from .get_top_features_by_usage_response import GetTopFeaturesByUsageResponse
+_dynamic_imports: typing.Dict[str, str] = {
+ "GetActivityParams": ".get_activity_params",
+ "GetActivityResponse": ".get_activity_response",
+ "GetEnvironmentFeatureUsageTimeSeriesParams": ".get_environment_feature_usage_time_series_params",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse": ".get_environment_feature_usage_time_series_response",
+ "GetEnvironmentTraitUsageTimeSeriesParams": ".get_environment_trait_usage_time_series_params",
+ "GetEnvironmentTraitUsageTimeSeriesResponse": ".get_environment_trait_usage_time_series_response",
+ "GetPlanGrowthParams": ".get_plan_growth_params",
+ "GetPlanGrowthResponse": ".get_plan_growth_response",
+ "GetSummaryResponse": ".get_summary_response",
+ "GetTopFeaturesByUsageParams": ".get_top_features_by_usage_params",
+ "GetTopFeaturesByUsageResponse": ".get_top_features_by_usage_response",
+}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = [
+ "GetActivityParams",
+ "GetActivityResponse",
+ "GetEnvironmentFeatureUsageTimeSeriesParams",
+ "GetEnvironmentFeatureUsageTimeSeriesResponse",
+ "GetEnvironmentTraitUsageTimeSeriesParams",
+ "GetEnvironmentTraitUsageTimeSeriesResponse",
+ "GetPlanGrowthParams",
+ "GetPlanGrowthResponse",
+ "GetSummaryResponse",
+ "GetTopFeaturesByUsageParams",
+ "GetTopFeaturesByUsageResponse",
+]
diff --git a/src/schematic/insights/types/get_activity_params.py b/src/schematic/insights/types/get_activity_params.py
new file mode 100644
index 0000000..6fb9277
--- /dev/null
+++ b/src/schematic/insights/types/get_activity_params.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class GetActivityParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ limit: typing.Optional[int] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_activity_response.py b/src/schematic/insights/types/get_activity_response.py
new file mode 100644
index 0000000..6e42881
--- /dev/null
+++ b/src/schematic/insights/types/get_activity_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.activity_response_response_data import ActivityResponseResponseData
+from .get_activity_params import GetActivityParams
+
+
+class GetActivityResponse(UniversalBaseModel):
+ data: ActivityResponseResponseData
+ params: GetActivityParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_environment_feature_usage_time_series_params.py b/src/schematic/insights/types/get_environment_feature_usage_time_series_params.py
new file mode 100644
index 0000000..0f97c75
--- /dev/null
+++ b/src/schematic/insights/types/get_environment_feature_usage_time_series_params.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.time_series_granularity import TimeSeriesGranularity
+
+
+class GetEnvironmentFeatureUsageTimeSeriesParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ end_time: typing.Optional[dt.datetime] = None
+ feature_id: typing.Optional[str] = None
+ granularity: typing.Optional[TimeSeriesGranularity] = None
+ start_time: typing.Optional[dt.datetime] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_environment_feature_usage_time_series_response.py b/src/schematic/insights/types/get_environment_feature_usage_time_series_response.py
new file mode 100644
index 0000000..5d1a2a8
--- /dev/null
+++ b/src/schematic/insights/types/get_environment_feature_usage_time_series_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.environment_feature_usage_time_series_response_data import EnvironmentFeatureUsageTimeSeriesResponseData
+from .get_environment_feature_usage_time_series_params import GetEnvironmentFeatureUsageTimeSeriesParams
+
+
+class GetEnvironmentFeatureUsageTimeSeriesResponse(UniversalBaseModel):
+ data: EnvironmentFeatureUsageTimeSeriesResponseData
+ params: GetEnvironmentFeatureUsageTimeSeriesParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_environment_trait_usage_time_series_params.py b/src/schematic/insights/types/get_environment_trait_usage_time_series_params.py
new file mode 100644
index 0000000..6c97e00
--- /dev/null
+++ b/src/schematic/insights/types/get_environment_trait_usage_time_series_params.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.time_series_granularity import TimeSeriesGranularity
+
+
+class GetEnvironmentTraitUsageTimeSeriesParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ end_time: typing.Optional[dt.datetime] = None
+ feature_id: typing.Optional[str] = None
+ granularity: typing.Optional[TimeSeriesGranularity] = None
+ start_time: typing.Optional[dt.datetime] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_environment_trait_usage_time_series_response.py b/src/schematic/insights/types/get_environment_trait_usage_time_series_response.py
new file mode 100644
index 0000000..392c536
--- /dev/null
+++ b/src/schematic/insights/types/get_environment_trait_usage_time_series_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.environment_trait_usage_time_series_response_data import EnvironmentTraitUsageTimeSeriesResponseData
+from .get_environment_trait_usage_time_series_params import GetEnvironmentTraitUsageTimeSeriesParams
+
+
+class GetEnvironmentTraitUsageTimeSeriesResponse(UniversalBaseModel):
+ data: EnvironmentTraitUsageTimeSeriesResponseData
+ params: GetEnvironmentTraitUsageTimeSeriesParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_plan_growth_params.py b/src/schematic/insights/types/get_plan_growth_params.py
new file mode 100644
index 0000000..f30b1f6
--- /dev/null
+++ b/src/schematic/insights/types/get_plan_growth_params.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class GetPlanGrowthParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ months: typing.Optional[int] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_plan_growth_response.py b/src/schematic/insights/types/get_plan_growth_response.py
new file mode 100644
index 0000000..cb91325
--- /dev/null
+++ b/src/schematic/insights/types/get_plan_growth_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.plan_growth_response_data import PlanGrowthResponseData
+from .get_plan_growth_params import GetPlanGrowthParams
+
+
+class GetPlanGrowthResponse(UniversalBaseModel):
+ data: PlanGrowthResponseData
+ params: GetPlanGrowthParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_summary_response.py b/src/schematic/insights/types/get_summary_response.py
new file mode 100644
index 0000000..18aeddd
--- /dev/null
+++ b/src/schematic/insights/types/get_summary_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.insights_summary_response_data import InsightsSummaryResponseData
+
+
+class GetSummaryResponse(UniversalBaseModel):
+ data: InsightsSummaryResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_top_features_by_usage_params.py b/src/schematic/insights/types/get_top_features_by_usage_params.py
new file mode 100644
index 0000000..6810d3f
--- /dev/null
+++ b/src/schematic/insights/types/get_top_features_by_usage_params.py
@@ -0,0 +1,26 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class GetTopFeaturesByUsageParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ end_time: typing.Optional[dt.datetime] = None
+ limit: typing.Optional[int] = None
+ start_time: typing.Optional[dt.datetime] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/insights/types/get_top_features_by_usage_response.py b/src/schematic/insights/types/get_top_features_by_usage_response.py
new file mode 100644
index 0000000..03cec59
--- /dev/null
+++ b/src/schematic/insights/types/get_top_features_by_usage_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.top_features_by_usage_response_data import TopFeaturesByUsageResponseData
+from .get_top_features_by_usage_params import GetTopFeaturesByUsageParams
+
+
+class GetTopFeaturesByUsageResponse(UniversalBaseModel):
+ data: TopFeaturesByUsageResponseData
+ params: GetTopFeaturesByUsageParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/__init__.py b/src/schematic/integrationsapi/__init__.py
index 8e9a8dd..c6490c5 100644
--- a/src/schematic/integrationsapi/__init__.py
+++ b/src/schematic/integrationsapi/__init__.py
@@ -6,8 +6,24 @@
from importlib import import_module
if typing.TYPE_CHECKING:
- from .types import GetIntegrationWebhookUrlResponse
-_dynamic_imports: typing.Dict[str, str] = {"GetIntegrationWebhookUrlResponse": ".types"}
+ from .types import (
+ GetIntegrationWebhookUrlResponse,
+ ListIntegrationsParams,
+ ListIntegrationsResponse,
+ LoadSampleDataSetV2Response,
+ RunIntegrationResponse,
+ StartDataImportResponse,
+ UninstallIntegrationResponse,
+ )
+_dynamic_imports: typing.Dict[str, str] = {
+ "GetIntegrationWebhookUrlResponse": ".types",
+ "ListIntegrationsParams": ".types",
+ "ListIntegrationsResponse": ".types",
+ "LoadSampleDataSetV2Response": ".types",
+ "RunIntegrationResponse": ".types",
+ "StartDataImportResponse": ".types",
+ "UninstallIntegrationResponse": ".types",
+}
def __getattr__(attr_name: str) -> typing.Any:
@@ -31,4 +47,12 @@ def __dir__():
return sorted(lazy_attrs)
-__all__ = ["GetIntegrationWebhookUrlResponse"]
+__all__ = [
+ "GetIntegrationWebhookUrlResponse",
+ "ListIntegrationsParams",
+ "ListIntegrationsResponse",
+ "LoadSampleDataSetV2Response",
+ "RunIntegrationResponse",
+ "StartDataImportResponse",
+ "UninstallIntegrationResponse",
+]
diff --git a/src/schematic/integrationsapi/client.py b/src/schematic/integrationsapi/client.py
index 57c9923..b64bbd8 100644
--- a/src/schematic/integrationsapi/client.py
+++ b/src/schematic/integrationsapi/client.py
@@ -4,8 +4,19 @@
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
+from ..types.company_matching_criteria import CompanyMatchingCriteria
+from ..types.integration_state import IntegrationState
+from ..types.integration_type import IntegrationType
from .raw_client import AsyncRawIntegrationsapiClient, RawIntegrationsapiClient
from .types.get_integration_webhook_url_response import GetIntegrationWebhookUrlResponse
+from .types.list_integrations_response import ListIntegrationsResponse
+from .types.load_sample_data_set_v_2_response import LoadSampleDataSetV2Response
+from .types.run_integration_response import RunIntegrationResponse
+from .types.start_data_import_response import StartDataImportResponse
+from .types.uninstall_integration_response import UninstallIntegrationResponse
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
class IntegrationsapiClient:
@@ -23,6 +34,105 @@ def with_raw_response(self) -> RawIntegrationsapiClient:
"""
return self._raw_client
+ def run_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RunIntegrationResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RunIntegrationResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.integrationsapi.run_integration(
+ integration_id="integration_id",
+ )
+ """
+ _response = self._raw_client.run_integration(integration_id, request_options=request_options)
+ return _response.data
+
+ def list_integrations(
+ self,
+ *,
+ billing_only: typing.Optional[bool] = None,
+ exclude_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ id: typing.Optional[str] = None,
+ state: typing.Optional[IntegrationState] = None,
+ type: typing.Optional[IntegrationType] = None,
+ limit: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> ListIntegrationsResponse:
+ """
+ Parameters
+ ----------
+ billing_only : typing.Optional[bool]
+
+ exclude_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
+ id : typing.Optional[str]
+
+ state : typing.Optional[IntegrationState]
+
+ type : typing.Optional[IntegrationType]
+
+ limit : typing.Optional[int]
+ Page limit (default 100)
+
+ offset : typing.Optional[int]
+ Page offset (default 0)
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListIntegrationsResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.integrationsapi.list_integrations(
+ billing_only=True,
+ exclude_ids=["exclude_ids"],
+ id="id",
+ state="active",
+ type="clerk",
+ limit=1000000,
+ offset=1000000,
+ )
+ """
+ _response = self._raw_client.list_integrations(
+ billing_only=billing_only,
+ exclude_ids=exclude_ids,
+ id=id,
+ state=state,
+ type=type,
+ limit=limit,
+ offset=offset,
+ request_options=request_options,
+ )
+ return _response.data
+
def get_integration_webhook_url(
self, type: str, *, request_options: typing.Optional[RequestOptions] = None
) -> GetIntegrationWebhookUrlResponse:
@@ -54,6 +164,107 @@ def get_integration_webhook_url(
_response = self._raw_client.get_integration_webhook_url(type, request_options=request_options)
return _response.data
+ def start_data_import(
+ self,
+ *,
+ integration_id: str,
+ company_matching_criteria: typing.Optional[CompanyMatchingCriteria] = OMIT,
+ company_matching_field: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> StartDataImportResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+
+ company_matching_criteria : typing.Optional[CompanyMatchingCriteria]
+
+ company_matching_field : typing.Optional[str]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ StartDataImportResponse
+ Created
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.integrationsapi.start_data_import(
+ integration_id="integration_id",
+ )
+ """
+ _response = self._raw_client.start_data_import(
+ integration_id=integration_id,
+ company_matching_criteria=company_matching_criteria,
+ company_matching_field=company_matching_field,
+ request_options=request_options,
+ )
+ return _response.data
+
+ def load_sample_data_set_v_2(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> LoadSampleDataSetV2Response:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ LoadSampleDataSetV2Response
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.integrationsapi.load_sample_data_set_v_2()
+ """
+ _response = self._raw_client.load_sample_data_set_v_2(request_options=request_options)
+ return _response.data
+
+ def uninstall_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> UninstallIntegrationResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UninstallIntegrationResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.integrationsapi.uninstall_integration(
+ integration_id="integration_id",
+ )
+ """
+ _response = self._raw_client.uninstall_integration(integration_id, request_options=request_options)
+ return _response.data
+
class AsyncIntegrationsapiClient:
def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -70,6 +281,121 @@ def with_raw_response(self) -> AsyncRawIntegrationsapiClient:
"""
return self._raw_client
+ async def run_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RunIntegrationResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RunIntegrationResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.integrationsapi.run_integration(
+ integration_id="integration_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.run_integration(integration_id, request_options=request_options)
+ return _response.data
+
+ async def list_integrations(
+ self,
+ *,
+ billing_only: typing.Optional[bool] = None,
+ exclude_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ id: typing.Optional[str] = None,
+ state: typing.Optional[IntegrationState] = None,
+ type: typing.Optional[IntegrationType] = None,
+ limit: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> ListIntegrationsResponse:
+ """
+ Parameters
+ ----------
+ billing_only : typing.Optional[bool]
+
+ exclude_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
+ id : typing.Optional[str]
+
+ state : typing.Optional[IntegrationState]
+
+ type : typing.Optional[IntegrationType]
+
+ limit : typing.Optional[int]
+ Page limit (default 100)
+
+ offset : typing.Optional[int]
+ Page offset (default 0)
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListIntegrationsResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.integrationsapi.list_integrations(
+ billing_only=True,
+ exclude_ids=["exclude_ids"],
+ id="id",
+ state="active",
+ type="clerk",
+ limit=1000000,
+ offset=1000000,
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.list_integrations(
+ billing_only=billing_only,
+ exclude_ids=exclude_ids,
+ id=id,
+ state=state,
+ type=type,
+ limit=limit,
+ offset=offset,
+ request_options=request_options,
+ )
+ return _response.data
+
async def get_integration_webhook_url(
self, type: str, *, request_options: typing.Optional[RequestOptions] = None
) -> GetIntegrationWebhookUrlResponse:
@@ -108,3 +434,128 @@ async def main() -> None:
"""
_response = await self._raw_client.get_integration_webhook_url(type, request_options=request_options)
return _response.data
+
+ async def start_data_import(
+ self,
+ *,
+ integration_id: str,
+ company_matching_criteria: typing.Optional[CompanyMatchingCriteria] = OMIT,
+ company_matching_field: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> StartDataImportResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+
+ company_matching_criteria : typing.Optional[CompanyMatchingCriteria]
+
+ company_matching_field : typing.Optional[str]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ StartDataImportResponse
+ Created
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.integrationsapi.start_data_import(
+ integration_id="integration_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.start_data_import(
+ integration_id=integration_id,
+ company_matching_criteria=company_matching_criteria,
+ company_matching_field=company_matching_field,
+ request_options=request_options,
+ )
+ return _response.data
+
+ async def load_sample_data_set_v_2(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> LoadSampleDataSetV2Response:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ LoadSampleDataSetV2Response
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.integrationsapi.load_sample_data_set_v_2()
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.load_sample_data_set_v_2(request_options=request_options)
+ return _response.data
+
+ async def uninstall_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> UninstallIntegrationResponse:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UninstallIntegrationResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.integrationsapi.uninstall_integration(
+ integration_id="integration_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.uninstall_integration(integration_id, request_options=request_options)
+ return _response.data
diff --git a/src/schematic/integrationsapi/raw_client.py b/src/schematic/integrationsapi/raw_client.py
index 2a04672..4889c44 100644
--- a/src/schematic/integrationsapi/raw_client.py
+++ b/src/schematic/integrationsapi/raw_client.py
@@ -10,47 +10,59 @@
from ..core.parse_error import ParsingError
from ..core.pydantic_utilities import parse_obj_as
from ..core.request_options import RequestOptions
+from ..errors.bad_request_error import BadRequestError
from ..errors.forbidden_error import ForbiddenError
from ..errors.internal_server_error import InternalServerError
from ..errors.not_found_error import NotFoundError
from ..errors.unauthorized_error import UnauthorizedError
from ..types.api_error import ApiError as types_api_error_ApiError
+from ..types.company_matching_criteria import CompanyMatchingCriteria
+from ..types.integration_state import IntegrationState
+from ..types.integration_type import IntegrationType
from .types.get_integration_webhook_url_response import GetIntegrationWebhookUrlResponse
+from .types.list_integrations_response import ListIntegrationsResponse
+from .types.load_sample_data_set_v_2_response import LoadSampleDataSetV2Response
+from .types.run_integration_response import RunIntegrationResponse
+from .types.start_data_import_response import StartDataImportResponse
+from .types.uninstall_integration_response import UninstallIntegrationResponse
from pydantic import ValidationError
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
class RawIntegrationsapiClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
self._client_wrapper = client_wrapper
- def get_integration_webhook_url(
- self, type: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> HttpResponse[GetIntegrationWebhookUrlResponse]:
+ def run_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[RunIntegrationResponse]:
"""
Parameters
----------
- type : str
- type
+ integration_id : str
+ integration_id
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
Returns
-------
- HttpResponse[GetIntegrationWebhookUrlResponse]
+ HttpResponse[RunIntegrationResponse]
OK
"""
_response = self._client_wrapper.httpx_client.request(
- f"integrations/{jsonable_encoder(type)}/webhook-url",
+ f"integration/start/{jsonable_encoder(integration_id)}",
method="GET",
request_options=request_options,
)
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
- GetIntegrationWebhookUrlResponse,
+ RunIntegrationResponse,
parse_obj_as(
- type_=GetIntegrationWebhookUrlResponse, # type: ignore
+ type_=RunIntegrationResponse, # type: ignore
object_=_response.json(),
),
)
@@ -112,14 +124,140 @@ def get_integration_webhook_url(
status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
)
+ def list_integrations(
+ self,
+ *,
+ billing_only: typing.Optional[bool] = None,
+ exclude_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ id: typing.Optional[str] = None,
+ state: typing.Optional[IntegrationState] = None,
+ type: typing.Optional[IntegrationType] = None,
+ limit: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[ListIntegrationsResponse]:
+ """
+ Parameters
+ ----------
+ billing_only : typing.Optional[bool]
-class AsyncRawIntegrationsapiClient:
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
- self._client_wrapper = client_wrapper
+ exclude_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
- async def get_integration_webhook_url(
+ id : typing.Optional[str]
+
+ state : typing.Optional[IntegrationState]
+
+ type : typing.Optional[IntegrationType]
+
+ limit : typing.Optional[int]
+ Page limit (default 100)
+
+ offset : typing.Optional[int]
+ Page offset (default 0)
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[ListIntegrationsResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "integrations",
+ method="GET",
+ params={
+ "billing_only": billing_only,
+ "exclude_ids": exclude_ids,
+ "id": id,
+ "state": state,
+ "type": type,
+ "limit": limit,
+ "offset": offset,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListIntegrationsResponse,
+ parse_obj_as(
+ type_=ListIntegrationsResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def get_integration_webhook_url(
self, type: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> AsyncHttpResponse[GetIntegrationWebhookUrlResponse]:
+ ) -> HttpResponse[GetIntegrationWebhookUrlResponse]:
"""
Parameters
----------
@@ -131,10 +269,10 @@ async def get_integration_webhook_url(
Returns
-------
- AsyncHttpResponse[GetIntegrationWebhookUrlResponse]
+ HttpResponse[GetIntegrationWebhookUrlResponse]
OK
"""
- _response = await self._client_wrapper.httpx_client.request(
+ _response = self._client_wrapper.httpx_client.request(
f"integrations/{jsonable_encoder(type)}/webhook-url",
method="GET",
request_options=request_options,
@@ -148,7 +286,927 @@ async def get_integration_webhook_url(
object_=_response.json(),
),
)
- return AsyncHttpResponse(response=_response, data=_data)
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def start_data_import(
+ self,
+ *,
+ integration_id: str,
+ company_matching_criteria: typing.Optional[CompanyMatchingCriteria] = OMIT,
+ company_matching_field: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[StartDataImportResponse]:
+ """
+ Parameters
+ ----------
+ integration_id : str
+
+ company_matching_criteria : typing.Optional[CompanyMatchingCriteria]
+
+ company_matching_field : typing.Optional[str]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[StartDataImportResponse]
+ Created
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "integrations/start-data-import",
+ method="POST",
+ json={
+ "company_matching_criteria": company_matching_criteria,
+ "company_matching_field": company_matching_field,
+ "integration_id": integration_id,
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ StartDataImportResponse,
+ parse_obj_as(
+ type_=StartDataImportResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def load_sample_data_set_v_2(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[LoadSampleDataSetV2Response]:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[LoadSampleDataSetV2Response]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "integrations/stripe/dataset-sample-v2",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ LoadSampleDataSetV2Response,
+ parse_obj_as(
+ type_=LoadSampleDataSetV2Response, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def uninstall_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[UninstallIntegrationResponse]:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[UninstallIntegrationResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"integrations/uninstall/{jsonable_encoder(integration_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UninstallIntegrationResponse,
+ parse_obj_as(
+ type_=UninstallIntegrationResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+
+class AsyncRawIntegrationsapiClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def run_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[RunIntegrationResponse]:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[RunIntegrationResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"integration/start/{jsonable_encoder(integration_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RunIntegrationResponse,
+ parse_obj_as(
+ type_=RunIntegrationResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def list_integrations(
+ self,
+ *,
+ billing_only: typing.Optional[bool] = None,
+ exclude_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
+ id: typing.Optional[str] = None,
+ state: typing.Optional[IntegrationState] = None,
+ type: typing.Optional[IntegrationType] = None,
+ limit: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[ListIntegrationsResponse]:
+ """
+ Parameters
+ ----------
+ billing_only : typing.Optional[bool]
+
+ exclude_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
+
+ id : typing.Optional[str]
+
+ state : typing.Optional[IntegrationState]
+
+ type : typing.Optional[IntegrationType]
+
+ limit : typing.Optional[int]
+ Page limit (default 100)
+
+ offset : typing.Optional[int]
+ Page offset (default 0)
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[ListIntegrationsResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "integrations",
+ method="GET",
+ params={
+ "billing_only": billing_only,
+ "exclude_ids": exclude_ids,
+ "id": id,
+ "state": state,
+ "type": type,
+ "limit": limit,
+ "offset": offset,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListIntegrationsResponse,
+ parse_obj_as(
+ type_=ListIntegrationsResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def get_integration_webhook_url(
+ self, type: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[GetIntegrationWebhookUrlResponse]:
+ """
+ Parameters
+ ----------
+ type : str
+ type
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetIntegrationWebhookUrlResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"integrations/{jsonable_encoder(type)}/webhook-url",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetIntegrationWebhookUrlResponse,
+ parse_obj_as(
+ type_=GetIntegrationWebhookUrlResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def start_data_import(
+ self,
+ *,
+ integration_id: str,
+ company_matching_criteria: typing.Optional[CompanyMatchingCriteria] = OMIT,
+ company_matching_field: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[StartDataImportResponse]:
+ """
+ Parameters
+ ----------
+ integration_id : str
+
+ company_matching_criteria : typing.Optional[CompanyMatchingCriteria]
+
+ company_matching_field : typing.Optional[str]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[StartDataImportResponse]
+ Created
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "integrations/start-data-import",
+ method="POST",
+ json={
+ "company_matching_criteria": company_matching_criteria,
+ "company_matching_field": company_matching_field,
+ "integration_id": integration_id,
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ StartDataImportResponse,
+ parse_obj_as(
+ type_=StartDataImportResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def load_sample_data_set_v_2(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[LoadSampleDataSetV2Response]:
+ """
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[LoadSampleDataSetV2Response]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "integrations/stripe/dataset-sample-v2",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ LoadSampleDataSetV2Response,
+ parse_obj_as(
+ type_=LoadSampleDataSetV2Response, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e
+ )
+ raise core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def uninstall_integration(
+ self, integration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[UninstallIntegrationResponse]:
+ """
+ Parameters
+ ----------
+ integration_id : str
+ integration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[UninstallIntegrationResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"integrations/uninstall/{jsonable_encoder(integration_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UninstallIntegrationResponse,
+ parse_obj_as(
+ type_=UninstallIntegrationResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 400:
+ raise BadRequestError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
if _response.status_code == 401:
raise UnauthorizedError(
headers=dict(_response.headers),
diff --git a/src/schematic/integrationsapi/types/__init__.py b/src/schematic/integrationsapi/types/__init__.py
index 2e299bd..df68e27 100644
--- a/src/schematic/integrationsapi/types/__init__.py
+++ b/src/schematic/integrationsapi/types/__init__.py
@@ -7,7 +7,21 @@
if typing.TYPE_CHECKING:
from .get_integration_webhook_url_response import GetIntegrationWebhookUrlResponse
-_dynamic_imports: typing.Dict[str, str] = {"GetIntegrationWebhookUrlResponse": ".get_integration_webhook_url_response"}
+ from .list_integrations_params import ListIntegrationsParams
+ from .list_integrations_response import ListIntegrationsResponse
+ from .load_sample_data_set_v_2_response import LoadSampleDataSetV2Response
+ from .run_integration_response import RunIntegrationResponse
+ from .start_data_import_response import StartDataImportResponse
+ from .uninstall_integration_response import UninstallIntegrationResponse
+_dynamic_imports: typing.Dict[str, str] = {
+ "GetIntegrationWebhookUrlResponse": ".get_integration_webhook_url_response",
+ "ListIntegrationsParams": ".list_integrations_params",
+ "ListIntegrationsResponse": ".list_integrations_response",
+ "LoadSampleDataSetV2Response": ".load_sample_data_set_v_2_response",
+ "RunIntegrationResponse": ".run_integration_response",
+ "StartDataImportResponse": ".start_data_import_response",
+ "UninstallIntegrationResponse": ".uninstall_integration_response",
+}
def __getattr__(attr_name: str) -> typing.Any:
@@ -31,4 +45,12 @@ def __dir__():
return sorted(lazy_attrs)
-__all__ = ["GetIntegrationWebhookUrlResponse"]
+__all__ = [
+ "GetIntegrationWebhookUrlResponse",
+ "ListIntegrationsParams",
+ "ListIntegrationsResponse",
+ "LoadSampleDataSetV2Response",
+ "RunIntegrationResponse",
+ "StartDataImportResponse",
+ "UninstallIntegrationResponse",
+]
diff --git a/src/schematic/integrationsapi/types/list_integrations_params.py b/src/schematic/integrationsapi/types/list_integrations_params.py
new file mode 100644
index 0000000..e215e3b
--- /dev/null
+++ b/src/schematic/integrationsapi/types/list_integrations_params.py
@@ -0,0 +1,39 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.integration_state import IntegrationState
+from ...types.integration_type import IntegrationType
+
+
+class ListIntegrationsParams(UniversalBaseModel):
+ """
+ Input parameters
+ """
+
+ billing_only: typing.Optional[bool] = None
+ exclude_ids: typing.Optional[typing.List[str]] = None
+ id: typing.Optional[str] = None
+ limit: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Page limit (default 100)
+ """
+
+ offset: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Page offset (default 0)
+ """
+
+ state: typing.Optional[IntegrationState] = None
+ type: typing.Optional[IntegrationType] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/types/list_integrations_response.py b/src/schematic/integrationsapi/types/list_integrations_response.py
new file mode 100644
index 0000000..be1649f
--- /dev/null
+++ b/src/schematic/integrationsapi/types/list_integrations_response.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.integrations_list_response_data import IntegrationsListResponseData
+from .list_integrations_params import ListIntegrationsParams
+
+
+class ListIntegrationsResponse(UniversalBaseModel):
+ data: typing.List[IntegrationsListResponseData]
+ params: ListIntegrationsParams = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/types/load_sample_data_set_v_2_response.py b/src/schematic/integrationsapi/types/load_sample_data_set_v_2_response.py
new file mode 100644
index 0000000..28bdbe8
--- /dev/null
+++ b/src/schematic/integrationsapi/types/load_sample_data_set_v_2_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.integrations_data_set_response_data import IntegrationsDataSetResponseData
+
+
+class LoadSampleDataSetV2Response(UniversalBaseModel):
+ data: IntegrationsDataSetResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/types/run_integration_response.py b/src/schematic/integrationsapi/types/run_integration_response.py
new file mode 100644
index 0000000..a0b669b
--- /dev/null
+++ b/src/schematic/integrationsapi/types/run_integration_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.integrations_response_data import IntegrationsResponseData
+
+
+class RunIntegrationResponse(UniversalBaseModel):
+ data: IntegrationsResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/types/start_data_import_response.py b/src/schematic/integrationsapi/types/start_data_import_response.py
new file mode 100644
index 0000000..bd0e0dc
--- /dev/null
+++ b/src/schematic/integrationsapi/types/start_data_import_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.integrations_response_data import IntegrationsResponseData
+
+
+class StartDataImportResponse(UniversalBaseModel):
+ data: IntegrationsResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/integrationsapi/types/uninstall_integration_response.py b/src/schematic/integrationsapi/types/uninstall_integration_response.py
new file mode 100644
index 0000000..7dc0aeb
--- /dev/null
+++ b/src/schematic/integrationsapi/types/uninstall_integration_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ...core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from ...types.delete_response import DeleteResponse
+
+
+class UninstallIntegrationResponse(UniversalBaseModel):
+ data: DeleteResponse
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/plans/client.py b/src/schematic/plans/client.py
index 3016829..72443e3 100644
--- a/src/schematic/plans/client.py
+++ b/src/schematic/plans/client.py
@@ -281,6 +281,7 @@ def list_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -302,6 +303,9 @@ def list_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -359,6 +363,7 @@ def list_plans(
)
client.plans.list_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -377,6 +382,7 @@ def list_plans(
"""
_response = self._raw_client.list_plans(
company_id=company_id,
+ company_scoped_only=company_scoped_only,
exclude_company_scoped=exclude_company_scoped,
for_fallback_plan=for_fallback_plan,
for_initial_plan=for_initial_plan,
@@ -652,6 +658,7 @@ def upsert_plan_for_billing_product(
external_resource_id: str,
name: str,
plan_type: PlanType,
+ external_resource_version: typing.Optional[str] = OMIT,
icon: typing.Optional[PlanIcon] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertPlanForBillingProductResponse:
@@ -668,6 +675,8 @@ def upsert_plan_for_billing_product(
plan_type : PlanType
+ external_resource_version : typing.Optional[str]
+
icon : typing.Optional[PlanIcon]
request_options : typing.Optional[RequestOptions]
@@ -699,6 +708,7 @@ def upsert_plan_for_billing_product(
external_resource_id=external_resource_id,
name=name,
plan_type=plan_type,
+ external_resource_version=external_resource_version,
icon=icon,
request_options=request_options,
)
@@ -810,6 +820,7 @@ def count_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -831,6 +842,9 @@ def count_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -888,6 +902,7 @@ def count_plans(
)
client.plans.count_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -906,6 +921,7 @@ def count_plans(
"""
_response = self._raw_client.count_plans(
company_id=company_id,
+ company_scoped_only=company_scoped_only,
exclude_company_scoped=exclude_company_scoped,
for_fallback_plan=for_fallback_plan,
for_initial_plan=for_initial_plan,
@@ -1350,6 +1366,7 @@ async def list_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -1371,6 +1388,9 @@ async def list_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -1433,6 +1453,7 @@ async def list_plans(
async def main() -> None:
await client.plans.list_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -1454,6 +1475,7 @@ async def main() -> None:
"""
_response = await self._raw_client.list_plans(
company_id=company_id,
+ company_scoped_only=company_scoped_only,
exclude_company_scoped=exclude_company_scoped,
for_fallback_plan=for_fallback_plan,
for_initial_plan=for_initial_plan,
@@ -1771,6 +1793,7 @@ async def upsert_plan_for_billing_product(
external_resource_id: str,
name: str,
plan_type: PlanType,
+ external_resource_version: typing.Optional[str] = OMIT,
icon: typing.Optional[PlanIcon] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> UpsertPlanForBillingProductResponse:
@@ -1787,6 +1810,8 @@ async def upsert_plan_for_billing_product(
plan_type : PlanType
+ external_resource_version : typing.Optional[str]
+
icon : typing.Optional[PlanIcon]
request_options : typing.Optional[RequestOptions]
@@ -1826,6 +1851,7 @@ async def main() -> None:
external_resource_id=external_resource_id,
name=name,
plan_type=plan_type,
+ external_resource_version=external_resource_version,
icon=icon,
request_options=request_options,
)
@@ -1953,6 +1979,7 @@ async def count_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -1974,6 +2001,9 @@ async def count_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -2036,6 +2066,7 @@ async def count_plans(
async def main() -> None:
await client.plans.count_plans(
company_id="company_id",
+ company_scoped_only=True,
exclude_company_scoped=True,
for_fallback_plan=True,
for_initial_plan=True,
@@ -2057,6 +2088,7 @@ async def main() -> None:
"""
_response = await self._raw_client.count_plans(
company_id=company_id,
+ company_scoped_only=company_scoped_only,
exclude_company_scoped=exclude_company_scoped,
for_fallback_plan=for_fallback_plan,
for_initial_plan=for_initial_plan,
diff --git a/src/schematic/plans/raw_client.py b/src/schematic/plans/raw_client.py
index 4e31e15..1d16381 100644
--- a/src/schematic/plans/raw_client.py
+++ b/src/schematic/plans/raw_client.py
@@ -559,6 +559,7 @@ def list_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -580,6 +581,9 @@ def list_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -633,6 +637,7 @@ def list_plans(
method="GET",
params={
"company_id": company_id,
+ "company_scoped_only": company_scoped_only,
"exclude_company_scoped": exclude_company_scoped,
"for_fallback_plan": for_fallback_plan,
"for_initial_plan": for_initial_plan,
@@ -1336,6 +1341,7 @@ def upsert_plan_for_billing_product(
external_resource_id: str,
name: str,
plan_type: PlanType,
+ external_resource_version: typing.Optional[str] = OMIT,
icon: typing.Optional[PlanIcon] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[UpsertPlanForBillingProductResponse]:
@@ -1352,6 +1358,8 @@ def upsert_plan_for_billing_product(
plan_type : PlanType
+ external_resource_version : typing.Optional[str]
+
icon : typing.Optional[PlanIcon]
request_options : typing.Optional[RequestOptions]
@@ -1369,6 +1377,7 @@ def upsert_plan_for_billing_product(
"billing_provider": billing_provider,
"description": description,
"external_resource_id": external_resource_id,
+ "external_resource_version": external_resource_version,
"icon": icon,
"name": name,
"plan_type": plan_type,
@@ -1703,6 +1712,7 @@ def count_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -1724,6 +1734,9 @@ def count_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -1777,6 +1790,7 @@ def count_plans(
method="GET",
params={
"company_id": company_id,
+ "company_scoped_only": company_scoped_only,
"exclude_company_scoped": exclude_company_scoped,
"for_fallback_plan": for_fallback_plan,
"for_initial_plan": for_initial_plan,
@@ -2736,6 +2750,7 @@ async def list_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -2757,6 +2772,9 @@ async def list_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -2810,6 +2828,7 @@ async def list_plans(
method="GET",
params={
"company_id": company_id,
+ "company_scoped_only": company_scoped_only,
"exclude_company_scoped": exclude_company_scoped,
"for_fallback_plan": for_fallback_plan,
"for_initial_plan": for_initial_plan,
@@ -3513,6 +3532,7 @@ async def upsert_plan_for_billing_product(
external_resource_id: str,
name: str,
plan_type: PlanType,
+ external_resource_version: typing.Optional[str] = OMIT,
icon: typing.Optional[PlanIcon] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[UpsertPlanForBillingProductResponse]:
@@ -3529,6 +3549,8 @@ async def upsert_plan_for_billing_product(
plan_type : PlanType
+ external_resource_version : typing.Optional[str]
+
icon : typing.Optional[PlanIcon]
request_options : typing.Optional[RequestOptions]
@@ -3546,6 +3568,7 @@ async def upsert_plan_for_billing_product(
"billing_provider": billing_provider,
"description": description,
"external_resource_id": external_resource_id,
+ "external_resource_version": external_resource_version,
"icon": icon,
"name": name,
"plan_type": plan_type,
@@ -3880,6 +3903,7 @@ async def count_plans(
self,
*,
company_id: typing.Optional[str] = None,
+ company_scoped_only: typing.Optional[bool] = None,
exclude_company_scoped: typing.Optional[bool] = None,
for_fallback_plan: typing.Optional[bool] = None,
for_initial_plan: typing.Optional[bool] = None,
@@ -3901,6 +3925,9 @@ async def count_plans(
----------
company_id : typing.Optional[str]
+ company_scoped_only : typing.Optional[bool]
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+
exclude_company_scoped : typing.Optional[bool]
Exclude plans that are scoped to a company (custom plans assigned to a company)
@@ -3954,6 +3981,7 @@ async def count_plans(
method="GET",
params={
"company_id": company_id,
+ "company_scoped_only": company_scoped_only,
"exclude_company_scoped": exclude_company_scoped,
"for_fallback_plan": for_fallback_plan,
"for_initial_plan": for_initial_plan,
diff --git a/src/schematic/plans/types/count_plans_params.py b/src/schematic/plans/types/count_plans_params.py
index de92dfb..0ab901f 100644
--- a/src/schematic/plans/types/count_plans_params.py
+++ b/src/schematic/plans/types/count_plans_params.py
@@ -13,6 +13,11 @@ class CountPlansParams(UniversalBaseModel):
"""
company_id: typing.Optional[str] = None
+ company_scoped_only: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+ """
+
exclude_company_scoped: typing.Optional[bool] = pydantic.Field(default=None)
"""
Exclude plans that are scoped to a company (custom plans assigned to a company)
diff --git a/src/schematic/plans/types/list_plans_params.py b/src/schematic/plans/types/list_plans_params.py
index ad46bb6..f43ae92 100644
--- a/src/schematic/plans/types/list_plans_params.py
+++ b/src/schematic/plans/types/list_plans_params.py
@@ -13,6 +13,11 @@ class ListPlansParams(UniversalBaseModel):
"""
company_id: typing.Optional[str] = None
+ company_scoped_only: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Only return plans that are scoped to a company (custom plans assigned to a company)
+ """
+
exclude_company_scoped: typing.Optional[bool] = pydantic.Field(default=None)
"""
Exclude plans that are scoped to a company (custom plans assigned to a company)
diff --git a/src/schematic/types/__init__.py b/src/schematic/types/__init__.py
index 0ce3ea8..1ae1614 100644
--- a/src/schematic/types/__init__.py
+++ b/src/schematic/types/__init__.py
@@ -9,9 +9,12 @@
from .account_member_permission import AccountMemberPermission
from .account_member_response_data import AccountMemberResponseData
from .account_member_role import AccountMemberRole
+ from .activity_entry_response_data import ActivityEntryResponseData
+ from .activity_response_response_data import ActivityResponseResponseData
from .actor_type import ActorType
from .api_error import ApiError
from .api_key_create_response_data import ApiKeyCreateResponseData
+ from .api_key_integration_response_data import ApiKeyIntegrationResponseData
from .api_key_response_data import ApiKeyResponseData
from .api_key_scope import ApiKeyScope
from .audit_log_list_response_data import AuditLogListResponseData
@@ -71,13 +74,17 @@
from .checkout_data_response_data import CheckoutDataResponseData
from .checkout_settings_response_data import CheckoutSettingsResponseData
from .checkout_subscription import CheckoutSubscription
+ from .clerk_integration_config import ClerkIntegrationConfig
+ from .company_credit_balance_response_data import CompanyCreditBalanceResponseData
from .company_detail_response_data import CompanyDetailResponseData
from .company_event_period_metrics_response_data import CompanyEventPeriodMetricsResponseData
from .company_ledger_response_data import CompanyLedgerResponseData
+ from .company_matching_criteria import CompanyMatchingCriteria
from .company_membership_detail_response_data import CompanyMembershipDetailResponseData
from .company_membership_response_data import CompanyMembershipResponseData
from .company_override_note_response_data import CompanyOverrideNoteResponseData
from .company_override_response_data import CompanyOverrideResponseData
+ from .company_plan_credit_grant_view import CompanyPlanCreditGrantView
from .company_plan_detail_response_data import CompanyPlanDetailResponseData
from .company_plan_invalid_reason import CompanyPlanInvalidReason
from .company_plan_with_billing_sub_view import CompanyPlanWithBillingSubView
@@ -122,6 +129,7 @@
from .credit_bundle_currency_price_response_data import CreditBundleCurrencyPriceResponseData
from .credit_bundle_purchase_response_data import CreditBundlePurchaseResponseData
from .credit_company_grant_view import CreditCompanyGrantView
+ from .credit_currency_price import CreditCurrencyPrice
from .credit_currency_price_request_body import CreditCurrencyPriceRequestBody
from .credit_currency_price_response_data import CreditCurrencyPriceResponseData
from .credit_event_ledger_response_data import CreditEventLedgerResponseData
@@ -170,8 +178,11 @@
from .entity_trait_value import EntityTraitValue
from .entity_type import EntityType
from .environment_detail_response_data import EnvironmentDetailResponseData
+ from .environment_feature_usage_time_series_response_data import EnvironmentFeatureUsageTimeSeriesResponseData
from .environment_response_data import EnvironmentResponseData
+ from .environment_trait_usage_time_series_response_data import EnvironmentTraitUsageTimeSeriesResponseData
from .environment_type import EnvironmentType
+ from .environment_usage_point_response_data import EnvironmentUsagePointResponseData
from .event_body import EventBody
from .event_body_flag_check import EventBodyFlagCheck
from .event_body_identify import EventBodyIdentify
@@ -202,8 +213,21 @@
from .flag_type import FlagType
from .flag_view import FlagView
from .generic_preview_object import GenericPreviewObject
+ from .insights_summary_response_data import InsightsSummaryResponseData
+ from .integration_capabilities import IntegrationCapabilities
+ from .integration_config import (
+ IntegrationConfig,
+ IntegrationConfig_Clerk,
+ IntegrationConfig_Orb,
+ IntegrationConfig_Stripe,
+ )
+ from .integration_response_data import IntegrationResponseData
+ from .integration_state import IntegrationState
from .integration_type import IntegrationType
from .integration_webhook_url_response_data import IntegrationWebhookUrlResponseData
+ from .integrations_data_set_response_data import IntegrationsDataSetResponseData
+ from .integrations_list_response_data import IntegrationsListResponseData
+ from .integrations_response_data import IntegrationsResponseData
from .invoice_request_body import InvoiceRequestBody
from .invoice_response_data import InvoiceResponseData
from .invoice_status import InvoiceStatus
@@ -216,6 +240,8 @@
from .meter_request_body import MeterRequestBody
from .metric_period import MetricPeriod
from .metric_period_month_reset import MetricPeriodMonthReset
+ from .mrr_response_data import MrrResponseData
+ from .orb_integration_config import OrbIntegrationConfig
from .ordered_plans_in_group import OrderedPlansInGroup
from .payment_method_request_body import PaymentMethodRequestBody
from .payment_method_response_data import PaymentMethodResponseData
@@ -238,6 +264,8 @@
from .plan_group_plan_detail_response_data import PlanGroupPlanDetailResponseData
from .plan_group_plan_entitlements_order import PlanGroupPlanEntitlementsOrder
from .plan_group_response_data import PlanGroupResponseData
+ from .plan_growth_point_response_data import PlanGrowthPointResponseData
+ from .plan_growth_response_data import PlanGrowthResponseData
from .plan_icon import PlanIcon
from .plan_issue_response_data import PlanIssueResponseData
from .plan_response_data import PlanResponseData
@@ -303,17 +331,21 @@
from .skipped_entitlement_response_data import SkippedEntitlementResponseData
from .sort_direction import SortDirection
from .stripe_embed_info import StripeEmbedInfo
+ from .stripe_integration_config import StripeIntegrationConfig
from .subscription_status import SubscriptionStatus
from .subscription_trait_update import SubscriptionTraitUpdate
from .subscription_type import SubscriptionType
from .temporary_access_token_resource_type import TemporaryAccessTokenResourceType
from .temporary_access_token_response_data import TemporaryAccessTokenResponseData
from .time_series_granularity import TimeSeriesGranularity
+ from .top_feature_by_usage_response_data import TopFeatureByUsageResponseData
+ from .top_features_by_usage_response_data import TopFeaturesByUsageResponseData
from .trait_definition import TraitDefinition
from .trait_definition_comparable_type import TraitDefinitionComparableType
from .trait_type import TraitType
from .trial_status import TrialStatus
from .update_add_on_request_body import UpdateAddOnRequestBody
+ from .update_auto_topup_override_request_body import UpdateAutoTopupOverrideRequestBody
from .update_billing_plan_credit_grant_request_body import UpdateBillingPlanCreditGrantRequestBody
from .update_credit_bundle_request_body import UpdateCreditBundleRequestBody
from .update_entitlement_req_common import UpdateEntitlementReqCommon
@@ -345,9 +377,12 @@
"AccountMemberPermission": ".account_member_permission",
"AccountMemberResponseData": ".account_member_response_data",
"AccountMemberRole": ".account_member_role",
+ "ActivityEntryResponseData": ".activity_entry_response_data",
+ "ActivityResponseResponseData": ".activity_response_response_data",
"ActorType": ".actor_type",
"ApiError": ".api_error",
"ApiKeyCreateResponseData": ".api_key_create_response_data",
+ "ApiKeyIntegrationResponseData": ".api_key_integration_response_data",
"ApiKeyResponseData": ".api_key_response_data",
"ApiKeyScope": ".api_key_scope",
"AuditLogListResponseData": ".audit_log_list_response_data",
@@ -407,13 +442,17 @@
"CheckoutDataResponseData": ".checkout_data_response_data",
"CheckoutSettingsResponseData": ".checkout_settings_response_data",
"CheckoutSubscription": ".checkout_subscription",
+ "ClerkIntegrationConfig": ".clerk_integration_config",
+ "CompanyCreditBalanceResponseData": ".company_credit_balance_response_data",
"CompanyDetailResponseData": ".company_detail_response_data",
"CompanyEventPeriodMetricsResponseData": ".company_event_period_metrics_response_data",
"CompanyLedgerResponseData": ".company_ledger_response_data",
+ "CompanyMatchingCriteria": ".company_matching_criteria",
"CompanyMembershipDetailResponseData": ".company_membership_detail_response_data",
"CompanyMembershipResponseData": ".company_membership_response_data",
"CompanyOverrideNoteResponseData": ".company_override_note_response_data",
"CompanyOverrideResponseData": ".company_override_response_data",
+ "CompanyPlanCreditGrantView": ".company_plan_credit_grant_view",
"CompanyPlanDetailResponseData": ".company_plan_detail_response_data",
"CompanyPlanInvalidReason": ".company_plan_invalid_reason",
"CompanyPlanWithBillingSubView": ".company_plan_with_billing_sub_view",
@@ -458,6 +497,7 @@
"CreditBundleCurrencyPriceResponseData": ".credit_bundle_currency_price_response_data",
"CreditBundlePurchaseResponseData": ".credit_bundle_purchase_response_data",
"CreditCompanyGrantView": ".credit_company_grant_view",
+ "CreditCurrencyPrice": ".credit_currency_price",
"CreditCurrencyPriceRequestBody": ".credit_currency_price_request_body",
"CreditCurrencyPriceResponseData": ".credit_currency_price_response_data",
"CreditEventLedgerResponseData": ".credit_event_ledger_response_data",
@@ -506,8 +546,11 @@
"EntityTraitValue": ".entity_trait_value",
"EntityType": ".entity_type",
"EnvironmentDetailResponseData": ".environment_detail_response_data",
+ "EnvironmentFeatureUsageTimeSeriesResponseData": ".environment_feature_usage_time_series_response_data",
"EnvironmentResponseData": ".environment_response_data",
+ "EnvironmentTraitUsageTimeSeriesResponseData": ".environment_trait_usage_time_series_response_data",
"EnvironmentType": ".environment_type",
+ "EnvironmentUsagePointResponseData": ".environment_usage_point_response_data",
"EventBody": ".event_body",
"EventBodyFlagCheck": ".event_body_flag_check",
"EventBodyIdentify": ".event_body_identify",
@@ -538,8 +581,19 @@
"FlagType": ".flag_type",
"FlagView": ".flag_view",
"GenericPreviewObject": ".generic_preview_object",
+ "InsightsSummaryResponseData": ".insights_summary_response_data",
+ "IntegrationCapabilities": ".integration_capabilities",
+ "IntegrationConfig": ".integration_config",
+ "IntegrationConfig_Clerk": ".integration_config",
+ "IntegrationConfig_Orb": ".integration_config",
+ "IntegrationConfig_Stripe": ".integration_config",
+ "IntegrationResponseData": ".integration_response_data",
+ "IntegrationState": ".integration_state",
"IntegrationType": ".integration_type",
"IntegrationWebhookUrlResponseData": ".integration_webhook_url_response_data",
+ "IntegrationsDataSetResponseData": ".integrations_data_set_response_data",
+ "IntegrationsListResponseData": ".integrations_list_response_data",
+ "IntegrationsResponseData": ".integrations_response_data",
"InvoiceRequestBody": ".invoice_request_body",
"InvoiceResponseData": ".invoice_response_data",
"InvoiceStatus": ".invoice_status",
@@ -552,6 +606,8 @@
"MeterRequestBody": ".meter_request_body",
"MetricPeriod": ".metric_period",
"MetricPeriodMonthReset": ".metric_period_month_reset",
+ "MrrResponseData": ".mrr_response_data",
+ "OrbIntegrationConfig": ".orb_integration_config",
"OrderedPlansInGroup": ".ordered_plans_in_group",
"PaymentMethodRequestBody": ".payment_method_request_body",
"PaymentMethodResponseData": ".payment_method_response_data",
@@ -574,6 +630,8 @@
"PlanGroupPlanDetailResponseData": ".plan_group_plan_detail_response_data",
"PlanGroupPlanEntitlementsOrder": ".plan_group_plan_entitlements_order",
"PlanGroupResponseData": ".plan_group_response_data",
+ "PlanGrowthPointResponseData": ".plan_growth_point_response_data",
+ "PlanGrowthResponseData": ".plan_growth_response_data",
"PlanIcon": ".plan_icon",
"PlanIssueResponseData": ".plan_issue_response_data",
"PlanResponseData": ".plan_response_data",
@@ -639,17 +697,21 @@
"SkippedEntitlementResponseData": ".skipped_entitlement_response_data",
"SortDirection": ".sort_direction",
"StripeEmbedInfo": ".stripe_embed_info",
+ "StripeIntegrationConfig": ".stripe_integration_config",
"SubscriptionStatus": ".subscription_status",
"SubscriptionTraitUpdate": ".subscription_trait_update",
"SubscriptionType": ".subscription_type",
"TemporaryAccessTokenResourceType": ".temporary_access_token_resource_type",
"TemporaryAccessTokenResponseData": ".temporary_access_token_response_data",
"TimeSeriesGranularity": ".time_series_granularity",
+ "TopFeatureByUsageResponseData": ".top_feature_by_usage_response_data",
+ "TopFeaturesByUsageResponseData": ".top_features_by_usage_response_data",
"TraitDefinition": ".trait_definition",
"TraitDefinitionComparableType": ".trait_definition_comparable_type",
"TraitType": ".trait_type",
"TrialStatus": ".trial_status",
"UpdateAddOnRequestBody": ".update_add_on_request_body",
+ "UpdateAutoTopupOverrideRequestBody": ".update_auto_topup_override_request_body",
"UpdateBillingPlanCreditGrantRequestBody": ".update_billing_plan_credit_grant_request_body",
"UpdateCreditBundleRequestBody": ".update_credit_bundle_request_body",
"UpdateEntitlementReqCommon": ".update_entitlement_req_common",
@@ -705,9 +767,12 @@ def __dir__():
"AccountMemberPermission",
"AccountMemberResponseData",
"AccountMemberRole",
+ "ActivityEntryResponseData",
+ "ActivityResponseResponseData",
"ActorType",
"ApiError",
"ApiKeyCreateResponseData",
+ "ApiKeyIntegrationResponseData",
"ApiKeyResponseData",
"ApiKeyScope",
"AuditLogListResponseData",
@@ -767,13 +832,17 @@ def __dir__():
"CheckoutDataResponseData",
"CheckoutSettingsResponseData",
"CheckoutSubscription",
+ "ClerkIntegrationConfig",
+ "CompanyCreditBalanceResponseData",
"CompanyDetailResponseData",
"CompanyEventPeriodMetricsResponseData",
"CompanyLedgerResponseData",
+ "CompanyMatchingCriteria",
"CompanyMembershipDetailResponseData",
"CompanyMembershipResponseData",
"CompanyOverrideNoteResponseData",
"CompanyOverrideResponseData",
+ "CompanyPlanCreditGrantView",
"CompanyPlanDetailResponseData",
"CompanyPlanInvalidReason",
"CompanyPlanWithBillingSubView",
@@ -818,6 +887,7 @@ def __dir__():
"CreditBundleCurrencyPriceResponseData",
"CreditBundlePurchaseResponseData",
"CreditCompanyGrantView",
+ "CreditCurrencyPrice",
"CreditCurrencyPriceRequestBody",
"CreditCurrencyPriceResponseData",
"CreditEventLedgerResponseData",
@@ -866,8 +936,11 @@ def __dir__():
"EntityTraitValue",
"EntityType",
"EnvironmentDetailResponseData",
+ "EnvironmentFeatureUsageTimeSeriesResponseData",
"EnvironmentResponseData",
+ "EnvironmentTraitUsageTimeSeriesResponseData",
"EnvironmentType",
+ "EnvironmentUsagePointResponseData",
"EventBody",
"EventBodyFlagCheck",
"EventBodyIdentify",
@@ -898,8 +971,19 @@ def __dir__():
"FlagType",
"FlagView",
"GenericPreviewObject",
+ "InsightsSummaryResponseData",
+ "IntegrationCapabilities",
+ "IntegrationConfig",
+ "IntegrationConfig_Clerk",
+ "IntegrationConfig_Orb",
+ "IntegrationConfig_Stripe",
+ "IntegrationResponseData",
+ "IntegrationState",
"IntegrationType",
"IntegrationWebhookUrlResponseData",
+ "IntegrationsDataSetResponseData",
+ "IntegrationsListResponseData",
+ "IntegrationsResponseData",
"InvoiceRequestBody",
"InvoiceResponseData",
"InvoiceStatus",
@@ -912,6 +996,8 @@ def __dir__():
"MeterRequestBody",
"MetricPeriod",
"MetricPeriodMonthReset",
+ "MrrResponseData",
+ "OrbIntegrationConfig",
"OrderedPlansInGroup",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
@@ -934,6 +1020,8 @@ def __dir__():
"PlanGroupPlanDetailResponseData",
"PlanGroupPlanEntitlementsOrder",
"PlanGroupResponseData",
+ "PlanGrowthPointResponseData",
+ "PlanGrowthResponseData",
"PlanIcon",
"PlanIssueResponseData",
"PlanResponseData",
@@ -999,17 +1087,21 @@ def __dir__():
"SkippedEntitlementResponseData",
"SortDirection",
"StripeEmbedInfo",
+ "StripeIntegrationConfig",
"SubscriptionStatus",
"SubscriptionTraitUpdate",
"SubscriptionType",
"TemporaryAccessTokenResourceType",
"TemporaryAccessTokenResponseData",
"TimeSeriesGranularity",
+ "TopFeatureByUsageResponseData",
+ "TopFeaturesByUsageResponseData",
"TraitDefinition",
"TraitDefinitionComparableType",
"TraitType",
"TrialStatus",
"UpdateAddOnRequestBody",
+ "UpdateAutoTopupOverrideRequestBody",
"UpdateBillingPlanCreditGrantRequestBody",
"UpdateCreditBundleRequestBody",
"UpdateEntitlementReqCommon",
diff --git a/src/schematic/types/activity_entry_response_data.py b/src/schematic/types/activity_entry_response_data.py
new file mode 100644
index 0000000..4abb612
--- /dev/null
+++ b/src/schematic/types/activity_entry_response_data.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class ActivityEntryResponseData(UniversalBaseModel):
+ actor_name: str
+ method: str
+ resource_name: str
+ resource_type: str
+ timestamp: dt.datetime
+ title: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/activity_response_response_data.py b/src/schematic/types/activity_response_response_data.py
new file mode 100644
index 0000000..258103a
--- /dev/null
+++ b/src/schematic/types/activity_response_response_data.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .activity_entry_response_data import ActivityEntryResponseData
+
+
+class ActivityResponseResponseData(UniversalBaseModel):
+ entries: typing.List[ActivityEntryResponseData]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/api_key_create_response_data.py b/src/schematic/types/api_key_create_response_data.py
index d1ad347..0ab1183 100644
--- a/src/schematic/types/api_key_create_response_data.py
+++ b/src/schematic/types/api_key_create_response_data.py
@@ -5,6 +5,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .api_key_integration_response_data import ApiKeyIntegrationResponseData
from .api_key_scope import ApiKeyScope
from .environment_response_data import EnvironmentResponseData
@@ -15,6 +16,7 @@ class ApiKeyCreateResponseData(UniversalBaseModel):
environment: typing.Optional[EnvironmentResponseData] = None
environment_id: typing.Optional[str] = None
id: str
+ integration: typing.Optional[ApiKeyIntegrationResponseData] = None
last_used_at: typing.Optional[dt.datetime] = None
name: str
readonly: bool
diff --git a/src/schematic/types/api_key_integration_response_data.py b/src/schematic/types/api_key_integration_response_data.py
new file mode 100644
index 0000000..ba0fcd5
--- /dev/null
+++ b/src/schematic/types/api_key_integration_response_data.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .integration_state import IntegrationState
+from .integration_type import IntegrationType
+
+
+class ApiKeyIntegrationResponseData(UniversalBaseModel):
+ id: str
+ state: IntegrationState
+ type: IntegrationType
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/api_key_response_data.py b/src/schematic/types/api_key_response_data.py
index 9e695b4..336483e 100644
--- a/src/schematic/types/api_key_response_data.py
+++ b/src/schematic/types/api_key_response_data.py
@@ -5,6 +5,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .api_key_integration_response_data import ApiKeyIntegrationResponseData
from .api_key_scope import ApiKeyScope
from .environment_response_data import EnvironmentResponseData
@@ -15,6 +16,7 @@ class ApiKeyResponseData(UniversalBaseModel):
environment: typing.Optional[EnvironmentResponseData] = None
environment_id: typing.Optional[str] = None
id: str
+ integration: typing.Optional[ApiKeyIntegrationResponseData] = None
last_used_at: typing.Optional[dt.datetime] = None
name: str
readonly: bool
diff --git a/src/schematic/types/audit_log_list_response_data.py b/src/schematic/types/audit_log_list_response_data.py
index 6fbedc4..e51fd09 100644
--- a/src/schematic/types/audit_log_list_response_data.py
+++ b/src/schematic/types/audit_log_list_response_data.py
@@ -6,11 +6,13 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .actor_type import ActorType
+from .api_key_response_data import ApiKeyResponseData
from .environment_response_data import EnvironmentResponseData
class AuditLogListResponseData(UniversalBaseModel):
actor_type: ActorType
+ api_key: typing.Optional[ApiKeyResponseData] = None
api_key_id: typing.Optional[str] = None
ended_at: typing.Optional[dt.datetime] = None
environment: typing.Optional[EnvironmentResponseData] = None
diff --git a/src/schematic/types/audit_log_response_data.py b/src/schematic/types/audit_log_response_data.py
index b9bf233..f1932ca 100644
--- a/src/schematic/types/audit_log_response_data.py
+++ b/src/schematic/types/audit_log_response_data.py
@@ -6,11 +6,13 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .actor_type import ActorType
+from .api_key_response_data import ApiKeyResponseData
from .environment_response_data import EnvironmentResponseData
class AuditLogResponseData(UniversalBaseModel):
actor_type: ActorType
+ api_key: typing.Optional[ApiKeyResponseData] = None
api_key_id: typing.Optional[str] = None
ended_at: typing.Optional[dt.datetime] = None
environment: typing.Optional[EnvironmentResponseData] = None
diff --git a/src/schematic/types/billing_credit_bundle_view.py b/src/schematic/types/billing_credit_bundle_view.py
index 9627de7..4554b25 100644
--- a/src/schematic/types/billing_credit_bundle_view.py
+++ b/src/schematic/types/billing_credit_bundle_view.py
@@ -20,7 +20,7 @@ class BillingCreditBundleView(UniversalBaseModel):
credit_icon: typing.Optional[str] = None
credit_id: str
credit_name: str
- currency_prices: typing.Optional[typing.List[CreditBundleCurrencyPrice]] = None
+ currency_prices: typing.List[CreditBundleCurrencyPrice]
expiry_type: BillingCreditExpiryType
expiry_unit: BillingCreditExpiryUnit
expiry_unit_count: typing.Optional[int] = None
diff --git a/src/schematic/types/billing_credit_view.py b/src/schematic/types/billing_credit_view.py
index c1be42c..b4dca66 100644
--- a/src/schematic/types/billing_credit_view.py
+++ b/src/schematic/types/billing_credit_view.py
@@ -10,6 +10,7 @@
from .billing_credit_rollover_policy import BillingCreditRolloverPolicy
from .billing_price_view import BillingPriceView
from .billing_product_response_data import BillingProductResponseData
+from .credit_currency_price import CreditCurrencyPrice
class BillingCreditView(UniversalBaseModel):
@@ -17,6 +18,7 @@ class BillingCreditView(UniversalBaseModel):
burn_strategy: BillingCreditBurnStrategy
cost_editable: bool
created_at: dt.datetime
+ currency_prices: typing.List[CreditCurrencyPrice]
default_expiry_unit: BillingCreditExpiryUnit
default_expiry_unit_count: typing.Optional[int] = None
default_rollover_policy: BillingCreditRolloverPolicy
diff --git a/src/schematic/types/billing_plan_credit_grant_response_data.py b/src/schematic/types/billing_plan_credit_grant_response_data.py
index 959a1e4..d026dda 100644
--- a/src/schematic/types/billing_plan_credit_grant_response_data.py
+++ b/src/schematic/types/billing_plan_credit_grant_response_data.py
@@ -21,6 +21,7 @@ class BillingPlanCreditGrantResponseData(UniversalBaseModel):
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = None
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
auto_topup_expiry_unit_count: typing.Optional[int] = None
+ auto_topup_self_service: bool
auto_topup_threshold_credits: typing.Optional[int] = None
auto_topup_threshold_percent: typing.Optional[int] = None
created_at: dt.datetime
diff --git a/src/schematic/types/change_subscription_internal_request_body.py b/src/schematic/types/change_subscription_internal_request_body.py
index d791bcc..37d09f0 100644
--- a/src/schematic/types/change_subscription_internal_request_body.py
+++ b/src/schematic/types/change_subscription_internal_request_body.py
@@ -5,12 +5,14 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .update_add_on_request_body import UpdateAddOnRequestBody
+from .update_auto_topup_override_request_body import UpdateAutoTopupOverrideRequestBody
from .update_credit_bundle_request_body import UpdateCreditBundleRequestBody
from .update_pay_in_advance_request_body import UpdatePayInAdvanceRequestBody
class ChangeSubscriptionInternalRequestBody(UniversalBaseModel):
add_on_ids: typing.List[UpdateAddOnRequestBody]
+ auto_topup_overrides: typing.List[UpdateAutoTopupOverrideRequestBody]
company_id: str
coupon_external_id: typing.Optional[str] = None
credit_bundles: typing.List[UpdateCreditBundleRequestBody]
diff --git a/src/schematic/types/change_subscription_request_body.py b/src/schematic/types/change_subscription_request_body.py
index 0452aba..50079f0 100644
--- a/src/schematic/types/change_subscription_request_body.py
+++ b/src/schematic/types/change_subscription_request_body.py
@@ -5,12 +5,14 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .update_add_on_request_body import UpdateAddOnRequestBody
+from .update_auto_topup_override_request_body import UpdateAutoTopupOverrideRequestBody
from .update_credit_bundle_request_body import UpdateCreditBundleRequestBody
from .update_pay_in_advance_request_body import UpdatePayInAdvanceRequestBody
class ChangeSubscriptionRequestBody(UniversalBaseModel):
add_on_ids: typing.List[UpdateAddOnRequestBody]
+ auto_topup_overrides: typing.List[UpdateAutoTopupOverrideRequestBody]
coupon_external_id: typing.Optional[str] = None
credit_bundles: typing.List[UpdateCreditBundleRequestBody]
new_plan_id: str
diff --git a/src/schematic/types/clerk_integration_config.py b/src/schematic/types/clerk_integration_config.py
new file mode 100644
index 0000000..c95fb4a
--- /dev/null
+++ b/src/schematic/types/clerk_integration_config.py
@@ -0,0 +1,27 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class ClerkIntegrationConfig(UniversalBaseModel):
+ first_events_received: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether Schematic has received the first webhook event from Clerk after install
+ """
+
+ webhook_url: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ URL configured on the Clerk webhook endpoint that delivers events to Schematic
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/company_credit_balance_response_data.py b/src/schematic/types/company_credit_balance_response_data.py
new file mode 100644
index 0000000..0abf080
--- /dev/null
+++ b/src/schematic/types/company_credit_balance_response_data.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .billing_provider_type import BillingProviderType
+
+
+class CompanyCreditBalanceResponseData(UniversalBaseModel):
+ credit_id: str
+ remaining: float
+ source: BillingProviderType
+ total: typing.Optional[float] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/company_matching_criteria.py b/src/schematic/types/company_matching_criteria.py
new file mode 100644
index 0000000..d5ce4bf
--- /dev/null
+++ b/src/schematic/types/company_matching_criteria.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+CompanyMatchingCriteria = typing.Union[typing.Literal["billing_meta_object", "manual_upsert"], typing.Any]
diff --git a/src/schematic/types/company_plan_credit_grant_view.py b/src/schematic/types/company_plan_credit_grant_view.py
new file mode 100644
index 0000000..4ca5df2
--- /dev/null
+++ b/src/schematic/types/company_plan_credit_grant_view.py
@@ -0,0 +1,78 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .billing_credit_expiry_type import BillingCreditExpiryType
+from .billing_credit_expiry_unit import BillingCreditExpiryUnit
+from .billing_credit_view import BillingCreditView
+from .billing_plan_credit_grant_reset_cadence import BillingPlanCreditGrantResetCadence
+from .billing_plan_credit_grant_reset_start import BillingPlanCreditGrantResetStart
+from .billing_plan_credit_grant_reset_type import BillingPlanCreditGrantResetType
+from .generic_preview_object import GenericPreviewObject
+
+
+class CompanyPlanCreditGrantView(UniversalBaseModel):
+ billing_credit_auto_topup_amount: typing.Optional[int] = None
+ billing_credit_auto_topup_amount_type: typing.Optional[str] = None
+ billing_credit_auto_topup_enabled: bool
+ billing_credit_auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = None
+ billing_credit_auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
+ billing_credit_auto_topup_expiry_unit_count: typing.Optional[int] = None
+ billing_credit_auto_topup_self_service: bool
+ billing_credit_auto_topup_threshold_credits: typing.Optional[int] = None
+ billing_credit_auto_topup_threshold_percent: typing.Optional[int] = None
+ company_auto_topup_amount: typing.Optional[int] = None
+ company_auto_topup_enabled: typing.Optional[bool] = None
+ company_auto_topup_threshold_credits: typing.Optional[int] = None
+ created_at: dt.datetime
+ credit: typing.Optional[BillingCreditView] = None
+ credit_amount: int
+ credit_description: str = pydantic.Field()
+ """
+ Deprecated field, will be removed in the future. Use Credit.Description instead.
+ """
+
+ credit_icon: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Deprecated field, will be removed in the future. Use Credit.Icon instead.
+ """
+
+ credit_id: str
+ credit_name: str = pydantic.Field()
+ """
+ Deprecated field, will be removed in the future. Use Credit.Name instead.
+ """
+
+ expiry_type: typing.Optional[BillingCreditExpiryType] = None
+ expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
+ expiry_unit_count: typing.Optional[int] = None
+ id: str
+ plan: typing.Optional[GenericPreviewObject] = None
+ plan_id: str
+ plan_version_id: typing.Optional[str] = None
+ plural_name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Deprecated field, will be removed in the future. Use Credit.PluralName instead.
+ """
+
+ reset_cadence: typing.Optional[BillingPlanCreditGrantResetCadence] = None
+ reset_start: typing.Optional[BillingPlanCreditGrantResetStart] = None
+ reset_type: BillingPlanCreditGrantResetType
+ singular_name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Deprecated field, will be removed in the future. Use Credit.SingularName instead.
+ """
+
+ updated_at: dt.datetime
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/company_plan_with_billing_sub_view.py b/src/schematic/types/company_plan_with_billing_sub_view.py
index e849243..a88ad12 100644
--- a/src/schematic/types/company_plan_with_billing_sub_view.py
+++ b/src/schematic/types/company_plan_with_billing_sub_view.py
@@ -5,7 +5,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
-from .plan_credit_grant_view import PlanCreditGrantView
+from .company_plan_credit_grant_view import CompanyPlanCreditGrantView
class CompanyPlanWithBillingSubView(UniversalBaseModel):
@@ -15,7 +15,7 @@ class CompanyPlanWithBillingSubView(UniversalBaseModel):
description: typing.Optional[str] = None
id: str
image_url: typing.Optional[str] = None
- included_credit_grants: typing.List[PlanCreditGrantView]
+ included_credit_grants: typing.List[CompanyPlanCreditGrantView]
name: str
plan_period: typing.Optional[str] = None
plan_price: typing.Optional[int] = None
diff --git a/src/schematic/types/create_billing_plan_credit_grant_request_body.py b/src/schematic/types/create_billing_plan_credit_grant_request_body.py
index 07257fe..400cd48 100644
--- a/src/schematic/types/create_billing_plan_credit_grant_request_body.py
+++ b/src/schematic/types/create_billing_plan_credit_grant_request_body.py
@@ -20,6 +20,7 @@ class CreateBillingPlanCreditGrantRequestBody(UniversalBaseModel):
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = None
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
auto_topup_expiry_unit_count: typing.Optional[int] = None
+ auto_topup_self_service: typing.Optional[bool] = None
auto_topup_threshold_credits: typing.Optional[int] = None
auto_topup_threshold_percent: typing.Optional[int] = None
credit_amount: int
diff --git a/src/schematic/types/create_event_request_body.py b/src/schematic/types/create_event_request_body.py
index cb1a451..0ff189b 100644
--- a/src/schematic/types/create_event_request_body.py
+++ b/src/schematic/types/create_event_request_body.py
@@ -16,6 +16,11 @@ class CreateEventRequestBody(UniversalBaseModel):
Either 'identify' or 'track'
"""
+ idempotency_key: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Optional client-supplied key. Duplicate events with the same key (scoped to the environment) are dropped for 24h.
+ """
+
sent_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
"""
Optionally provide a timestamp at which the event was sent to Schematic
diff --git a/src/schematic/types/credit_currency_price.py b/src/schematic/types/credit_currency_price.py
new file mode 100644
index 0000000..2e793b6
--- /dev/null
+++ b/src/schematic/types/credit_currency_price.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .billing_price_view import BillingPriceView
+
+
+class CreditCurrencyPrice(UniversalBaseModel):
+ currency: str
+ price: typing.Optional[BillingPriceView] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/data_event_payload.py b/src/schematic/types/data_event_payload.py
index e57d74c..0356c58 100644
--- a/src/schematic/types/data_event_payload.py
+++ b/src/schematic/types/data_event_payload.py
@@ -11,6 +11,7 @@
class DataEventPayload(UniversalBaseModel):
api_key: str
body: typing.Optional[typing.Dict[str, typing.Any]] = None
+ idempotency_key: typing.Optional[str] = None
sent_at: typing.Optional[dt.datetime] = None
type: EventType
diff --git a/src/schematic/types/duplicate_plan_entitlements_response_response_data.py b/src/schematic/types/duplicate_plan_entitlements_response_response_data.py
index 5690c0a..5a0e7a1 100644
--- a/src/schematic/types/duplicate_plan_entitlements_response_response_data.py
+++ b/src/schematic/types/duplicate_plan_entitlements_response_response_data.py
@@ -5,11 +5,13 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .plan_entitlement_response_data import PlanEntitlementResponseData
+from .plan_issue_response_data import PlanIssueResponseData
from .skipped_entitlement_response_data import SkippedEntitlementResponseData
class DuplicatePlanEntitlementsResponseResponseData(UniversalBaseModel):
data: typing.List[PlanEntitlementResponseData]
+ issues: typing.List[PlanIssueResponseData]
skipped: typing.List[SkippedEntitlementResponseData]
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/environment_feature_usage_time_series_response_data.py b/src/schematic/types/environment_feature_usage_time_series_response_data.py
new file mode 100644
index 0000000..9698360
--- /dev/null
+++ b/src/schematic/types/environment_feature_usage_time_series_response_data.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .environment_usage_point_response_data import EnvironmentUsagePointResponseData
+
+
+class EnvironmentFeatureUsageTimeSeriesResponseData(UniversalBaseModel):
+ event_subtype: str
+ feature_id: str
+ points: typing.List[EnvironmentUsagePointResponseData]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/environment_trait_usage_time_series_response_data.py b/src/schematic/types/environment_trait_usage_time_series_response_data.py
new file mode 100644
index 0000000..70b313b
--- /dev/null
+++ b/src/schematic/types/environment_trait_usage_time_series_response_data.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .environment_usage_point_response_data import EnvironmentUsagePointResponseData
+
+
+class EnvironmentTraitUsageTimeSeriesResponseData(UniversalBaseModel):
+ feature_id: str
+ points: typing.List[EnvironmentUsagePointResponseData]
+ trait_definition_id: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/environment_usage_point_response_data.py b/src/schematic/types/environment_usage_point_response_data.py
new file mode 100644
index 0000000..ec99ab2
--- /dev/null
+++ b/src/schematic/types/environment_usage_point_response_data.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class EnvironmentUsagePointResponseData(UniversalBaseModel):
+ timestamp: dt.datetime
+ usage: int
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/event_detail_response_data.py b/src/schematic/types/event_detail_response_data.py
index e33657d..fa127c0 100644
--- a/src/schematic/types/event_detail_response_data.py
+++ b/src/schematic/types/event_detail_response_data.py
@@ -5,6 +5,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .api_key_response_data import ApiKeyResponseData
from .event_status import EventStatus
from .event_type import EventType
from .preview_object import PreviewObject
@@ -12,6 +13,7 @@
class EventDetailResponseData(UniversalBaseModel):
api_key: typing.Optional[str] = None
+ api_key_view: typing.Optional[ApiKeyResponseData] = None
body: typing.Dict[str, typing.Any]
body_preview: str
captured_at: dt.datetime
@@ -23,6 +25,7 @@ class EventDetailResponseData(UniversalBaseModel):
feature_ids: typing.List[str]
features: typing.List[PreviewObject]
id: str
+ idempotency_key: typing.Optional[str] = None
loaded_at: typing.Optional[dt.datetime] = None
processed_at: typing.Optional[dt.datetime] = None
quantity: int
diff --git a/src/schematic/types/event_response_data.py b/src/schematic/types/event_response_data.py
index e0c533c..a1cd727 100644
--- a/src/schematic/types/event_response_data.py
+++ b/src/schematic/types/event_response_data.py
@@ -20,6 +20,7 @@ class EventResponseData(UniversalBaseModel):
error_message: typing.Optional[str] = None
feature_ids: typing.List[str]
id: str
+ idempotency_key: typing.Optional[str] = None
loaded_at: typing.Optional[dt.datetime] = None
processed_at: typing.Optional[dt.datetime] = None
quantity: int
diff --git a/src/schematic/types/insights_summary_response_data.py b/src/schematic/types/insights_summary_response_data.py
new file mode 100644
index 0000000..345da1f
--- /dev/null
+++ b/src/schematic/types/insights_summary_response_data.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .mrr_response_data import MrrResponseData
+
+
+class InsightsSummaryResponseData(UniversalBaseModel):
+ active_credits: float
+ mrr: typing.List[MrrResponseData]
+ paid_companies: int
+ total_companies: int
+ total_features: int
+ total_plans: int
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/integration_capabilities.py b/src/schematic/types/integration_capabilities.py
new file mode 100644
index 0000000..9bce367
--- /dev/null
+++ b/src/schematic/types/integration_capabilities.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class IntegrationCapabilities(UniversalBaseModel):
+ author_plans: bool
+ checkout: bool
+ edit_billing: bool
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/integration_config.py b/src/schematic/types/integration_config.py
new file mode 100644
index 0000000..69c8bf9
--- /dev/null
+++ b/src/schematic/types/integration_config.py
@@ -0,0 +1,64 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+import pydantic
+import typing_extensions
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class IntegrationConfig_Clerk(UniversalBaseModel):
+ type: typing.Literal["clerk"] = "clerk"
+ first_events_received: typing.Optional[bool] = None
+ webhook_url: typing.Optional[str] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+class IntegrationConfig_Orb(UniversalBaseModel):
+ type: typing.Literal["orb"] = "orb"
+ external_customer_id_key: typing.Optional[str] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+class IntegrationConfig_Stripe(UniversalBaseModel):
+ type: typing.Literal["stripe"] = "stripe"
+ account_id: typing.Optional[str] = None
+ account_name: typing.Optional[str] = None
+ company_update_only: typing.Optional[bool] = None
+ is_sandbox: bool
+ live_mode: bool
+ onboard_url: typing.Optional[str] = None
+ version: int
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+IntegrationConfig = typing_extensions.Annotated[
+ typing.Union[IntegrationConfig_Clerk, IntegrationConfig_Orb, IntegrationConfig_Stripe],
+ pydantic.Field(discriminator="type"),
+]
diff --git a/src/schematic/types/integration_response_data.py b/src/schematic/types/integration_response_data.py
new file mode 100644
index 0000000..aae8458
--- /dev/null
+++ b/src/schematic/types/integration_response_data.py
@@ -0,0 +1,26 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .integration_state import IntegrationState
+from .integration_type import IntegrationType
+
+
+class IntegrationResponseData(UniversalBaseModel):
+ created_at: dt.datetime
+ id: str
+ state: IntegrationState
+ type: IntegrationType
+ updated_at: dt.datetime
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/integration_state.py b/src/schematic/types/integration_state.py
new file mode 100644
index 0000000..46a4da2
--- /dev/null
+++ b/src/schematic/types/integration_state.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+IntegrationState = typing.Union[typing.Literal["active", "created", "pending"], typing.Any]
diff --git a/src/schematic/types/integrations_data_set_response_data.py b/src/schematic/types/integrations_data_set_response_data.py
new file mode 100644
index 0000000..ad7a520
--- /dev/null
+++ b/src/schematic/types/integrations_data_set_response_data.py
@@ -0,0 +1,19 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class IntegrationsDataSetResponseData(UniversalBaseModel):
+ keys: typing.List[str]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/integrations_list_response_data.py b/src/schematic/types/integrations_list_response_data.py
new file mode 100644
index 0000000..121ba84
--- /dev/null
+++ b/src/schematic/types/integrations_list_response_data.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .integration_capabilities import IntegrationCapabilities
+from .integration_config import IntegrationConfig
+from .integration_state import IntegrationState
+from .integration_type import IntegrationType
+
+
+class IntegrationsListResponseData(UniversalBaseModel):
+ capabilities: IntegrationCapabilities
+ config: typing.Optional[IntegrationConfig] = None
+ id: str
+ is_app_install: bool
+ is_connect_install: bool
+ state: IntegrationState
+ type: IntegrationType
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/integrations_response_data.py b/src/schematic/types/integrations_response_data.py
new file mode 100644
index 0000000..ea85a0e
--- /dev/null
+++ b/src/schematic/types/integrations_response_data.py
@@ -0,0 +1,26 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .integration_state import IntegrationState
+from .integration_type import IntegrationType
+
+
+class IntegrationsResponseData(UniversalBaseModel):
+ created_at: dt.datetime
+ id: str
+ state: IntegrationState
+ type: IntegrationType
+ updated_at: dt.datetime
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/mrr_response_data.py b/src/schematic/types/mrr_response_data.py
new file mode 100644
index 0000000..5e2743e
--- /dev/null
+++ b/src/schematic/types/mrr_response_data.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class MrrResponseData(UniversalBaseModel):
+ amount: int
+ currency: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/orb_integration_config.py b/src/schematic/types/orb_integration_config.py
new file mode 100644
index 0000000..c175846
--- /dev/null
+++ b/src/schematic/types/orb_integration_config.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class OrbIntegrationConfig(UniversalBaseModel):
+ external_customer_id_key: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Schematic company key used to store Orb's external_customer_id; when unset, defaults to orb_external_customer_id
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/plan_credit_grant_view.py b/src/schematic/types/plan_credit_grant_view.py
index 790f0a7..fe9d9a0 100644
--- a/src/schematic/types/plan_credit_grant_view.py
+++ b/src/schematic/types/plan_credit_grant_view.py
@@ -21,6 +21,7 @@ class PlanCreditGrantView(UniversalBaseModel):
billing_credit_auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = None
billing_credit_auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
billing_credit_auto_topup_expiry_unit_count: typing.Optional[int] = None
+ billing_credit_auto_topup_self_service: bool
billing_credit_auto_topup_threshold_credits: typing.Optional[int] = None
billing_credit_auto_topup_threshold_percent: typing.Optional[int] = None
created_at: dt.datetime
diff --git a/src/schematic/types/plan_growth_point_response_data.py b/src/schematic/types/plan_growth_point_response_data.py
new file mode 100644
index 0000000..bdb217b
--- /dev/null
+++ b/src/schematic/types/plan_growth_point_response_data.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class PlanGrowthPointResponseData(UniversalBaseModel):
+ month: dt.datetime
+ plan_id: str
+ plan_name: str
+ subscribers: int
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/plan_growth_response_data.py b/src/schematic/types/plan_growth_response_data.py
new file mode 100644
index 0000000..e37209e
--- /dev/null
+++ b/src/schematic/types/plan_growth_response_data.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .plan_growth_point_response_data import PlanGrowthPointResponseData
+
+
+class PlanGrowthResponseData(UniversalBaseModel):
+ points: typing.List[PlanGrowthPointResponseData]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/rules_engine_schema_version.py b/src/schematic/types/rules_engine_schema_version.py
index 8038eb4..9cca674 100644
--- a/src/schematic/types/rules_engine_schema_version.py
+++ b/src/schematic/types/rules_engine_schema_version.py
@@ -2,4 +2,4 @@
import typing
-RulesEngineSchemaVersion = typing.Union[typing.Literal["vf05bf5da", "placeholder-for-fern-compatibility"], typing.Any]
+RulesEngineSchemaVersion = typing.Union[typing.Literal["v97288f60", "placeholder-for-fern-compatibility"], typing.Any]
diff --git a/src/schematic/types/stripe_integration_config.py b/src/schematic/types/stripe_integration_config.py
new file mode 100644
index 0000000..b5268bc
--- /dev/null
+++ b/src/schematic/types/stripe_integration_config.py
@@ -0,0 +1,52 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class StripeIntegrationConfig(UniversalBaseModel):
+ account_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Connected Stripe account ID (acct_*)
+ """
+
+ account_name: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Display name of the connected Stripe account
+ """
+
+ company_update_only: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ When importing Stripe customers, only update existing companies, do not create new companies
+ """
+
+ is_sandbox: bool = pydantic.Field()
+ """
+ Whether the integration is connected to a Stripe sandbox account
+ """
+
+ live_mode: bool = pydantic.Field()
+ """
+ Whether the integration is connected to a live Stripe account
+ """
+
+ onboard_url: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Onboarding URL returned during the v2 (Connect) install flow before activation
+ """
+
+ version: int = pydantic.Field()
+ """
+ Stripe integration config version (1 = legacy API key install, 2 = Connect/App install)
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/top_feature_by_usage_response_data.py b/src/schematic/types/top_feature_by_usage_response_data.py
new file mode 100644
index 0000000..0302779
--- /dev/null
+++ b/src/schematic/types/top_feature_by_usage_response_data.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class TopFeatureByUsageResponseData(UniversalBaseModel):
+ change_pct: typing.Optional[float] = None
+ feature_id: str
+ feature_name: str
+ plural_name: typing.Optional[str] = None
+ prior_usage: int
+ usage: int
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/top_features_by_usage_response_data.py b/src/schematic/types/top_features_by_usage_response_data.py
new file mode 100644
index 0000000..08c4152
--- /dev/null
+++ b/src/schematic/types/top_features_by_usage_response_data.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+from .top_feature_by_usage_response_data import TopFeatureByUsageResponseData
+
+
+class TopFeaturesByUsageResponseData(UniversalBaseModel):
+ features: typing.List[TopFeatureByUsageResponseData]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/update_auto_topup_override_request_body.py b/src/schematic/types/update_auto_topup_override_request_body.py
new file mode 100644
index 0000000..74f4fa2
--- /dev/null
+++ b/src/schematic/types/update_auto_topup_override_request_body.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class UpdateAutoTopupOverrideRequestBody(UniversalBaseModel):
+ auto_topup_amount: typing.Optional[int] = None
+ auto_topup_enabled: typing.Optional[bool] = None
+ auto_topup_threshold_credits: typing.Optional[int] = None
+ plan_credit_grant_id: str
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/schematic/types/update_billing_plan_credit_grant_request_body.py b/src/schematic/types/update_billing_plan_credit_grant_request_body.py
index 4f83d35..0a755d4 100644
--- a/src/schematic/types/update_billing_plan_credit_grant_request_body.py
+++ b/src/schematic/types/update_billing_plan_credit_grant_request_body.py
@@ -20,6 +20,7 @@ class UpdateBillingPlanCreditGrantRequestBody(UniversalBaseModel):
auto_topup_expiry_type: typing.Optional[BillingCreditExpiryType] = None
auto_topup_expiry_unit: typing.Optional[BillingCreditExpiryUnit] = None
auto_topup_expiry_unit_count: typing.Optional[int] = None
+ auto_topup_self_service: typing.Optional[bool] = None
auto_topup_threshold_credits: typing.Optional[int] = None
auto_topup_threshold_percent: typing.Optional[int] = None
credit_amount: typing.Optional[int] = None
From e01c09d004bdd597ba3fffd9139c3bd7659c1dc2 Mon Sep 17 00:00:00 2001
From: Ben Papillon
Date: Tue, 12 May 2026 15:57:44 -0700
Subject: [PATCH 2/2] fix: regenerate poetry.lock to match pyproject.toml
The regenerated SDK rewrote poetry.lock without the optional
[datastream] and [rulesengine] extras (websockets, wasmtime)
or dev dependencies (aiohttp, redis, etc.), so `poetry install
--extras datastream` fails in CI with "Extra [datastream] is not
specified." Re-locked with `poetry lock --no-update` to restore
the full dependency graph without version changes.
---
poetry.lock | 967 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 965 insertions(+), 2 deletions(-)
diff --git a/poetry.lock b/poetry.lock
index 936150b..06a44c1 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,172 @@
-# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
+
+[[package]]
+name = "aiohappyeyeballs"
+version = "2.6.1"
+description = "Happy Eyeballs for asyncio"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"},
+ {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"},
+]
+
+[[package]]
+name = "aiohttp"
+version = "3.13.5"
+description = "Async http client/server framework (asyncio)"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02222e7e233295f40e011c1b00e3b0bd451f22cf853a0304c3595633ee47da4b"},
+ {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bace460460ed20614fa6bc8cb09966c0b8517b8c58ad8046828c6078d25333b5"},
+ {file = "aiohttp-3.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f546a4dc1e6a5edbb9fd1fd6ad18134550e096a5a43f4ad74acfbd834fc6670"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c86969d012e51b8e415a8c6ce96f7857d6a87d6207303ab02d5d11ef0cad2274"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b6f6cd1560c5fa427e3b6074bb24d2c64e225afbb7165008903bd42e4e33e28a"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:636bc362f0c5bbc7372bc3ae49737f9e3030dbce469f0f422c8f38079780363d"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a7cbeb06d1070f1d14895eeeed4dac5913b22d7b456f2eb969f11f4b3993796"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca9ef7517fd7874a1a08970ae88f497bf5c984610caa0bf40bd7e8450852b95"},
+ {file = "aiohttp-3.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:019a67772e034a0e6b9b17c13d0a8fe56ad9fb150fc724b7f3ffd3724288d9e5"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f34ecee82858e41dd217734f0c41a532bd066bcaab636ad830f03a30b2a96f2a"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4eac02d9af4813ee289cd63a361576da36dba57f5a1ab36377bc2600db0cbb73"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4beac52e9fe46d6abf98b0176a88154b742e878fdf209d2248e99fcdf73cd297"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c180f480207a9b2475f2b8d8bd7204e47aec952d084b2a2be58a782ffcf96074"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2837fb92951564d6339cedae4a7231692aa9f73cbc4fb2e04263b96844e03b4e"},
+ {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9010032a0b9710f58012a1e9c222528763d860ba2ee1422c03473eab47703e7"},
+ {file = "aiohttp-3.13.5-cp310-cp310-win32.whl", hash = "sha256:7c4b6668b2b2b9027f209ddf647f2a4407784b5d88b8be4efcc72036f365baf9"},
+ {file = "aiohttp-3.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:cd3db5927bf9167d5a6157ddb2f036f6b6b0ad001ac82355d43e97a4bde76d76"},
+ {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6"},
+ {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d"},
+ {file = "aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc"},
+ {file = "aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac"},
+ {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3"},
+ {file = "aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06"},
+ {file = "aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8"},
+ {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9"},
+ {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416"},
+ {file = "aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1"},
+ {file = "aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe"},
+ {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14"},
+ {file = "aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3"},
+ {file = "aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1"},
+ {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5029cc80718bbd545123cd8fe5d15025eccaaaace5d0eeec6bd556ad6163d61"},
+ {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4bb6bf5811620003614076bdc807ef3b5e38244f9d25ca5fe888eaccea2a9832"},
+ {file = "aiohttp-3.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a84792f8631bf5a94e52d9cc881c0b824ab42717165a5579c760b830d9392ac9"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:57653eac22c6a4c13eb22ecf4d673d64a12f266e72785ab1c8b8e5940d0e8090"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5e5f7debc7a57af53fdf5c5009f9391d9f4c12867049d509bf7bb164a6e295b"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c719f65bebcdf6716f10e9eff80d27567f7892d8988c06de12bbbd39307c6e3a"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d97f93fdae594d886c5a866636397e2bcab146fd7a132fd6bb9ce182224452f8"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3df334e39d4c2f899a914f1dba283c1aadc311790733f705182998c6f7cae665"},
+ {file = "aiohttp-3.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe6970addfea9e5e081401bcbadf865d2b6da045472f58af08427e108d618540"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7becdf835feff2f4f335d7477f121af787e3504b48b449ff737afb35869ba7bb"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:676e5651705ad5d8a70aeb8eb6936c436d8ebbd56e63436cb7dd9bb36d2a9a46"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9b16c653d38eb1a611cc898c41e76859ca27f119d25b53c12875fd0474ae31a8"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:999802d5fa0389f58decd24b537c54aa63c01c3219ce17d1214cbda3c2b22d2d"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ec707059ee75732b1ba130ed5f9580fe10ff75180c812bc267ded039db5128c6"},
+ {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d6d44a5b48132053c2f6cd5c8cb14bc67e99a63594e336b0f2af81e94d5530c"},
+ {file = "aiohttp-3.13.5-cp313-cp313-win32.whl", hash = "sha256:329f292ed14d38a6c4c435e465f48bebb47479fd676a0411936cc371643225cc"},
+ {file = "aiohttp-3.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:69f571de7500e0557801c0b51f4780482c0ec5fe2ac851af5a92cfce1af1cb83"},
+ {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:eb4639f32fd4a9904ab8fb45bf3383ba71137f3d9d4ba25b3b3f3109977c5b8c"},
+ {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:7e5dc4311bd5ac493886c63cbf76ab579dbe4641268e7c74e48e774c74b6f2be"},
+ {file = "aiohttp-3.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:756c3c304d394977519824449600adaf2be0ccee76d206ee339c5e76b70ded25"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecc26751323224cf8186efcf7fbcbc30f4e1d8c7970659daf25ad995e4032a56"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10a75acfcf794edf9d8db50e5a7ec5fc818b2a8d3f591ce93bc7b1210df016d2"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f7a18f258d124cd678c5fe072fe4432a4d5232b0657fca7c1847f599233c83a"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:df6104c009713d3a89621096f3e3e88cc323fd269dbd7c20afe18535094320be"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:241a94f7de7c0c3b616627aaad530fe2cb620084a8b144d3be7b6ecfe95bae3b"},
+ {file = "aiohttp-3.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c974fb66180e58709b6fc402846f13791240d180b74de81d23913abe48e96d94"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6e27ea05d184afac78aabbac667450c75e54e35f62238d44463131bd3f96753d"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a79a6d399cef33a11b6f004c67bb07741d91f2be01b8d712d52c75711b1e07c7"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c632ce9c0b534fbe25b52c974515ed674937c5b99f549a92127c85f771a78772"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fceedde51fbd67ee2bcc8c0b33d0126cc8b51ef3bbde2f86662bd6d5a6f10ec5"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f92995dfec9420bb69ae629abf422e516923ba79ba4403bc750d94fb4a6c68c1"},
+ {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20ae0ff08b1f2c8788d6fb85afcb798654ae6ba0b747575f8562de738078457b"},
+ {file = "aiohttp-3.13.5-cp314-cp314-win32.whl", hash = "sha256:b20df693de16f42b2472a9c485e1c948ee55524786a0a34345511afdd22246f3"},
+ {file = "aiohttp-3.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:f85c6f327bf0b8c29da7d93b1cabb6363fb5e4e160a32fa241ed2dce21b73162"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1efb06900858bb618ff5cee184ae2de5828896c448403d51fb633f09e109be0a"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fee86b7c4bd29bdaf0d53d14739b08a106fdda809ca5fe032a15f52fae5fe254"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:20058e23909b9e65f9da62b396b77dfa95965cbe840f8def6e572538b1d32e36"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cf20a8d6868cb15a73cab329ffc07291ba8c22b1b88176026106ae39aa6df0f"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:330f5da04c987f1d5bdb8ae189137c77139f36bd1cb23779ca1a354a4b027800"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f1cbf0c7926d315c3c26c2da41fd2b5d2fe01ac0e157b78caefc51a782196cf"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:53fc049ed6390d05423ba33103ded7281fe897cf97878f369a527070bd95795b"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:898703aa2667e3c5ca4c54ca36cd73f58b7a38ef87a5606414799ebce4d3fd3a"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0494a01ca9584eea1e5fbd6d748e61ecff218c51b576ee1999c23db7066417d8"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6cf81fe010b8c17b09495cbd15c1d35afbc8fb405c0c9cf4738e5ae3af1d65be"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c564dd5f09ddc9d8f2c2d0a301cd30a79a2cc1b46dd1a73bef8f0038863d016b"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2994be9f6e51046c4f864598fd9abeb4fba6e88f0b2152422c9666dcd4aea9c6"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:157826e2fa245d2ef46c83ea8a5faf77ca19355d278d425c29fda0beb3318037"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a8aca50daa9493e9e13c0f566201a9006f080e7c50e5e90d0b06f53146a54500"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3b13560160d07e047a93f23aaa30718606493036253d5430887514715b67c9d9"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-win32.whl", hash = "sha256:9a0f4474b6ea6818b41f82172d799e4b3d29e22c2c520ce4357856fced9af2f8"},
+ {file = "aiohttp-3.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:18a2f6c1182c51baa1d28d68fea51513cb2a76612f038853c0ad3c145423d3d9"},
+ {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:347542f0ea3f95b2a955ee6656461fa1c776e401ac50ebce055a6c38454a0adf"},
+ {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:178c7b5e62b454c2bc790786e6058c3cc968613b4419251b478c153a4aec32b1"},
+ {file = "aiohttp-3.13.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af545c2cffdb0967a96b6249e6f5f7b0d92cdfd267f9d5238d5b9ca63e8edb10"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:206b7b3ef96e4ce211754f0cd003feb28b7d81f0ad26b8d077a5d5161436067f"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ee5e86776273de1795947d17bddd6bb19e0365fd2af4289c0d2c5454b6b1d36b"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95d14ca7abefde230f7639ec136ade282655431fd5db03c343b19dda72dd1643"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:912d4b6af530ddb1338a66229dac3a25ff11d4448be3ec3d6340583995f56031"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e999f0c88a458c836d5fb521814e92ed2172c649200336a6df514987c1488258"},
+ {file = "aiohttp-3.13.5-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39380e12bd1f2fdab4285b6e055ad48efbaed5c836433b142ed4f5b9be71036a"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9efcc0f11d850cefcafdd9275b9576ad3bfb539bed96807663b32ad99c4d4b88"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:147b4f501d0292077f29d5268c16bb7c864a1f054d7001c4c1812c0421ea1ed0"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d147004fede1b12f6013a6dbb2a26a986a671a03c6ea740ddc76500e5f1c399f"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:9277145d36a01653863899c665243871434694bcc3431922c3b35c978061bdb8"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4e704c52438f66fdd89588346183d898bb42167cf88f8b7ff1c0f9fc957c348f"},
+ {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a8a4d3427e8de1312ddf309cc482186466c79895b3a139fed3259fc01dfa9a5b"},
+ {file = "aiohttp-3.13.5-cp39-cp39-win32.whl", hash = "sha256:6f497a6876aa4b1a102b04996ce4c1170c7040d83faa9387dd921c16e30d5c83"},
+ {file = "aiohttp-3.13.5-cp39-cp39-win_amd64.whl", hash = "sha256:cb979826071c0986a5f08333a36104153478ce6018c58cba7f9caddaf63d5d67"},
+ {file = "aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1"},
+]
+
+[package.dependencies]
+aiohappyeyeballs = ">=2.5.0"
+aiosignal = ">=1.4.0"
+async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""}
+attrs = ">=17.3.0"
+frozenlist = ">=1.1.1"
+multidict = ">=4.5,<7.0"
+propcache = ">=0.2.0"
+yarl = ">=1.17.0,<2.0"
+
+[package.extras]
+speedups = ["Brotli (>=1.2)", "aiodns (>=3.3.0)", "backports.zstd", "brotlicffi (>=1.2)"]
+
+[[package]]
+name = "aiosignal"
+version = "1.4.0"
+description = "aiosignal: a list of registered asynchronous callbacks"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e"},
+ {file = "aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7"},
+]
+
+[package.dependencies]
+frozenlist = ">=1.1.0"
+typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""}
[[package]]
name = "annotated-types"
@@ -36,6 +204,28 @@ doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)",
test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"]
trio = ["trio (>=0.26.1)"]
+[[package]]
+name = "async-timeout"
+version = "5.0.1"
+description = "Timeout context manager for asyncio programs"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"},
+ {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"},
+]
+
+[[package]]
+name = "attrs"
+version = "26.1.0"
+description = "Classes Without Boilerplate"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"},
+ {file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"},
+]
+
[[package]]
name = "certifi"
version = "2026.4.22"
@@ -89,6 +279,145 @@ files = [
[package.extras]
testing = ["hatch", "pre-commit", "pytest", "tox"]
+[[package]]
+name = "frozenlist"
+version = "1.8.0"
+description = "A list-like structure which implements collections.abc.MutableSequence"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011"},
+ {file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565"},
+ {file = "frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a88f062f072d1589b7b46e951698950e7da00442fc1cacbe17e19e025dc327ad"},
+ {file = "frozenlist-1.8.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:f57fb59d9f385710aa7060e89410aeb5058b99e62f4d16b08b91986b9a2140c2"},
+ {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:799345ab092bee59f01a915620b5d014698547afd011e691a208637312db9186"},
+ {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c23c3ff005322a6e16f71bf8692fcf4d5a304aaafe1e262c98c6d4adc7be863e"},
+ {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8a76ea0f0b9dfa06f254ee06053d93a600865b3274358ca48a352ce4f0798450"},
+ {file = "frozenlist-1.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c7366fe1418a6133d5aa824ee53d406550110984de7637d65a178010f759c6ef"},
+ {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:13d23a45c4cebade99340c4165bd90eeb4a56c6d8a9d8aa49568cac19a6d0dc4"},
+ {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:e4a3408834f65da56c83528fb52ce7911484f0d1eaf7b761fc66001db1646eff"},
+ {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:42145cd2748ca39f32801dad54aeea10039da6f86e303659db90db1c4b614c8c"},
+ {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e2de870d16a7a53901e41b64ffdf26f2fbb8917b3e6ebf398098d72c5b20bd7f"},
+ {file = "frozenlist-1.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:20e63c9493d33ee48536600d1a5c95eefc870cd71e7ab037763d1fbb89cc51e7"},
+ {file = "frozenlist-1.8.0-cp310-cp310-win32.whl", hash = "sha256:adbeebaebae3526afc3c96fad434367cafbfd1b25d72369a9e5858453b1bb71a"},
+ {file = "frozenlist-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:667c3777ca571e5dbeb76f331562ff98b957431df140b54c85fd4d52eea8d8f6"},
+ {file = "frozenlist-1.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:80f85f0a7cc86e7a54c46d99c9e1318ff01f4687c172ede30fd52d19d1da1c8e"},
+ {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:09474e9831bc2b2199fad6da3c14c7b0fbdd377cce9d3d77131be28906cb7d84"},
+ {file = "frozenlist-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17c883ab0ab67200b5f964d2b9ed6b00971917d5d8a92df149dc2c9779208ee9"},
+ {file = "frozenlist-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fa47e444b8ba08fffd1c18e8cdb9a75db1b6a27f17507522834ad13ed5922b93"},
+ {file = "frozenlist-1.8.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2552f44204b744fba866e573be4c1f9048d6a324dfe14475103fd51613eb1d1f"},
+ {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:957e7c38f250991e48a9a73e6423db1bb9dd14e722a10f6b8bb8e16a0f55f695"},
+ {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8585e3bb2cdea02fc88ffa245069c36555557ad3609e83be0ec71f54fd4abb52"},
+ {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:edee74874ce20a373d62dc28b0b18b93f645633c2943fd90ee9d898550770581"},
+ {file = "frozenlist-1.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:c9a63152fe95756b85f31186bddf42e4c02c6321207fd6601a1c89ebac4fe567"},
+ {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b6db2185db9be0a04fecf2f241c70b63b1a242e2805be291855078f2b404dd6b"},
+ {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:f4be2e3d8bc8aabd566f8d5b8ba7ecc09249d74ba3c9ed52e54dc23a293f0b92"},
+ {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:c8d1634419f39ea6f5c427ea2f90ca85126b54b50837f31497f3bf38266e853d"},
+ {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a7fa382a4a223773ed64242dbe1c9c326ec09457e6b8428efb4118c685c3dfd"},
+ {file = "frozenlist-1.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:11847b53d722050808926e785df837353bd4d75f1d494377e59b23594d834967"},
+ {file = "frozenlist-1.8.0-cp311-cp311-win32.whl", hash = "sha256:27c6e8077956cf73eadd514be8fb04d77fc946a7fe9f7fe167648b0b9085cc25"},
+ {file = "frozenlist-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:ac913f8403b36a2c8610bbfd25b8013488533e71e62b4b4adce9c86c8cea905b"},
+ {file = "frozenlist-1.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:d4d3214a0f8394edfa3e303136d0575eece0745ff2b47bd2cb2e66dd92d4351a"},
+ {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:78f7b9e5d6f2fdb88cdde9440dc147259b62b9d3b019924def9f6478be254ac1"},
+ {file = "frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b"},
+ {file = "frozenlist-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f833670942247a14eafbb675458b4e61c82e002a148f49e68257b79296e865c4"},
+ {file = "frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383"},
+ {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96f423a119f4777a4a056b66ce11527366a8bb92f54e541ade21f2374433f6d4"},
+ {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3462dd9475af2025c31cc61be6652dfa25cbfb56cbbf52f4ccfe029f38decaf8"},
+ {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4c800524c9cd9bac5166cd6f55285957fcfc907db323e193f2afcd4d9abd69b"},
+ {file = "frozenlist-1.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d6a5df73acd3399d893dafc71663ad22534b5aa4f94e8a2fabfe856c3c1b6a52"},
+ {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:405e8fe955c2280ce66428b3ca55e12b3c4e9c336fb2103a4937e891c69a4a29"},
+ {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:908bd3f6439f2fef9e85031b59fd4f1297af54415fb60e4254a95f75b3cab3f3"},
+ {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:294e487f9ec720bd8ffcebc99d575f7eff3568a08a253d1ee1a0378754b74143"},
+ {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:74c51543498289c0c43656701be6b077f4b265868fa7f8a8859c197006efb608"},
+ {file = "frozenlist-1.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:776f352e8329135506a1d6bf16ac3f87bc25b28e765949282dcc627af36123aa"},
+ {file = "frozenlist-1.8.0-cp312-cp312-win32.whl", hash = "sha256:433403ae80709741ce34038da08511d4a77062aa924baf411ef73d1146e74faf"},
+ {file = "frozenlist-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:34187385b08f866104f0c0617404c8eb08165ab1272e884abc89c112e9c00746"},
+ {file = "frozenlist-1.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:fe3c58d2f5db5fbd18c2987cba06d51b0529f52bc3a6cdc33d3f4eab725104bd"},
+ {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8d92f1a84bb12d9e56f818b3a746f3efba93c1b63c8387a73dde655e1e42282a"},
+ {file = "frozenlist-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96153e77a591c8adc2ee805756c61f59fef4cf4073a9275ee86fe8cba41241f7"},
+ {file = "frozenlist-1.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f21f00a91358803399890ab167098c131ec2ddd5f8f5fd5fe9c9f2c6fcd91e40"},
+ {file = "frozenlist-1.8.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fb30f9626572a76dfe4293c7194a09fb1fe93ba94c7d4f720dfae3b646b45027"},
+ {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eaa352d7047a31d87dafcacbabe89df0aa506abb5b1b85a2fb91bc3faa02d822"},
+ {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:03ae967b4e297f58f8c774c7eabcce57fe3c2434817d4385c50661845a058121"},
+ {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6292f1de555ffcc675941d65fffffb0a5bcd992905015f85d0592201793e0e5"},
+ {file = "frozenlist-1.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29548f9b5b5e3460ce7378144c3010363d8035cea44bc0bf02d57f5a685e084e"},
+ {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ec3cc8c5d4084591b4237c0a272cc4f50a5b03396a47d9caaf76f5d7b38a4f11"},
+ {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:517279f58009d0b1f2e7c1b130b377a349405da3f7621ed6bfae50b10adf20c1"},
+ {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:db1e72ede2d0d7ccb213f218df6a078a9c09a7de257c2fe8fcef16d5925230b1"},
+ {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b4dec9482a65c54a5044486847b8a66bf10c9cb4926d42927ec4e8fd5db7fed8"},
+ {file = "frozenlist-1.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21900c48ae04d13d416f0e1e0c4d81f7931f73a9dfa0b7a8746fb2fe7dd970ed"},
+ {file = "frozenlist-1.8.0-cp313-cp313-win32.whl", hash = "sha256:8b7b94a067d1c504ee0b16def57ad5738701e4ba10cec90529f13fa03c833496"},
+ {file = "frozenlist-1.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:878be833caa6a3821caf85eb39c5ba92d28e85df26d57afb06b35b2efd937231"},
+ {file = "frozenlist-1.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:44389d135b3ff43ba8cc89ff7f51f5a0bb6b63d829c8300f79a2fe4fe61bcc62"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e25ac20a2ef37e91c1b39938b591457666a0fa835c7783c3a8f33ea42870db94"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07cdca25a91a4386d2e76ad992916a85038a9b97561bf7a3fd12d5d9ce31870c"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:4e0c11f2cc6717e0a741f84a527c52616140741cd812a50422f83dc31749fb52"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3210649ee28062ea6099cfda39e147fa1bc039583c8ee4481cb7811e2448c51"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:581ef5194c48035a7de2aefc72ac6539823bb71508189e5de01d60c9dcd5fa65"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3ef2d026f16a2b1866e1d86fc4e1291e1ed8a387b2c333809419a2f8b3a77b82"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5500ef82073f599ac84d888e3a8c1f77ac831183244bfd7f11eaa0289fb30714"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:50066c3997d0091c411a66e710f4e11752251e6d2d73d70d8d5d4c76442a199d"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5c1c8e78426e59b3f8005e9b19f6ff46e5845895adbde20ece9218319eca6506"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:eefdba20de0d938cec6a89bd4d70f346a03108a19b9df4248d3cf0d88f1b0f51"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:cf253e0e1c3ceb4aaff6df637ce033ff6535fb8c70a764a8f46aafd3d6ab798e"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:032efa2674356903cd0261c4317a561a6850f3ac864a63fc1583147fb05a79b0"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6da155091429aeba16851ecb10a9104a108bcd32f6c1642867eadaee401c1c41"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-win32.whl", hash = "sha256:0f96534f8bfebc1a394209427d0f8a63d343c9779cda6fc25e8e121b5fd8555b"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5d63a068f978fc69421fb0e6eb91a9603187527c86b7cd3f534a5b77a592b888"},
+ {file = "frozenlist-1.8.0-cp313-cp313t-win_arm64.whl", hash = "sha256:bf0a7e10b077bf5fb9380ad3ae8ce20ef919a6ad93b4552896419ac7e1d8e042"},
+ {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cee686f1f4cadeb2136007ddedd0aaf928ab95216e7691c63e50a8ec066336d0"},
+ {file = "frozenlist-1.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:119fb2a1bd47307e899c2fac7f28e85b9a543864df47aa7ec9d3c1b4545f096f"},
+ {file = "frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c"},
+ {file = "frozenlist-1.8.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:cba69cb73723c3f329622e34bdbf5ce1f80c21c290ff04256cff1cd3c2036ed2"},
+ {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:778a11b15673f6f1df23d9586f83c4846c471a8af693a22e066508b77d201ec8"},
+ {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0325024fe97f94c41c08872db482cf8ac4800d80e79222c6b0b7b162d5b13686"},
+ {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:97260ff46b207a82a7567b581ab4190bd4dfa09f4db8a8b49d1a958f6aa4940e"},
+ {file = "frozenlist-1.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:54b2077180eb7f83dd52c40b2750d0a9f175e06a42e3213ce047219de902717a"},
+ {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:2f05983daecab868a31e1da44462873306d3cbfd76d1f0b5b69c473d21dbb128"},
+ {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:33f48f51a446114bc5d251fb2954ab0164d5be02ad3382abcbfe07e2531d650f"},
+ {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:154e55ec0655291b5dd1b8731c637ecdb50975a2ae70c606d100750a540082f7"},
+ {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:4314debad13beb564b708b4a496020e5306c7333fa9a3ab90374169a20ffab30"},
+ {file = "frozenlist-1.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:073f8bf8becba60aa931eb3bc420b217bb7d5b8f4750e6f8b3be7f3da85d38b7"},
+ {file = "frozenlist-1.8.0-cp314-cp314-win32.whl", hash = "sha256:bac9c42ba2ac65ddc115d930c78d24ab8d4f465fd3fc473cdedfccadb9429806"},
+ {file = "frozenlist-1.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e0761f4d1a44f1d1a47996511752cf3dcec5bbdd9cc2b4fe595caf97754b7a0"},
+ {file = "frozenlist-1.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:d1eaff1d00c7751b7c6662e9c5ba6eb2c17a2306ba5e2a37f24ddf3cc953402b"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:d3bb933317c52d7ea5004a1c442eef86f426886fba134ef8cf4226ea6ee1821d"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:8009897cdef112072f93a0efdce29cd819e717fd2f649ee3016efd3cd885a7ed"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c5dcbbc55383e5883246d11fd179782a9d07a986c40f49abe89ddf865913930"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:39ecbc32f1390387d2aa4f5a995e465e9e2f79ba3adcac92d68e3e0afae6657c"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:92db2bf818d5cc8d9c1f1fc56b897662e24ea5adb36ad1f1d82875bd64e03c24"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dc43a022e555de94c3b68a4ef0b11c4f747d12c024a520c7101709a2144fb37"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:cb89a7f2de3602cfed448095bab3f178399646ab7c61454315089787df07733a"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:33139dc858c580ea50e7e60a1b0ea003efa1fd42e6ec7fdbad78fff65fad2fd2"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:168c0969a329b416119507ba30b9ea13688fafffac1b7822802537569a1cb0ef"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:28bd570e8e189d7f7b001966435f9dac6718324b5be2990ac496cf1ea9ddb7fe"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b2a095d45c5d46e5e79ba1e5b9cb787f541a8dee0433836cea4b96a2c439dcd8"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:eab8145831a0d56ec9c4139b6c3e594c7a83c2c8be25d5bcf2d86136a532287a"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:974b28cf63cc99dfb2188d8d222bc6843656188164848c4f679e63dae4b0708e"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-win32.whl", hash = "sha256:342c97bf697ac5480c0a7ec73cd700ecfa5a8a40ac923bd035484616efecc2df"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:06be8f67f39c8b1dc671f5d83aaefd3358ae5cdcf8314552c57e7ed3e6475bdd"},
+ {file = "frozenlist-1.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:102e6314ca4da683dca92e3b1355490fed5f313b768500084fbe6371fddfdb79"},
+ {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d8b7138e5cd0647e4523d6685b0eac5d4be9a184ae9634492f25c6eb38c12a47"},
+ {file = "frozenlist-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a6483e309ca809f1efd154b4d37dc6d9f61037d6c6a81c2dc7a15cb22c8c5dca"},
+ {file = "frozenlist-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1b9290cf81e95e93fdf90548ce9d3c1211cf574b8e3f4b3b7cb0537cf2227068"},
+ {file = "frozenlist-1.8.0-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:59a6a5876ca59d1b63af8cd5e7ffffb024c3dc1e9cf9301b21a2e76286505c95"},
+ {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6dc4126390929823e2d2d9dc79ab4046ed74680360fc5f38b585c12c66cdf459"},
+ {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:332db6b2563333c5671fecacd085141b5800cb866be16d5e3eb15a2086476675"},
+ {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9ff15928d62a0b80bb875655c39bf517938c7d589554cbd2669be42d97c2cb61"},
+ {file = "frozenlist-1.8.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7bf6cdf8e07c8151fba6fe85735441240ec7f619f935a5205953d58009aef8c6"},
+ {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:48e6d3f4ec5c7273dfe83ff27c91083c6c9065af655dc2684d2c200c94308bb5"},
+ {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:1a7607e17ad33361677adcd1443edf6f5da0ce5e5377b798fba20fae194825f3"},
+ {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3a935c3a4e89c733303a2d5a7c257ea44af3a56c8202df486b7f5de40f37e1"},
+ {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:940d4a017dbfed9daf46a3b086e1d2167e7012ee297fef9e1c545c4d022f5178"},
+ {file = "frozenlist-1.8.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b9be22a69a014bc47e78072d0ecae716f5eb56c15238acca0f43d6eb8e4a5bda"},
+ {file = "frozenlist-1.8.0-cp39-cp39-win32.whl", hash = "sha256:1aa77cb5697069af47472e39612976ed05343ff2e84a3dcf15437b232cbfd087"},
+ {file = "frozenlist-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:7398c222d1d405e796970320036b1b563892b65809d9e5261487bb2c7f7b5c6a"},
+ {file = "frozenlist-1.8.0-cp39-cp39-win_arm64.whl", hash = "sha256:b4f3b365f31c6cd4af24545ca0a244a53688cad8834e32f56831c4923b50a103"},
+ {file = "frozenlist-1.8.0-py3-none-any.whl", hash = "sha256:0c18a16eab41e82c295618a77502e17b195883241c563b00f0aa5106fc4eaa0d"},
+ {file = "frozenlist-1.8.0.tar.gz", hash = "sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad"},
+]
+
[[package]]
name = "h11"
version = "0.16.0"
@@ -159,6 +488,28 @@ files = [
[package.extras]
all = ["mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+[[package]]
+name = "importlib-resources"
+version = "6.4.5"
+description = "Read resources from Python packages"
+optional = true
+python-versions = ">=3.8"
+files = [
+ {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"},
+ {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"},
+]
+
+[package.dependencies]
+zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
+
+[package.extras]
+check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
+cover = ["pytest-cov"]
+doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+enabler = ["pytest-enabler (>=2.2)"]
+test = ["jaraco.test (>=5.4)", "pytest (>=6,!=8.1.*)", "zipp (>=3.17)"]
+type = ["pytest-mypy"]
+
[[package]]
name = "iniconfig"
version = "2.1.0"
@@ -170,6 +521,164 @@ files = [
{file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"},
]
+[[package]]
+name = "multidict"
+version = "6.7.1"
+description = "multidict implementation"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5"},
+ {file = "multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8"},
+ {file = "multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cdea2e7b2456cfb6694fb113066fd0ec7ea4d67e3a35e1f4cbeea0b448bf5872"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17207077e29342fdc2c9a82e4b306f1127bf1ea91f8b71e02d4798a70bb99991"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d4f49cb5661344764e4c7c7973e92a47a59b8fc19b6523649ec9dc4960e58a03"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:a9fc4caa29e2e6ae408d1c450ac8bf19892c5fca83ee634ecd88a53332c59981"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c5f0c21549ab432b57dcc82130f388d84ad8179824cc3f223d5e7cfbfd4143f6"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7dfb78d966b2c906ae1d28ccf6e6712a3cd04407ee5088cd276fe8cb42186190"},
+ {file = "multidict-6.7.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9b0d9b91d1aa44db9c1f1ecd0d9d2ae610b2f4f856448664e01a3b35899f3f92"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dd96c01a9dcd4889dcfcf9eb5544ca0c77603f239e3ffab0524ec17aea9a93ee"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:067343c68cd6612d375710f895337b3a98a033c94f14b9a99eff902f205424e2"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5884a04f4ff56c6120f6ccf703bdeb8b5079d808ba604d4d53aec0d55dc33568"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:8affcf1c98b82bc901702eb73b6947a1bfa170823c153fe8a47b5f5f02e48e40"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0d17522c37d03e85c8098ec8431636309b2682cf12e58f4dbc76121fb50e4962"},
+ {file = "multidict-6.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24c0cf81544ca5e17cfcb6e482e7a82cd475925242b308b890c9452a074d4505"},
+ {file = "multidict-6.7.1-cp310-cp310-win32.whl", hash = "sha256:d82dd730a95e6643802f4454b8fdecdf08667881a9c5670db85bc5a56693f122"},
+ {file = "multidict-6.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:cf37cbe5ced48d417ba045aca1b21bafca67489452debcde94778a576666a1df"},
+ {file = "multidict-6.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:59bc83d3f66b41dac1e7460aac1d196edc70c9ba3094965c467715a70ecb46db"},
+ {file = "multidict-6.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ff981b266af91d7b4b3793ca3382e53229088d193a85dfad6f5f4c27fc73e5d"},
+ {file = "multidict-6.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:844c5bca0b5444adb44a623fb0a1310c2f4cd41f402126bb269cd44c9b3f3e1e"},
+ {file = "multidict-6.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f2a0a924d4c2e9afcd7ec64f9de35fcd96915149b2216e1cb2c10a56df483855"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8be1802715a8e892c784c0197c2ace276ea52702a0ede98b6310c8f255a5afb3"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2d2ed645ea29f31c4c7ea1552fcfd7cb7ba656e1eafd4134a6620c9f5fdd9e"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:95922cee9a778659e91db6497596435777bd25ed116701a4c034f8e46544955a"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6b83cabdc375ffaaa15edd97eb7c0c672ad788e2687004990074d7d6c9b140c8"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38fb49540705369bab8484db0689d86c0a33a0a9f2c1b197f506b71b4b6c19b0"},
+ {file = "multidict-6.7.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:439cbebd499f92e9aa6793016a8acaa161dfa749ae86d20960189f5398a19144"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d3bc717b6fe763b8be3f2bee2701d3c8eb1b2a8ae9f60910f1b2860c82b6c49"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:619e5a1ac57986dbfec9f0b301d865dddf763696435e2962f6d9cf2fdff2bb71"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0b38ebffd9be37c1170d33bc0f36f4f262e0a09bc1aac1c34c7aa51a7293f0b3"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:10ae39c9cfe6adedcdb764f5e8411d4a92b055e35573a2eaa88d3323289ef93c"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:25167cc263257660290fba06b9318d2026e3c910be240a146e1f66dd114af2b0"},
+ {file = "multidict-6.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:128441d052254f42989ef98b7b6a6ecb1e6f708aa962c7984235316db59f50fa"},
+ {file = "multidict-6.7.1-cp311-cp311-win32.whl", hash = "sha256:d62b7f64ffde3b99d06b707a280db04fb3855b55f5a06df387236051d0668f4a"},
+ {file = "multidict-6.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bdbf9f3b332abd0cdb306e7c2113818ab1e922dc84b8f8fd06ec89ed2a19ab8b"},
+ {file = "multidict-6.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:b8c990b037d2fff2f4e33d3f21b9b531c5745b33a49a7d6dbe7a177266af44f6"},
+ {file = "multidict-6.7.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a90f75c956e32891a4eda3639ce6dd86e87105271f43d43442a3aedf3cddf172"},
+ {file = "multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd"},
+ {file = "multidict-6.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b0fa96985700739c4c7853a43c0b3e169360d6855780021bfc6d0f1ce7c123e7"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cb2a55f408c3043e42b40cc8eecd575afa27b7e0b956dfb190de0f8499a57a53"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb0ce7b2a32d09892b3dd6cc44877a0d02a33241fafca5f25c8b6b62374f8b75"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c3a32d23520ee37bf327d1e1a656fec76a2edd5c038bf43eddfa0572ec49c60b"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9c90fed18bffc0189ba814749fdcc102b536e83a9f738a9003e569acd540a733"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:da62917e6076f512daccfbbde27f46fed1c98fee202f0559adec8ee0de67f71a"},
+ {file = "multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3758692429e4e32f1ba0df23219cd0b4fc0a52f476726fff9337d1a57676a582"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:398c1478926eca669f2fd6a5856b6de9c0acf23a2cb59a14c0ba5844fa38077e"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c102791b1c4f3ab36ce4101154549105a53dc828f016356b3e3bcae2e3a039d3"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a088b62bd733e2ad12c50dad01b7d0166c30287c166e137433d3b410add807a6"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:3d51ff4785d58d3f6c91bdbffcb5e1f7ddfda557727043aa20d20ec4f65e324a"},
+ {file = "multidict-6.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fc5907494fccf3e7d3f94f95c91d6336b092b5fc83811720fae5e2765890dfba"},
+ {file = "multidict-6.7.1-cp312-cp312-win32.whl", hash = "sha256:28ca5ce2fd9716631133d0e9a9b9a745ad7f60bac2bccafb56aa380fc0b6c511"},
+ {file = "multidict-6.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcee94dfbd638784645b066074b338bc9cc155d4b4bffa4adce1615c5a426c19"},
+ {file = "multidict-6.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:ba0a9fb644d0c1a2194cf7ffb043bd852cea63a57f66fbd33959f7dae18517bf"},
+ {file = "multidict-6.7.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2b41f5fed0ed563624f1c17630cb9941cf2309d4df00e494b551b5f3e3d67a23"},
+ {file = "multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2"},
+ {file = "multidict-6.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:935434b9853c7c112eee7ac891bc4cb86455aa631269ae35442cb316790c1445"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:432feb25a1cb67fe82a9680b4d65fb542e4635cb3166cd9c01560651ad60f177"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e82d14e3c948952a1a85503817e038cba5905a3352de76b9a465075d072fba23"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4cfb48c6ea66c83bcaaf7e4dfa7ec1b6bbcf751b7db85a328902796dfde4c060"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1d540e51b7e8e170174555edecddbd5538105443754539193e3e1061864d444d"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:273d23f4b40f3dce4d6c8a821c741a86dec62cded82e1175ba3d99be128147ed"},
+ {file = "multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:12fad252f8b267cc75b66e8fc51b3079604e8d43a75428ffe193cd9e2195dfd6"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:03ede2a6ffbe8ef936b92cb4529f27f42be7f56afcdab5ab739cd5f27fb1cbf9"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:90efbcf47dbe33dcf643a1e400d67d59abeac5db07dc3f27d6bdeae497a2198c"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5c4b9bfc148f5a91be9244d6264c53035c8a0dcd2f51f1c3c6e30e30ebaa1c84"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:401c5a650f3add2472d1d288c26deebc540f99e2fb83e9525007a74cd2116f1d"},
+ {file = "multidict-6.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:97891f3b1b3ffbded884e2916cacf3c6fc87b66bb0dde46f7357404750559f33"},
+ {file = "multidict-6.7.1-cp313-cp313-win32.whl", hash = "sha256:e1c5988359516095535c4301af38d8a8838534158f649c05dd1050222321bcb3"},
+ {file = "multidict-6.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:960c83bf01a95b12b08fd54324a4eb1d5b52c88932b5cba5d6e712bb3ed12eb5"},
+ {file = "multidict-6.7.1-cp313-cp313-win_arm64.whl", hash = "sha256:563fe25c678aaba333d5399408f5ec3c383ca5b663e7f774dd179a520b8144df"},
+ {file = "multidict-6.7.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:c76c4bec1538375dad9d452d246ca5368ad6e1c9039dadcf007ae59c70619ea1"},
+ {file = "multidict-6.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:57b46b24b5d5ebcc978da4ec23a819a9402b4228b8a90d9c656422b4bdd8a963"},
+ {file = "multidict-6.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e954b24433c768ce78ab7929e84ccf3422e46deb45a4dc9f93438f8217fa2d34"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3bd231490fa7217cc832528e1cd8752a96f0125ddd2b5749390f7c3ec8721b65"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:253282d70d67885a15c8a7716f3a73edf2d635793ceda8173b9ecc21f2fb8292"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b4c48648d7649c9335cf1927a8b87fa692de3dcb15faa676c6a6f1f1aabda43"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:98bc624954ec4d2c7cb074b8eefc2b5d0ce7d482e410df446414355d158fe4ca"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1b99af4d9eec0b49927b4402bcbb58dea89d3e0db8806a4086117019939ad3dd"},
+ {file = "multidict-6.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6aac4f16b472d5b7dc6f66a0d49dd57b0e0902090be16594dc9ebfd3d17c47e7"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:21f830fe223215dffd51f538e78c172ed7c7f60c9b96a2bf05c4848ad49921c3"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f5dd81c45b05518b9aa4da4aa74e1c93d715efa234fd3e8a179df611cc85e5f4"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:eb304767bca2bb92fb9c5bd33cedc95baee5bb5f6c88e63706533a1c06ad08c8"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c9035dde0f916702850ef66460bc4239d89d08df4d02023a5926e7446724212c"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:af959b9beeb66c822380f222f0e0a1889331597e81f1ded7f374f3ecb0fd6c52"},
+ {file = "multidict-6.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:41f2952231456154ee479651491e94118229844dd7226541788be783be2b5108"},
+ {file = "multidict-6.7.1-cp313-cp313t-win32.whl", hash = "sha256:df9f19c28adcb40b6aae30bbaa1478c389efd50c28d541d76760199fc1037c32"},
+ {file = "multidict-6.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d54ecf9f301853f2c5e802da559604b3e95bb7a3b01a9c295c6ee591b9882de8"},
+ {file = "multidict-6.7.1-cp313-cp313t-win_arm64.whl", hash = "sha256:5a37ca18e360377cfda1d62f5f382ff41f2b8c4ccb329ed974cc2e1643440118"},
+ {file = "multidict-6.7.1-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8f333ec9c5eb1b7105e3b84b53141e66ca05a19a605368c55450b6ba208cb9ee"},
+ {file = "multidict-6.7.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a407f13c188f804c759fc6a9f88286a565c242a76b27626594c133b82883b5c2"},
+ {file = "multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1e3a8bb24342a8201d178c3b4984c26ba81a577c80d4d525727427460a50c22d"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97231140a50f5d447d3164f994b86a0bed7cd016e2682f8650d6a9158e14fd31"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6b10359683bd8806a200fd2909e7c8ca3a7b24ec1d8132e483d58e791d881048"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:283ddac99f7ac25a4acadbf004cb5ae34480bbeb063520f70ce397b281859362"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:538cec1e18c067d0e6103aa9a74f9e832904c957adc260e61cd9d8cf0c3b3d37"},
+ {file = "multidict-6.7.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7eee46ccb30ff48a1e35bb818cc90846c6be2b68240e42a78599166722cea709"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fa263a02f4f2dd2d11a7b1bb4362aa7cb1049f84a9235d31adf63f30143469a0"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:2e1425e2f99ec5bd36c15a01b690a1a2456209c5deed58f95469ffb46039ccbb"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:497394b3239fc6f0e13a78a3e1b61296e72bf1c5f94b4c4eb80b265c37a131cd"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:233b398c29d3f1b9676b4b6f75c518a06fcb2ea0b925119fb2c1bc35c05e1601"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:93b1818e4a6e0930454f0f2af7dfce69307ca03cdcfb3739bf4d91241967b6c1"},
+ {file = "multidict-6.7.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f33dc2a3abe9249ea5d8360f969ec7f4142e7ac45ee7014d8f8d5acddf178b7b"},
+ {file = "multidict-6.7.1-cp314-cp314-win32.whl", hash = "sha256:3ab8b9d8b75aef9df299595d5388b14530839f6422333357af1339443cff777d"},
+ {file = "multidict-6.7.1-cp314-cp314-win_amd64.whl", hash = "sha256:5e01429a929600e7dab7b166062d9bb54a5eed752384c7384c968c2afab8f50f"},
+ {file = "multidict-6.7.1-cp314-cp314-win_arm64.whl", hash = "sha256:4885cb0e817aef5d00a2e8451d4665c1808378dc27c2705f1bf4ef8505c0d2e5"},
+ {file = "multidict-6.7.1-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:0458c978acd8e6ea53c81eefaddbbee9c6c5e591f41b3f5e8e194780fe026581"},
+ {file = "multidict-6.7.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:c0abd12629b0af3cf590982c0b413b1e7395cd4ec026f30986818ab95bfaa94a"},
+ {file = "multidict-6.7.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:14525a5f61d7d0c94b368a42cff4c9a4e7ba2d52e2672a7b23d84dc86fb02b0c"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:17307b22c217b4cf05033dabefe68255a534d637c6c9b0cc8382718f87be4262"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a7e590ff876a3eaf1c02a4dfe0724b6e69a9e9de6d8f556816f29c496046e59"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5fa6a95dfee63893d80a34758cd0e0c118a30b8dcb46372bf75106c591b77889"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a0543217a6a017692aa6ae5cc39adb75e587af0f3a82288b1492eb73dd6cc2a4"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f99fe611c312b3c1c0ace793f92464d8cd263cc3b26b5721950d977b006b6c4d"},
+ {file = "multidict-6.7.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9004d8386d133b7e6135679424c91b0b854d2d164af6ea3f289f8f2761064609"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e628ef0e6859ffd8273c69412a2465c4be4a9517d07261b33334b5ec6f3c7489"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:841189848ba629c3552035a6a7f5bf3b02eb304e9fea7492ca220a8eda6b0e5c"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:ce1bbd7d780bb5a0da032e095c951f7014d6b0a205f8318308140f1a6aba159e"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:b26684587228afed0d50cf804cc71062cc9c1cdf55051c4c6345d372947b268c"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9f9af11306994335398293f9958071019e3ab95e9a707dc1383a35613f6abcb9"},
+ {file = "multidict-6.7.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b4938326284c4f1224178a560987b6cf8b4d38458b113d9b8c1db1a836e640a2"},
+ {file = "multidict-6.7.1-cp314-cp314t-win32.whl", hash = "sha256:98655c737850c064a65e006a3df7c997cd3b220be4ec8fe26215760b9697d4d7"},
+ {file = "multidict-6.7.1-cp314-cp314t-win_amd64.whl", hash = "sha256:497bde6223c212ba11d462853cfa4f0ae6ef97465033e7dc9940cdb3ab5b48e5"},
+ {file = "multidict-6.7.1-cp314-cp314t-win_arm64.whl", hash = "sha256:2bbd113e0d4af5db41d5ebfe9ccaff89de2120578164f86a5d17d5a576d1e5b2"},
+ {file = "multidict-6.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:65573858d27cdeaca41893185677dc82395159aa28875a8867af66532d413a8f"},
+ {file = "multidict-6.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c524c6fb8fc342793708ab111c4dbc90ff9abd568de220432500e47e990c0358"},
+ {file = "multidict-6.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:aa23b001d968faef416ff70dc0f1ab045517b9b42a90edd3e9bcdb06479e31d5"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6704fa2b7453b2fb121740555fa1ee20cd98c4d011120caf4d2b8d4e7c76eec0"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:121a34e5bfa410cdf2c8c49716de160de3b1dbcd86b49656f5681e4543bcd1a8"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:026d264228bcd637d4e060844e39cdc60f86c479e463d49075dedc21b18fbbe0"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0e697826df7eb63418ee190fd06ce9f1803593bb4b9517d08c60d9b9a7f69d8f"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bb08271280173720e9fea9ede98e5231defcbad90f1624bea26f32ec8a956e2f"},
+ {file = "multidict-6.7.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c6b3228e1d80af737b72925ce5fb4daf5a335e49cd7ab77ed7b9fdfbf58c526e"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3943debf0fbb57bdde5901695c11094a9a36723e5c03875f87718ee15ca2f4d2"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:98c5787b0a0d9a41d9311eae44c3b76e6753def8d8870ab501320efe75a6a5f8"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08ccb2a6dc72009093ebe7f3f073e5ec5964cba9a706fa94b1a1484039b87941"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:eb351f72c26dc9abe338ca7294661aa22969ad8ffe7ef7d5541d19f368dc854a"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ac1c665bad8b5d762f5f85ebe4d94130c26965f11de70c708c75671297c776de"},
+ {file = "multidict-6.7.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fa6609d0364f4f6f58351b4659a1f3e0e898ba2a8c5cac04cb2c7bc556b0bc5"},
+ {file = "multidict-6.7.1-cp39-cp39-win32.whl", hash = "sha256:6f77ce314a29263e67adadc7e7c1bc699fcb3a305059ab973d038f87caa42ed0"},
+ {file = "multidict-6.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:f537b55778cd3cbee430abe3131255d3a78202e0f9ea7ffc6ada893a4bcaeea4"},
+ {file = "multidict-6.7.1-cp39-cp39-win_arm64.whl", hash = "sha256:749aa54f578f2e5f439538706a475aa844bfa8ef75854b1401e6e528e4937cf9"},
+ {file = "multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56"},
+ {file = "multidict-6.7.1.tar.gz", hash = "sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d"},
+]
+
+[package.dependencies]
+typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""}
+
[[package]]
name = "mypy"
version = "1.13.0"
@@ -260,6 +769,137 @@ files = [
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
+[[package]]
+name = "propcache"
+version = "0.4.1"
+description = "Accelerated property cache"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c2d1fa3201efaf55d730400d945b5b3ab6e672e100ba0f9a409d950ab25d7db"},
+ {file = "propcache-0.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1eb2994229cc8ce7fe9b3db88f5465f5fd8651672840b2e426b88cdb1a30aac8"},
+ {file = "propcache-0.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:66c1f011f45a3b33d7bcb22daed4b29c0c9e2224758b6be00686731e1b46f925"},
+ {file = "propcache-0.4.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9a52009f2adffe195d0b605c25ec929d26b36ef986ba85244891dee3b294df21"},
+ {file = "propcache-0.4.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5d4e2366a9c7b837555cf02fb9be2e3167d333aff716332ef1b7c3a142ec40c5"},
+ {file = "propcache-0.4.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9d2b6caef873b4f09e26ea7e33d65f42b944837563a47a94719cc3544319a0db"},
+ {file = "propcache-0.4.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2b16ec437a8c8a965ecf95739448dd938b5c7f56e67ea009f4300d8df05f32b7"},
+ {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:296f4c8ed03ca7476813fe666c9ea97869a8d7aec972618671b33a38a5182ef4"},
+ {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:1f0978529a418ebd1f49dad413a2b68af33f85d5c5ca5c6ca2a3bed375a7ac60"},
+ {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fd138803047fb4c062b1c1dd95462f5209456bfab55c734458f15d11da288f8f"},
+ {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8c9b3cbe4584636d72ff556d9036e0c9317fa27b3ac1f0f558e7e84d1c9c5900"},
+ {file = "propcache-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f93243fdc5657247533273ac4f86ae106cc6445a0efacb9a1bfe982fcfefd90c"},
+ {file = "propcache-0.4.1-cp310-cp310-win32.whl", hash = "sha256:a0ee98db9c5f80785b266eb805016e36058ac72c51a064040f2bc43b61101cdb"},
+ {file = "propcache-0.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:1cdb7988c4e5ac7f6d175a28a9aa0c94cb6f2ebe52756a3c0cda98d2809a9e37"},
+ {file = "propcache-0.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:d82ad62b19645419fe79dd63b3f9253e15b30e955c0170e5cebc350c1844e581"},
+ {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:60a8fda9644b7dfd5dece8c61d8a85e271cb958075bfc4e01083c148b61a7caf"},
+ {file = "propcache-0.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c30b53e7e6bda1d547cabb47c825f3843a0a1a42b0496087bb58d8fedf9f41b5"},
+ {file = "propcache-0.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6918ecbd897443087a3b7cd978d56546a812517dcaaca51b49526720571fa93e"},
+ {file = "propcache-0.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3d902a36df4e5989763425a8ab9e98cd8ad5c52c823b34ee7ef307fd50582566"},
+ {file = "propcache-0.4.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a9695397f85973bb40427dedddf70d8dc4a44b22f1650dd4af9eedf443d45165"},
+ {file = "propcache-0.4.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2bb07ffd7eaad486576430c89f9b215f9e4be68c4866a96e97db9e97fead85dc"},
+ {file = "propcache-0.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd6f30fdcf9ae2a70abd34da54f18da086160e4d7d9251f81f3da0ff84fc5a48"},
+ {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fc38cba02d1acba4e2869eef1a57a43dfbd3d49a59bf90dda7444ec2be6a5570"},
+ {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:67fad6162281e80e882fb3ec355398cf72864a54069d060321f6cd0ade95fe85"},
+ {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f10207adf04d08bec185bae14d9606a1444715bc99180f9331c9c02093e1959e"},
+ {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e9b0d8d0845bbc4cfcdcbcdbf5086886bc8157aa963c31c777ceff7846c77757"},
+ {file = "propcache-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:981333cb2f4c1896a12f4ab92a9cc8f09ea664e9b7dbdc4eff74627af3a11c0f"},
+ {file = "propcache-0.4.1-cp311-cp311-win32.whl", hash = "sha256:f1d2f90aeec838a52f1c1a32fe9a619fefd5e411721a9117fbf82aea638fe8a1"},
+ {file = "propcache-0.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:364426a62660f3f699949ac8c621aad6977be7126c5807ce48c0aeb8e7333ea6"},
+ {file = "propcache-0.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:e53f3a38d3510c11953f3e6a33f205c6d1b001129f972805ca9b42fc308bc239"},
+ {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e153e9cd40cc8945138822807139367f256f89c6810c2634a4f6902b52d3b4e2"},
+ {file = "propcache-0.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cd547953428f7abb73c5ad82cbb32109566204260d98e41e5dfdc682eb7f8403"},
+ {file = "propcache-0.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f048da1b4f243fc44f205dfd320933a951b8d89e0afd4c7cacc762a8b9165207"},
+ {file = "propcache-0.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ec17c65562a827bba85e3872ead335f95405ea1674860d96483a02f5c698fa72"},
+ {file = "propcache-0.4.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:405aac25c6394ef275dee4c709be43745d36674b223ba4eb7144bf4d691b7367"},
+ {file = "propcache-0.4.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:0013cb6f8dde4b2a2f66903b8ba740bdfe378c943c4377a200551ceb27f379e4"},
+ {file = "propcache-0.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:15932ab57837c3368b024473a525e25d316d8353016e7cc0e5ba9eb343fbb1cf"},
+ {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:031dce78b9dc099f4c29785d9cf5577a3faf9ebf74ecbd3c856a7b92768c3df3"},
+ {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ab08df6c9a035bee56e31af99be621526bd237bea9f32def431c656b29e41778"},
+ {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4d7af63f9f93fe593afbf104c21b3b15868efb2c21d07d8732c0c4287e66b6a6"},
+ {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cfc27c945f422e8b5071b6e93169679e4eb5bf73bbcbf1ba3ae3a83d2f78ebd9"},
+ {file = "propcache-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:35c3277624a080cc6ec6f847cbbbb5b49affa3598c4535a0a4682a697aaa5c75"},
+ {file = "propcache-0.4.1-cp312-cp312-win32.whl", hash = "sha256:671538c2262dadb5ba6395e26c1731e1d52534bfe9ae56d0b5573ce539266aa8"},
+ {file = "propcache-0.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:cb2d222e72399fcf5890d1d5cc1060857b9b236adff2792ff48ca2dfd46c81db"},
+ {file = "propcache-0.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:204483131fb222bdaaeeea9f9e6c6ed0cac32731f75dfc1d4a567fc1926477c1"},
+ {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:43eedf29202c08550aac1d14e0ee619b0430aaef78f85864c1a892294fbc28cf"},
+ {file = "propcache-0.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d62cdfcfd89ccb8de04e0eda998535c406bf5e060ffd56be6c586cbcc05b3311"},
+ {file = "propcache-0.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cae65ad55793da34db5f54e4029b89d3b9b9490d8abe1b4c7ab5d4b8ec7ebf74"},
+ {file = "propcache-0.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:333ddb9031d2704a301ee3e506dc46b1fe5f294ec198ed6435ad5b6a085facfe"},
+ {file = "propcache-0.4.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:fd0858c20f078a32cf55f7e81473d96dcf3b93fd2ccdb3d40fdf54b8573df3af"},
+ {file = "propcache-0.4.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:678ae89ebc632c5c204c794f8dab2837c5f159aeb59e6ed0539500400577298c"},
+ {file = "propcache-0.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d472aeb4fbf9865e0c6d622d7f4d54a4e101a89715d8904282bb5f9a2f476c3f"},
+ {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4d3df5fa7e36b3225954fba85589da77a0fe6a53e3976de39caf04a0db4c36f1"},
+ {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:ee17f18d2498f2673e432faaa71698032b0127ebf23ae5974eeaf806c279df24"},
+ {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:580e97762b950f993ae618e167e7be9256b8353c2dcd8b99ec100eb50f5286aa"},
+ {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:501d20b891688eb8e7aa903021f0b72d5a55db40ffaab27edefd1027caaafa61"},
+ {file = "propcache-0.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a0bd56e5b100aef69bd8562b74b46254e7c8812918d3baa700c8a8009b0af66"},
+ {file = "propcache-0.4.1-cp313-cp313-win32.whl", hash = "sha256:bcc9aaa5d80322bc2fb24bb7accb4a30f81e90ab8d6ba187aec0744bc302ad81"},
+ {file = "propcache-0.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:381914df18634f5494334d201e98245c0596067504b9372d8cf93f4bb23e025e"},
+ {file = "propcache-0.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:8873eb4460fd55333ea49b7d189749ecf6e55bf85080f11b1c4530ed3034cba1"},
+ {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:92d1935ee1f8d7442da9c0c4fa7ac20d07e94064184811b685f5c4fada64553b"},
+ {file = "propcache-0.4.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:473c61b39e1460d386479b9b2f337da492042447c9b685f28be4f74d3529e566"},
+ {file = "propcache-0.4.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c0ef0aaafc66fbd87842a3fe3902fd889825646bc21149eafe47be6072725835"},
+ {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95393b4d66bfae908c3ca8d169d5f79cd65636ae15b5e7a4f6e67af675adb0e"},
+ {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c07fda85708bc48578467e85099645167a955ba093be0a2dcba962195676e859"},
+ {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:af223b406d6d000830c6f65f1e6431783fc3f713ba3e6cc8c024d5ee96170a4b"},
+ {file = "propcache-0.4.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a78372c932c90ee474559c5ddfffd718238e8673c340dc21fe45c5b8b54559a0"},
+ {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:564d9f0d4d9509e1a870c920a89b2fec951b44bf5ba7d537a9e7c1ccec2c18af"},
+ {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:17612831fda0138059cc5546f4d12a2aacfb9e47068c06af35c400ba58ba7393"},
+ {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:41a89040cb10bd345b3c1a873b2bf36413d48da1def52f268a055f7398514874"},
+ {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e35b88984e7fa64aacecea39236cee32dd9bd8c55f57ba8a75cf2399553f9bd7"},
+ {file = "propcache-0.4.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f8b465489f927b0df505cbe26ffbeed4d6d8a2bbc61ce90eb074ff129ef0ab1"},
+ {file = "propcache-0.4.1-cp313-cp313t-win32.whl", hash = "sha256:2ad890caa1d928c7c2965b48f3a3815c853180831d0e5503d35cf00c472f4717"},
+ {file = "propcache-0.4.1-cp313-cp313t-win_amd64.whl", hash = "sha256:f7ee0e597f495cf415bcbd3da3caa3bd7e816b74d0d52b8145954c5e6fd3ff37"},
+ {file = "propcache-0.4.1-cp313-cp313t-win_arm64.whl", hash = "sha256:929d7cbe1f01bb7baffb33dc14eb5691c95831450a26354cd210a8155170c93a"},
+ {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3f7124c9d820ba5548d431afb4632301acf965db49e666aa21c305cbe8c6de12"},
+ {file = "propcache-0.4.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:c0d4b719b7da33599dfe3b22d3db1ef789210a0597bc650b7cee9c77c2be8c5c"},
+ {file = "propcache-0.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9f302f4783709a78240ebc311b793f123328716a60911d667e0c036bc5dcbded"},
+ {file = "propcache-0.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c80ee5802e3fb9ea37938e7eecc307fb984837091d5fd262bb37238b1ae97641"},
+ {file = "propcache-0.4.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ed5a841e8bb29a55fb8159ed526b26adc5bdd7e8bd7bf793ce647cb08656cdf4"},
+ {file = "propcache-0.4.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:55c72fd6ea2da4c318e74ffdf93c4fe4e926051133657459131a95c846d16d44"},
+ {file = "propcache-0.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8326e144341460402713f91df60ade3c999d601e7eb5ff8f6f7862d54de0610d"},
+ {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:060b16ae65bc098da7f6d25bf359f1f31f688384858204fe5d652979e0015e5b"},
+ {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:89eb3fa9524f7bec9de6e83cf3faed9d79bffa560672c118a96a171a6f55831e"},
+ {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:dee69d7015dc235f526fe80a9c90d65eb0039103fe565776250881731f06349f"},
+ {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5558992a00dfd54ccbc64a32726a3357ec93825a418a401f5cc67df0ac5d9e49"},
+ {file = "propcache-0.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c9b822a577f560fbd9554812526831712c1436d2c046cedee4c3796d3543b144"},
+ {file = "propcache-0.4.1-cp314-cp314-win32.whl", hash = "sha256:ab4c29b49d560fe48b696cdcb127dd36e0bc2472548f3bf56cc5cb3da2b2984f"},
+ {file = "propcache-0.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:5a103c3eb905fcea0ab98be99c3a9a5ab2de60228aa5aceedc614c0281cf6153"},
+ {file = "propcache-0.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:74c1fb26515153e482e00177a1ad654721bf9207da8a494a0c05e797ad27b992"},
+ {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:824e908bce90fb2743bd6b59db36eb4f45cd350a39637c9f73b1c1ea66f5b75f"},
+ {file = "propcache-0.4.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:c2b5e7db5328427c57c8e8831abda175421b709672f6cfc3d630c3b7e2146393"},
+ {file = "propcache-0.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6f6ff873ed40292cd4969ef5310179afd5db59fdf055897e282485043fc80ad0"},
+ {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49a2dc67c154db2c1463013594c458881a069fcf98940e61a0569016a583020a"},
+ {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:005f08e6a0529984491e37d8dbc3dd86f84bd78a8ceb5fa9a021f4c48d4984be"},
+ {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5c3310452e0d31390da9035c348633b43d7e7feb2e37be252be6da45abd1abcc"},
+ {file = "propcache-0.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3c70630930447f9ef1caac7728c8ad1c56bc5015338b20fed0d08ea2480b3a"},
+ {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8e57061305815dfc910a3634dcf584f08168a8836e6999983569f51a8544cd89"},
+ {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:521a463429ef54143092c11a77e04056dd00636f72e8c45b70aaa3140d639726"},
+ {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:120c964da3fdc75e3731aa392527136d4ad35868cc556fd09bb6d09172d9a367"},
+ {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:d8f353eb14ee3441ee844ade4277d560cdd68288838673273b978e3d6d2c8f36"},
+ {file = "propcache-0.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ab2943be7c652f09638800905ee1bab2c544e537edb57d527997a24c13dc1455"},
+ {file = "propcache-0.4.1-cp314-cp314t-win32.whl", hash = "sha256:05674a162469f31358c30bcaa8883cb7829fa3110bf9c0991fe27d7896c42d85"},
+ {file = "propcache-0.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:990f6b3e2a27d683cb7602ed6c86f15ee6b43b1194736f9baaeb93d0016633b1"},
+ {file = "propcache-0.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:ecef2343af4cc68e05131e45024ba34f6095821988a9d0a02aa7c73fcc448aa9"},
+ {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d233076ccf9e450c8b3bc6720af226b898ef5d051a2d145f7d765e6e9f9bcff"},
+ {file = "propcache-0.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:357f5bb5c377a82e105e44bd3d52ba22b616f7b9773714bff93573988ef0a5fb"},
+ {file = "propcache-0.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cbc3b6dfc728105b2a57c06791eb07a94229202ea75c59db644d7d496b698cac"},
+ {file = "propcache-0.4.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:182b51b421f0501952d938dc0b0eb45246a5b5153c50d42b495ad5fb7517c888"},
+ {file = "propcache-0.4.1-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4b536b39c5199b96fc6245eb5fb796c497381d3942f169e44e8e392b29c9ebcc"},
+ {file = "propcache-0.4.1-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:db65d2af507bbfbdcedb254a11149f894169d90488dd3e7190f7cdcb2d6cd57a"},
+ {file = "propcache-0.4.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd2dbc472da1f772a4dae4fa24be938a6c544671a912e30529984dd80400cd88"},
+ {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:daede9cd44e0f8bdd9e6cc9a607fc81feb80fae7a5fc6cecaff0e0bb32e42d00"},
+ {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:71b749281b816793678ae7f3d0d84bd36e694953822eaad408d682efc5ca18e0"},
+ {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:0002004213ee1f36cfb3f9a42b5066100c44276b9b72b4e1504cddd3d692e86e"},
+ {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:fe49d0a85038f36ba9e3ffafa1103e61170b28e95b16622e11be0a0ea07c6781"},
+ {file = "propcache-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:99d43339c83aaf4d32bda60928231848eee470c6bda8d02599cc4cebe872d183"},
+ {file = "propcache-0.4.1-cp39-cp39-win32.whl", hash = "sha256:a129e76735bc792794d5177069691c3217898b9f5cee2b2661471e52ffe13f19"},
+ {file = "propcache-0.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:948dab269721ae9a87fd16c514a0a2c2a1bdb23a9a61b969b0f9d9ee2968546f"},
+ {file = "propcache-0.4.1-cp39-cp39-win_arm64.whl", hash = "sha256:5fd37c406dd6dc85aa743e214cef35dc54bbdd1419baac4f6ae5e5b1a2976938"},
+ {file = "propcache-0.4.1-py3-none-any.whl", hash = "sha256:af2a6052aeb6cf17d3e46ee169099044fd8224cbaf75c76a2ef596e8163e2237"},
+ {file = "propcache-0.4.1.tar.gz", hash = "sha256:f48107a8c637e80362555f37ecf49abe20370e557cc4ab374f04ec4423c97c3d"},
+]
+
[[package]]
name = "pydantic"
version = "2.10.6"
@@ -392,6 +1032,26 @@ files = [
[package.dependencies]
typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
+[[package]]
+name = "pyjwt"
+version = "2.12.1"
+description = "JSON Web Token implementation in Python"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c"},
+ {file = "pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b"},
+]
+
+[package.dependencies]
+typing_extensions = {version = ">=4.0", markers = "python_version < \"3.11\""}
+
+[package.extras]
+crypto = ["cryptography (>=3.4.0)"]
+dev = ["coverage[toml] (==7.10.7)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=8.4.2,<9.0.0)", "sphinx", "sphinx-rtd-theme", "zope.interface"]
+docs = ["sphinx", "sphinx-rtd-theme", "zope.interface"]
+tests = ["coverage[toml] (==7.10.7)", "pytest (>=8.4.2,<9.0.0)"]
+
[[package]]
name = "pytest"
version = "7.4.4"
@@ -466,6 +1126,25 @@ files = [
[package.dependencies]
six = ">=1.5"
+[[package]]
+name = "redis"
+version = "5.3.1"
+description = "Python client for Redis database and key-value store"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "redis-5.3.1-py3-none-any.whl", hash = "sha256:dc1909bd24669cc31b5f67a039700b16ec30571096c5f1f0d9d2324bff31af97"},
+ {file = "redis-5.3.1.tar.gz", hash = "sha256:ca49577a531ea64039b5a36db3d6cd1a0c7a60c34124d46924a45b956e8cf14c"},
+]
+
+[package.dependencies]
+async-timeout = {version = ">=4.0.3", markers = "python_full_version < \"3.11.3\""}
+PyJWT = ">=2.9.0"
+
+[package.extras]
+hiredis = ["hiredis (>=3.0.0)"]
+ocsp = ["cryptography (>=36.0.1)", "pyopenssl (==23.2.1)", "requests (>=2.31.0)"]
+
[[package]]
name = "ruff"
version = "0.11.5"
@@ -593,7 +1272,291 @@ files = [
{file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"},
]
+[[package]]
+name = "wasmtime"
+version = "25.0.0"
+description = "A WebAssembly runtime powered by Wasmtime"
+optional = true
+python-versions = ">=3.8"
+files = [
+ {file = "wasmtime-25.0.0-py3-none-any.whl", hash = "sha256:22aa59fc6e01deec8a6703046f82466090d5811096a3bb5c169907e36c842af1"},
+ {file = "wasmtime-25.0.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:13e9a718e9d580c1738782cc19f4dcb9fb068f7e51778ea621fd664f4433525b"},
+ {file = "wasmtime-25.0.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5bdf1214ee3ee78a4a8a92da339f4c4c8c109e65af881b37f4adfc05d02af426"},
+ {file = "wasmtime-25.0.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:b4364e14d44e3b7afe6a40bf608e9d0d2c40b09dece441d20f4f6e31906b729c"},
+ {file = "wasmtime-25.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:a07445073cf36a6e5d1dc28246a897dcbdaa537ba8be8805be65422ecca297eb"},
+ {file = "wasmtime-25.0.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:53d5f614348a28aabdf80ae4f6fdfa803031af1f74ada03826fd4fd43aeee6c8"},
+ {file = "wasmtime-25.0.0-py3-none-win_amd64.whl", hash = "sha256:f8a2a213b9179965db2d2eedececd69a37e287e902330509afae51c71a3a6842"},
+]
+
+[package.dependencies]
+importlib-resources = ">=5.10"
+
+[package.extras]
+testing = ["componentize-py", "coverage", "pycparser", "pytest", "pytest-mypy"]
+
+[[package]]
+name = "websockets"
+version = "13.1"
+description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)"
+optional = true
+python-versions = ">=3.8"
+files = [
+ {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"},
+ {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"},
+ {file = "websockets-13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f779498eeec470295a2b1a5d97aa1bc9814ecd25e1eb637bd9d1c73a327387f6"},
+ {file = "websockets-13.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676df3fe46956fbb0437d8800cd5f2b6d41143b6e7e842e60554398432cf29b"},
+ {file = "websockets-13.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7affedeb43a70351bb811dadf49493c9cfd1ed94c9c70095fd177e9cc1541fa"},
+ {file = "websockets-13.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1971e62d2caa443e57588e1d82d15f663b29ff9dfe7446d9964a4b6f12c1e700"},
+ {file = "websockets-13.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5f2e75431f8dc4a47f31565a6e1355fb4f2ecaa99d6b89737527ea917066e26c"},
+ {file = "websockets-13.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58cf7e75dbf7e566088b07e36ea2e3e2bd5676e22216e4cad108d4df4a7402a0"},
+ {file = "websockets-13.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c90d6dec6be2c7d03378a574de87af9b1efea77d0c52a8301dd831ece938452f"},
+ {file = "websockets-13.1-cp310-cp310-win32.whl", hash = "sha256:730f42125ccb14602f455155084f978bd9e8e57e89b569b4d7f0f0c17a448ffe"},
+ {file = "websockets-13.1-cp310-cp310-win_amd64.whl", hash = "sha256:5993260f483d05a9737073be197371940c01b257cc45ae3f1d5d7adb371b266a"},
+ {file = "websockets-13.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:61fc0dfcda609cda0fc9fe7977694c0c59cf9d749fbb17f4e9483929e3c48a19"},
+ {file = "websockets-13.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ceec59f59d092c5007e815def4ebb80c2de330e9588e101cf8bd94c143ec78a5"},
+ {file = "websockets-13.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c1dca61c6db1166c48b95198c0b7d9c990b30c756fc2923cc66f68d17dc558fd"},
+ {file = "websockets-13.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:308e20f22c2c77f3f39caca508e765f8725020b84aa963474e18c59accbf4c02"},
+ {file = "websockets-13.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d516c325e6540e8a57b94abefc3459d7dab8ce52ac75c96cad5549e187e3a7"},
+ {file = "websockets-13.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87c6e35319b46b99e168eb98472d6c7d8634ee37750d7693656dc766395df096"},
+ {file = "websockets-13.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5f9fee94ebafbc3117c30be1844ed01a3b177bb6e39088bc6b2fa1dc15572084"},
+ {file = "websockets-13.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7c1e90228c2f5cdde263253fa5db63e6653f1c00e7ec64108065a0b9713fa1b3"},
+ {file = "websockets-13.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6548f29b0e401eea2b967b2fdc1c7c7b5ebb3eeb470ed23a54cd45ef078a0db9"},
+ {file = "websockets-13.1-cp311-cp311-win32.whl", hash = "sha256:c11d4d16e133f6df8916cc5b7e3e96ee4c44c936717d684a94f48f82edb7c92f"},
+ {file = "websockets-13.1-cp311-cp311-win_amd64.whl", hash = "sha256:d04f13a1d75cb2b8382bdc16ae6fa58c97337253826dfe136195b7f89f661557"},
+ {file = "websockets-13.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d75baf00138f80b48f1eac72ad1535aac0b6461265a0bcad391fc5aba875cfc"},
+ {file = "websockets-13.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9b6f347deb3dcfbfde1c20baa21c2ac0751afaa73e64e5b693bb2b848efeaa49"},
+ {file = "websockets-13.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de58647e3f9c42f13f90ac7e5f58900c80a39019848c5547bc691693098ae1bd"},
+ {file = "websockets-13.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1b54689e38d1279a51d11e3467dd2f3a50f5f2e879012ce8f2d6943f00e83f0"},
+ {file = "websockets-13.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf1781ef73c073e6b0f90af841aaf98501f975d306bbf6221683dd594ccc52b6"},
+ {file = "websockets-13.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d23b88b9388ed85c6faf0e74d8dec4f4d3baf3ecf20a65a47b836d56260d4b9"},
+ {file = "websockets-13.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3c78383585f47ccb0fcf186dcb8a43f5438bd7d8f47d69e0b56f71bf431a0a68"},
+ {file = "websockets-13.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d6d300f8ec35c24025ceb9b9019ae9040c1ab2f01cddc2bcc0b518af31c75c14"},
+ {file = "websockets-13.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a9dcaf8b0cc72a392760bb8755922c03e17a5a54e08cca58e8b74f6902b433cf"},
+ {file = "websockets-13.1-cp312-cp312-win32.whl", hash = "sha256:2f85cf4f2a1ba8f602298a853cec8526c2ca42a9a4b947ec236eaedb8f2dc80c"},
+ {file = "websockets-13.1-cp312-cp312-win_amd64.whl", hash = "sha256:38377f8b0cdeee97c552d20cf1865695fcd56aba155ad1b4ca8779a5b6ef4ac3"},
+ {file = "websockets-13.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a9ab1e71d3d2e54a0aa646ab6d4eebfaa5f416fe78dfe4da2839525dc5d765c6"},
+ {file = "websockets-13.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b9d7439d7fab4dce00570bb906875734df13d9faa4b48e261c440a5fec6d9708"},
+ {file = "websockets-13.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:327b74e915cf13c5931334c61e1a41040e365d380f812513a255aa804b183418"},
+ {file = "websockets-13.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:325b1ccdbf5e5725fdcb1b0e9ad4d2545056479d0eee392c291c1bf76206435a"},
+ {file = "websockets-13.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:346bee67a65f189e0e33f520f253d5147ab76ae42493804319b5716e46dddf0f"},
+ {file = "websockets-13.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91a0fa841646320ec0d3accdff5b757b06e2e5c86ba32af2e0815c96c7a603c5"},
+ {file = "websockets-13.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:18503d2c5f3943e93819238bf20df71982d193f73dcecd26c94514f417f6b135"},
+ {file = "websockets-13.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:a9cd1af7e18e5221d2878378fbc287a14cd527fdd5939ed56a18df8a31136bb2"},
+ {file = "websockets-13.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:70c5be9f416aa72aab7a2a76c90ae0a4fe2755c1816c153c1a2bcc3333ce4ce6"},
+ {file = "websockets-13.1-cp313-cp313-win32.whl", hash = "sha256:624459daabeb310d3815b276c1adef475b3e6804abaf2d9d2c061c319f7f187d"},
+ {file = "websockets-13.1-cp313-cp313-win_amd64.whl", hash = "sha256:c518e84bb59c2baae725accd355c8dc517b4a3ed8db88b4bc93c78dae2974bf2"},
+ {file = "websockets-13.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c7934fd0e920e70468e676fe7f1b7261c1efa0d6c037c6722278ca0228ad9d0d"},
+ {file = "websockets-13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:149e622dc48c10ccc3d2760e5f36753db9cacf3ad7bc7bbbfd7d9c819e286f23"},
+ {file = "websockets-13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a569eb1b05d72f9bce2ebd28a1ce2054311b66677fcd46cf36204ad23acead8c"},
+ {file = "websockets-13.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95df24ca1e1bd93bbca51d94dd049a984609687cb2fb08a7f2c56ac84e9816ea"},
+ {file = "websockets-13.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8dbb1bf0c0a4ae8b40bdc9be7f644e2f3fb4e8a9aca7145bfa510d4a374eeb7"},
+ {file = "websockets-13.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:035233b7531fb92a76beefcbf479504db8c72eb3bff41da55aecce3a0f729e54"},
+ {file = "websockets-13.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:e4450fc83a3df53dec45922b576e91e94f5578d06436871dce3a6be38e40f5db"},
+ {file = "websockets-13.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:463e1c6ec853202dd3657f156123d6b4dad0c546ea2e2e38be2b3f7c5b8e7295"},
+ {file = "websockets-13.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:6d6855bbe70119872c05107e38fbc7f96b1d8cb047d95c2c50869a46c65a8e96"},
+ {file = "websockets-13.1-cp38-cp38-win32.whl", hash = "sha256:204e5107f43095012b00f1451374693267adbb832d29966a01ecc4ce1db26faf"},
+ {file = "websockets-13.1-cp38-cp38-win_amd64.whl", hash = "sha256:485307243237328c022bc908b90e4457d0daa8b5cf4b3723fd3c4a8012fce4c6"},
+ {file = "websockets-13.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b37c184f8b976f0c0a231a5f3d6efe10807d41ccbe4488df8c74174805eea7d"},
+ {file = "websockets-13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:163e7277e1a0bd9fb3c8842a71661ad19c6aa7bb3d6678dc7f89b17fbcc4aeb7"},
+ {file = "websockets-13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4b889dbd1342820cc210ba44307cf75ae5f2f96226c0038094455a96e64fb07a"},
+ {file = "websockets-13.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:586a356928692c1fed0eca68b4d1c2cbbd1ca2acf2ac7e7ebd3b9052582deefa"},
+ {file = "websockets-13.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7bd6abf1e070a6b72bfeb71049d6ad286852e285f146682bf30d0296f5fbadfa"},
+ {file = "websockets-13.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2aad13a200e5934f5a6767492fb07151e1de1d6079c003ab31e1823733ae79"},
+ {file = "websockets-13.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:df01aea34b6e9e33572c35cd16bae5a47785e7d5c8cb2b54b2acdb9678315a17"},
+ {file = "websockets-13.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e54affdeb21026329fb0744ad187cf812f7d3c2aa702a5edb562b325191fcab6"},
+ {file = "websockets-13.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ef8aa8bdbac47f4968a5d66462a2a0935d044bf35c0e5a8af152d58516dbeb5"},
+ {file = "websockets-13.1-cp39-cp39-win32.whl", hash = "sha256:deeb929efe52bed518f6eb2ddc00cc496366a14c726005726ad62c2dd9017a3c"},
+ {file = "websockets-13.1-cp39-cp39-win_amd64.whl", hash = "sha256:7c65ffa900e7cc958cd088b9a9157a8141c991f8c53d11087e6fb7277a03f81d"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5dd6da9bec02735931fccec99d97c29f47cc61f644264eb995ad6c0c27667238"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:2510c09d8e8df777177ee3d40cd35450dc169a81e747455cc4197e63f7e7bfe5"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1c3cf67185543730888b20682fb186fc8d0fa6f07ccc3ef4390831ab4b388d9"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcc03c8b72267e97b49149e4863d57c2d77f13fae12066622dc78fe322490fe6"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:004280a140f220c812e65f36944a9ca92d766b6cc4560be652a0a3883a79ed8a"},
+ {file = "websockets-13.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2620453c075abeb0daa949a292e19f56de518988e079c36478bacf9546ced23"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9156c45750b37337f7b0b00e6248991a047be4aa44554c9886fe6bdd605aab3b"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:80c421e07973a89fbdd93e6f2003c17d20b69010458d3a8e37fb47874bd67d51"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82d0ba76371769d6a4e56f7e83bb8e81846d17a6190971e38b5de108bde9b0d7"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9875a0143f07d74dc5e1ded1c4581f0d9f7ab86c78994e2ed9e95050073c94d"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11e38ad8922c7961447f35c7b17bffa15de4d17c70abd07bfbe12d6faa3e027"},
+ {file = "websockets-13.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4059f790b6ae8768471cddb65d3c4fe4792b0ab48e154c9f0a04cefaabcd5978"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:25c35bf84bf7c7369d247f0b8cfa157f989862c49104c5cf85cb5436a641d93e"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:83f91d8a9bb404b8c2c41a707ac7f7f75b9442a0a876df295de27251a856ad09"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a43cfdcddd07f4ca2b1afb459824dd3c6d53a51410636a2c7fc97b9a8cf4842"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48a2ef1381632a2f0cb4efeff34efa97901c9fbc118e01951ad7cfc10601a9bb"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bf774c754c35dbb487360b12c5727adab887f1622b8aed5755880a21c4a20"},
+ {file = "websockets-13.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:95858ca14a9f6fa8413d29e0a585b31b278388aa775b8a81fa24830123874678"},
+ {file = "websockets-13.1-py3-none-any.whl", hash = "sha256:a9a396a6ad26130cdae92ae10c36af09d9bfe6cafe69670fd3b6da9b07b4044f"},
+ {file = "websockets-13.1.tar.gz", hash = "sha256:a3b3366087c1bc0a2795111edcadddb8b3b59509d5db5d7ea3fdd69f954a8878"},
+]
+
+[[package]]
+name = "yarl"
+version = "1.22.0"
+description = "Yet another URL library"
+optional = false
+python-versions = ">=3.9"
+files = [
+ {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c7bd6683587567e5a49ee6e336e0612bec8329be1b7d4c8af5687dcdeb67ee1e"},
+ {file = "yarl-1.22.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5cdac20da754f3a723cceea5b3448e1a2074866406adeb4ef35b469d089adb8f"},
+ {file = "yarl-1.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07a524d84df0c10f41e3ee918846e1974aba4ec017f990dc735aad487a0bdfdf"},
+ {file = "yarl-1.22.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1b329cb8146d7b736677a2440e422eadd775d1806a81db2d4cded80a48efc1a"},
+ {file = "yarl-1.22.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:75976c6945d85dbb9ee6308cd7ff7b1fb9409380c82d6119bd778d8fcfe2931c"},
+ {file = "yarl-1.22.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:80ddf7a5f8c86cb3eb4bc9028b07bbbf1f08a96c5c0bc1244be5e8fefcb94147"},
+ {file = "yarl-1.22.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d332fc2e3c94dad927f2112395772a4e4fedbcf8f80efc21ed7cdfae4d574fdb"},
+ {file = "yarl-1.22.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0cf71bf877efeac18b38d3930594c0948c82b64547c1cf420ba48722fe5509f6"},
+ {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:663e1cadaddae26be034a6ab6072449a8426ddb03d500f43daf952b74553bba0"},
+ {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:6dcbb0829c671f305be48a7227918cfcd11276c2d637a8033a99a02b67bf9eda"},
+ {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0d97c18dfd9a9af4490631905a3f131a8e4c9e80a39353919e2cfed8f00aedc"},
+ {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:437840083abe022c978470b942ff832c3940b2ad3734d424b7eaffcd07f76737"},
+ {file = "yarl-1.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:a899cbd98dce6f5d8de1aad31cb712ec0a530abc0a86bd6edaa47c1090138467"},
+ {file = "yarl-1.22.0-cp310-cp310-win32.whl", hash = "sha256:595697f68bd1f0c1c159fcb97b661fc9c3f5db46498043555d04805430e79bea"},
+ {file = "yarl-1.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:cb95a9b1adaa48e41815a55ae740cfda005758104049a640a398120bf02515ca"},
+ {file = "yarl-1.22.0-cp310-cp310-win_arm64.whl", hash = "sha256:b85b982afde6df99ecc996990d4ad7ccbdbb70e2a4ba4de0aecde5922ba98a0b"},
+ {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ab72135b1f2db3fed3997d7e7dc1b80573c67138023852b6efb336a5eae6511"},
+ {file = "yarl-1.22.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:669930400e375570189492dc8d8341301578e8493aec04aebc20d4717f899dd6"},
+ {file = "yarl-1.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792a2af6d58177ef7c19cbf0097aba92ca1b9cb3ffdd9c7470e156c8f9b5e028"},
+ {file = "yarl-1.22.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ea66b1c11c9150f1372f69afb6b8116f2dd7286f38e14ea71a44eee9ec51b9d"},
+ {file = "yarl-1.22.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3e2daa88dc91870215961e96a039ec73e4937da13cf77ce17f9cad0c18df3503"},
+ {file = "yarl-1.22.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ba440ae430c00eee41509353628600212112cd5018d5def7e9b05ea7ac34eb65"},
+ {file = "yarl-1.22.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e6438cc8f23a9c1478633d216b16104a586b9761db62bfacb6425bac0a36679e"},
+ {file = "yarl-1.22.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c52a6e78aef5cf47a98ef8e934755abf53953379b7d53e68b15ff4420e6683d"},
+ {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3b06bcadaac49c70f4c88af4ffcfbe3dc155aab3163e75777818092478bcbbe7"},
+ {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:6944b2dc72c4d7f7052683487e3677456050ff77fcf5e6204e98caf785ad1967"},
+ {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5372ca1df0f91a86b047d1277c2aaf1edb32d78bbcefffc81b40ffd18f027ed"},
+ {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:51af598701f5299012b8416486b40fceef8c26fc87dc6d7d1f6fc30609ea0aa6"},
+ {file = "yarl-1.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b266bd01fedeffeeac01a79ae181719ff848a5a13ce10075adbefc8f1daee70e"},
+ {file = "yarl-1.22.0-cp311-cp311-win32.whl", hash = "sha256:a9b1ba5610a4e20f655258d5a1fdc7ebe3d837bb0e45b581398b99eb98b1f5ca"},
+ {file = "yarl-1.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:078278b9b0b11568937d9509b589ee83ef98ed6d561dfe2020e24a9fd08eaa2b"},
+ {file = "yarl-1.22.0-cp311-cp311-win_arm64.whl", hash = "sha256:b6a6f620cfe13ccec221fa312139135166e47ae169f8253f72a0abc0dae94376"},
+ {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e340382d1afa5d32b892b3ff062436d592ec3d692aeea3bef3a5cfe11bbf8c6f"},
+ {file = "yarl-1.22.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f1e09112a2c31ffe8d80be1b0988fa6a18c5d5cad92a9ffbb1c04c91bfe52ad2"},
+ {file = "yarl-1.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:939fe60db294c786f6b7c2d2e121576628468f65453d86b0fe36cb52f987bd74"},
+ {file = "yarl-1.22.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e1651bf8e0398574646744c1885a41198eba53dc8a9312b954073f845c90a8df"},
+ {file = "yarl-1.22.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b8a0588521a26bf92a57a1705b77b8b59044cdceccac7151bd8d229e66b8dedb"},
+ {file = "yarl-1.22.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:42188e6a615c1a75bcaa6e150c3fe8f3e8680471a6b10150c5f7e83f47cc34d2"},
+ {file = "yarl-1.22.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f6d2cb59377d99718913ad9a151030d6f83ef420a2b8f521d94609ecc106ee82"},
+ {file = "yarl-1.22.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:50678a3b71c751d58d7908edc96d332af328839eea883bb554a43f539101277a"},
+ {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e8fbaa7cec507aa24ea27a01456e8dd4b6fab829059b69844bd348f2d467124"},
+ {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:433885ab5431bc3d3d4f2f9bd15bfa1614c522b0f1405d62c4f926ccd69d04fa"},
+ {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:b790b39c7e9a4192dc2e201a282109ed2985a1ddbd5ac08dc56d0e121400a8f7"},
+ {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31f0b53913220599446872d757257be5898019c85e7971599065bc55065dc99d"},
+ {file = "yarl-1.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a49370e8f711daec68d09b821a34e1167792ee2d24d405cbc2387be4f158b520"},
+ {file = "yarl-1.22.0-cp312-cp312-win32.whl", hash = "sha256:70dfd4f241c04bd9239d53b17f11e6ab672b9f1420364af63e8531198e3f5fe8"},
+ {file = "yarl-1.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:8884d8b332a5e9b88e23f60bb166890009429391864c685e17bd73a9eda9105c"},
+ {file = "yarl-1.22.0-cp312-cp312-win_arm64.whl", hash = "sha256:ea70f61a47f3cc93bdf8b2f368ed359ef02a01ca6393916bc8ff877427181e74"},
+ {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8dee9c25c74997f6a750cd317b8ca63545169c098faee42c84aa5e506c819b53"},
+ {file = "yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01e73b85a5434f89fc4fe27dcda2aff08ddf35e4d47bbbea3bdcd25321af538a"},
+ {file = "yarl-1.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:22965c2af250d20c873cdbee8ff958fb809940aeb2e74ba5f20aaf6b7ac8c70c"},
+ {file = "yarl-1.22.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4f15793aa49793ec8d1c708ab7f9eded1aa72edc5174cae703651555ed1b601"},
+ {file = "yarl-1.22.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5542339dcf2747135c5c85f68680353d5cb9ffd741c0f2e8d832d054d41f35a"},
+ {file = "yarl-1.22.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5c401e05ad47a75869c3ab3e35137f8468b846770587e70d71e11de797d113df"},
+ {file = "yarl-1.22.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:243dda95d901c733f5b59214d28b0120893d91777cb8aa043e6ef059d3cddfe2"},
+ {file = "yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bec03d0d388060058f5d291a813f21c011041938a441c593374da6077fe21b1b"},
+ {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0748275abb8c1e1e09301ee3cf90c8a99678a4e92e4373705f2a2570d581273"},
+ {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:47fdb18187e2a4e18fda2c25c05d8251a9e4a521edaed757fef033e7d8498d9a"},
+ {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c7044802eec4524fde550afc28edda0dd5784c4c45f0be151a2d3ba017daca7d"},
+ {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:139718f35149ff544caba20fce6e8a2f71f1e39b92c700d8438a0b1d2a631a02"},
+ {file = "yarl-1.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e1b51bebd221006d3d2f95fbe124b22b247136647ae5dcc8c7acafba66e5ee67"},
+ {file = "yarl-1.22.0-cp313-cp313-win32.whl", hash = "sha256:d3e32536234a95f513bd374e93d717cf6b2231a791758de6c509e3653f234c95"},
+ {file = "yarl-1.22.0-cp313-cp313-win_amd64.whl", hash = "sha256:47743b82b76d89a1d20b83e60d5c20314cbd5ba2befc9cda8f28300c4a08ed4d"},
+ {file = "yarl-1.22.0-cp313-cp313-win_arm64.whl", hash = "sha256:5d0fcda9608875f7d052eff120c7a5da474a6796fe4d83e152e0e4d42f6d1a9b"},
+ {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:719ae08b6972befcba4310e49edb1161a88cdd331e3a694b84466bd938a6ab10"},
+ {file = "yarl-1.22.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:47d8a5c446df1c4db9d21b49619ffdba90e77c89ec6e283f453856c74b50b9e3"},
+ {file = "yarl-1.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cfebc0ac8333520d2d0423cbbe43ae43c8838862ddb898f5ca68565e395516e9"},
+ {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4398557cbf484207df000309235979c79c4356518fd5c99158c7d38203c4da4f"},
+ {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2ca6fd72a8cd803be290d42f2dec5cdcd5299eeb93c2d929bf060ad9efaf5de0"},
+ {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ca1f59c4e1ab6e72f0a23c13fca5430f889634166be85dbf1013683e49e3278e"},
+ {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6c5010a52015e7c70f86eb967db0f37f3c8bd503a695a49f8d45700144667708"},
+ {file = "yarl-1.22.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d7672ecf7557476642c88497c2f8d8542f8e36596e928e9bcba0e42e1e7d71f"},
+ {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b7c88eeef021579d600e50363e0b6ee4f7f6f728cd3486b9d0f3ee7b946398d"},
+ {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f4afb5c34f2c6fecdcc182dfcfc6af6cccf1aa923eed4d6a12e9d96904e1a0d8"},
+ {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:59c189e3e99a59cf8d83cbb31d4db02d66cda5a1a4374e8a012b51255341abf5"},
+ {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:5a3bf7f62a289fa90f1990422dc8dff5a458469ea71d1624585ec3a4c8d6960f"},
+ {file = "yarl-1.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:de6b9a04c606978fdfe72666fa216ffcf2d1a9f6a381058d4378f8d7b1e5de62"},
+ {file = "yarl-1.22.0-cp313-cp313t-win32.whl", hash = "sha256:1834bb90991cc2999f10f97f5f01317f99b143284766d197e43cd5b45eb18d03"},
+ {file = "yarl-1.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff86011bd159a9d2dfc89c34cfd8aff12875980e3bd6a39ff097887520e60249"},
+ {file = "yarl-1.22.0-cp313-cp313t-win_arm64.whl", hash = "sha256:7861058d0582b847bc4e3a4a4c46828a410bca738673f35a29ba3ca5db0b473b"},
+ {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:34b36c2c57124530884d89d50ed2c1478697ad7473efd59cfd479945c95650e4"},
+ {file = "yarl-1.22.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:0dd9a702591ca2e543631c2a017e4a547e38a5c0f29eece37d9097e04a7ac683"},
+ {file = "yarl-1.22.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:594fcab1032e2d2cc3321bb2e51271e7cd2b516c7d9aee780ece81b07ff8244b"},
+ {file = "yarl-1.22.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3d7a87a78d46a2e3d5b72587ac14b4c16952dd0887dbb051451eceac774411e"},
+ {file = "yarl-1.22.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:852863707010316c973162e703bddabec35e8757e67fcb8ad58829de1ebc8590"},
+ {file = "yarl-1.22.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:131a085a53bfe839a477c0845acf21efc77457ba2bcf5899618136d64f3303a2"},
+ {file = "yarl-1.22.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:078a8aefd263f4d4f923a9677b942b445a2be970ca24548a8102689a3a8ab8da"},
+ {file = "yarl-1.22.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca03b91c323036913993ff5c738d0842fc9c60c4648e5c8d98331526df89784"},
+ {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:68986a61557d37bb90d3051a45b91fa3d5c516d177dfc6dd6f2f436a07ff2b6b"},
+ {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:4792b262d585ff0dff6bcb787f8492e40698443ec982a3568c2096433660c694"},
+ {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:ebd4549b108d732dba1d4ace67614b9545b21ece30937a63a65dd34efa19732d"},
+ {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f87ac53513d22240c7d59203f25cc3beac1e574c6cd681bbfd321987b69f95fd"},
+ {file = "yarl-1.22.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:22b029f2881599e2f1b06f8f1db2ee63bd309e2293ba2d566e008ba12778b8da"},
+ {file = "yarl-1.22.0-cp314-cp314-win32.whl", hash = "sha256:6a635ea45ba4ea8238463b4f7d0e721bad669f80878b7bfd1f89266e2ae63da2"},
+ {file = "yarl-1.22.0-cp314-cp314-win_amd64.whl", hash = "sha256:0d6e6885777af0f110b0e5d7e5dda8b704efed3894da26220b7f3d887b839a79"},
+ {file = "yarl-1.22.0-cp314-cp314-win_arm64.whl", hash = "sha256:8218f4e98d3c10d683584cb40f0424f4b9fd6e95610232dd75e13743b070ee33"},
+ {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:45c2842ff0e0d1b35a6bf1cd6c690939dacb617a70827f715232b2e0494d55d1"},
+ {file = "yarl-1.22.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d947071e6ebcf2e2bee8fce76e10faca8f7a14808ca36a910263acaacef08eca"},
+ {file = "yarl-1.22.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:334b8721303e61b00019474cc103bdac3d7b1f65e91f0bfedeec2d56dfe74b53"},
+ {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e7ce67c34138a058fd092f67d07a72b8e31ff0c9236e751957465a24b28910c"},
+ {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d77e1b2c6d04711478cb1c4ab90db07f1609ccf06a287d5607fcd90dc9863acf"},
+ {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c4647674b6150d2cae088fc07de2738a84b8bcedebef29802cf0b0a82ab6face"},
+ {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:efb07073be061c8f79d03d04139a80ba33cbd390ca8f0297aae9cce6411e4c6b"},
+ {file = "yarl-1.22.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e51ac5435758ba97ad69617e13233da53908beccc6cfcd6c34bbed8dcbede486"},
+ {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:33e32a0dd0c8205efa8e83d04fc9f19313772b78522d1bdc7d9aed706bfd6138"},
+ {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:bf4a21e58b9cde0e401e683ebd00f6ed30a06d14e93f7c8fd059f8b6e8f87b6a"},
+ {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e4b582bab49ac33c8deb97e058cd67c2c50dac0dd134874106d9c774fd272529"},
+ {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:0b5bcc1a9c4839e7e30b7b30dd47fe5e7e44fb7054ec29b5bb8d526aa1041093"},
+ {file = "yarl-1.22.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c0232bce2170103ec23c454e54a57008a9a72b5d1c3105dc2496750da8cfa47c"},
+ {file = "yarl-1.22.0-cp314-cp314t-win32.whl", hash = "sha256:8009b3173bcd637be650922ac455946197d858b3630b6d8787aa9e5c4564533e"},
+ {file = "yarl-1.22.0-cp314-cp314t-win_amd64.whl", hash = "sha256:9fb17ea16e972c63d25d4a97f016d235c78dd2344820eb35bc034bc32012ee27"},
+ {file = "yarl-1.22.0-cp314-cp314t-win_arm64.whl", hash = "sha256:9f6d73c1436b934e3f01df1e1b21ff765cd1d28c77dfb9ace207f746d4610ee1"},
+ {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3aa27acb6de7a23785d81557577491f6c38a5209a254d1191519d07d8fe51748"},
+ {file = "yarl-1.22.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:af74f05666a5e531289cb1cc9c883d1de2088b8e5b4de48004e5ca8a830ac859"},
+ {file = "yarl-1.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:62441e55958977b8167b2709c164c91a6363e25da322d87ae6dd9c6019ceecf9"},
+ {file = "yarl-1.22.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b580e71cac3f8113d3135888770903eaf2f507e9421e5697d6ee6d8cd1c7f054"},
+ {file = "yarl-1.22.0-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e81fda2fb4a07eda1a2252b216aa0df23ebcd4d584894e9612e80999a78fd95b"},
+ {file = "yarl-1.22.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:99b6fc1d55782461b78221e95fc357b47ad98b041e8e20f47c1411d0aacddc60"},
+ {file = "yarl-1.22.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:088e4e08f033db4be2ccd1f34cf29fe994772fb54cfe004bbf54db320af56890"},
+ {file = "yarl-1.22.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4e1f6f0b4da23e61188676e3ed027ef0baa833a2e633c29ff8530800edccba"},
+ {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:84fc3ec96fce86ce5aa305eb4aa9358279d1aa644b71fab7b8ed33fe3ba1a7ca"},
+ {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:5dbeefd6ca588b33576a01b0ad58aa934bc1b41ef89dee505bf2932b22ddffba"},
+ {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14291620375b1060613f4aab9ebf21850058b6b1b438f386cc814813d901c60b"},
+ {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a4fcfc8eb2c34148c118dfa02e6427ca278bfd0f3df7c5f99e33d2c0e81eae3e"},
+ {file = "yarl-1.22.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:029866bde8d7b0878b9c160e72305bbf0a7342bcd20b9999381704ae03308dc8"},
+ {file = "yarl-1.22.0-cp39-cp39-win32.whl", hash = "sha256:4dcc74149ccc8bba31ce1944acee24813e93cfdee2acda3c172df844948ddf7b"},
+ {file = "yarl-1.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:10619d9fdee46d20edc49d3479e2f8269d0779f1b031e6f7c2aa1c76be04b7ed"},
+ {file = "yarl-1.22.0-cp39-cp39-win_arm64.whl", hash = "sha256:dd7afd3f8b0bfb4e0d9fc3c31bfe8a4ec7debe124cfd90619305def3c8ca8cd2"},
+ {file = "yarl-1.22.0-py3-none-any.whl", hash = "sha256:1380560bdba02b6b6c90de54133c81c9f2a453dee9912fe58c1dcced1edb7cff"},
+ {file = "yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71"},
+]
+
+[package.dependencies]
+idna = ">=2.0"
+multidict = ">=4.0"
+propcache = ">=0.2.1"
+
+[[package]]
+name = "zipp"
+version = "3.20.2"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+optional = true
+python-versions = ">=3.8"
+files = [
+ {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"},
+ {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"},
+]
+
+[package.extras]
+check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"]
+cover = ["pytest-cov"]
+doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+enabler = ["pytest-enabler (>=2.2)"]
+test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"]
+type = ["pytest-mypy"]
+
+[extras]
+datastream = ["wasmtime", "websockets"]
+rulesengine = ["wasmtime"]
+
[metadata]
lock-version = "2.0"
python-versions = "^3.8"
-content-hash = "bcf31a142c86d9e556553c8c260a93b563ac64a043076dbd48b26111d422c26e"
+content-hash = "7f8cd32f6180e0e5180d40c7376b4ba77af39b5647c1c2e9b93f49aea5eb3ac3"