From a83a0a354f833a9a57ea0ae2c4c5998760350017 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 14:54:16 +0000 Subject: [PATCH] SDK regeneration --- .fern/metadata.json | 2 +- poetry.lock | 541 +++++++++--------- reference.md | 259 +++++---- src/truefoundry_sdk/__init__.py | 42 ++ src/truefoundry_sdk/applications/client.py | 4 +- .../applications/raw_client.py | 4 +- src/truefoundry_sdk/base_client.py | 36 +- .../internal/artifact_versions/client.py | 15 +- .../internal/artifact_versions/raw_client.py | 11 + src/truefoundry_sdk/types/__init__.py | 42 ++ .../types/agent_skill_version.py | 6 + src/truefoundry_sdk/types/application_type.py | 4 - .../types/flyte_task_custom_truefoundry.py | 3 +- .../types/flyte_task_template.py | 19 +- ...ateway_request_metadata_filter_operator.py | 16 + src/truefoundry_sdk/types/global_settings.py | 2 + .../types/guardrail_settings.py | 30 + .../types/identity_provider_mapping.py | 30 + .../types/internal_artifact_version.py | 12 +- ...st_artifact_versions_response_data_item.py | 6 +- .../types/mcp_server_o_auth2.py | 5 + .../types/model_cost_metric.py | 10 +- .../types/model_provider_account.py | 2 + .../native_snowflake_flyte_task_template.py | 24 + .../per_million_characters_cost_metric.py | 28 + ...er_million_characters_cost_metric_value.py | 19 + .../types/per_minute_of_audio_cost_metric.py | 28 + .../per_minute_of_audio_cost_metric_value.py | 19 + .../types/role_with_resource.py | 1 + src/truefoundry_sdk/types/session.py | 5 + .../types/smallest_ai_api_key_auth.py | 30 + .../types/smallest_ai_model.py | 48 ++ .../types/smallest_ai_provider_account.py | 56 ++ src/truefoundry_sdk/types/snowflake_config.py | 24 + src/truefoundry_sdk/types/snowflake_sql.py | 18 + .../types/snowflake_task_config.py | 46 ++ .../types/span_attribute_filter_operator.py | 16 + .../types/span_field_filter_operator.py | 16 + src/truefoundry_sdk/types/subject_type.py | 4 + src/truefoundry_sdk/types/team.py | 1 + src/truefoundry_sdk/types/team_manifest.py | 6 + .../types/truefoundry_flyte_task_template.py | 21 + .../types/usage_code_snippet.py | 17 +- src/truefoundry_sdk/types/user_metadata.py | 3 - .../types/virtual_account_manifest.py | 6 + 45 files changed, 1086 insertions(+), 451 deletions(-) create mode 100644 src/truefoundry_sdk/types/guardrail_settings.py create mode 100644 src/truefoundry_sdk/types/identity_provider_mapping.py create mode 100644 src/truefoundry_sdk/types/native_snowflake_flyte_task_template.py create mode 100644 src/truefoundry_sdk/types/per_million_characters_cost_metric.py create mode 100644 src/truefoundry_sdk/types/per_million_characters_cost_metric_value.py create mode 100644 src/truefoundry_sdk/types/per_minute_of_audio_cost_metric.py create mode 100644 src/truefoundry_sdk/types/per_minute_of_audio_cost_metric_value.py create mode 100644 src/truefoundry_sdk/types/smallest_ai_api_key_auth.py create mode 100644 src/truefoundry_sdk/types/smallest_ai_model.py create mode 100644 src/truefoundry_sdk/types/smallest_ai_provider_account.py create mode 100644 src/truefoundry_sdk/types/snowflake_config.py create mode 100644 src/truefoundry_sdk/types/snowflake_sql.py create mode 100644 src/truefoundry_sdk/types/snowflake_task_config.py create mode 100644 src/truefoundry_sdk/types/truefoundry_flyte_task_template.py diff --git a/.fern/metadata.json b/.fern/metadata.json index 57200e5c..82b70e0e 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -22,7 +22,7 @@ "numpydoc": ">=1.7.0,<2.0.0" } }, - "originGitCommit": "798bcf0fbbfb97b0a6b6c3723818c1395f3a269e", + "originGitCommit": "2b3f44246303ece6d45b2d3de15ba183cf659a3f", "originGitCommitIsDirty": false, "invokedBy": "ci", "requestedVersion": "0.0.0", diff --git a/poetry.lock b/poetry.lock index 27ad90d3..154fa765 100644 --- a/poetry.lock +++ b/poetry.lock @@ -710,13 +710,13 @@ httpx = ">=0.27.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] @@ -917,20 +917,20 @@ files = [ [[package]] name = "matplotlib-inline" -version = "0.2.1" +version = "0.2.2" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib_inline-0.2.1-py3-none-any.whl", hash = "sha256:d56ce5156ba6085e00a9d54fead6ed29a9c47e215cd1bba2e976ef39f5710a76"}, - {file = "matplotlib_inline-0.2.1.tar.gz", hash = "sha256:e1ee949c340d771fc39e241ea75683deb94762c8fa5f2927ec57c83c4dffa9fe"}, + {file = "matplotlib_inline-0.2.2-py3-none-any.whl", hash = "sha256:3c821cf1c209f59fb2d2d64abbf5b23b67bcb2210d663f9918dd851c6da1fcf6"}, + {file = "matplotlib_inline-0.2.2.tar.gz", hash = "sha256:72f3fe8fce36b70d4a5b612f899090cd0401deddc4ea90e1572b9f4bfb058c79"}, ] [package.dependencies] traitlets = "*" [package.extras] -test = ["flake8", "nbdime", "nbval", "notebook", "pytest"] +test = ["flake8", "matplotlib", "nbdime", "nbval", "notebook", "pytest"] [[package]] name = "multidict" @@ -1240,133 +1240,132 @@ wcwidth = "*" [[package]] name = "propcache" -version = "0.4.1" +version = "0.5.2" description = "Accelerated property cache" optional = true -python-versions = ">=3.9" +python-versions = ">=3.10" 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"}, + {file = "propcache-0.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a81be28596d6559f6131ef33e10200de6e17643b3c74ce03f9eb103be6ae8b"}, + {file = "propcache-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29cbaac5ea0212663e6845e04b5e188d5a6ae6dd919810ac835bf1d3b42c3f4c"}, + {file = "propcache-0.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6bf3be92233808fcd338eba0fb4d0b59ec5772af4f4ecfcec450d1bfc0f8b5eb"}, + {file = "propcache-0.5.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2f8ea531c794b9d6274acd4e8d2c2ebcac590a4361d27482edd3010b79f1325e"}, + {file = "propcache-0.5.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:decfca4c79dd53ebab484b00cc4b6717d8c369f86e74aa4ca395a64ac651495e"}, + {file = "propcache-0.5.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4621064bbf28fa77ff64dd5d94367c04684c67d3a5bf1dff25f0cd0d98a38f3b"}, + {file = "propcache-0.5.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b96db7141a592cbc968daf1feea83a118e6ab378af4abbc72b248c895414c22d"}, + {file = "propcache-0.5.2-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1ca071adabaab6e9219924bbe00af821f1ee7de113a9eca1cdc292de3d120f4d"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e4294d04a94dcab1b3bccd8b66d962dcad411a1d19414b2a41d1445f1de32ad0"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a0e399a2eccb91ed18721f86aa85757727400b6865c89e88934781deb9c8498b"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:823581fd5cb08b12a48bfa11fe962a7916766b6170c17b028fbdf762b85eb9bf"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:949c91d1a990cf3b2e8188dfcfb25005e0b834a06c63fa4ef9f360878ce21ecf"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:cc1177027eda740fdb152706bd215a3f124e3eea15afc39f2cb9fe351b50619e"}, + {file = "propcache-0.5.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b05d643f944a8c3c4bd86d65ffd87bf3264b617f87791940302bc474d2ff5274"}, + {file = "propcache-0.5.2-cp310-cp310-win32.whl", hash = "sha256:8114f28879e0904748e831c3a7774261bd9e75f49be089f389a76f959dcd13fe"}, + {file = "propcache-0.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:5fcb98e7598b1ee0addab320d90f65b530297a867dbfe9de52ea838077e16e3d"}, + {file = "propcache-0.5.2-cp310-cp310-win_arm64.whl", hash = "sha256:04dc2390d9edbbaef7461f33322555976ffddf0b650a038649d026358714e6c5"}, + {file = "propcache-0.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:74b70780220e2dd89175ca24b81b68b67c83db499ae611e7f2313cb329801c78"}, + {file = "propcache-0.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a4840ab0ae0216d952f4b53dc6d0b992bfc2bedbfe360bdd9b548bc184c08959"}, + {file = "propcache-0.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c6844ba6364fb12f403928a82cfd295ab103a2b315c77c747b2dbe4a41894ea7"}, + {file = "propcache-0.5.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2293949b855ce597f2826452d17c2d545fb5622379c4ea6fdf525e9b8e8a2511"}, + {file = "propcache-0.5.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0fd59b5af35f74da48d905dcbad55449ba13be91823cb05a9bd590bbf5b61660"}, + {file = "propcache-0.5.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:29f9309a2e42b0d273be006fdb4be2d6c39a47f6f57d8fb1cf9f81481df81b66"}, + {file = "propcache-0.5.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5aaa2b923c1944ac8febd6609cb373540a5563e7cbcb0fd770f75dace2eb817b"}, + {file = "propcache-0.5.2-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:66ea454f095ddf5b6b14f56c064c0941c4788be11e18d2464cf643bf7203ff67"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:95f1e3f4760d404b13c9976c0229b2b49a3c8e2c62a9ce92efdd2b11ada75e3f"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:85341b12b9d55bad0bded24cac341bb34289469e03a11f3f583ea1cc1db0326c"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:26a4dca084132874e639895c3135dfad5eb20bae209f62d1aeb31b03e601c3c0"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3b199b9b2b3d6a7edf3183ba8a9a137a22b97f7df525feb5ae1eccf026d2a9c6"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e59bc9e66329185b93dab73f210f1a37f81cb40f321501db8017c9aea15dba27"}, + {file = "propcache-0.5.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:552ffadf6ad409844bc5919c42a0a83d88314cedddaea0e41e80a8b8fffe881f"}, + {file = "propcache-0.5.2-cp311-cp311-win32.whl", hash = "sha256:cd416c1de191973c52ff1a12a57446bfc7642797b282d7caf2162d7d1b8aa9a0"}, + {file = "propcache-0.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:44e488ef40dbb452700b2b1f8188934121f6648f52c295055662d2191959ff82"}, + {file = "propcache-0.5.2-cp311-cp311-win_arm64.whl", hash = "sha256:54adaa85a22078d1e306304a40984dc5be99d599bf3dc0a24dc98f7daeab89ab"}, + {file = "propcache-0.5.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:806719138ecd720339a12410fb9614ac9b2b2d3a5fdf8235d56981c36f4039ba"}, + {file = "propcache-0.5.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:db2b80ea58eab4f86b2beec3cc8b39e8ff9276ac20e96b7cce43c8ae84cd6b5a"}, + {file = "propcache-0.5.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e5cbfac9f61484f7e9f3597775500cd3ebe8274e9b050c38f9525c77c97520bf"}, + {file = "propcache-0.5.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dbc581d2814337da56222fab8dc5f161cd798a434e49bac27930aaef798e144"}, + {file = "propcache-0.5.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:857187f381f88c8e2fa2fe56ab94879d011b883d5a2ee5a1b60a8cd2a06846d9"}, + {file = "propcache-0.5.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:178b4a2cdaac1818e2bf1c5a99b94383fa73ea5382e032a48dec07dc5668dc42"}, + {file = "propcache-0.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f328175a2cde1f0ff2c4ed8ce968b9dcfb55f3a7153f39e2957ed994da13476"}, + {file = "propcache-0.5.2-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5671d09a36b06d0fd4a3da0fccbcae360e9b1570924171a15e9e0997f0249fba"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80168e2ebe4d3ec6599d10ad8f520304ae1cad9b6c5a95372aef1b66b7bfb53a"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45f11346f884bc47444f6e6647131055844134c3175b629f84952e2b5cd62b64"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e778ebd44ef4f66ed60a0416b06b489687db264a9c0b3620362f26489492913"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:c0cb9ed24c8964e172768d455a38254c2dd8a552905729ce006cad3d3dda59b1"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1d1ad32d9d4355e2be65574fd0bfd3677e7066b009cd5b9b2dee8aa6a6393b33"}, + {file = "propcache-0.5.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c80f4ba3e8f00189165999a742ee526ebeccedf6c3f7beb0c7df821e9772435a"}, + {file = "propcache-0.5.2-cp312-cp312-win32.whl", hash = "sha256:8c7972d8f193740d9175f0998ab38717e6cd322d5935c5b0fef8c0d323fd9031"}, + {file = "propcache-0.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:d9ee8826a7d47863a08ac44e1a5f611a462eefc3a194b492da242128bec75b42"}, + {file = "propcache-0.5.2-cp312-cp312-win_arm64.whl", hash = "sha256:2800a4a8ead6b28cccd1ec54b59346f0def7922ee1c7598e8499c733cfbb7c84"}, + {file = "propcache-0.5.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:099aaf4b4d1a02265b92a977edf00b5c4f63b3b17ac6de39b0d637c9cac0188a"}, + {file = "propcache-0.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:68ce1c44c7a813a7f71ea04315a8c7b330b63db99d059a797a4651bb6f69f117"}, + {file = "propcache-0.5.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fc299c129490f55f254cd90be0deca4764e36e9a7c08b4aa588479a3bbed3098"}, + {file = "propcache-0.5.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a6ae2198be502c10f09b2516e7b5d019816924bc3183a43ce792a7bd6625e6f4"}, + {file = "propcache-0.5.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6041d31504dc1779d700e1edcfb08eea334b357620b06681a4eabb57a74e574e"}, + {file = "propcache-0.5.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7eabc04151c78a9f4d5bbb5f1faf571e4defeb4b585e0fe95b60ff2dbe4d3d7"}, + {file = "propcache-0.5.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4db0ba63d693afd40d249bd93f842b5f144f8fcbb83de05660373bcf30517b1d"}, + {file = "propcache-0.5.2-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1dbcf7675229b35d31abb6547d8ebc8c27a830ac3f9a794edff6254873ec7c0a"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d310c013aad2c72f1c3f2f8dd3279d460a858c551f97aeb8c63e4693cca7b4d2"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:06187263ddad280d05b4d8a8b3bb7d164cbebd469236544a42e6d9b28ac6a4fa"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3115559b8effafd63b142ea5ed53d63a16ea6469cbc63dce4ee194b42db5d853"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c60462af8e6dc30c35407c7237ea908d777b22862bbee27bc4699c0d8bcdc45a"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:40314bca9ac559716fe374094fc81c11dcc34b64fd6c585360f5775690505704"}, + {file = "propcache-0.5.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cfa21e036ce1e1db2be04ba3b85d2df1bb1702fa01932d984c5464c665228ff4"}, + {file = "propcache-0.5.2-cp313-cp313-win32.whl", hash = "sha256:f156a3529f38063b6dbaf356e15602a7f95f8055b1295a438433a6386f10463d"}, + {file = "propcache-0.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:dfed59d0a5aeb01e242e66ff0300bc4a265a7c05f612d30016f0b60b1017d757"}, + {file = "propcache-0.5.2-cp313-cp313-win_arm64.whl", hash = "sha256:ba338430e87ceb9c8f0cf754de38a9860560261e56c00376debd628698a7364f"}, + {file = "propcache-0.5.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a592f5f3da71c8691c788c13cb6734b6d17663d2e1cb8caddf0673d01ef8847d"}, + {file = "propcache-0.5.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6a997d0489e9668a384fcfd5061b857aa5361de73191cac204d04b889cfbbafa"}, + {file = "propcache-0.5.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:10734b5484ea113152ee25a91dccedf81631791805d2c9ccb054958e51842c94"}, + {file = "propcache-0.5.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cafca7e56c12bb02ae16d283742bef25a61122e9dab2b5b3f2ccbe589ce32164"}, + {file = "propcache-0.5.2-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f064f8d2b59177878b7615df1735cd8fe3462ed6be8c7b217d17a276489c2b7f"}, + {file = "propcache-0.5.2-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f78abfa8dfc32376fd1aacf597b2f2fbbe0ea751419aee718af5d4f82537ef8c"}, + {file = "propcache-0.5.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7467da8a9822bf1a55336f877340c5bcbd3c482afc43a99771169f74a26dedc"}, + {file = "propcache-0.5.2-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a6ddc6ac9e25de626c1f129c1b467d7ecd33ce2237d3fd0c4e429feef0a7ee1f"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2f22cbbac9e26a8e864c0985ff1268d5d939d53d9d9411a9824279097e03a2cb"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:fc76378c62a0f04d0cd82fbb1a2cd2d7e28fcb40d5873f28a6c44e388aaa2751"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:acd2c8edba48e31e58a363b8cf4e5c7db3b04b3f9e371f601df30d9b0d244836"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:452b5065457eb9991ec5eb38ff41d6cd4c991c9ac7c531c4d5849ae473a9a13f"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:3430bb2bfe1331885c427745a751e774ee679fd4344f80b97bf879815fe8fa55"}, + {file = "propcache-0.5.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cef6cea3922890dd6c9654971001fa797b526c16ab5e1e46c05fd6f877be7568"}, + {file = "propcache-0.5.2-cp313-cp313t-win32.whl", hash = "sha256:72d61e16dd78228b58c5d47be830ff3da7e5f139abdf0aef9d86cde1c5cf2191"}, + {file = "propcache-0.5.2-cp313-cp313t-win_amd64.whl", hash = "sha256:0958834041a0166d343b8d2cedcd8bcbaeb4fdbe0cf08320c5379f143c3be6e7"}, + {file = "propcache-0.5.2-cp313-cp313t-win_arm64.whl", hash = "sha256:6de8bd93ddde9b992cf2b2e0d796d501a19026b5b9fd87356d7d0779531a8d96"}, + {file = "propcache-0.5.2-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:46088abff4cba581dea21ae0467a480526cb25aa5f3c269e909f800328bc3999"}, + {file = "propcache-0.5.2-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fc88b26f08d634f7bc819a7852e5214f5802641ab8d9fd5326892292eee1993e"}, + {file = "propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:97797ebb098e670a2f92dd66f32897e30d7615b14e7f59711de23e30a9072539"}, + {file = "propcache-0.5.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba57fffe4ac99c5d30076161b5866336d97600769bad35cc68f7774b15298a4e"}, + {file = "propcache-0.5.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:583c19759d9eec1e5b69e2fbef36a7d9c326041be9746cb822d335c8cedc2979"}, + {file = "propcache-0.5.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d0326e2e5e1f3163fa306c834e48e8d490e5fae607a097a40c0648109b47ba80"}, + {file = "propcache-0.5.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e00820e192c8dbebcafb383ebbf99030895f09905e7a0eb2e0340a0bcc2bc825"}, + {file = "propcache-0.5.2-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c66afea89b1e43725731d2004732a046fe6fe955d51f952c3e95a7314a284a39"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d4dc37dec6c6cdad0b57881a5658fd14fbf53e333b1a86cf86559f190e1d9ec4"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:5570dbcc97571c15f68068e529c92715a12f8d54030e272d264b377e22bd17a5"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:f814362777a9f841adddb200ecdf8f5cb1e5a3c4b7a86378edbd6ccb26edd702"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:196913dea116aeb5a2ba95af4ddcb7ea85559ae07d8eee8751688310d09168c3"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:6e7b8719005dd1175be4ab1cd25e9b98659a5e0347331506ec6760d2773a7fb5"}, + {file = "propcache-0.5.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:51f96d685ab16e88cab128cd37a52c5da540809c8b879fa047731bfcb4ad35a4"}, + {file = "propcache-0.5.2-cp314-cp314-win32.whl", hash = "sha256:cc6fc3cc62e8501d3ed62894425040d2728ecddb1ed072737a5c70bd537aa9f0"}, + {file = "propcache-0.5.2-cp314-cp314-win_amd64.whl", hash = "sha256:81e3a30b0bb60caa22033dd0f8a3618d1d67356212514f62c57db75cb0ef410c"}, + {file = "propcache-0.5.2-cp314-cp314-win_arm64.whl", hash = "sha256:0d2c9bf8528f135dbb805ce027567e09164f7efa51a2be07458a2c0420f292d0"}, + {file = "propcache-0.5.2-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:4bc8ff1feffc6a61c7002ffe84634c41b822e104990ae009f44a0834430070bb"}, + {file = "propcache-0.5.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:79aa3ff0a9b566633b642fa9caf7e21ed1c13d6feca718187873f199e1514078"}, + {file = "propcache-0.5.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1b31822f4474c4036bae62de9402710051d431a606d6a0f907fec79935a071aa"}, + {file = "propcache-0.5.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:13fef48778b5a2a756523fdb781326b028ca75e32858b04f2cdd19f394564917"}, + {file = "propcache-0.5.2-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8b73ab70f1a3351fbc71f663b3e645af6dd0329100c353081cf69c37433fc6fe"}, + {file = "propcache-0.5.2-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5538d2c13d93e4698af7e092b57bc7298fd35d1d58e656ae18f23ee0d0378e03"}, + {file = "propcache-0.5.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd645f03898405cabe694fb8bc35241e3a9c332ec85627584fe3de201452b335"}, + {file = "propcache-0.5.2-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a473b3440261e0c60706e732b2ed2f517857344fc21bf48fdfe211e2d98eb285"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7afa37062e6650640e932e4cc9297d81f9f42d9944029cc386b8247dea4da837"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:8a90efd5777e996e42d568db9ac740b944d691e565cbfd31b2f7832f9184b2b8"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:f19bb891234d72535764d703bfed1153cc34f4214d5bd7150aee1eec9e8f4366"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:32775082acd2d807ee3db715c7770d38767b817870acfa08c29e057f3c4d5b56"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:9282fb1a3bccd038da9f768b927b24a0c753e466c086b7c4f3c6982851eefb2d"}, + {file = "propcache-0.5.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cc49723e2f60d6b32a0f0b08a3fd6d13203c07f1cd9566cfce0f12a917c967a2"}, + {file = "propcache-0.5.2-cp314-cp314t-win32.whl", hash = "sha256:2d7aa89ebca5acc98cba9d1472d976e394782f587bad6661003602a619fd1821"}, + {file = "propcache-0.5.2-cp314-cp314t-win_amd64.whl", hash = "sha256:d447bb0b3054be5818458fbb171208b1d9ff11eba14e18ca18b90cbb45767370"}, + {file = "propcache-0.5.2-cp314-cp314t-win_arm64.whl", hash = "sha256:fe67a3d11cd9b4efabfa45c3d00ffba2b26811442a73a581a94b67c2b5faccf6"}, + {file = "propcache-0.5.2-py3-none-any.whl", hash = "sha256:be1ddfcbb376e3de5d2e2db1d58d6d67463e6b4f9f040c000de8e300295465fe"}, + {file = "propcache-0.5.2.tar.gz", hash = "sha256:01c4fc7480cd0598bb4b57022df55b9ca296da7fc5a8760bd8451a7e63a7d427"}, ] [[package]] @@ -1396,18 +1395,18 @@ tests = ["pytest"] [[package]] name = "pydantic" -version = "2.13.3" +version = "2.13.4" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" files = [ - {file = "pydantic-2.13.3-py3-none-any.whl", hash = "sha256:6db14ac8dfc9a1e57f87ea2c0de670c251240f43cb0c30a5130e9720dc612927"}, - {file = "pydantic-2.13.3.tar.gz", hash = "sha256:af09e9d1d09f4e7fe37145c1f577e1d61ceb9a41924bf0094a36506285d0a84d"}, + {file = "pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba"}, + {file = "pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.46.3" +pydantic-core = "2.46.4" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -1417,131 +1416,131 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.46.3" +version = "2.46.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" files = [ - {file = "pydantic_core-2.46.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da3786b8018e60349680720158cc19161cc3b4bdd815beb0a321cd5ce1ad5b1"}, - {file = "pydantic_core-2.46.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:cc0988cb29d21bf4a9d5cf2ef970b5c0e38d8d8e107a493278c05dc6c1dda69f"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27f9067c3bfadd04c55484b89c0d267981b2f3512850f6f66e1e74204a4e4ce3"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a642ac886ecf6402d9882d10c405dcf4b902abeb2972cd5fb4a48c83cd59279a"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79f561438481f28681584b89e2effb22855e2179880314bcddbf5968e935e807"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57a973eae4665352a47cf1a99b4ee864620f2fe663a217d7a8da68a1f3a5bfda"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d002b97072a53ea150d63e0a3adfae5670cef5aa8a6e490240e482d3b22e57"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b40ddd51e7c44b28cfaef746c9d3c506d658885e0a46f9eeef2ee815cbf8e045"}, - {file = "pydantic_core-2.46.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac5ec7fb9b87f04ee839af2d53bcadea57ded7d229719f56c0ed895bff987943"}, - {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a3b11c812f61b3129c4905781a2601dfdfdea5fe1e6c1cfb696b55d14e9c054f"}, - {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:1108da631e602e5b3c38d6d04fe5bb3bfa54349e6918e3ca6cf570b2e2b2f9d4"}, - {file = "pydantic_core-2.46.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de885175515bcfa98ae618c1df7a072f13d179f81376c8007112af20567fd08a"}, - {file = "pydantic_core-2.46.3-cp310-cp310-win32.whl", hash = "sha256:d11058e3201527d41bc6b545c79187c9e4bf85e15a236a6007f0e991518882b7"}, - {file = "pydantic_core-2.46.3-cp310-cp310-win_amd64.whl", hash = "sha256:3612edf65c8ea67ac13616c4d23af12faef1ae435a8a93e5934c2a0cbbdd1fd6"}, - {file = "pydantic_core-2.46.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ab124d49d0459b2373ecf54118a45c28a1e6d4192a533fbc915e70f556feb8e5"}, - {file = "pydantic_core-2.46.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cca67d52a5c7a16aed2b3999e719c4bcf644074eac304a5d3d62dd70ae7d4b2c"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c024e08c0ba23e6fd68c771a521e9d6a792f2ebb0fa734296b36394dc30390e"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6645ce7eec4928e29a1e3b3d5c946621d105d3e79f0c9cddf07c2a9770949287"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a712c7118e6c5ea96562f7b488435172abb94a3c53c22c9efc1412264a45cbbe"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69a868ef3ff206343579021c40faf3b1edc64b1cc508ff243a28b0a514ccb050"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc7e8c32db809aa0f6ea1d6869ebc8518a65d5150fdfad8bcae6a49ae32a22e2"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:3481bd1341dc85779ee506bc8e1196a277ace359d89d28588a9468c3ecbe63fa"}, - {file = "pydantic_core-2.46.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8690eba565c6d68ffd3a8655525cbdd5246510b44a637ee2c6c03a7ebfe64d3c"}, - {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4de88889d7e88d50d40ee5b39d5dac0bcaef9ba91f7e536ac064e6b2834ecccf"}, - {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:e480080975c1ef7f780b8f99ed72337e7cc5efea2e518a20a692e8e7b278eb8b"}, - {file = "pydantic_core-2.46.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:de3a5c376f8cd94da9a1b8fd3dd1c16c7a7b216ed31dc8ce9fd7a22bf13b836e"}, - {file = "pydantic_core-2.46.3-cp311-cp311-win32.whl", hash = "sha256:fc331a5314ffddd5385b9ee9d0d2fee0b13c27e0e02dad71b1ae5d6561f51eeb"}, - {file = "pydantic_core-2.46.3-cp311-cp311-win_amd64.whl", hash = "sha256:b5b9c6cf08a8a5e502698f5e153056d12c34b8fb30317e0c5fd06f45162a6346"}, - {file = "pydantic_core-2.46.3-cp311-cp311-win_arm64.whl", hash = "sha256:5dfd51cf457482f04ec49491811a2b8fd5b843b64b11eecd2d7a1ee596ea78a6"}, - {file = "pydantic_core-2.46.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b11b59b3eee90a80a36701ddb4576d9ae31f93f05cb9e277ceaa09e6bf074a67"}, - {file = "pydantic_core-2.46.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:af8653713055ea18a3abc1537fe2ebc42f5b0bbb768d1eb79fd74eb47c0ac089"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75a519dab6d63c514f3a81053e5266c549679e4aa88f6ec57f2b7b854aceb1b0"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6cd87cb1575b1ad05ba98894c5b5c96411ef678fa2f6ed2576607095b8d9789"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f80a55484b8d843c8ada81ebf70a682f3f00a3d40e378c06cf17ecb44d280d7d"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3861f1731b90c50a3266316b9044f5c9b405eecb8e299b0a7120596334e4fe9c"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb528e295ed31570ac3dcc9bfdd6e0150bc11ce6168ac87a8082055cf1a67395"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:367508faa4973b992b271ba1494acaab36eb7e8739d1e47be5035fb1ea225396"}, - {file = "pydantic_core-2.46.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ad3c826fe523e4becf4fe39baa44286cff85ef137c729a2c5e269afbfd0905d"}, - {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ec638c5d194ef8af27db69f16c954a09797c0dc25015ad6123eb2c73a4d271ca"}, - {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:28ed528c45446062ee66edb1d33df5d88828ae167de76e773a3c7f64bd14e976"}, - {file = "pydantic_core-2.46.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aed19d0c783886d5bd86d80ae5030006b45e28464218747dcf83dabfdd092c7b"}, - {file = "pydantic_core-2.46.3-cp312-cp312-win32.whl", hash = "sha256:06d5d8820cbbdb4147578c1fe7ffcd5b83f34508cb9f9ab76e807be7db6ff0a4"}, - {file = "pydantic_core-2.46.3-cp312-cp312-win_amd64.whl", hash = "sha256:c3212fda0ee959c1dd04c60b601ec31097aaa893573a3a1abd0a47bcac2968c1"}, - {file = "pydantic_core-2.46.3-cp312-cp312-win_arm64.whl", hash = "sha256:f1f8338dd7a7f31761f1f1a3c47503a9a3b34eea3c8b01fa6ee96408affb5e72"}, - {file = "pydantic_core-2.46.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:12bc98de041458b80c86c56b24df1d23832f3e166cbaff011f25d187f5c62c37"}, - {file = "pydantic_core-2.46.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:85348b8f89d2c3508b65b16c3c33a4da22b8215138d8b996912bb1532868885f"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1105677a6df914b1fb71a81b96c8cce7726857e1717d86001f29be06a25ee6f8"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87082cd65669a33adeba5470769e9704c7cf026cc30afb9cc77fd865578ebaad"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60e5f66e12c4f5212d08522963380eaaeac5ebd795826cfd19b2dfb0c7a52b9c"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b6cdf19bf84128d5e7c37e8a73a0c5c10d51103a650ac585d42dd6ae233f2b7f"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:031bb17f4885a43773c8c763089499f242aee2ea85cf17154168775dccdecf35"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:bcf2a8b2982a6673693eae7348ef3d8cf3979c1d63b54fca7c397a635cc68687"}, - {file = "pydantic_core-2.46.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28e8cf2f52d72ced402a137145923a762cbb5081e48b34312f7a0c8f55928ec3"}, - {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:17eaface65d9fc5abb940003020309c1bf7a211f5f608d7870297c367e6f9022"}, - {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:93fd339f23408a07e98950a89644f92c54d8729719a40b30c0a30bb9ebc55d23"}, - {file = "pydantic_core-2.46.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:23cbdb3aaa74dfe0837975dbf69b469753bbde8eacace524519ffdb6b6e89eb7"}, - {file = "pydantic_core-2.46.3-cp313-cp313-win32.whl", hash = "sha256:610eda2e3838f401105e6326ca304f5da1e15393ae25dacae5c5c63f2c275b13"}, - {file = "pydantic_core-2.46.3-cp313-cp313-win_amd64.whl", hash = "sha256:68cc7866ed863db34351294187f9b729964c371ba33e31c26f478471c52e1ed0"}, - {file = "pydantic_core-2.46.3-cp313-cp313-win_arm64.whl", hash = "sha256:f64b5537ac62b231572879cd08ec05600308636a5d63bcbdb15063a466977bec"}, - {file = "pydantic_core-2.46.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:afa3aa644f74e290cdede48a7b0bee37d1c35e71b05105f6b340d484af536d9b"}, - {file = "pydantic_core-2.46.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ced3310e51aa425f7f77da8bbbb5212616655bedbe82c70944320bc1dbe5e018"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e29908922ce9da1a30b4da490bd1d3d82c01dcfdf864d2a74aacee674d0bfa34"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0c9ff69140423eea8ed2d5477df3ba037f671f5e897d206d921bc9fdc39613e7"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b675ab0a0d5b1c8fdb81195dc5bcefea3f3c240871cdd7ff9a2de8aa50772eb2"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0087084960f209a9a4af50ecd1fb063d9ad3658c07bb81a7a53f452dacbfb2ba"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed42e6cc8e1b0e2b9b96e2276bad70ae625d10d6d524aed0c93de974ae029f9f"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:f1771ce258afb3e4201e67d154edbbae712a76a6081079fe247c2f53c6322c22"}, - {file = "pydantic_core-2.46.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7610b6a5242a6c736d8ad47fd5fff87fcfe8f833b281b1c409c3d6835d9227f"}, - {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:ff5e7783bcc5476e1db448bf268f11cb257b1c276d3e89f00b5727be86dd0127"}, - {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:9d2e32edcc143bc01e95300671915d9ca052d4f745aa0a49c48d4803f8a85f2c"}, - {file = "pydantic_core-2.46.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d83d1c6b87fa56b521479cff237e626a292f3b31b6345c15a99121b454c1"}, - {file = "pydantic_core-2.46.3-cp314-cp314-win32.whl", hash = "sha256:07bc6d2a28c3adb4f7c6ae46aa4f2d2929af127f587ed44057af50bf1ce0f505"}, - {file = "pydantic_core-2.46.3-cp314-cp314-win_amd64.whl", hash = "sha256:8940562319bc621da30714617e6a7eaa6b98c84e8c685bcdc02d7ed5e7c7c44e"}, - {file = "pydantic_core-2.46.3-cp314-cp314-win_arm64.whl", hash = "sha256:5dcbbcf4d22210ced8f837c96db941bdb078f419543472aca5d9a0bb7cddc7df"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:d0fe3dce1e836e418f912c1ad91c73357d03e556a4d286f441bf34fed2dbeecf"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9ce92e58abc722dac1bf835a6798a60b294e48eb0e625ec9fd994b932ac5feee"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a03e6467f0f5ab796a486146d1b887b2dc5e5f9b3288898c1b1c3ad974e53e4a"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2798b6ba041b9d70acfb9071a2ea13c8456dd1e6a5555798e41ba7b0790e329c"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9be3e221bdc6d69abf294dcf7aff6af19c31a5cdcc8f0aa3b14be29df4bd03b1"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13936129ce841f2a5ddf6f126fea3c43cd128807b5a59588c37cf10178c2e64"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28b5f2ef03416facccb1c6ef744c69793175fd27e44ef15669201601cf423acb"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:830d1247d77ad23852314f069e9d7ddafeec5f684baf9d7e7065ed46a049c4e6"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0793c90c1a3c74966e7975eaef3ed30ebdff3260a0f815a62a22adc17e4c01c"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:d2d0aead851b66f5245ec0c4fb2612ef457f8bbafefdf65a2bf9d6bac6140f47"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:2f40e4246676beb31c5ce77c38a55ca4e465c6b38d11ea1bd935420568e0b1ab"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:cf489cf8986c543939aeee17a09c04d6ffb43bfef8ca16fcbcc5cfdcbed24dba"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-win32.whl", hash = "sha256:ffe0883b56cfc05798bf994164d2b2ff03efe2d22022a2bb080f3b626176dd56"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-win_amd64.whl", hash = "sha256:706d9d0ce9cf4593d07270d8e9f53b161f90c57d315aeec4fb4fd7a8b10240d8"}, - {file = "pydantic_core-2.46.3-cp314-cp314t-win_arm64.whl", hash = "sha256:77706aeb41df6a76568434701e0917da10692da28cb69d5fb6919ce5fdb07374"}, - {file = "pydantic_core-2.46.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fa3eb7c2995aa443687a825bc30395c8521b7c6ec201966e55debfd1128bcceb"}, - {file = "pydantic_core-2.46.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d08782c4045f90724b44c95d35ebec0d67edb8a957a2ac81d5a8e4b8a200495"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:831eb19aa789a97356979e94c981e5667759301fb708d1c0d5adf1bc0098b873"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4335e87c7afa436a0dfa899e138d57a72f8aad542e2cf19c36fb428461caabd0"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99421e7684a60f7f3550a1d159ade5fdff1954baedb6bdd407cba6a307c9f27d"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd81f6907932ebac3abbe41378dac64b2380db1287e2aa64d8d88f78d170f51a"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f247596366f4221af52beddd65af1218797771d6989bc891a0b86ccaa019168"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:6dff8cc884679df229ebc6d8eb2321ea6f8e091bc7d4886d4dc2e0e71452843c"}, - {file = "pydantic_core-2.46.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68ef2f623dda6d5a9067ac014e406c020c780b2a358930a7e5c1b73702900720"}, - {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d56bdb4af1767cc15b0386b3c581fdfe659bb9ee4a4f776e92c1cd9d074000d6"}, - {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:91249bcb7c165c2fb2a2f852dbc5c91636e2e218e75d96dfdd517e4078e173dd"}, - {file = "pydantic_core-2.46.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b068543bdb707f5d935dab765d99227aa2545ef2820935f2e5dd801795c7dbd"}, - {file = "pydantic_core-2.46.3-cp39-cp39-win32.whl", hash = "sha256:dcda6583921c05a40533f982321532f2d8db29326c7b95c4026941fa5074bd79"}, - {file = "pydantic_core-2.46.3-cp39-cp39-win_amd64.whl", hash = "sha256:a35cc284c8dd7edae8a31533713b4d2467dfe7c4f1b5587dd4031f28f90d1d13"}, - {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:9715525891ed524a0a1eb6d053c74d4d4ad5017677fb00af0b7c2644a31bae46"}, - {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:9d2f400712a99a013aff420ef1eb9be077f8189a36c1e3ef87660b4e1088a874"}, - {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd2aab0e2e9dc2daf36bd2686c982535d5e7b1d930a1344a7bb6e82baab42a76"}, - {file = "pydantic_core-2.46.3-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e9d76736da5f362fabfeea6a69b13b7f2be405c6d6966f06b2f6bfff7e64531"}, - {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:b12dd51f1187c2eb489af8e20f880362db98e954b54ab792fa5d92e8bcc6b803"}, - {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:f00a0961b125f1a47af7bcc17f00782e12f4cd056f83416006b30111d941dfa3"}, - {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57697d7c056aca4bbb680200f96563e841a6386ac1129370a0102592f4dddff5"}, - {file = "pydantic_core-2.46.3-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd35aa21299def8db7ef4fe5c4ff862941a9a158ca7b63d61e66fe67d30416b4"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:13afdd885f3d71280cf286b13b310ee0f7ccfefd1dbbb661514a474b726e2f25"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f91c0aff3e3ee0928edd1232c57f643a7a003e6edf1860bc3afcdc749cb513f3"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6529d1d128321a58d30afcc97b49e98836542f68dd41b33c2e972bb9e5290536"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:975c267cff4f7e7272eacbe50f6cc03ca9a3da4c4fbd66fffd89c94c1e311aa1"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:2b8e4f2bbdf71415c544b4b1138b8060db7b6611bc927e8064c769f64bed651c"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e61ea8e9fff9606d09178f577ff8ccdd7206ff73d6552bcec18e1033c4254b85"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b504bda01bafc69b6d3c7a0c7f039dcf60f47fab70e06fe23f57b5c75bdc82b8"}, - {file = "pydantic_core-2.46.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:b00b76f7142fc60c762ce579bd29c8fa44aaa56592dd3c54fab3928d0d4ca6ff"}, - {file = "pydantic_core-2.46.3.tar.gz", hash = "sha256:41c178f65b8c29807239d47e6050262eb6bf84eb695e41101e62e38df4a5bc2c"}, + {file = "pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4"}, + {file = "pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01"}, + {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d"}, + {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4"}, + {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f"}, + {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39"}, + {file = "pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d"}, + {file = "pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf"}, + {file = "pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594"}, + {file = "pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398"}, + {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3"}, + {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848"}, + {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3"}, + {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109"}, + {file = "pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda"}, + {file = "pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33"}, + {file = "pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d"}, + {file = "pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2"}, + {file = "pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987"}, + {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b"}, + {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458"}, + {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b"}, + {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c"}, + {file = "pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894"}, + {file = "pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89"}, + {file = "pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a"}, + {file = "pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008"}, + {file = "pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262"}, + {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e"}, + {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd"}, + {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be"}, + {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d"}, + {file = "pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb"}, + {file = "pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292"}, + {file = "pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d"}, + {file = "pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb"}, + {file = "pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c"}, + {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb"}, + {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898"}, + {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e"}, + {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519"}, + {file = "pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4"}, + {file = "pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac"}, + {file = "pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5"}, + {file = "pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596"}, + {file = "pydantic_core-2.46.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fd8b3d9fd264be37976686c7f65cd52a83f5e84f4bfd2adf9c1d469676bbb6ae"}, + {file = "pydantic_core-2.46.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9f444c499b3eefd3a92e348059471ea0c3a6e303d9c1cec09fa748fd9f895201"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3447661d99f75a3683a4cf5c87da72f2161964611864dbbeac7fbb118bb4bfc0"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b9bab013d1c7a79d3501ff86d0bc9c31bf587db4551677b96bec07df78c6b15"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d995260fdf4e1db774581b4900e0f832abe3c7c84996726bbc161b19c8f29e76"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13a646d65d09fbf1bc6b3a9635d30095c8e7e5cc419ff35ecc563c5fd04cd49"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432c179df7874eeb73307aad2df0755e1ae0efa61ff0ea89b93e194411ae3928"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:e68b7a074f65a2fd746c52a7ce6142ab7006074ac269ace0c25cd8ba171f8066"}, + {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4a05d69cba51d852c5c3e92758653245a50c0b646ced0cf05bd793ed592839d6"}, + {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:228ee9bae8bef5b1e97ec58302f80357c37199e0d0a99174e138d28e6957b9d9"}, + {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:10e17cbb10a330363733efc4d7c4d0dd827ac0909b8f6a6542298fed1ea62f29"}, + {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:91a06d2e259ecfbd8c901d70c3c507900458498142b3026a296b7de4d1322cc9"}, + {file = "pydantic_core-2.46.4-cp39-cp39-win32.whl", hash = "sha256:d80ee3d731373b24cebbc10d689ca4ee1875caf0d5703a245db18efd4dd37fc1"}, + {file = "pydantic_core-2.46.4-cp39-cp39-win_amd64.whl", hash = "sha256:3be77f45df024d789a672ae34f8b06fb346c4f9f46ea714956660ea4862e89ac"}, + {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c"}, + {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b"}, + {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b"}, + {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea"}, + {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7"}, + {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df"}, + {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526"}, + {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc"}, + {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983"}, + {file = "pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1"}, ] [package.dependencies] @@ -1640,13 +1639,13 @@ six = ">=1.5" [[package]] name = "requests" -version = "2.33.1" +version = "2.34.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.10" files = [ - {file = "requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a"}, - {file = "requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517"}, + {file = "requests-2.34.0-py3-none-any.whl", hash = "sha256:917520a21b767485ce7c588f4ebb917c436b24a31231b44228715eaeb5a52c60"}, + {file = "requests-2.34.0.tar.gz", hash = "sha256:7d62fe92f50eb82c529b0916bb445afa1531a566fc8f35ffdc64446e771b856a"}, ] [package.dependencies] @@ -1914,28 +1913,28 @@ files = [ [[package]] name = "traitlets" -version = "5.14.3" +version = "5.15.0" description = "Traitlets Python configuration system" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, - {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, + {file = "traitlets-5.15.0-py3-none-any.whl", hash = "sha256:fb36a18867a6803deab09f3c5e0fa81bb7b26a5c9e82501c9933f759166eff40"}, + {file = "traitlets-5.15.0.tar.gz", hash = "sha256:4fead733f81cf1c4c938e06f8ca4633896833c9d89eff878159457f4d4392971"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "mypy (>=1.7.0,<1.19)", "pre-commit", "pytest (>=7.0,<8.2)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "types-python-dateutil" -version = "2.9.0.20260408" +version = "2.9.0.20260508" description = "Typing stubs for python-dateutil" optional = false python-versions = ">=3.10" files = [ - {file = "types_python_dateutil-2.9.0.20260408-py3-none-any.whl", hash = "sha256:473139d514a71c9d1fbd8bb328974bedcb1cc3dba57aad04ffa4157f483c216f"}, - {file = "types_python_dateutil-2.9.0.20260408.tar.gz", hash = "sha256:8b056ec01568674235f64ecbcef928972a5fac412f5aab09c516dfa2acfbb582"}, + {file = "types_python_dateutil-2.9.0.20260508-py3-none-any.whl", hash = "sha256:bfc6fd2d81aa86e5ac97206a64304f6bd247426eedbca9b98619bbc48c6a1c10"}, + {file = "types_python_dateutil-2.9.0.20260508.tar.gz", hash = "sha256:596a6d63d81f587bf04c8254fb78df9d2344e915ce67948d7400512e3a6206d5"}, ] [[package]] @@ -1965,13 +1964,13 @@ typing-extensions = ">=4.12.0" [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4"}, - {file = "urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed"}, + {file = "urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897"}, + {file = "urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c"}, ] [package.extras] diff --git a/reference.md b/reference.md index 6f181ee5..b3c29d7b 100644 --- a/reference.md +++ b/reference.md @@ -3304,7 +3304,7 @@ client.applications.list(
-**application_type:** `typing.Optional[str]` — Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, spark-notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow +**application_type:** `typing.Optional[str]` — Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow
@@ -4654,8 +4654,8 @@ client.jobs.terminate( -## Environments -
client.environments.list(...) -> ListEnvironmentsResponse +## Workspaces +
client.workspaces.list(...) -> ListWorkspacesResponse
@@ -4667,7 +4667,7 @@ client.jobs.terminate(
-List environments, if no environments are found, default environments are created and returned. Pagination is available based on query parameters +List workspaces associated with the user. Optional filters include clusterId, fqn, and workspace name.
@@ -4689,9 +4689,13 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.environments.list( +client.workspaces.list( limit=10, offset=0, + cluster_id="clusterId", + name="name", + fqn="fqn", + include_cluster=True, ) ``` @@ -4724,6 +4728,38 @@ client.environments.list(
+**cluster_id:** `typing.Optional[str]` — ClusterId of the Cluster + +
+
+ +
+
+ +**name:** `typing.Optional[str]` — Workspace Name + +
+
+ +
+
+ +**fqn:** `typing.Optional[str]` — Workspace FQN + +
+
+ +
+
+ +**include_cluster:** `typing.Optional[bool]` — When true, each workspace includes cluster information + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -4736,7 +4772,7 @@ client.environments.list(
-
client.environments.create_or_update(...) -> GetEnvironmentResponse +
client.workspaces.create_or_update(...) -> GetWorkspaceResponse
@@ -4748,7 +4784,7 @@ client.environments.list(
-Creates a new Environment or updates an existing Environment. +Creates a new workspace or updates an existing one based on the provided manifest.
@@ -4763,20 +4799,18 @@ Creates a new Environment or updates an existing Environment.
```python -from truefoundry_sdk import TrueFoundry, EnvironmentManifest, EnvironmentColor, EnvironmentOptimizeFor +from truefoundry_sdk import TrueFoundry, WorkspaceManifest client = TrueFoundry( api_key="", base_url="https://yourhost.com/path/to/api", ) -client.environments.create_or_update( - manifest=EnvironmentManifest( - type="environment", +client.workspaces.create_or_update( + manifest=WorkspaceManifest( + type="workspace", + cluster_fqn="cluster_fqn", name="name", - color=EnvironmentColor(), - is_production=True, - optimize_for=EnvironmentOptimizeFor.COST, ), ) @@ -4794,7 +4828,7 @@ client.environments.create_or_update(
-**manifest:** `EnvironmentManifest` — Environment Manifest +**manifest:** `WorkspaceManifest` — Workspace manifest
@@ -4802,7 +4836,7 @@ client.environments.create_or_update(
-**dry_run:** `typing.Optional[bool]` — Dry run +**dry_run:** `typing.Optional[bool]` — Dry run the request
@@ -4822,7 +4856,7 @@ client.environments.create_or_update(
-
client.environments.get(...) -> GetEnvironmentResponse +
client.workspaces.search(...) -> ListWorkspacesResponse
@@ -4834,7 +4868,7 @@ client.environments.create_or_update(
-Get Environment associated with the provided id. +List workspaces the user can read with optional structured `filter` (name, id, environmentId, cluster_fqn) and pagination.
@@ -4856,8 +4890,11 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.environments.get( - id="id", +client.workspaces.search( + limit=10, + offset=0, + filter="filter", + include_cluster=True, ) ``` @@ -4874,7 +4911,31 @@ client.environments.get(
-**id:** `str` — Environment id +**limit:** `typing.Optional[int]` — Number of items per page + +
+
+ +
+
+ +**offset:** `typing.Optional[int]` — Number of items to skip + +
+
+ +
+
+ +**filter:** `typing.Optional[str]` — JSON string containing array of search filters with string, type and operator + +
+
+ +
+
+ +**include_cluster:** `typing.Optional[bool]` — When true, each workspace includes cluster information
@@ -4894,7 +4955,7 @@ client.environments.get(
-
client.environments.delete(...) -> bool +
client.workspaces.get(...) -> GetWorkspaceResponse
@@ -4906,7 +4967,7 @@ client.environments.get(
-Delete Environment associated with the provided id. +Get workspace associated with provided workspace id
@@ -4928,7 +4989,7 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.environments.delete( +client.workspaces.get( id="id", ) @@ -4946,7 +5007,7 @@ client.environments.delete(
-**id:** `str` — Environment id +**id:** `str` — Workspace id of the space
@@ -4966,8 +5027,7 @@ client.environments.delete(
-## Workspaces -
client.workspaces.list(...) -> ListWorkspacesResponse +
client.workspaces.delete(...) -> WorkspacesDeleteResponse
@@ -4979,7 +5039,9 @@ client.environments.delete(
-List workspaces associated with the user. Optional filters include clusterId, fqn, and workspace name. +Deletes the workspace with the given workspace ID. + - Removes the associated namespace from the cluster. + - Deletes the corresponding authorization entry.
@@ -5001,13 +5063,8 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.workspaces.list( - limit=10, - offset=0, - cluster_id="clusterId", - name="name", - fqn="fqn", - include_cluster=True, +client.workspaces.delete( + id="id", ) ``` @@ -5024,47 +5081,7 @@ client.workspaces.list(
-**limit:** `typing.Optional[int]` — Number of items per page - -
-
- -
-
- -**offset:** `typing.Optional[int]` — Number of items to skip - -
-
- -
-
- -**cluster_id:** `typing.Optional[str]` — ClusterId of the Cluster - -
-
- -
-
- -**name:** `typing.Optional[str]` — Workspace Name - -
-
- -
-
- -**fqn:** `typing.Optional[str]` — Workspace FQN - -
-
- -
-
- -**include_cluster:** `typing.Optional[bool]` — When true, each workspace includes cluster information +**id:** `str` — Workspace id of the space
@@ -5084,7 +5101,8 @@ client.workspaces.list(
-
client.workspaces.create_or_update(...) -> GetWorkspaceResponse +## Environments +
client.environments.list(...) -> ListEnvironmentsResponse
@@ -5096,7 +5114,7 @@ client.workspaces.list(
-Creates a new workspace or updates an existing one based on the provided manifest. +List environments, if no environments are found, default environments are created and returned. Pagination is available based on query parameters
@@ -5111,19 +5129,16 @@ Creates a new workspace or updates an existing one based on the provided manifes
```python -from truefoundry_sdk import TrueFoundry, WorkspaceManifest +from truefoundry_sdk import TrueFoundry client = TrueFoundry( api_key="", base_url="https://yourhost.com/path/to/api", ) -client.workspaces.create_or_update( - manifest=WorkspaceManifest( - type="workspace", - cluster_fqn="cluster_fqn", - name="name", - ), +client.environments.list( + limit=10, + offset=0, ) ``` @@ -5140,7 +5155,7 @@ client.workspaces.create_or_update(
-**manifest:** `WorkspaceManifest` — Workspace manifest +**limit:** `typing.Optional[int]` — Number of items per page
@@ -5148,7 +5163,7 @@ client.workspaces.create_or_update(
-**dry_run:** `typing.Optional[bool]` — Dry run the request +**offset:** `typing.Optional[int]` — Number of items to skip
@@ -5168,7 +5183,7 @@ client.workspaces.create_or_update(
-
client.workspaces.search(...) -> ListWorkspacesResponse +
client.environments.create_or_update(...) -> GetEnvironmentResponse
@@ -5180,7 +5195,7 @@ client.workspaces.create_or_update(
-List workspaces the user can read with optional structured `filter` (name, id, environmentId, cluster_fqn) and pagination. +Creates a new Environment or updates an existing Environment.
@@ -5195,18 +5210,21 @@ List workspaces the user can read with optional structured `filter` (name, id, e
```python -from truefoundry_sdk import TrueFoundry +from truefoundry_sdk import TrueFoundry, EnvironmentManifest, EnvironmentColor, EnvironmentOptimizeFor client = TrueFoundry( api_key="", base_url="https://yourhost.com/path/to/api", ) -client.workspaces.search( - limit=10, - offset=0, - filter="filter", - include_cluster=True, +client.environments.create_or_update( + manifest=EnvironmentManifest( + type="environment", + name="name", + color=EnvironmentColor(), + is_production=True, + optimize_for=EnvironmentOptimizeFor.COST, + ), ) ``` @@ -5223,23 +5241,7 @@ client.workspaces.search(
-**limit:** `typing.Optional[int]` — Number of items per page - -
-
- -
-
- -**offset:** `typing.Optional[int]` — Number of items to skip - -
-
- -
-
- -**filter:** `typing.Optional[str]` — JSON string containing array of search filters with string, type and operator +**manifest:** `EnvironmentManifest` — Environment Manifest
@@ -5247,7 +5249,7 @@ client.workspaces.search(
-**include_cluster:** `typing.Optional[bool]` — When true, each workspace includes cluster information +**dry_run:** `typing.Optional[bool]` — Dry run
@@ -5267,7 +5269,7 @@ client.workspaces.search(
-
client.workspaces.get(...) -> GetWorkspaceResponse +
client.environments.get(...) -> GetEnvironmentResponse
@@ -5279,7 +5281,7 @@ client.workspaces.search(
-Get workspace associated with provided workspace id +Get Environment associated with the provided id.
@@ -5301,7 +5303,7 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.workspaces.get( +client.environments.get( id="id", ) @@ -5319,7 +5321,7 @@ client.workspaces.get(
-**id:** `str` — Workspace id of the space +**id:** `str` — Environment id
@@ -5339,7 +5341,7 @@ client.workspaces.get(
-
client.workspaces.delete(...) -> WorkspacesDeleteResponse +
client.environments.delete(...) -> bool
@@ -5351,9 +5353,7 @@ client.workspaces.get(
-Deletes the workspace with the given workspace ID. - - Removes the associated namespace from the cluster. - - Deletes the corresponding authorization entry. +Delete Environment associated with the provided id.
@@ -5375,7 +5375,7 @@ client = TrueFoundry( base_url="https://yourhost.com/path/to/api", ) -client.workspaces.delete( +client.environments.delete( id="id", ) @@ -5393,7 +5393,7 @@ client.workspaces.delete(
-**id:** `str` — Workspace id of the space +**id:** `str` — Environment id
@@ -12361,7 +12361,7 @@ List artifact versions with internal metadata, optionally including model versio
```python -from truefoundry_sdk import TrueFoundry +from truefoundry_sdk import TrueFoundry, ArtifactType client = TrueFoundry( api_key="", @@ -12385,6 +12385,9 @@ client.internal.artifact_versions.list( limit=1, include_internal_metadata=True, include_model_versions=True, + artifact_types=[ + ArtifactType.ARTIFACT + ], ) ``` @@ -12497,6 +12500,14 @@ client.internal.artifact_versions.list(
+**artifact_types:** `typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]]` + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/truefoundry_sdk/__init__.py b/src/truefoundry_sdk/__init__.py index 66e1e5d4..834abe93 100644 --- a/src/truefoundry_sdk/__init__.py +++ b/src/truefoundry_sdk/__init__.py @@ -440,6 +440,7 @@ GroqProviderAccount, GuardrailConfigGroup, GuardrailConfigIntegrations, + GuardrailSettings, Guardrails, GuardrailsConfig, GuardrailsRule, @@ -466,6 +467,7 @@ HuggingfaceArtifactSource, IChange, IChangeOperation, + IdentityProviderMapping, Image, ImageCommand, ImageContentPart, @@ -612,6 +614,7 @@ MultiPartUpload, MultiPartUploadResponse, MultiPartUploadStorageProvider, + NativeSnowflakeFlyteTaskTemplate, NatsInputConfig, NatsMetricConfig, NatsOutputConfig, @@ -712,6 +715,10 @@ PatronusPiiEvaluator, PatronusToxicityCriteria, PatronusToxicityEvaluator, + PerMillionCharactersCostMetric, + PerMillionCharactersCostMetricValue, + PerMinuteOfAudioCostMetric, + PerMinuteOfAudioCostMetricValue, PerThousandEmbeddingTokensCostMetric, PerThousandTokensCostMetric, Permissions, @@ -841,11 +848,17 @@ SlackWebhook, SlackWebhookAuth, SlackWebhookIntegration, + SmallestAiApiKeyAuth, + SmallestAiModel, + SmallestAiProviderAccount, SmtpCredentials, + SnowflakeConfig, SnowflakeCortexIntegrations, SnowflakeCortexModel, SnowflakeCortexPatTokenAuth, SnowflakeCortexProviderAccount, + SnowflakeSql, + SnowflakeTaskConfig, SortDirection, SpaCyFramework, SpanAttributeFilter, @@ -963,6 +976,7 @@ TrueFoundryInteractiveLogin, TrueFoundryManagedSource, TrueFoundryProviderAccount, + TruefoundryFlyteTaskTemplate, TtlIntegrations, TtlProviderAccount, TtlRegistry, @@ -1528,6 +1542,7 @@ "GroqProviderAccount": ".types", "GuardrailConfigGroup": ".types", "GuardrailConfigIntegrations": ".types", + "GuardrailSettings": ".types", "Guardrails": ".types", "GuardrailsConfig": ".types", "GuardrailsRule": ".types", @@ -1554,6 +1569,7 @@ "HuggingfaceArtifactSource": ".types", "IChange": ".types", "IChangeOperation": ".types", + "IdentityProviderMapping": ".types", "Image": ".types", "ImageCommand": ".types", "ImageContentPart": ".types", @@ -1701,6 +1717,7 @@ "MultiPartUpload": ".types", "MultiPartUploadResponse": ".types", "MultiPartUploadStorageProvider": ".types", + "NativeSnowflakeFlyteTaskTemplate": ".types", "NatsInputConfig": ".types", "NatsMetricConfig": ".types", "NatsOutputConfig": ".types", @@ -1803,6 +1820,10 @@ "PatronusPiiEvaluator": ".types", "PatronusToxicityCriteria": ".types", "PatronusToxicityEvaluator": ".types", + "PerMillionCharactersCostMetric": ".types", + "PerMillionCharactersCostMetricValue": ".types", + "PerMinuteOfAudioCostMetric": ".types", + "PerMinuteOfAudioCostMetricValue": ".types", "PerThousandEmbeddingTokensCostMetric": ".types", "PerThousandTokensCostMetric": ".types", "Permissions": ".types", @@ -1933,11 +1954,17 @@ "SlackWebhook": ".types", "SlackWebhookAuth": ".types", "SlackWebhookIntegration": ".types", + "SmallestAiApiKeyAuth": ".types", + "SmallestAiModel": ".types", + "SmallestAiProviderAccount": ".types", "SmtpCredentials": ".types", + "SnowflakeConfig": ".types", "SnowflakeCortexIntegrations": ".types", "SnowflakeCortexModel": ".types", "SnowflakeCortexPatTokenAuth": ".types", "SnowflakeCortexProviderAccount": ".types", + "SnowflakeSql": ".types", + "SnowflakeTaskConfig": ".types", "SortDirection": ".types", "SpaCyFramework": ".types", "SpanAttributeFilter": ".types", @@ -2059,6 +2086,7 @@ "TrueFoundryInteractiveLogin": ".types", "TrueFoundryManagedSource": ".types", "TrueFoundryProviderAccount": ".types", + "TruefoundryFlyteTaskTemplate": ".types", "TtlIntegrations": ".types", "TtlProviderAccount": ".types", "TtlRegistry": ".types", @@ -2623,6 +2651,7 @@ def __dir__(): "GroqProviderAccount", "GuardrailConfigGroup", "GuardrailConfigIntegrations", + "GuardrailSettings", "Guardrails", "GuardrailsConfig", "GuardrailsRule", @@ -2649,6 +2678,7 @@ def __dir__(): "HuggingfaceArtifactSource", "IChange", "IChangeOperation", + "IdentityProviderMapping", "Image", "ImageCommand", "ImageContentPart", @@ -2796,6 +2826,7 @@ def __dir__(): "MultiPartUpload", "MultiPartUploadResponse", "MultiPartUploadStorageProvider", + "NativeSnowflakeFlyteTaskTemplate", "NatsInputConfig", "NatsMetricConfig", "NatsOutputConfig", @@ -2898,6 +2929,10 @@ def __dir__(): "PatronusPiiEvaluator", "PatronusToxicityCriteria", "PatronusToxicityEvaluator", + "PerMillionCharactersCostMetric", + "PerMillionCharactersCostMetricValue", + "PerMinuteOfAudioCostMetric", + "PerMinuteOfAudioCostMetricValue", "PerThousandEmbeddingTokensCostMetric", "PerThousandTokensCostMetric", "Permissions", @@ -3028,11 +3063,17 @@ def __dir__(): "SlackWebhook", "SlackWebhookAuth", "SlackWebhookIntegration", + "SmallestAiApiKeyAuth", + "SmallestAiModel", + "SmallestAiProviderAccount", "SmtpCredentials", + "SnowflakeConfig", "SnowflakeCortexIntegrations", "SnowflakeCortexModel", "SnowflakeCortexPatTokenAuth", "SnowflakeCortexProviderAccount", + "SnowflakeSql", + "SnowflakeTaskConfig", "SortDirection", "SpaCyFramework", "SpanAttributeFilter", @@ -3154,6 +3195,7 @@ def __dir__(): "TrueFoundryInteractiveLogin", "TrueFoundryManagedSource", "TrueFoundryProviderAccount", + "TruefoundryFlyteTaskTemplate", "TtlIntegrations", "TtlProviderAccount", "TtlRegistry", diff --git a/src/truefoundry_sdk/applications/client.py b/src/truefoundry_sdk/applications/client.py index 04c014a4..cd2f97c9 100644 --- a/src/truefoundry_sdk/applications/client.py +++ b/src/truefoundry_sdk/applications/client.py @@ -84,7 +84,7 @@ def list( Fully qualified name (FQN) of the workspace application_type : typing.Optional[str] - Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, spark-notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow + Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow name_search_query : typing.Optional[str] Search query for application name @@ -525,7 +525,7 @@ async def list( Fully qualified name (FQN) of the workspace application_type : typing.Optional[str] - Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, spark-notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow + Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow name_search_query : typing.Optional[str] Search query for application name diff --git a/src/truefoundry_sdk/applications/raw_client.py b/src/truefoundry_sdk/applications/raw_client.py index db7444d6..6670d196 100644 --- a/src/truefoundry_sdk/applications/raw_client.py +++ b/src/truefoundry_sdk/applications/raw_client.py @@ -86,7 +86,7 @@ def list( Fully qualified name (FQN) of the workspace application_type : typing.Optional[str] - Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, spark-notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow + Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow name_search_query : typing.Optional[str] Search query for application name @@ -820,7 +820,7 @@ async def list( Fully qualified name (FQN) of the workspace application_type : typing.Optional[str] - Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, spark-notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow + Type of application (comma separated for multiple). Allowed Values: async-service, service, job, spark-job, helm, notebook, codeserver, rstudio, ssh-server, volume, application, application-set, intercept, workflow name_search_query : typing.Optional[str] Search query for application name diff --git a/src/truefoundry_sdk/base_client.py b/src/truefoundry_sdk/base_client.py index 38cfd5b6..66fa9990 100644 --- a/src/truefoundry_sdk/base_client.py +++ b/src/truefoundry_sdk/base_client.py @@ -120,8 +120,8 @@ def __init__( self._applications: typing.Optional[ApplicationsClient] = None self._application_versions: typing.Optional[ApplicationVersionsClient] = None self._jobs: typing.Optional[JobsClient] = None - self._environments: typing.Optional[EnvironmentsClient] = None self._workspaces: typing.Optional[WorkspacesClient] = None + self._environments: typing.Optional[EnvironmentsClient] = None self._secrets: typing.Optional[SecretsClient] = None self._secret_groups: typing.Optional[SecretGroupsClient] = None self._events: typing.Optional[EventsClient] = None @@ -314,14 +314,6 @@ def jobs(self): self._jobs = JobsClient(client_wrapper=self._client_wrapper) return self._jobs - @property - def environments(self): - if self._environments is None: - from .environments.client import EnvironmentsClient # noqa: E402 - - self._environments = EnvironmentsClient(client_wrapper=self._client_wrapper) - return self._environments - @property def workspaces(self): if self._workspaces is None: @@ -330,6 +322,14 @@ def workspaces(self): self._workspaces = WorkspacesClient(client_wrapper=self._client_wrapper) return self._workspaces + @property + def environments(self): + if self._environments is None: + from .environments.client import EnvironmentsClient # noqa: E402 + + self._environments = EnvironmentsClient(client_wrapper=self._client_wrapper) + return self._environments + @property def secrets(self): if self._secrets is None: @@ -553,8 +553,8 @@ def __init__( self._applications: typing.Optional[AsyncApplicationsClient] = None self._application_versions: typing.Optional[AsyncApplicationVersionsClient] = None self._jobs: typing.Optional[AsyncJobsClient] = None - self._environments: typing.Optional[AsyncEnvironmentsClient] = None self._workspaces: typing.Optional[AsyncWorkspacesClient] = None + self._environments: typing.Optional[AsyncEnvironmentsClient] = None self._secrets: typing.Optional[AsyncSecretsClient] = None self._secret_groups: typing.Optional[AsyncSecretGroupsClient] = None self._events: typing.Optional[AsyncEventsClient] = None @@ -763,14 +763,6 @@ def jobs(self): self._jobs = AsyncJobsClient(client_wrapper=self._client_wrapper) return self._jobs - @property - def environments(self): - if self._environments is None: - from .environments.client import AsyncEnvironmentsClient # noqa: E402 - - self._environments = AsyncEnvironmentsClient(client_wrapper=self._client_wrapper) - return self._environments - @property def workspaces(self): if self._workspaces is None: @@ -779,6 +771,14 @@ def workspaces(self): self._workspaces = AsyncWorkspacesClient(client_wrapper=self._client_wrapper) return self._workspaces + @property + def environments(self): + if self._environments is None: + from .environments.client import AsyncEnvironmentsClient # noqa: E402 + + self._environments = AsyncEnvironmentsClient(client_wrapper=self._client_wrapper) + return self._environments + @property def secrets(self): if self._secrets is None: diff --git a/src/truefoundry_sdk/internal/artifact_versions/client.py b/src/truefoundry_sdk/internal/artifact_versions/client.py index caba1b67..39b7edf6 100644 --- a/src/truefoundry_sdk/internal/artifact_versions/client.py +++ b/src/truefoundry_sdk/internal/artifact_versions/client.py @@ -5,6 +5,7 @@ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ...core.pagination import AsyncPager, SyncPager from ...core.request_options import RequestOptions +from ...types.artifact_type import ArtifactType from ...types.internal_list_artifact_versions_response import InternalListArtifactVersionsResponse from ...types.internal_list_artifact_versions_response_data_item import InternalListArtifactVersionsResponseDataItem from .raw_client import AsyncRawArtifactVersionsClient, RawArtifactVersionsClient @@ -40,6 +41,7 @@ def list( limit: typing.Optional[int] = 100, include_internal_metadata: typing.Optional[bool] = False, include_model_versions: typing.Optional[bool] = False, + artifact_types: typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SyncPager[InternalListArtifactVersionsResponseDataItem, InternalListArtifactVersionsResponse]: """ @@ -83,6 +85,8 @@ def list( include_model_versions : typing.Optional[bool] Whether to include model versions in the results (internal use only) + artifact_types : typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -93,7 +97,7 @@ def list( Examples -------- - from truefoundry_sdk import TrueFoundry + from truefoundry_sdk import ArtifactType, TrueFoundry client = TrueFoundry( api_key="YOUR_API_KEY", @@ -112,6 +116,7 @@ def list( limit=1, include_internal_metadata=True, include_model_versions=True, + artifact_types=[ArtifactType.ARTIFACT], ) for item in response: yield item @@ -132,6 +137,7 @@ def list( limit=limit, include_internal_metadata=include_internal_metadata, include_model_versions=include_model_versions, + artifact_types=artifact_types, request_options=request_options, ) @@ -166,6 +172,7 @@ async def list( limit: typing.Optional[int] = 100, include_internal_metadata: typing.Optional[bool] = False, include_model_versions: typing.Optional[bool] = False, + artifact_types: typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] = None, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncPager[InternalListArtifactVersionsResponseDataItem, InternalListArtifactVersionsResponse]: """ @@ -209,6 +216,8 @@ async def list( include_model_versions : typing.Optional[bool] Whether to include model versions in the results (internal use only) + artifact_types : typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -221,7 +230,7 @@ async def list( -------- import asyncio - from truefoundry_sdk import AsyncTrueFoundry + from truefoundry_sdk import ArtifactType, AsyncTrueFoundry client = AsyncTrueFoundry( api_key="YOUR_API_KEY", @@ -243,6 +252,7 @@ async def main() -> None: limit=1, include_internal_metadata=True, include_model_versions=True, + artifact_types=[ArtifactType.ARTIFACT], ) async for item in response: yield item @@ -267,5 +277,6 @@ async def main() -> None: limit=limit, include_internal_metadata=include_internal_metadata, include_model_versions=include_model_versions, + artifact_types=artifact_types, request_options=request_options, ) diff --git a/src/truefoundry_sdk/internal/artifact_versions/raw_client.py b/src/truefoundry_sdk/internal/artifact_versions/raw_client.py index 89679e71..000b4ad8 100644 --- a/src/truefoundry_sdk/internal/artifact_versions/raw_client.py +++ b/src/truefoundry_sdk/internal/artifact_versions/raw_client.py @@ -10,6 +10,7 @@ from ...core.pydantic_utilities import parse_obj_as from ...core.request_options import RequestOptions from ...errors.unprocessable_entity_error import UnprocessableEntityError +from ...types.artifact_type import ArtifactType from ...types.internal_list_artifact_versions_response import InternalListArtifactVersionsResponse from ...types.internal_list_artifact_versions_response_data_item import InternalListArtifactVersionsResponseDataItem from pydantic import ValidationError @@ -34,6 +35,7 @@ def list( limit: typing.Optional[int] = 100, include_internal_metadata: typing.Optional[bool] = False, include_model_versions: typing.Optional[bool] = False, + artifact_types: typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] = None, request_options: typing.Optional[RequestOptions] = None, ) -> SyncPager[InternalListArtifactVersionsResponseDataItem, InternalListArtifactVersionsResponse]: """ @@ -77,6 +79,8 @@ def list( include_model_versions : typing.Optional[bool] Whether to include model versions in the results (internal use only) + artifact_types : typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -103,6 +107,7 @@ def list( "limit": limit, "include_internal_metadata": include_internal_metadata, "include_model_versions": include_model_versions, + "artifact_types": artifact_types, }, request_options=request_options, ) @@ -130,6 +135,7 @@ def list( limit=limit, include_internal_metadata=include_internal_metadata, include_model_versions=include_model_versions, + artifact_types=artifact_types, request_options=request_options, ) return SyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response) @@ -173,6 +179,7 @@ async def list( limit: typing.Optional[int] = 100, include_internal_metadata: typing.Optional[bool] = False, include_model_versions: typing.Optional[bool] = False, + artifact_types: typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] = None, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncPager[InternalListArtifactVersionsResponseDataItem, InternalListArtifactVersionsResponse]: """ @@ -216,6 +223,8 @@ async def list( include_model_versions : typing.Optional[bool] Whether to include model versions in the results (internal use only) + artifact_types : typing.Optional[typing.Union[ArtifactType, typing.Sequence[ArtifactType]]] + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -242,6 +251,7 @@ async def list( "limit": limit, "include_internal_metadata": include_internal_metadata, "include_model_versions": include_model_versions, + "artifact_types": artifact_types, }, request_options=request_options, ) @@ -271,6 +281,7 @@ async def _get_next(): limit=limit, include_internal_metadata=include_internal_metadata, include_model_versions=include_model_versions, + artifact_types=artifact_types, request_options=request_options, ) diff --git a/src/truefoundry_sdk/types/__init__.py b/src/truefoundry_sdk/types/__init__.py index 02700970..20ad3c68 100644 --- a/src/truefoundry_sdk/types/__init__.py +++ b/src/truefoundry_sdk/types/__init__.py @@ -456,6 +456,7 @@ from .groq_provider_account import GroqProviderAccount from .guardrail_config_group import GuardrailConfigGroup from .guardrail_config_integrations import GuardrailConfigIntegrations + from .guardrail_settings import GuardrailSettings from .guardrails import Guardrails from .guardrails_config import GuardrailsConfig from .guardrails_rule import GuardrailsRule @@ -482,6 +483,7 @@ from .huggingface_artifact_source import HuggingfaceArtifactSource from .i_change import IChange from .i_change_operation import IChangeOperation + from .identity_provider_mapping import IdentityProviderMapping from .image import Image from .image_command import ImageCommand from .image_content_part import ImageContentPart @@ -628,6 +630,7 @@ from .multi_part_upload import MultiPartUpload from .multi_part_upload_response import MultiPartUploadResponse from .multi_part_upload_storage_provider import MultiPartUploadStorageProvider + from .native_snowflake_flyte_task_template import NativeSnowflakeFlyteTaskTemplate from .nats_input_config import NatsInputConfig from .nats_metric_config import NatsMetricConfig from .nats_output_config import NatsOutputConfig @@ -728,6 +731,10 @@ from .patronus_pii_evaluator import PatronusPiiEvaluator from .patronus_toxicity_criteria import PatronusToxicityCriteria from .patronus_toxicity_evaluator import PatronusToxicityEvaluator + from .per_million_characters_cost_metric import PerMillionCharactersCostMetric + from .per_million_characters_cost_metric_value import PerMillionCharactersCostMetricValue + from .per_minute_of_audio_cost_metric import PerMinuteOfAudioCostMetric + from .per_minute_of_audio_cost_metric_value import PerMinuteOfAudioCostMetricValue from .per_thousand_embedding_tokens_cost_metric import PerThousandEmbeddingTokensCostMetric from .per_thousand_tokens_cost_metric import PerThousandTokensCostMetric from .permissions import Permissions @@ -854,11 +861,17 @@ from .slack_webhook import SlackWebhook from .slack_webhook_auth import SlackWebhookAuth from .slack_webhook_integration import SlackWebhookIntegration + from .smallest_ai_api_key_auth import SmallestAiApiKeyAuth + from .smallest_ai_model import SmallestAiModel + from .smallest_ai_provider_account import SmallestAiProviderAccount from .smtp_credentials import SmtpCredentials + from .snowflake_config import SnowflakeConfig from .snowflake_cortex_integrations import SnowflakeCortexIntegrations from .snowflake_cortex_model import SnowflakeCortexModel from .snowflake_cortex_pat_token_auth import SnowflakeCortexPatTokenAuth from .snowflake_cortex_provider_account import SnowflakeCortexProviderAccount + from .snowflake_sql import SnowflakeSql + from .snowflake_task_config import SnowflakeTaskConfig from .sort_direction import SortDirection from .spa_cy_framework import SpaCyFramework from .span_attribute_filter import SpanAttributeFilter @@ -978,6 +991,7 @@ from .true_foundry_interactive_login import TrueFoundryInteractiveLogin from .true_foundry_managed_source import TrueFoundryManagedSource from .true_foundry_provider_account import TrueFoundryProviderAccount + from .truefoundry_flyte_task_template import TruefoundryFlyteTaskTemplate from .ttl_integrations import TtlIntegrations from .ttl_provider_account import TtlProviderAccount from .ttl_registry import TtlRegistry @@ -1475,6 +1489,7 @@ "GroqProviderAccount": ".groq_provider_account", "GuardrailConfigGroup": ".guardrail_config_group", "GuardrailConfigIntegrations": ".guardrail_config_integrations", + "GuardrailSettings": ".guardrail_settings", "Guardrails": ".guardrails", "GuardrailsConfig": ".guardrails_config", "GuardrailsRule": ".guardrails_rule", @@ -1501,6 +1516,7 @@ "HuggingfaceArtifactSource": ".huggingface_artifact_source", "IChange": ".i_change", "IChangeOperation": ".i_change_operation", + "IdentityProviderMapping": ".identity_provider_mapping", "Image": ".image", "ImageCommand": ".image_command", "ImageContentPart": ".image_content_part", @@ -1647,6 +1663,7 @@ "MultiPartUpload": ".multi_part_upload", "MultiPartUploadResponse": ".multi_part_upload_response", "MultiPartUploadStorageProvider": ".multi_part_upload_storage_provider", + "NativeSnowflakeFlyteTaskTemplate": ".native_snowflake_flyte_task_template", "NatsInputConfig": ".nats_input_config", "NatsMetricConfig": ".nats_metric_config", "NatsOutputConfig": ".nats_output_config", @@ -1747,6 +1764,10 @@ "PatronusPiiEvaluator": ".patronus_pii_evaluator", "PatronusToxicityCriteria": ".patronus_toxicity_criteria", "PatronusToxicityEvaluator": ".patronus_toxicity_evaluator", + "PerMillionCharactersCostMetric": ".per_million_characters_cost_metric", + "PerMillionCharactersCostMetricValue": ".per_million_characters_cost_metric_value", + "PerMinuteOfAudioCostMetric": ".per_minute_of_audio_cost_metric", + "PerMinuteOfAudioCostMetricValue": ".per_minute_of_audio_cost_metric_value", "PerThousandEmbeddingTokensCostMetric": ".per_thousand_embedding_tokens_cost_metric", "PerThousandTokensCostMetric": ".per_thousand_tokens_cost_metric", "Permissions": ".permissions", @@ -1876,11 +1897,17 @@ "SlackWebhook": ".slack_webhook", "SlackWebhookAuth": ".slack_webhook_auth", "SlackWebhookIntegration": ".slack_webhook_integration", + "SmallestAiApiKeyAuth": ".smallest_ai_api_key_auth", + "SmallestAiModel": ".smallest_ai_model", + "SmallestAiProviderAccount": ".smallest_ai_provider_account", "SmtpCredentials": ".smtp_credentials", + "SnowflakeConfig": ".snowflake_config", "SnowflakeCortexIntegrations": ".snowflake_cortex_integrations", "SnowflakeCortexModel": ".snowflake_cortex_model", "SnowflakeCortexPatTokenAuth": ".snowflake_cortex_pat_token_auth", "SnowflakeCortexProviderAccount": ".snowflake_cortex_provider_account", + "SnowflakeSql": ".snowflake_sql", + "SnowflakeTaskConfig": ".snowflake_task_config", "SortDirection": ".sort_direction", "SpaCyFramework": ".spa_cy_framework", "SpanAttributeFilter": ".span_attribute_filter", @@ -1998,6 +2025,7 @@ "TrueFoundryInteractiveLogin": ".true_foundry_interactive_login", "TrueFoundryManagedSource": ".true_foundry_managed_source", "TrueFoundryProviderAccount": ".true_foundry_provider_account", + "TruefoundryFlyteTaskTemplate": ".truefoundry_flyte_task_template", "TtlIntegrations": ".ttl_integrations", "TtlProviderAccount": ".ttl_provider_account", "TtlRegistry": ".ttl_registry", @@ -2519,6 +2547,7 @@ def __dir__(): "GroqProviderAccount", "GuardrailConfigGroup", "GuardrailConfigIntegrations", + "GuardrailSettings", "Guardrails", "GuardrailsConfig", "GuardrailsRule", @@ -2545,6 +2574,7 @@ def __dir__(): "HuggingfaceArtifactSource", "IChange", "IChangeOperation", + "IdentityProviderMapping", "Image", "ImageCommand", "ImageContentPart", @@ -2691,6 +2721,7 @@ def __dir__(): "MultiPartUpload", "MultiPartUploadResponse", "MultiPartUploadStorageProvider", + "NativeSnowflakeFlyteTaskTemplate", "NatsInputConfig", "NatsMetricConfig", "NatsOutputConfig", @@ -2791,6 +2822,10 @@ def __dir__(): "PatronusPiiEvaluator", "PatronusToxicityCriteria", "PatronusToxicityEvaluator", + "PerMillionCharactersCostMetric", + "PerMillionCharactersCostMetricValue", + "PerMinuteOfAudioCostMetric", + "PerMinuteOfAudioCostMetricValue", "PerThousandEmbeddingTokensCostMetric", "PerThousandTokensCostMetric", "Permissions", @@ -2920,11 +2955,17 @@ def __dir__(): "SlackWebhook", "SlackWebhookAuth", "SlackWebhookIntegration", + "SmallestAiApiKeyAuth", + "SmallestAiModel", + "SmallestAiProviderAccount", "SmtpCredentials", + "SnowflakeConfig", "SnowflakeCortexIntegrations", "SnowflakeCortexModel", "SnowflakeCortexPatTokenAuth", "SnowflakeCortexProviderAccount", + "SnowflakeSql", + "SnowflakeTaskConfig", "SortDirection", "SpaCyFramework", "SpanAttributeFilter", @@ -3042,6 +3083,7 @@ def __dir__(): "TrueFoundryInteractiveLogin", "TrueFoundryManagedSource", "TrueFoundryProviderAccount", + "TruefoundryFlyteTaskTemplate", "TtlIntegrations", "TtlProviderAccount", "TtlRegistry", diff --git a/src/truefoundry_sdk/types/agent_skill_version.py b/src/truefoundry_sdk/types/agent_skill_version.py index 0074ea50..25f5d036 100644 --- a/src/truefoundry_sdk/types/agent_skill_version.py +++ b/src/truefoundry_sdk/types/agent_skill_version.py @@ -7,6 +7,7 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .agent_skill_manifest import AgentSkillManifest from .subject import Subject +from .usage_code_snippet import UsageCodeSnippet class AgentSkillVersion(UniversalBaseModel): @@ -54,6 +55,11 @@ class AgentSkillVersion(UniversalBaseModel): ID of the parent agent skill artifact that this version belongs to """ + usage_code_snippets: typing.Optional[typing.List[UsageCodeSnippet]] = pydantic.Field(default=None) + """ + Code snippets demonstrating how to download or use this agent skill version + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 else: diff --git a/src/truefoundry_sdk/types/application_type.py b/src/truefoundry_sdk/types/application_type.py index f8d1dd8d..d6cbab45 100644 --- a/src/truefoundry_sdk/types/application_type.py +++ b/src/truefoundry_sdk/types/application_type.py @@ -14,7 +14,6 @@ class ApplicationType(enum.StrEnum): SPARK_JOB = "spark-job" HELM = "helm" NOTEBOOK = "notebook" - SPARK_NOTEBOOK = "spark-notebook" CODESERVER = "codeserver" RSTUDIO = "rstudio" SSH_SERVER = "ssh-server" @@ -42,7 +41,6 @@ def visit( spark_job: typing.Callable[[], T_Result], helm: typing.Callable[[], T_Result], notebook: typing.Callable[[], T_Result], - spark_notebook: typing.Callable[[], T_Result], codeserver: typing.Callable[[], T_Result], rstudio: typing.Callable[[], T_Result], ssh_server: typing.Callable[[], T_Result], @@ -65,8 +63,6 @@ def visit( return helm() if self is ApplicationType.NOTEBOOK: return notebook() - if self is ApplicationType.SPARK_NOTEBOOK: - return spark_notebook() if self is ApplicationType.CODESERVER: return codeserver() if self is ApplicationType.RSTUDIO: diff --git a/src/truefoundry_sdk/types/flyte_task_custom_truefoundry.py b/src/truefoundry_sdk/types/flyte_task_custom_truefoundry.py index c34cdf9e..6cbdb7c6 100644 --- a/src/truefoundry_sdk/types/flyte_task_custom_truefoundry.py +++ b/src/truefoundry_sdk/types/flyte_task_custom_truefoundry.py @@ -6,7 +6,8 @@ from .databricks_job_task_config import DatabricksJobTaskConfig from .py_spark_task_config import PySparkTaskConfig from .python_task_config import PythonTaskConfig +from .snowflake_task_config import SnowflakeTaskConfig FlyteTaskCustomTruefoundry = typing.Union[ - PythonTaskConfig, ContainerTaskConfig, PySparkTaskConfig, DatabricksJobTaskConfig + PythonTaskConfig, ContainerTaskConfig, PySparkTaskConfig, DatabricksJobTaskConfig, SnowflakeTaskConfig ] diff --git a/src/truefoundry_sdk/types/flyte_task_template.py b/src/truefoundry_sdk/types/flyte_task_template.py index 030e1380..5cf53cf4 100644 --- a/src/truefoundry_sdk/types/flyte_task_template.py +++ b/src/truefoundry_sdk/types/flyte_task_template.py @@ -2,20 +2,7 @@ import typing -import pydantic -from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel -from .flyte_task_custom import FlyteTaskCustom -from .flyte_task_id import FlyteTaskId +from .native_snowflake_flyte_task_template import NativeSnowflakeFlyteTaskTemplate +from .truefoundry_flyte_task_template import TruefoundryFlyteTaskTemplate - -class FlyteTaskTemplate(UniversalBaseModel): - id: FlyteTaskId - custom: FlyteTaskCustom - - if IS_PYDANTIC_V2: - model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 - else: - - class Config: - smart_union = True - extra = pydantic.Extra.allow +FlyteTaskTemplate = typing.Union[TruefoundryFlyteTaskTemplate, NativeSnowflakeFlyteTaskTemplate] diff --git a/src/truefoundry_sdk/types/gateway_request_metadata_filter_operator.py b/src/truefoundry_sdk/types/gateway_request_metadata_filter_operator.py index d08b7d53..b7e656ce 100644 --- a/src/truefoundry_sdk/types/gateway_request_metadata_filter_operator.py +++ b/src/truefoundry_sdk/types/gateway_request_metadata_filter_operator.py @@ -9,6 +9,7 @@ class GatewayRequestMetadataFilterOperator(enum.StrEnum): EQUAL = "EQUAL" + NOT_EQUAL = "NOT_EQUAL" GREATER_THAN = "GREATER_THAN" LESS_THAN = "LESS_THAN" GREATER_THAN_EQUAL = "GREATER_THAN_EQUAL" @@ -17,8 +18,11 @@ class GatewayRequestMetadataFilterOperator(enum.StrEnum): IN = "IN" NOT_IN = "NOT_IN" STRING_CONTAINS = "STRING_CONTAINS" + STRING_NOT_CONTAINS = "STRING_NOT_CONTAINS" STRING_STARTS_WITH = "STRING_STARTS_WITH" + STRING_NOT_STARTS_WITH = "STRING_NOT_STARTS_WITH" STRING_ENDS_WITH = "STRING_ENDS_WITH" + STRING_NOT_ENDS_WITH = "STRING_NOT_ENDS_WITH" ARRAY_HAS_ANY = "ARRAY_HAS_ANY" ARRAY_HAS_NONE = "ARRAY_HAS_NONE" PRESENT = "PRESENT" @@ -37,6 +41,7 @@ def _missing_(cls, value: typing.Any) -> "GatewayRequestMetadataFilterOperator": def visit( self, equal: typing.Callable[[], T_Result], + not_equal: typing.Callable[[], T_Result], greater_than: typing.Callable[[], T_Result], less_than: typing.Callable[[], T_Result], greater_than_equal: typing.Callable[[], T_Result], @@ -45,8 +50,11 @@ def visit( in_: typing.Callable[[], T_Result], not_in: typing.Callable[[], T_Result], string_contains: typing.Callable[[], T_Result], + string_not_contains: typing.Callable[[], T_Result], string_starts_with: typing.Callable[[], T_Result], + string_not_starts_with: typing.Callable[[], T_Result], string_ends_with: typing.Callable[[], T_Result], + string_not_ends_with: typing.Callable[[], T_Result], array_has_any: typing.Callable[[], T_Result], array_has_none: typing.Callable[[], T_Result], present: typing.Callable[[], T_Result], @@ -55,6 +63,8 @@ def visit( ) -> T_Result: if self is GatewayRequestMetadataFilterOperator.EQUAL: return equal() + if self is GatewayRequestMetadataFilterOperator.NOT_EQUAL: + return not_equal() if self is GatewayRequestMetadataFilterOperator.GREATER_THAN: return greater_than() if self is GatewayRequestMetadataFilterOperator.LESS_THAN: @@ -71,10 +81,16 @@ def visit( return not_in() if self is GatewayRequestMetadataFilterOperator.STRING_CONTAINS: return string_contains() + if self is GatewayRequestMetadataFilterOperator.STRING_NOT_CONTAINS: + return string_not_contains() if self is GatewayRequestMetadataFilterOperator.STRING_STARTS_WITH: return string_starts_with() + if self is GatewayRequestMetadataFilterOperator.STRING_NOT_STARTS_WITH: + return string_not_starts_with() if self is GatewayRequestMetadataFilterOperator.STRING_ENDS_WITH: return string_ends_with() + if self is GatewayRequestMetadataFilterOperator.STRING_NOT_ENDS_WITH: + return string_not_ends_with() if self is GatewayRequestMetadataFilterOperator.ARRAY_HAS_ANY: return array_has_any() if self is GatewayRequestMetadataFilterOperator.ARRAY_HAS_NONE: diff --git a/src/truefoundry_sdk/types/global_settings.py b/src/truefoundry_sdk/types/global_settings.py index 90d8b124..d97513cd 100644 --- a/src/truefoundry_sdk/types/global_settings.py +++ b/src/truefoundry_sdk/types/global_settings.py @@ -4,6 +4,7 @@ import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .guardrail_settings import GuardrailSettings from .logging_mode import LoggingMode from .retry_config import RetryConfig from .semantic_cache_settings import SemanticCacheSettings @@ -23,6 +24,7 @@ class GlobalSettings(UniversalBaseModel): retry_settings: typing.Optional[RetryConfig] = None logging_settings: typing.Optional[LoggingMode] = None semantic_cache_settings: typing.Optional[SemanticCacheSettings] = None + guardrail_settings: typing.Optional[GuardrailSettings] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 diff --git a/src/truefoundry_sdk/types/guardrail_settings.py b/src/truefoundry_sdk/types/guardrail_settings.py new file mode 100644 index 00000000..41c0e772 --- /dev/null +++ b/src/truefoundry_sdk/types/guardrail_settings.py @@ -0,0 +1,30 @@ +# 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 GuardrailSettings(UniversalBaseModel): + """ + Guardrail Settings + """ + + timeout_ms: typing.Optional[int] = pydantic.Field(default=None) + """ + Maximum time in milliseconds the gateway waits for a guardrail provider to respond before timing out the call. Increase this value if guardrails are being invoked on large payloads (e.g. big files) and frequently exceed the default timeout. Applies to all guardrail integrations for this tenant. When unset, the gateway falls back to its built-in default (5000ms) or the GUARDRAIL_TIMEOUT_MS environment variable on the gateway instance. + """ + + enable_parallel_execution: typing.Optional[bool] = pydantic.Field(default=None) + """ + Controls whether input guardrails run in parallel with the model request or sequentially before it. When enabled (default), input guardrails are dispatched concurrently with the model request which lowers user-perceived latency but may invoke the model with payloads that a guardrail later rejects. Disable to force input guardrails to fully complete before the model is called, ensuring no wasted model invocations at the cost of additional latency. This sets the tenant-wide default and can still be overridden per-request via the x-tfy-guardrails header. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/identity_provider_mapping.py b/src/truefoundry_sdk/types/identity_provider_mapping.py new file mode 100644 index 00000000..d7c5d0bc --- /dev/null +++ b/src/truefoundry_sdk/types/identity_provider_mapping.py @@ -0,0 +1,30 @@ +# 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 IdentityProviderMapping(UniversalBaseModel): + """ + Configuration for mapping IdP claim values to this virtual account + """ + + identity_provider: str = pydantic.Field() + """ + Name of the external identity provider + """ + + value: str = pydantic.Field() + """ + Claim value that should resolve to this virtual account + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/internal_artifact_version.py b/src/truefoundry_sdk/types/internal_artifact_version.py index 2d1dd46f..ee2c43b9 100644 --- a/src/truefoundry_sdk/types/internal_artifact_version.py +++ b/src/truefoundry_sdk/types/internal_artifact_version.py @@ -39,7 +39,7 @@ class InternalArtifactVersion(UniversalBaseModel): Timestamp when the artifact version was last updated """ - manifest: ArtifactManifest = pydantic.Field() + manifest: typing.Optional[ArtifactManifest] = pydantic.Field(default=None) """ Manifest containing metadata for a generic artifact version """ @@ -79,6 +79,16 @@ class InternalArtifactVersion(UniversalBaseModel): Total size of the artifact version in bytes (internal use only) """ + artifact_metadata: typing.Optional[typing.Dict[str, typing.Any]] = pydantic.Field(default=None) + """ + Metadata of the artifact version + """ + + internal_metadata: typing.Optional[typing.Dict[str, typing.Any]] = pydantic.Field(default=None) + """ + Internal metadata of the artifact version + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 else: diff --git a/src/truefoundry_sdk/types/internal_list_artifact_versions_response_data_item.py b/src/truefoundry_sdk/types/internal_list_artifact_versions_response_data_item.py index 67f2a024..14f9dcb5 100644 --- a/src/truefoundry_sdk/types/internal_list_artifact_versions_response_data_item.py +++ b/src/truefoundry_sdk/types/internal_list_artifact_versions_response_data_item.py @@ -2,7 +2,11 @@ import typing +from .agent_skill_version import AgentSkillVersion from .internal_artifact_version import InternalArtifactVersion from .internal_model_version import InternalModelVersion +from .prompt_version import PromptVersion -InternalListArtifactVersionsResponseDataItem = typing.Union[InternalArtifactVersion, InternalModelVersion] +InternalListArtifactVersionsResponseDataItem = typing.Union[ + InternalArtifactVersion, InternalModelVersion, PromptVersion, AgentSkillVersion +] diff --git a/src/truefoundry_sdk/types/mcp_server_o_auth2.py b/src/truefoundry_sdk/types/mcp_server_o_auth2.py index ea267eef..894c932f 100644 --- a/src/truefoundry_sdk/types/mcp_server_o_auth2.py +++ b/src/truefoundry_sdk/types/mcp_server_o_auth2.py @@ -65,6 +65,11 @@ class McpServerOAuth2(UniversalBaseModel): List of scopes to request from the OAuth2 provider. """ + additional_token_params: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None) + """ + Extra key/value pairs sent on every token endpoint request (e.g. Auth0 'audience'). + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 else: diff --git a/src/truefoundry_sdk/types/model_cost_metric.py b/src/truefoundry_sdk/types/model_cost_metric.py index 18d6deb3..21911ef3 100644 --- a/src/truefoundry_sdk/types/model_cost_metric.py +++ b/src/truefoundry_sdk/types/model_cost_metric.py @@ -2,8 +2,16 @@ import typing +from .per_million_characters_cost_metric import PerMillionCharactersCostMetric +from .per_minute_of_audio_cost_metric import PerMinuteOfAudioCostMetric from .per_thousand_embedding_tokens_cost_metric import PerThousandEmbeddingTokensCostMetric from .per_thousand_tokens_cost_metric import PerThousandTokensCostMetric from .public_cost_metric import PublicCostMetric -ModelCostMetric = typing.Union[PerThousandTokensCostMetric, PerThousandEmbeddingTokensCostMetric, PublicCostMetric] +ModelCostMetric = typing.Union[ + PerThousandTokensCostMetric, + PerThousandEmbeddingTokensCostMetric, + PerMillionCharactersCostMetric, + PerMinuteOfAudioCostMetric, + PublicCostMetric, +] diff --git a/src/truefoundry_sdk/types/model_provider_account.py b/src/truefoundry_sdk/types/model_provider_account.py index 90697f0b..9eda3299 100644 --- a/src/truefoundry_sdk/types/model_provider_account.py +++ b/src/truefoundry_sdk/types/model_provider_account.py @@ -30,6 +30,7 @@ from .perplexity_ai_provider_account import PerplexityAiProviderAccount from .samba_nova_provider_account import SambaNovaProviderAccount from .self_hosted_model_provider_account import SelfHostedModelProviderAccount +from .smallest_ai_provider_account import SmallestAiProviderAccount from .snowflake_cortex_provider_account import SnowflakeCortexProviderAccount from .together_ai_provider_account import TogetherAiProviderAccount from .virtual_model_provider_account import VirtualModelProviderAccount @@ -66,6 +67,7 @@ ElevenLabsProviderAccount, DeepgramProviderAccount, CartesiaProviderAccount, + SmallestAiProviderAccount, VirtualModelProviderAccount, CustomEndpointProviderAccount, ] diff --git a/src/truefoundry_sdk/types/native_snowflake_flyte_task_template.py b/src/truefoundry_sdk/types/native_snowflake_flyte_task_template.py new file mode 100644 index 00000000..36c7f9d4 --- /dev/null +++ b/src/truefoundry_sdk/types/native_snowflake_flyte_task_template.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 .flyte_task_id import FlyteTaskId +from .snowflake_config import SnowflakeConfig +from .snowflake_sql import SnowflakeSql + + +class NativeSnowflakeFlyteTaskTemplate(UniversalBaseModel): + id: FlyteTaskId + type: typing.Literal["snowflake"] = "snowflake" + config: SnowflakeConfig + sql: SnowflakeSql + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_million_characters_cost_metric.py b/src/truefoundry_sdk/types/per_million_characters_cost_metric.py new file mode 100644 index 00000000..e672e7cf --- /dev/null +++ b/src/truefoundry_sdk/types/per_million_characters_cost_metric.py @@ -0,0 +1,28 @@ +# 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 .per_million_characters_cost_metric_value import PerMillionCharactersCostMetricValue + + +class PerMillionCharactersCostMetric(UniversalBaseModel): + """ + Private rate per million characters of input (Cloud TTS-style billing). + """ + + metric: str = pydantic.Field() + """ + +value=per_million_characters + """ + + value: PerMillionCharactersCostMetricValue + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_million_characters_cost_metric_value.py b/src/truefoundry_sdk/types/per_million_characters_cost_metric_value.py new file mode 100644 index 00000000..a0cda72d --- /dev/null +++ b/src/truefoundry_sdk/types/per_million_characters_cost_metric_value.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 +from .non_negative_float import NonNegativeFloat + + +class PerMillionCharactersCostMetricValue(UniversalBaseModel): + input: NonNegativeFloat + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric.py b/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric.py new file mode 100644 index 00000000..93df9525 --- /dev/null +++ b/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric.py @@ -0,0 +1,28 @@ +# 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 .per_minute_of_audio_cost_metric_value import PerMinuteOfAudioCostMetricValue + + +class PerMinuteOfAudioCostMetric(UniversalBaseModel): + """ + Private rate per minute of billed audio (Cloud STT-style billing). Admin enters $/minute from the provider pricing page. + """ + + metric: str = pydantic.Field() + """ + +value=per_minute_of_audio + """ + + value: PerMinuteOfAudioCostMetricValue + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric_value.py b/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric_value.py new file mode 100644 index 00000000..099f29a1 --- /dev/null +++ b/src/truefoundry_sdk/types/per_minute_of_audio_cost_metric_value.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 +from .non_negative_float import NonNegativeFloat + + +class PerMinuteOfAudioCostMetricValue(UniversalBaseModel): + input: NonNegativeFloat + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/role_with_resource.py b/src/truefoundry_sdk/types/role_with_resource.py index 6bde6343..00020108 100644 --- a/src/truefoundry_sdk/types/role_with_resource.py +++ b/src/truefoundry_sdk/types/role_with_resource.py @@ -15,6 +15,7 @@ class RoleWithResource(UniversalBaseModel): RoleWithResourceResourceType, FieldMetadata(alias="resourceType"), pydantic.Field(alias="resourceType") ] resource_id: typing_extensions.Annotated[str, FieldMetadata(alias="resourceId"), pydantic.Field(alias="resourceId")] + role_name: typing_extensions.Annotated[str, FieldMetadata(alias="roleName"), pydantic.Field(alias="roleName")] if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 diff --git a/src/truefoundry_sdk/types/session.py b/src/truefoundry_sdk/types/session.py index b51f0de9..1e3549f1 100644 --- a/src/truefoundry_sdk/types/session.py +++ b/src/truefoundry_sdk/types/session.py @@ -29,6 +29,11 @@ class Session(UniversalBaseModel): subject_pat_name: typing_extensions.Annotated[ typing.Optional[str], FieldMetadata(alias="subjectPatName"), pydantic.Field(alias="subjectPatName") ] = None + subject_external_identity_slug: typing_extensions.Annotated[ + typing.Optional[str], + FieldMetadata(alias="subjectExternalIdentitySlug"), + pydantic.Field(alias="subjectExternalIdentitySlug"), + ] = None email: typing.Optional[str] = None subject_type: typing_extensions.Annotated[ SubjectType, FieldMetadata(alias="subjectType"), pydantic.Field(alias="subjectType") diff --git a/src/truefoundry_sdk/types/smallest_ai_api_key_auth.py b/src/truefoundry_sdk/types/smallest_ai_api_key_auth.py new file mode 100644 index 00000000..652d52c7 --- /dev/null +++ b/src/truefoundry_sdk/types/smallest_ai_api_key_auth.py @@ -0,0 +1,30 @@ +# 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 SmallestAiApiKeyAuth(UniversalBaseModel): + """ + Smallest AI API Key Auth + """ + + type: typing.Literal["api-key"] = pydantic.Field(default="api-key") + """ + +value=api-key + """ + + api_key: str = pydantic.Field() + """ + The API key for Smallest AI authentication + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/smallest_ai_model.py b/src/truefoundry_sdk/types/smallest_ai_model.py new file mode 100644 index 00000000..a1cce68e --- /dev/null +++ b/src/truefoundry_sdk/types/smallest_ai_model.py @@ -0,0 +1,48 @@ +# 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 .model_cost_metric import ModelCostMetric +from .model_type import ModelType + + +class SmallestAiModel(UniversalBaseModel): + """ + Smallest AI Model + """ + + type: typing.Literal["integration/model/smallest-ai"] = pydantic.Field(default="integration/model/smallest-ai") + """ + +value=integration/model/smallest-ai + """ + + name: str = pydantic.Field() + """ + A descriptive name to identify this model integration in the UI + """ + + model_id: str = pydantic.Field() + """ + The Smallest AI model identifier (for example, lightning-v2, lightning-v3.1 for TTS, pulse for STT) + """ + + model_types: typing.List[ModelType] = pydantic.Field() + """ + Specify the type of the Smallest AI model (text_to_speech or audio_transcription) + """ + + cost: typing.Optional[ModelCostMetric] = None + authorized_subjects: typing.Optional[typing.List[str]] = pydantic.Field(default=None) + """ + List of subjects that are authorized to access this integration. List of user fqn in format :. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/smallest_ai_provider_account.py b/src/truefoundry_sdk/types/smallest_ai_provider_account.py new file mode 100644 index 00000000..4dc42889 --- /dev/null +++ b/src/truefoundry_sdk/types/smallest_ai_provider_account.py @@ -0,0 +1,56 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata +from .collaborator import Collaborator +from .owned_by import OwnedBy +from .smallest_ai_api_key_auth import SmallestAiApiKeyAuth +from .smallest_ai_model import SmallestAiModel + + +class SmallestAiProviderAccount(UniversalBaseModel): + """ + Smallest AI Provider Account + """ + + type: typing.Literal["provider-account/smallest-ai"] = pydantic.Field(default="provider-account/smallest-ai") + """ + +value=provider-account/smallest-ai + """ + + name: str = pydantic.Field() + """ + The name of the Smallest AI provider account + """ + + auth_data: SmallestAiApiKeyAuth + base_url: typing.Optional[str] = pydantic.Field(default=None) + """ + Optional custom base URL for Smallest AI API + """ + + integrations: typing.List[SmallestAiModel] = pydantic.Field() + """ + List of integrations that are associated with the Smallest AI provider account + """ + + collaborators: typing.Optional[typing.List[Collaborator]] = pydantic.Field(default=None) + """ + List of users who have access to this provider account + """ + + owned_by: typing_extensions.Annotated[ + typing.Optional[OwnedBy], FieldMetadata(alias="ownedBy"), pydantic.Field(alias="ownedBy") + ] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/snowflake_config.py b/src/truefoundry_sdk/types/snowflake_config.py new file mode 100644 index 00000000..5f5c8b61 --- /dev/null +++ b/src/truefoundry_sdk/types/snowflake_config.py @@ -0,0 +1,24 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +import typing_extensions +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ..core.serialization import FieldMetadata + + +class SnowflakeConfig(UniversalBaseModel): + account: str + schema_: typing_extensions.Annotated[str, FieldMetadata(alias="schema"), pydantic.Field(alias="schema")] + user: str + warehouse: str + database: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/snowflake_sql.py b/src/truefoundry_sdk/types/snowflake_sql.py new file mode 100644 index 00000000..e61ff48f --- /dev/null +++ b/src/truefoundry_sdk/types/snowflake_sql.py @@ -0,0 +1,18 @@ +# 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 SnowflakeSql(UniversalBaseModel): + statement: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/snowflake_task_config.py b/src/truefoundry_sdk/types/snowflake_task_config.py new file mode 100644 index 00000000..53ab35f1 --- /dev/null +++ b/src/truefoundry_sdk/types/snowflake_task_config.py @@ -0,0 +1,46 @@ +# 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 SnowflakeTaskConfig(UniversalBaseModel): + type: typing.Literal["snowflake-task-config"] = pydantic.Field(default="snowflake-task-config") + """ + +value=snowflake-task-config + """ + + user: str = pydantic.Field() + """ + Configuration required to connect and execute tasks in Snowflake. + """ + + account: str = pydantic.Field() + """ + Snowflake account identifier (e.g., -). + """ + + database: str = pydantic.Field() + """ + Target Snowflake database where the task will run. + """ + + schema_name: str = pydantic.Field() + """ + Target schema within the Snowflake database. + """ + + warehouse: str = pydantic.Field() + """ + Compute warehouse to be used for executing the task. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/span_attribute_filter_operator.py b/src/truefoundry_sdk/types/span_attribute_filter_operator.py index 946b4be1..cb7669da 100644 --- a/src/truefoundry_sdk/types/span_attribute_filter_operator.py +++ b/src/truefoundry_sdk/types/span_attribute_filter_operator.py @@ -9,6 +9,7 @@ class SpanAttributeFilterOperator(enum.StrEnum): EQUAL = "EQUAL" + NOT_EQUAL = "NOT_EQUAL" GREATER_THAN = "GREATER_THAN" LESS_THAN = "LESS_THAN" GREATER_THAN_EQUAL = "GREATER_THAN_EQUAL" @@ -17,8 +18,11 @@ class SpanAttributeFilterOperator(enum.StrEnum): IN = "IN" NOT_IN = "NOT_IN" STRING_CONTAINS = "STRING_CONTAINS" + STRING_NOT_CONTAINS = "STRING_NOT_CONTAINS" STRING_STARTS_WITH = "STRING_STARTS_WITH" + STRING_NOT_STARTS_WITH = "STRING_NOT_STARTS_WITH" STRING_ENDS_WITH = "STRING_ENDS_WITH" + STRING_NOT_ENDS_WITH = "STRING_NOT_ENDS_WITH" ARRAY_HAS_ANY = "ARRAY_HAS_ANY" ARRAY_HAS_NONE = "ARRAY_HAS_NONE" PRESENT = "PRESENT" @@ -37,6 +41,7 @@ def _missing_(cls, value: typing.Any) -> "SpanAttributeFilterOperator": def visit( self, equal: typing.Callable[[], T_Result], + not_equal: typing.Callable[[], T_Result], greater_than: typing.Callable[[], T_Result], less_than: typing.Callable[[], T_Result], greater_than_equal: typing.Callable[[], T_Result], @@ -45,8 +50,11 @@ def visit( in_: typing.Callable[[], T_Result], not_in: typing.Callable[[], T_Result], string_contains: typing.Callable[[], T_Result], + string_not_contains: typing.Callable[[], T_Result], string_starts_with: typing.Callable[[], T_Result], + string_not_starts_with: typing.Callable[[], T_Result], string_ends_with: typing.Callable[[], T_Result], + string_not_ends_with: typing.Callable[[], T_Result], array_has_any: typing.Callable[[], T_Result], array_has_none: typing.Callable[[], T_Result], present: typing.Callable[[], T_Result], @@ -55,6 +63,8 @@ def visit( ) -> T_Result: if self is SpanAttributeFilterOperator.EQUAL: return equal() + if self is SpanAttributeFilterOperator.NOT_EQUAL: + return not_equal() if self is SpanAttributeFilterOperator.GREATER_THAN: return greater_than() if self is SpanAttributeFilterOperator.LESS_THAN: @@ -71,10 +81,16 @@ def visit( return not_in() if self is SpanAttributeFilterOperator.STRING_CONTAINS: return string_contains() + if self is SpanAttributeFilterOperator.STRING_NOT_CONTAINS: + return string_not_contains() if self is SpanAttributeFilterOperator.STRING_STARTS_WITH: return string_starts_with() + if self is SpanAttributeFilterOperator.STRING_NOT_STARTS_WITH: + return string_not_starts_with() if self is SpanAttributeFilterOperator.STRING_ENDS_WITH: return string_ends_with() + if self is SpanAttributeFilterOperator.STRING_NOT_ENDS_WITH: + return string_not_ends_with() if self is SpanAttributeFilterOperator.ARRAY_HAS_ANY: return array_has_any() if self is SpanAttributeFilterOperator.ARRAY_HAS_NONE: diff --git a/src/truefoundry_sdk/types/span_field_filter_operator.py b/src/truefoundry_sdk/types/span_field_filter_operator.py index b06cc81b..0bee0f4e 100644 --- a/src/truefoundry_sdk/types/span_field_filter_operator.py +++ b/src/truefoundry_sdk/types/span_field_filter_operator.py @@ -9,6 +9,7 @@ class SpanFieldFilterOperator(enum.StrEnum): EQUAL = "EQUAL" + NOT_EQUAL = "NOT_EQUAL" GREATER_THAN = "GREATER_THAN" LESS_THAN = "LESS_THAN" GREATER_THAN_EQUAL = "GREATER_THAN_EQUAL" @@ -17,8 +18,11 @@ class SpanFieldFilterOperator(enum.StrEnum): IN = "IN" NOT_IN = "NOT_IN" STRING_CONTAINS = "STRING_CONTAINS" + STRING_NOT_CONTAINS = "STRING_NOT_CONTAINS" STRING_STARTS_WITH = "STRING_STARTS_WITH" + STRING_NOT_STARTS_WITH = "STRING_NOT_STARTS_WITH" STRING_ENDS_WITH = "STRING_ENDS_WITH" + STRING_NOT_ENDS_WITH = "STRING_NOT_ENDS_WITH" ARRAY_HAS_ANY = "ARRAY_HAS_ANY" ARRAY_HAS_NONE = "ARRAY_HAS_NONE" PRESENT = "PRESENT" @@ -37,6 +41,7 @@ def _missing_(cls, value: typing.Any) -> "SpanFieldFilterOperator": def visit( self, equal: typing.Callable[[], T_Result], + not_equal: typing.Callable[[], T_Result], greater_than: typing.Callable[[], T_Result], less_than: typing.Callable[[], T_Result], greater_than_equal: typing.Callable[[], T_Result], @@ -45,8 +50,11 @@ def visit( in_: typing.Callable[[], T_Result], not_in: typing.Callable[[], T_Result], string_contains: typing.Callable[[], T_Result], + string_not_contains: typing.Callable[[], T_Result], string_starts_with: typing.Callable[[], T_Result], + string_not_starts_with: typing.Callable[[], T_Result], string_ends_with: typing.Callable[[], T_Result], + string_not_ends_with: typing.Callable[[], T_Result], array_has_any: typing.Callable[[], T_Result], array_has_none: typing.Callable[[], T_Result], present: typing.Callable[[], T_Result], @@ -55,6 +63,8 @@ def visit( ) -> T_Result: if self is SpanFieldFilterOperator.EQUAL: return equal() + if self is SpanFieldFilterOperator.NOT_EQUAL: + return not_equal() if self is SpanFieldFilterOperator.GREATER_THAN: return greater_than() if self is SpanFieldFilterOperator.LESS_THAN: @@ -71,10 +81,16 @@ def visit( return not_in() if self is SpanFieldFilterOperator.STRING_CONTAINS: return string_contains() + if self is SpanFieldFilterOperator.STRING_NOT_CONTAINS: + return string_not_contains() if self is SpanFieldFilterOperator.STRING_STARTS_WITH: return string_starts_with() + if self is SpanFieldFilterOperator.STRING_NOT_STARTS_WITH: + return string_not_starts_with() if self is SpanFieldFilterOperator.STRING_ENDS_WITH: return string_ends_with() + if self is SpanFieldFilterOperator.STRING_NOT_ENDS_WITH: + return string_not_ends_with() if self is SpanFieldFilterOperator.ARRAY_HAS_ANY: return array_has_any() if self is SpanFieldFilterOperator.ARRAY_HAS_NONE: diff --git a/src/truefoundry_sdk/types/subject_type.py b/src/truefoundry_sdk/types/subject_type.py index 722f739e..69c0e981 100644 --- a/src/truefoundry_sdk/types/subject_type.py +++ b/src/truefoundry_sdk/types/subject_type.py @@ -8,6 +8,10 @@ class SubjectType(enum.StrEnum): + """ + Type of the authenticated subject. "user" for human users, "serviceaccount" (also known as virtual account) for programmatic access. + """ + USER = "user" TEAM = "team" SERVICEACCOUNT = "serviceaccount" diff --git a/src/truefoundry_sdk/types/team.py b/src/truefoundry_sdk/types/team.py index 4c32ca0d..4fecdd77 100644 --- a/src/truefoundry_sdk/types/team.py +++ b/src/truefoundry_sdk/types/team.py @@ -32,6 +32,7 @@ class Team(UniversalBaseModel): is_editable: typing_extensions.Annotated[ bool, FieldMetadata(alias="isEditable"), pydantic.Field(alias="isEditable") ] + roles: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 diff --git a/src/truefoundry_sdk/types/team_manifest.py b/src/truefoundry_sdk/types/team_manifest.py index 76b5419d..53817b39 100644 --- a/src/truefoundry_sdk/types/team_manifest.py +++ b/src/truefoundry_sdk/types/team_manifest.py @@ -6,6 +6,7 @@ import typing_extensions from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata +from .identity_provider_mapping import IdentityProviderMapping from .team_owned_by import TeamOwnedBy @@ -38,6 +39,11 @@ class TeamManifest(UniversalBaseModel): Key-value pairs to categorize this Team (e.g., by owner or environment). """ + identity_provider_mapping: typing.Optional[typing.List[IdentityProviderMapping]] = pydantic.Field(default=None) + """ + Mappings from external identity provider claim value to this team + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 else: diff --git a/src/truefoundry_sdk/types/truefoundry_flyte_task_template.py b/src/truefoundry_sdk/types/truefoundry_flyte_task_template.py new file mode 100644 index 00000000..1e8b1f9a --- /dev/null +++ b/src/truefoundry_sdk/types/truefoundry_flyte_task_template.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 .flyte_task_custom import FlyteTaskCustom +from .flyte_task_id import FlyteTaskId + + +class TruefoundryFlyteTaskTemplate(UniversalBaseModel): + id: FlyteTaskId + custom: FlyteTaskCustom + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 + else: + + class Config: + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/truefoundry_sdk/types/usage_code_snippet.py b/src/truefoundry_sdk/types/usage_code_snippet.py index 0464e6ab..4afc0688 100644 --- a/src/truefoundry_sdk/types/usage_code_snippet.py +++ b/src/truefoundry_sdk/types/usage_code_snippet.py @@ -7,24 +7,33 @@ class UsageCodeSnippet(UniversalBaseModel): + """ + Example code or shell commands for using an ML entity (prompt, agent skill, etc.). + """ + display_name: str = pydantic.Field() """ - Display name for the code snippet (e.g., 'Python', 'JavaScript') + Display label for the snippet (e.g. 'Python', 'Download via TFY CLI') """ language: str = pydantic.Field() """ - Programming language of the code snippet (e.g., 'python', 'javascript') + Language identifier (e.g. 'python', 'bash', 'javascript') """ libraries: typing.Optional[typing.List[str]] = pydantic.Field(default=None) """ - List of libraries/frameworks used in the code snippet + Libraries, CLIs, or frameworks relevant to the snippet """ code: str = pydantic.Field() """ - Code snippet demonstrating how to use the prompt version + The snippet body shown to users + """ + + icon: typing.Optional[str] = pydantic.Field(default=None) + """ + Use a URL or an icon name like 'download'. """ if IS_PYDANTIC_V2: diff --git a/src/truefoundry_sdk/types/user_metadata.py b/src/truefoundry_sdk/types/user_metadata.py index d6f65df1..cda19e00 100644 --- a/src/truefoundry_sdk/types/user_metadata.py +++ b/src/truefoundry_sdk/types/user_metadata.py @@ -41,9 +41,6 @@ class UserMetadata(UniversalBaseModel): sso_name: typing_extensions.Annotated[ typing.Optional[str], FieldMetadata(alias="ssoName"), pydantic.Field(alias="ssoName") ] = None - is_primary_sso: typing_extensions.Annotated[ - typing.Optional[bool], FieldMetadata(alias="isPrimarySSO"), pydantic.Field(alias="isPrimarySSO") - ] = None scim_user_object: typing_extensions.Annotated[ typing.Optional[typing.Dict[str, typing.Any]], FieldMetadata(alias="scimUserObject"), diff --git a/src/truefoundry_sdk/types/virtual_account_manifest.py b/src/truefoundry_sdk/types/virtual_account_manifest.py index f09e7368..014e521d 100644 --- a/src/truefoundry_sdk/types/virtual_account_manifest.py +++ b/src/truefoundry_sdk/types/virtual_account_manifest.py @@ -7,6 +7,7 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from ..core.serialization import FieldMetadata from .auto_rotate import AutoRotate +from .identity_provider_mapping import IdentityProviderMapping from .notification_target import NotificationTarget from .permissions import Permissions from .secret_store_config import SecretStoreConfig @@ -45,6 +46,11 @@ class VirtualAccountManifest(UniversalBaseModel): Key-value pairs to categorize this Virtual Account (e.g., by owner or environment). """ + identity_provider_mapping: typing.Optional[typing.List[IdentityProviderMapping]] = pydantic.Field(default=None) + """ + Mappings from external identity provider claim value to this virtual account + """ + if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 else: