diff --git a/.github/workflows/test-integrations-ai.yml b/.github/workflows/test-integrations-ai.yml index a4cdecaa7a..71cc123664 100644 --- a/.github/workflows/test-integrations-ai.yml +++ b/.github/workflows/test-integrations-ai.yml @@ -69,6 +69,10 @@ jobs: run: | set -x # print commands that are executed ./scripts/runtox.sh "py${{ matrix.python-version }}-openai-notiktoken" + - name: Test typesafe + run: | + set -x # print commands that are executed + ./scripts/runtox.sh "py${{ matrix.python-version }}-typesafe" - name: Upload coverage data if: ${{ !cancelled() }} continue-on-error: true diff --git a/pyproject.toml b/pyproject.toml index 885e24cf53..ff63660eec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,6 +81,7 @@ typing = [ "aiohttp>=3.14.3", "openai-agents>=0.22.0", "mistralai>=2.10.1", + "typesafe-sdk>=0.7.2", ] test = [ "dataclasses ; python_full_version < '3.7'", diff --git a/scripts/populate_tox/config.py b/scripts/populate_tox/config.py index 3fc19d1e18..86310cfda5 100644 --- a/scripts/populate_tox/config.py +++ b/scripts/populate_tox/config.py @@ -533,6 +533,13 @@ "package": "typer", "num_versions": 2, }, + "typesafe": { + "package": "typesafe-sdk", + "integration_name": "typesafe", + "deps": { + "*": ["pytest-asyncio"], + }, + }, "unleash": { "package": "UnleashClient", "num_versions": 2, diff --git a/scripts/populate_tox/package_dependencies.jsonl b/scripts/populate_tox/package_dependencies.jsonl index ac70af30ac..0720a4891a 100644 --- a/scripts/populate_tox/package_dependencies.jsonl +++ b/scripts/populate_tox/package_dependencies.jsonl @@ -92,6 +92,8 @@ {"python_version": "3.10", "dependencies": [{"metadata": {"name": "openai", "version": "3.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/bc/5b80a0ca4069a6b5ba6c7d48ae7a4f8176b2c0bde0bebccdb867472ec6f6/openai-3.17.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/ca/e9/5993079500530586655c6f2823e2926b3f5ceddd49918c5a86757eadba3a/jiter-0.17.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/bd/d0/c787604c71c2bdcda1a5656942fc822cd0f9cd879b9484bb84fc42172703/pydantic_core-2.46.5-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "backports.asyncio.runner", "version": "1.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tomli", "version": "2.4.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "6fe5caedd83b044975e2a5e20436ed3f"} {"python_version": "3.10", "dependencies": [{"metadata": {"name": "openai-agents", "version": "0.18.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e0/7c/08b9929a15131081898e38c5612d44ee293851d5c80f31ca1153efe82143/openai_agents-0.18.3-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "backports.asyncio.runner", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl"}}, {"metadata": {"name": "griffelib", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/63/e876e789525063c840ccfa8857febdabd6523bcef9ce7eb979b9305ea895/griffelib-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp", "version": "1.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f5/f4/e58bc33317c92a0203664daaf00bf6f41166cc0149e5d6870a03f7cd004a/mcp-1.30.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bd/d0/c787604c71c2bdcda1a5656942fc822cd0f9cd879b9484bb84fc42172703/pydantic_core-2.46.5-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "16.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/90/72/2f14b2e167170b8bf1c8bb7f9b0d78000f470d41a2085a91f33e3917b6c9/websockets-16.1.1-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/aa/554e2614f38fc34c58ff1d0911ae8535ad2516440d5482d76fe59f1088b0/charset_normalizer-3.5.1-cp310-cp310-macosx_10_9_universal2.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ca/e9/5993079500530586655c6f2823e2926b3f5ceddd49918c5a86757eadba3a/jiter-0.17.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tomli", "version": "2.4.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/84/a9/ee16a903f13755e914d1eecc482fe64d1f10761c3960e5d8fa6837377aff/cryptography-50.0.1-cp39-abi3-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "0.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/6a/4ba3d0fb7297ebae71171822554abe48d7cab29c28b8f9f2c04b79988c05/rpds_py-0.30.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/94/1a/4b2f7c92293ba05cbd4a9a1b28faaf0326272d9488e6354657571c48a7aa/cffi-2.1.1-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}], "install_targets_hash": "72e451893bc86523078d768ca9965660"} {"python_version": "3.10", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c6/3d/4d7f5667ea0e0548534ba880b84bb3d12924fd133aa83ad6c6c80fca3d76/jiter-0.16.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "backports.asyncio.runner", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tomli", "version": "2.4.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} +{"python_version": "3.10", "dependencies": [{"metadata": {"name": "typesafe-sdk", "version": "0.7.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "backports.asyncio.runner", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d8/9c/6fe8931fd9f381042a9e4c7d5a7b4cbf7016b252bec0c99a49fce42c3326/httpx2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/09/ba/a4568248771ce81957bfb7cc600264a40fbcda092391ee1c415c50be4bea/httpcore2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bd/d0/c787604c71c2bdcda1a5656942fc822cd0f9cd879b9484bb84fc42172703/pydantic_core-2.46.5-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tomli", "version": "2.4.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}], "install_targets_hash": "7270bd75f89996667824608b998f67f4"} +{"python_version": "3.10", "dependencies": [{"metadata": {"name": "boto3", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "botocore", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "jmespath", "version": "1.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "s3transfer", "version": "0.19.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}], "install_targets_hash": "732c20a252602bec78b6c7ee26050916"} {"python_version": "3.10", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "backports.asyncio.runner", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/59/76ab57e3fe74484f48a53f8e337171b4a2349e506eabe136d7e01d059086/backports_asyncio_runner-1.2.0-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c6/3d/4d7f5667ea0e0548534ba880b84bb3d12924fd133aa83ad6c6c80fca3d76/jiter-0.16.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/56/c6/65f646c7ff09bd257f660434adb45c4dfcbbcebcc030562fecf6f5bf887d/pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tomli", "version": "2.4.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} {"python_version": "3.10", "dependencies": [{"metadata": {"name": "sanic", "version": "23.12.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/e6/5adc2ca570f165d6027a775a655c1c09b9b8432a6c4a6fcb4c43a08eac7e/sanic-23.12.2-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/20/7a/bd0ce7ac1cfafc76c84d6e8051bcbd0f7def8e45207230833bd6ff77a41d/websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "multidict", "version": "6.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "aiohttp", "version": "3.14.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/9e/73b582c4dbbc3c12ef4473822475effaabf1f934b56f14f5b03fe5d3a2af/aiohttp-3.14.3-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "async-timeout", "version": "5.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl"}}, {"metadata": {"name": "yarl", "version": "1.24.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/59/1d/340d1a0db7bbce1f291afc044255ebf4ebbce2b25ab1b3f7d3d069080f5d/yarl-1.24.5-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sanic-testing", "version": "24.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/93/1d588f1cb9b710b9f22fa78b53d699a8062edc94204d50dd0d78c5f5b495/sanic_testing-24.6.0-py3-none-any.whl"}}, {"metadata": {"name": "aiofiles", "version": "25.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl"}}, {"metadata": {"name": "aiohappyeyeballs", "version": "2.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/43/1947f06babed6b3f1d7f38b0c767f52df66bfb2bc10b468c4a7de9eceff2/aiohappyeyeballs-2.7.1-py3-none-any.whl"}}, {"metadata": {"name": "aiosignal", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "frozenlist", "version": "1.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "html5tagger", "version": "2.0.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/d7/410f7b8109958405f6fb3d104f094e2a96f9d5b2670de73a68fb1fbc391f/html5tagger-2.0.0-py3-none-any.whl"}}, {"metadata": {"name": "httptools", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9d/f7/b4d41eaae2869d31356bc4bbf546f44fae83ff298af0a043ca0625b06773/httptools-0.8.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.18"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl"}}, {"metadata": {"name": "propcache", "version": "0.5.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/20/42/0e7443c90310498561addf346e7d57fe3c6ba1914e1ba938b5464c7bbfd2/propcache-0.5.2-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sanic-routing", "version": "23.12.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/e3/3425c9a8773807ac2c01d6a56c8521733f09b627e5827e733c5cd36b9ac5/sanic_routing-23.12.0-py3-none-any.whl"}}, {"metadata": {"name": "tracerite", "version": "2.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fc/ae/74457a0bfe83b45a951f5a4900cb4e5bb7cf201edc029fb5b2a2df9e4028/tracerite-2.6.3-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "ujson", "version": "5.13.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8e/d2/92e83af35cd65d3b7c47fb0e24927aa2b478897af8b0dd0ee19abcd50c03/ujson-5.13.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "uvloop", "version": "0.22.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/14/ecceb239b65adaaf7fde510aa8bd534075695d1e5f8dadfa32b5723d9cfb/uvloop-0.22.1-cp310-cp310-macosx_10_9_universal2.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "76dabba8d81006345a2675957fd9dcbf"} {"python_version": "3.10", "dependencies": [{"metadata": {"name": "sanic", "version": "23.12.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/e6/5adc2ca570f165d6027a775a655c1c09b9b8432a6c4a6fcb4c43a08eac7e/sanic-23.12.2-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/20/7a/bd0ce7ac1cfafc76c84d6e8051bcbd0f7def8e45207230833bd6ff77a41d/websockets-10.4-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "multidict", "version": "6.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/31/5c/08c7f7fe311f32e83f7621cd3f99d805f45519cd06fafb247628b861da7d/multidict-6.7.1-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "aiohttp", "version": "3.14.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/c1/316c8f3549dbe5245f92bfd523ec6f32dd4d98cafe21df3f6a19b1184c75/aiohttp-3.14.1-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "async-timeout", "version": "5.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl"}}, {"metadata": {"name": "yarl", "version": "1.24.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a8/8f/7b3ec212f1ea0683f55f978e3246bc313c38818664edfc97a9f349a4901e/yarl-1.24.2-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sanic-testing", "version": "24.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/93/1d588f1cb9b710b9f22fa78b53d699a8062edc94204d50dd0d78c5f5b495/sanic_testing-24.6.0-py3-none-any.whl"}}, {"metadata": {"name": "aiofiles", "version": "25.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/8a/340a1555ae33d7354dbca4faa54948d76d89a27ceef032c8c3bc661d003e/aiofiles-25.1.0-py3-none-any.whl"}}, {"metadata": {"name": "aiohappyeyeballs", "version": "2.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/43/1947f06babed6b3f1d7f38b0c767f52df66bfb2bc10b468c4a7de9eceff2/aiohappyeyeballs-2.7.1-py3-none-any.whl"}}, {"metadata": {"name": "aiosignal", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "frozenlist", "version": "1.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/70/26ca3f06aace16f2352796b08704338d74b6d1a24ca38f2771afbb7ed915/frozenlist-1.8.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "html5tagger", "version": "1.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9b/12/2f5d43ee912ea14a6baba4b3db6d309b02d932e3b7074c3339b4aded98ff/html5tagger-1.3.0-py3-none-any.whl"}}, {"metadata": {"name": "httptools", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9d/f7/b4d41eaae2869d31356bc4bbf546f44fae83ff298af0a043ca0625b06773/httptools-0.8.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.18"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl"}}, {"metadata": {"name": "propcache", "version": "0.5.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/20/42/0e7443c90310498561addf346e7d57fe3c6ba1914e1ba938b5464c7bbfd2/propcache-0.5.2-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sanic-routing", "version": "23.12.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/e3/3425c9a8773807ac2c01d6a56c8521733f09b627e5827e733c5cd36b9ac5/sanic_routing-23.12.0-py3-none-any.whl"}}, {"metadata": {"name": "tracerite", "version": "2.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b6/62/3f385a67ff3cc91209f107d20bbebdecf7a4e4aba55a43f9f71bddc424a9/tracerite-2.3.1-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "ujson", "version": "5.13.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8e/d2/92e83af35cd65d3b7c47fb0e24927aa2b478897af8b0dd0ee19abcd50c03/ujson-5.13.0-cp310-cp310-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "uvloop", "version": "0.22.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/14/ecceb239b65adaaf7fde510aa8bd534075695d1e5f8dadfa32b5723d9cfb/uvloop-0.22.1-cp310-cp310-macosx_10_9_universal2.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b0/7b/90df4a0a816d98d6ea26f559d87836d494a2cf1fcf063be67df50a7bcc30/anyio-4.14.1-py3-none-any.whl"}}, {"metadata": {"name": "exceptiongroup", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.6.17"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl"}}], "install_targets_hash": "76dabba8d81006345a2675957fd9dcbf"} @@ -427,6 +429,8 @@ {"python_version": "3.13", "dependencies": [{"metadata": {"name": "pyreqwest", "version": "0.13.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d9/45/89ccb6ea16d9a2e30c80865b439edf09c8d3680a4980ad5abda3a91ff666/pyreqwest-0.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}], "install_targets_hash": "6f61e0b03332a8ab3c901a7f00b7fa71"} {"python_version": "3.13", "dependencies": [{"metadata": {"name": "openai", "version": "3.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/bc/5b80a0ca4069a6b5ba6c7d48ae7a4f8176b2c0bde0bebccdb867472ec6f6/openai-3.17.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/ca/b1/34bfa29599d420423baac6ff7cada6674fe63d5a7a2ccb3900b904678783/jiter-0.17.0-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/21/43/6323b1f8b217780454c61304bcd2b38ae4762f50754414124603ccc90bb2/pydantic_core-2.46.5-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "6fe5caedd83b044975e2a5e20436ed3f"} {"python_version": "3.13", "dependencies": [{"metadata": {"name": "openai-agents", "version": "0.18.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e0/7c/08b9929a15131081898e38c5612d44ee293851d5c80f31ca1153efe82143/openai_agents-0.18.3-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "griffelib", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/63/e876e789525063c840ccfa8857febdabd6523bcef9ce7eb979b9305ea895/griffelib-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp", "version": "1.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f5/f4/e58bc33317c92a0203664daaf00bf6f41166cc0149e5d6870a03f7cd004a/mcp-1.30.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/21/43/6323b1f8b217780454c61304bcd2b38ae4762f50754414124603ccc90bb2/pydantic_core-2.46.5-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "16.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3d/86/0a70d3ae2f0f2256bb41302d9804dbca65d4360281e7feb3e1f94102ac46/websockets-16.1.1-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a4/a0/562247944386f7d4ef94467e84876600cc1e0f1b93239aaa9213d2bc3cbd/charset_normalizer-3.5.1-cp313-cp313-macosx_10_13_universal2.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ca/b1/34bfa29599d420423baac6ff7cada6674fe63d5a7a2ccb3900b904678783/jiter-0.17.0-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ba/19/797e2aaac9df6a66f1550f49979dc1b1e39ecd2077501c30efa81e8d5d67/cryptography-50.0.1-cp311-abi3-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f3/6b/686d9dc4359a8f163cfbbf89ee0b4e586431de22fe8248edb63a8cf50d49/rpds_py-2026.6.3-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/55/41/4c7042f317b9217502988f0873af87e16ad606dc20f84e546e3e6ce9764c/cffi-2.1.1-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}], "install_targets_hash": "72e451893bc86523078d768ca9965660"} +{"python_version": "3.13", "dependencies": [{"metadata": {"name": "typesafe-sdk", "version": "0.7.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d8/9c/6fe8931fd9f381042a9e4c7d5a7b4cbf7016b252bec0c99a49fce42c3326/httpx2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/09/ba/a4568248771ce81957bfb7cc600264a40fbcda092391ee1c415c50be4bea/httpcore2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/21/43/6323b1f8b217780454c61304bcd2b38ae4762f50754414124603ccc90bb2/pydantic_core-2.46.5-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}], "install_targets_hash": "7270bd75f89996667824608b998f67f4"} +{"python_version": "3.13", "dependencies": [{"metadata": {"name": "boto3", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "botocore", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "jmespath", "version": "1.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "s3transfer", "version": "0.19.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}], "install_targets_hash": "732c20a252602bec78b6c7ee26050916"} {"python_version": "3.13", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d0/2b/c3eaf16f5d7c9bad66ea32f40a95bd169b29a91217fcc7f081375157e99c/jiter-0.16.0-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c1/81/4fa520eaffa8bd7d1525e644cd6d39e7d60b1592bc5b516693c7340b50f1/pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} {"python_version": "3.13", "dependencies": [{"metadata": {"name": "statsig", "version": "0.72.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/76/f6/72e48d6e3b37aaf866d1ca0c59382a28e67d303b1edee446c1fb5ceaf8ba/statsig-0.72.1-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "brotli", "version": "1.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/6c/d4/4ad5432ac98c73096159d9ce7ffeb82d151c2ac84adcc6168e476bb54674/brotli-1.2.0-cp313-cp313-macosx_10_13_universal2.whl"}}, {"metadata": {"name": "grpcio", "version": "1.83.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c4/49/0b40bae059c619505c9b751cee6caa208e4904e290aaefa1728c4c2c67a5/grpcio-1.83.1-cp313-cp313-macosx_11_0_universal2.whl"}}, {"metadata": {"name": "ijson", "version": "3.5.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/db/4a/8322c2824c24184880587bbca45531127a21a4b3bfc897f13427fea02424/ijson-3.5.1-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "ip3country", "version": "0.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/d6/b7/48a7f1ab9eee62f1113114207df7e7e6bc29227389d554f42cc11bc98108/ip3country-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "protobuf", "version": "7.36.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/f7/6c/3a54a58f2948b0f485df9ecdd06590f15d0a7abf46a89d50c3de709ff4ff/protobuf-7.36.1-cp310-abi3-macosx_10_9_universal2.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a4/a0/562247944386f7d4ef94467e84876600cc1e0f1b93239aaa9213d2bc3cbd/charset_normalizer-3.5.1-cp313-cp313-macosx_10_13_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser", "version": "1.0.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a9/7c/6367995ff57aaa2d9e1055adbaec2519cf5a979780a83a93fdf8c6ec37be/ua_parser-1.0.2-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser-builtins", "version": "202606"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/51/a3/f26edd95a2ce2ffbf559da432e5ff544e8dcda3673d1c775f71afffb18b7/ua_parser_builtins-202606-py3-none-any.whl"}}], "install_targets_hash": "763ce761517f8c5492de65d82e642a37"} {"python_version": "3.13", "dependencies": [{"metadata": {"name": "statsig", "version": "0.55.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9d/17/de62fdea8aab8aa7c4a833378e0e39054b728dfd45ef279e975ed5ef4e86/statsig-0.55.3-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "grpcio", "version": "1.82.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/10/17/b448f2265e4927188425c0b09fb943c39b50f7f53fbead644b44ccdf834b/grpcio-1.82.0-cp313-cp313-macosx_11_0_universal2.whl"}}, {"metadata": {"name": "ijson", "version": "3.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/16/94/b1438e204d75e01541bebe3e668fe3e68612d210e9931ae1611062dd0a56/ijson-3.5.0-cp313-cp313-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "ip3country", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d6/b7/48a7f1ab9eee62f1113114207df7e7e6bc29227389d554f42cc11bc98108/ip3country-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "protobuf", "version": "7.35.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/10/03/8aeeb7458d22546bf64b5250ca1daeb5ff757d900e8e4a7476c6f0db843e/protobuf-7.35.1-cp310-abi3-macosx_10_9_universal2.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser", "version": "1.0.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a9/7c/6367995ff57aaa2d9e1055adbaec2519cf5a979780a83a93fdf8c6ec37be/ua_parser-1.0.2-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.6.17"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.4.7"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.18"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser-builtins", "version": "202606"}, "download_info": {"url": "https://files.pythonhosted.org/packages/51/a3/f26edd95a2ce2ffbf559da432e5ff544e8dcda3673d1c775f71afffb18b7/ua_parser_builtins-202606-py3-none-any.whl"}}], "install_targets_hash": "7a12a54efcb27f14786026d8ffbb0792"} @@ -634,6 +638,8 @@ {"python_version": "3.14", "dependencies": [{"metadata": {"name": "openai", "version": "3.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/bc/5b80a0ca4069a6b5ba6c7d48ae7a4f8176b2c0bde0bebccdb867472ec6f6/openai-3.17.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/ac/4a/84a5ec271d09f7590b6073af5ee4abb44eab4ccace453b7e2c5ce45234ca/jiter-0.17.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "6fe5caedd83b044975e2a5e20436ed3f"} {"python_version": "3.14", "dependencies": [{"metadata": {"name": "openai-agents", "version": "0.18.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e0/7c/08b9929a15131081898e38c5612d44ee293851d5c80f31ca1153efe82143/openai_agents-0.18.3-py3-none-any.whl"}}, {"metadata": {"name": "griffelib", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/63/e876e789525063c840ccfa8857febdabd6523bcef9ce7eb979b9305ea895/griffelib-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp", "version": "1.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f5/f4/e58bc33317c92a0203664daaf00bf6f41166cc0149e5d6870a03f7cd004a/mcp-1.30.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ac/4a/84a5ec271d09f7590b6073af5ee4abb44eab4ccace453b7e2c5ce45234ca/jiter-0.17.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "16.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/e8/f7dac2e980bacc92bdc26cebae4ae4d50cae5380732c50980598fc0bbae4/websockets-16.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/5b/f0/424cb557d99aa86ac55da5e2add02e2882e44047b6264f93ade1b975a993/cryptography-50.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "72e451893bc86523078d768ca9965660"} {"python_version": "3.14", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} +{"python_version": "3.14", "dependencies": [{"metadata": {"name": "typesafe-sdk", "version": "0.7.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d8/9c/6fe8931fd9f381042a9e4c7d5a7b4cbf7016b252bec0c99a49fce42c3326/httpx2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/09/ba/a4568248771ce81957bfb7cc600264a40fbcda092391ee1c415c50be4bea/httpcore2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}], "install_targets_hash": "7270bd75f89996667824608b998f67f4"} +{"python_version": "3.14", "dependencies": [{"metadata": {"name": "boto3", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "botocore", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "jmespath", "version": "1.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "s3transfer", "version": "0.19.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}], "install_targets_hash": "732c20a252602bec78b6c7ee26050916"} {"python_version": "3.14", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} {"python_version": "3.14", "dependencies": [{"metadata": {"name": "statsig", "version": "0.72.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/76/f6/72e48d6e3b37aaf866d1ca0c59382a28e67d303b1edee446c1fb5ceaf8ba/statsig-0.72.1-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "brotli", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz"}}, {"metadata": {"name": "grpcio", "version": "1.83.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/98/304898ac4e04e2d5e4e4c2eadc178b1f2a16d5f4bc2f91306c87d64680b9/grpcio-1.83.0.tar.gz"}}, {"metadata": {"name": "ijson", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fc/d0/b3beddb96eef0b20bb9902c36e4de30f145be06d7e5e1d780e1a1689d0ce/ijson-3.5.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "ip3country", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d6/b7/48a7f1ab9eee62f1113114207df7e7e6bc29227389d554f42cc11bc98108/ip3country-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "protobuf", "version": "7.36.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/01/c3/629999e78d46c1115c11886d51c6bd68c17ce4a944f1ea3e153a91316a33/protobuf-7.36.0-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser", "version": "1.0.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a9/7c/6367995ff57aaa2d9e1055adbaec2519cf5a979780a83a93fdf8c6ec37be/ua_parser-1.0.2-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser-builtins", "version": "202606"}, "download_info": {"url": "https://files.pythonhosted.org/packages/51/a3/f26edd95a2ce2ffbf559da432e5ff544e8dcda3673d1c775f71afffb18b7/ua_parser_builtins-202606-py3-none-any.whl"}}], "install_targets_hash": "763ce761517f8c5492de65d82e642a37"} {"python_version": "3.14", "dependencies": [{"metadata": {"name": "statsig", "version": "0.72.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/76/f6/72e48d6e3b37aaf866d1ca0c59382a28e67d303b1edee446c1fb5ceaf8ba/statsig-0.72.1-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "brotli", "version": "1.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f7/16/c92ca344d646e71a43b8bb353f0a6490d7f6e06210f8554c8f874e454285/brotli-1.2.0.tar.gz"}}, {"metadata": {"name": "grpcio", "version": "1.83.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/98/304898ac4e04e2d5e4e4c2eadc178b1f2a16d5f4bc2f91306c87d64680b9/grpcio-1.83.0.tar.gz"}}, {"metadata": {"name": "ijson", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fc/d0/b3beddb96eef0b20bb9902c36e4de30f145be06d7e5e1d780e1a1689d0ce/ijson-3.5.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "ip3country", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d6/b7/48a7f1ab9eee62f1113114207df7e7e6bc29227389d554f42cc11bc98108/ip3country-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "protobuf", "version": "7.36.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/01/c3/629999e78d46c1115c11886d51c6bd68c17ce4a944f1ea3e153a91316a33/protobuf-7.36.0-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser", "version": "1.0.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a9/7c/6367995ff57aaa2d9e1055adbaec2519cf5a979780a83a93fdf8c6ec37be/ua_parser-1.0.2-py3-none-any.whl"}}, {"metadata": {"name": "ua-parser-builtins", "version": "202606"}, "download_info": {"url": "https://files.pythonhosted.org/packages/51/a3/f26edd95a2ce2ffbf559da432e5ff544e8dcda3673d1c775f71afffb18b7/ua_parser_builtins-202606-py3-none-any.whl"}}], "install_targets_hash": "763ce761517f8c5492de65d82e642a37"} @@ -754,6 +760,8 @@ {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "google-genai", "version": "1.75.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2d/b6/552d40e96da22921eb1fead7c14b00b5b5473a20e45959488660fab35ee2/google_genai-1.75.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "google-auth", "version": "2.58.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/59/13/477d90d09591b3938b45c4e11f4d8a51291682112cb5efcac961e815d562/google_auth-2.58.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "16.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0c/e8/f7dac2e980bacc92bdc26cebae4ae4d50cae5380732c50980598fc0bbae4/websockets-16.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/5b/f0/424cb557d99aa86ac55da5e2add02e2882e44047b6264f93ade1b975a993/cryptography-50.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pyasn1_modules", "version": "0.4.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl"}}, {"metadata": {"name": "pyasn1", "version": "0.6.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9a/3b/6163796d69c3977d1e4287bea4a6979161cbbdd170ebb430511e8e1999ce/pyasn1-0.6.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "0bc3a5b64fc00b681ab59c895de8d0e4"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "httpx2", "version": "2.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/29/45/82bc57c3d9c3314f663b67cc057f1c017a6450685dde513f4f8db5cf431f/httpx2-2.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7c/72/4fdf2306143a92a471fad9f3655aa542d43aa9188a7c9534e82c9aecf837/httpcore2-2.4.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}], "install_targets_hash": "0c787a25e015d5fd533f80926f6fb57d"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai-agents", "version": "0.10.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e2/07/ad27018fb42d6f1e70f471a5ca3f6398a2159575b623edf86e1ddde66ce4/openai_agents-0.10.5-py3-none-any.whl"}}, {"metadata": {"name": "openai", "version": "2.44.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ae/f4/561ed79fd94876160018a5e75254cfcb9b0e62d4dded9dcb20072e86d623/openai-2.44.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "griffe", "version": "1.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/83/3b1d03d36f224edded98e9affd0467630fc09d766c0e56fb1498cbb04a9b/griffe-1.15.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ac/4a/84a5ec271d09f7590b6073af5ee4abb44eab4ccace453b7e2c5ce45234ca/jiter-0.17.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "mcp", "version": "1.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f5/f4/e58bc33317c92a0203664daaf00bf6f41166cc0149e5d6870a03f7cd004a/mcp-1.30.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "types-requests", "version": "2.33.0.20260906"}, "download_info": {"url": "https://files.pythonhosted.org/packages/60/4c/51ec821d22a45b4162fa3f3e9e94ea4c0f8c49e82363b10955baa5438391/types_requests-2.33.0.20260906-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "colorama", "version": "0.4.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/5b/f0/424cb557d99aa86ac55da5e2add02e2882e44047b6264f93ade1b975a993/cryptography-50.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "0ce5e787d33b4cfe2c733e90e400524e"} +{"python_version": "3.14t", "dependencies": [{"metadata": {"name": "fastapi", "version": "0.121.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/b6/4f620d7720fc0a754c8c1b7501d73777f6ba43b57c8ab99671f4d7441eb8/fastapi-0.121.3-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e2/4a/4d8b19008f38d31c53b8219cfedc2e3d5de5fe99d90076b7e767de29274f/pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl"}}, {"metadata": {"name": "starlette", "version": "0.50.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.4.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d4/ce/9af95f7876194bd7a14e3dfe4a4de2e0bff02666a3910d72beafd06cc297/charset_normalizer-3.4.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}}, {"metadata": {"name": "idna", "version": "3.18"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "Jinja2", "version": "3.1.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl"}}, {"metadata": {"name": "annotated-doc", "version": "0.0.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3e/30/e900b21425a860e195f32e37657aa1f7c7f2b1bfb26f03ca209b90933c06/annotated_doc-0.0.5-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "MarkupSafe", "version": "3.0.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl"}}, {"metadata": {"name": "packaging", "version": "26.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.20.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl"}}], "install_targets_hash": "07dedda23092a79cd219b98e946eb134"} +{"python_version": "3.14t", "dependencies": [{"metadata": {"name": "typesafe-sdk", "version": "0.7.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d8/9c/6fe8931fd9f381042a9e4c7d5a7b4cbf7016b252bec0c99a49fce42c3326/httpx2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/09/ba/a4568248771ce81957bfb7cc600264a40fbcda092391ee1c415c50be4bea/httpcore2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}], "install_targets_hash": "0c4edb83d8cce91730292a5632ed1434"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tiktoken", "version": "0.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/79/29/46ad8061f57bd9f8b2ea0aa82bf574e0f2aa040b0857a1582adba9957899/tiktoken-0.14.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "regex", "version": "2026.7.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cd/d6/0dd1a321afaab95eb7ff44aa0f637301786f1dc71c6b797b9ed236ed8890/regex-2026.7.19-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "0e0a649708de8e981a20111ea63dbf51"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tiktoken", "version": "0.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/79/29/46ad8061f57bd9f8b2ea0aa82bf574e0f2aa040b0857a1582adba9957899/tiktoken-0.14.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "regex", "version": "2026.7.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cd/d6/0dd1a321afaab95eb7ff44aa0f637301786f1dc71c6b797b9ed236ed8890/regex-2026.7.19-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "0e0a649708de8e981a20111ea63dbf51"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "langgraph", "version": "0.6.11"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/df/94/430f0341c5c2fe3e3b9f5ab2622f35e2bda12c4a7d655c519468e853d1b0/langgraph-0.6.11-py3-none-any.whl"}}, {"metadata": {"name": "langgraph-checkpoint", "version": "3.0.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/48/e3/616e3a7ff737d98c1bbb5700dd62278914e2a9ded09a79a1fa93cf24ce12/langgraph_checkpoint-3.0.1-py3-none-any.whl"}}, {"metadata": {"name": "langgraph-prebuilt", "version": "0.6.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/8e/d1/e4727f4822943befc3b7046f79049b1086c9493a34b4d44a1adf78577693/langgraph_prebuilt-0.6.5-py3-none-any.whl"}}, {"metadata": {"name": "langgraph-sdk", "version": "0.2.15"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/6b/c9/bf2bff18f85bb7973fa5280838580049574bd7649c36e3dd346c49304997/langgraph_sdk-0.2.15-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "langchain-core", "version": "1.6.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e6/18/cf18cfec118b02e003f35300b54d6a1173dc6e4905cffdf5ea49e390a7f9/langchain_core-1.6.3-py3-none-any.whl"}}, {"metadata": {"name": "jsonpatch", "version": "1.33"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl"}}, {"metadata": {"name": "langsmith", "version": "0.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/51/892ff5a2efc8e222ca114dd0e19b56978f78a5ee62d3b33783588dd8e6d4/langsmith-0.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "PyYAML", "version": "6.0.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "uuid_utils", "version": "0.17.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cd/3f/095e8eed10949c6ca1adde77d405268e88eeaf6e23a3968b29e549d0765e/uuid_utils-0.17.1-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "jsonpointer", "version": "3.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9e/6a/a83720e953b1682d2d109d3c2dbb0bc9bf28cc1cbc205be4ef4be5da709d/jsonpointer-3.1.1-py3-none-any.whl"}}, {"metadata": {"name": "langchain-protocol", "version": "0.0.19"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/80/c9/f6cbf357d48ccbd18bb394433b1fd7ad9be004eed9377ad08bb85777e5e6/langchain_protocol-0.0.19-py3-none-any.whl"}}, {"metadata": {"name": "orjson", "version": "3.12.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0f/f3/742fb1f62b825f2c010697eaf4e828004bc2a81e7e806666989c132c7c42/orjson-3.12.0.tar.gz"}}, {"metadata": {"name": "ormsgpack", "version": "1.12.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/c2/6feb972dc87285ad381749d3882d8aecbde9f6ecf908dd717d33d66df095/ormsgpack-1.12.2-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "requests-toolbelt", "version": "1.0.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "17.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/6e/4587e8406d7c1188e97b9cf466c081e93399380d447f885bfce81626cd37/websockets-17.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "xxhash", "version": "4.0.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c5/8e/e18998ec465fb977bc74272e5bf3c2e886c13b014cbef916cd607802c709/xxhash-4.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "zstandard", "version": "0.25.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fd/aa/3e0508d5a5dd96529cdc5a97011299056e14c6505b678fd58938792794b1/zstandard-0.25.0.tar.gz"}}], "install_targets_hash": "0ee3a52436b4f61e9cdbe5013bf352c3"} @@ -870,6 +878,8 @@ {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "6fda56086ebf3b624c63bebeb605cd50"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "3.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/bc/5b80a0ca4069a6b5ba6c7d48ae7a4f8176b2c0bde0bebccdb867472ec6f6/openai-3.17.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/ac/4a/84a5ec271d09f7590b6073af5ee4abb44eab4ccace453b7e2c5ce45234ca/jiter-0.17.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "6fe5caedd83b044975e2a5e20436ed3f"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai-agents", "version": "0.18.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e0/7c/08b9929a15131081898e38c5612d44ee293851d5c80f31ca1153efe82143/openai_agents-0.18.3-py3-none-any.whl"}}, {"metadata": {"name": "griffelib", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/63/e876e789525063c840ccfa8857febdabd6523bcef9ce7eb979b9305ea895/griffelib-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp", "version": "1.30.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f5/f4/e58bc33317c92a0203664daaf00bf6f41166cc0149e5d6870a03f7cd004a/mcp-1.30.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ac/4a/84a5ec271d09f7590b6073af5ee4abb44eab4ccace453b7e2c5ce45234ca/jiter-0.17.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "requests", "version": "2.34.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl"}}, {"metadata": {"name": "charset-normalizer", "version": "3.5.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1c/6c/c73fa9d5a85f6ab05395de61c5f6984e0a9ff40bb5ff888d46dff02526c6/charset_normalizer-3.5.1-cp314-cp314t-macosx_10_15_universal2.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.7.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl"}}, {"metadata": {"name": "websockets", "version": "16.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/e8/f7dac2e980bacc92bdc26cebae4ae4d50cae5380732c50980598fc0bbae4/websockets-16.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/5b/f0/424cb557d99aa86ac55da5e2add02e2882e44047b6264f93ade1b975a993/cryptography-50.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a7/03/921a3d3c75785aca9ebfbfcabfbc3a1be12e2ab5265deb026d55a5a3f83e/tqdm-4.70.1-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "72e451893bc86523078d768ca9965660"} +{"python_version": "3.14t", "dependencies": [{"metadata": {"name": "typesafe-sdk", "version": "0.7.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d8/9c/6fe8931fd9f381042a9e4c7d5a7b4cbf7016b252bec0c99a49fce42c3326/httpx2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/09/ba/a4568248771ce81957bfb7cc600264a40fbcda092391ee1c415c50be4bea/httpcore2-2.13.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tenacity", "version": "9.1.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d7/c1/eb8f9debc45d3b7918a32ab756658a0904732f75e555402972246b0b8e71/tenacity-9.1.4-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}], "install_targets_hash": "7270bd75f89996667824608b998f67f4"} +{"python_version": "3.14t", "dependencies": [{"metadata": {"name": "boto3", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/46/d29efd46ecac6637065a39418c5fb95500d70ec63e76065b5a72c936172f/boto3-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "botocore", "version": "1.43.98"}, "download_info": {"url": "https://files.pythonhosted.org/packages/65/ca/c7617e99c3247f545233ab2181840d142c5f72034e22864172866fb1369a/botocore-1.43.98-py3-none-any.whl"}}, {"metadata": {"name": "jmespath", "version": "1.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/14/2f/967ba146e6d58cf6a652da73885f52fc68001525b4197effc174321d70b4/jmespath-1.1.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "s3transfer", "version": "0.19.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/bc/e7/5c595c75e9f41a44f30e526eda465ea0b4eec93470e074e4a111b253f13a/s3transfer-0.19.2-py3-none-any.whl"}}, {"metadata": {"name": "urllib3", "version": "2.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/92/9d/c4e665119135114480843e7ab388fa94d8480650450e6f8e26b70d323a4c/urllib3-2.8.0-py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}], "install_targets_hash": "732c20a252602bec78b6c7ee26050916"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "openai", "version": "2.54.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/a8/bb76c7356de8ad57f59d5ff993d434df0607f07f08bcc9c9a5c275e399c0/openai-2.54.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "distro", "version": "1.9.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "jiter", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/81/6b/59127338b86d9fe4d99418f5a15118bea778103ee0fe9d9dd7e0af174e95/jiter-0.16.0-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fb/1b/8784a54c65edb5f49f0a14d6977cf1b209bba85a4c77445b255c2de58ab3/pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "tqdm", "version": "4.70.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "sniffio", "version": "1.3.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl"}}], "install_targets_hash": "74376afb5a970b70b12c3903563ea5a0"} {"python_version": "3.14t", "dependencies": [{"metadata": {"name": "mcp", "version": "2.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/1b/ff/8e7eade68b8a28f7da0ed1085544341b51f9c935dbf6b95c76b7edfea6a0/mcp-2.2.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp-types", "version": "2.2.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/8f/d7/6ffba5d8cd5dd9b8a19478875c50e04945314ba5074e84d749283f27f62d/mcp_types-2.2.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx2", "version": "2.12.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/95/411ba65569158e862368917aaf56597f3e5fa3b91b0502919638465a08f3/httpx2-2.12.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.12.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d2/74/d370e55600d9bcfa0d9794b0166126d49291a3d2b20c268fc98c453a4948/httpcore2-2.12.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://files.pythonhosted.org/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.44.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ca/6f/a04e900f465ff3221ccc395522503e2d10e79fa21f2723c8e177aae1e0d1/opentelemetry_api-1.44.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c5/02/bc19b47a96c2d3109760711acf22369e56bd7e405ca52f7ade164d2ead57/pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.14.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/9c/97/672cb32ce0dfea44b740cb7b4f97038463b9cf7c0ead1aacf595572851d6/pyjwt-2.14.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/5b/f0/424cb557d99aa86ac55da5e2add02e2882e44047b6264f93ade1b975a993/cryptography-50.0.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7d/47/5ecf1023850036e674c77ec4de86182d309ae344e39e7cba984b7df5d647/cffi-2.1.1-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/e9/44/77bcb1168b33704908295533d27f10eb811e9e3e193e8993dc99572211d3/rpds_py-2026.6.3-cp314-cp314t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.11"}, "download_info": {"url": "https://files.pythonhosted.org/packages/98/6a/2ba3ed4a69babf3afdddf7d8314a48d87562c0a442206bbc2a1b50d5efc0/sse_starlette-3.4.11-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.53.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/76/18/0eea75741ee812e9f598b687619ce2454f6c3a1c5cd21ea990ec6bd26f45/uvicorn-0.53.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}], "install_targets_hash": "753ede9e584170628cbda8efe3cce07d"} @@ -1030,7 +1040,6 @@ {"python_version": "3.15", "dependencies": [{"metadata": {"name": "pure_eval", "version": "0.2.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl"}}, {"metadata": {"name": "asttokens", "version": "3.0.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl"}}, {"metadata": {"name": "executing", "version": "2.2.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl"}}], "install_targets_hash": "ef91391ff2fb8720438fb9fbd1e2fc94"} {"python_version": "3.15", "dependencies": [{"metadata": {"name": "pure_eval", "version": "0.2.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/6d/18/83376915176eb058cb86470eb7396388a13350b09a8f233a79303bbcbc5b/pure_eval-0.2.4-py3-none-any.whl"}}, {"metadata": {"name": "asttokens", "version": "3.0.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/d4/2b/04b8a15f3a1c77bc79ddf5c73875327f34b4fa75982df2b76e45e402d364/asttokens-3.0.2-py3-none-any.whl"}}, {"metadata": {"name": "executing", "version": "2.2.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl"}}], "install_targets_hash": "ef91391ff2fb8720438fb9fbd1e2fc94"} {"python_version": "3.15", "dependencies": [{"metadata": {"name": "mistralai", "version": "2.10.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/98/f64b54166a607ece4e5c8494c843ac1f9c7c0af6f1014272cc420fe1d519/mistralai-2.10.1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.44.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ca/6f/a04e900f465ff3221ccc395522503e2d10e79fa21f2723c8e177aae1e0d1/opentelemetry_api-1.44.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "eval_type_backport", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/a7/bb99bf5e6f78736ddb53480f2c3ff3702ffe2196a7c5e1661c03081d398e/eval_type_backport-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonpath-python", "version": "1.1.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/55/8a/1270a6803bd821cbfcdda387eaa13cb41a7b1f7b9bd145979b3bfb9d6cb7/jsonpath_python-1.1.6-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-semantic-conventions", "version": "0.65b0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/a6/0e/49df70d9b81fb5cbae4bbf2a49d865b09bcbcbc4eb53f5851b1027738d78/opentelemetry_semantic_conventions-0.65b0-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "f60e32909a4363f0d8cc05916d4da67a"} -{"python_version": "3.15t", "dependencies": [{"metadata": {"name": "mistralai", "version": "2.0.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/c0/ab/a565e4bec9b5496eb3b44b8799b6ad8378b2cd0be4cd5e6b7d098e8cedcc/mistralai-2.0.5-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-semantic-conventions", "version": "0.60b1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.39.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl"}}, {"metadata": {"name": "importlib_metadata", "version": "8.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl"}}, {"metadata": {"name": "eval_type_backport", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/a7/bb99bf5e6f78736ddb53480f2c3ff3702ffe2196a7c5e1661c03081d398e/eval_type_backport-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "zipp", "version": "4.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "09f62d5b2b308b2b3cee9c7a73dc8d2c"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "openfeature_sdk", "version": "0.7.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9b/20/cb043f54b11505d993e4dd84652cfc44c1260dc94b7f41aa35489af58277/openfeature_sdk-0.7.5-py3-none-any.whl"}}], "install_targets_hash": "1014994e190575f0710da79951d7f561"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "openfeature_sdk", "version": "0.7.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9b/20/cb043f54b11505d993e4dd84652cfc44c1260dc94b7f41aa35489af58277/openfeature_sdk-0.7.5-py3-none-any.whl"}}], "install_targets_hash": "1014994e190575f0710da79951d7f561"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "openfeature_sdk", "version": "0.7.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9b/20/cb043f54b11505d993e4dd84652cfc44c1260dc94b7f41aa35489af58277/openfeature_sdk-0.7.5-py3-none-any.whl"}}], "install_targets_hash": "1014994e190575f0710da79951d7f561"} @@ -1039,6 +1048,8 @@ {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "mistralai", "version": "2.3.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/83/e0/9f246d18f8fe6e815f7cae88c437c986b342d3ff568607c8e0d53f4710d0/mistralai-2.3.2-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-semantic-conventions", "version": "0.60b1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.39.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl"}}, {"metadata": {"name": "importlib_metadata", "version": "8.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "eval_type_backport", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/a7/bb99bf5e6f78736ddb53480f2c3ff3702ffe2196a7c5e1661c03081d398e/eval_type_backport-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonpath-python", "version": "1.1.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/55/8a/1270a6803bd821cbfcdda387eaa13cb41a7b1f7b9bd145979b3bfb9d6cb7/jsonpath_python-1.1.6-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "zipp", "version": "4.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "220b48fa30e6d4e6ee437946e03f7dfd"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "mistralai", "version": "2.3.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/83/e0/9f246d18f8fe6e815f7cae88c437c986b342d3ff568607c8e0d53f4710d0/mistralai-2.3.2-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-semantic-conventions", "version": "0.60b1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.39.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl"}}, {"metadata": {"name": "importlib_metadata", "version": "8.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl"}}, {"metadata": {"name": "eval_type_backport", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/a7/bb99bf5e6f78736ddb53480f2c3ff3702ffe2196a7c5e1661c03081d398e/eval_type_backport-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonpath-python", "version": "1.1.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/55/8a/1270a6803bd821cbfcdda387eaa13cb41a7b1f7b9bd145979b3bfb9d6cb7/jsonpath_python-1.1.6-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "zipp", "version": "4.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "249823eb259de4caefbecfd82d608107"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "httpx2", "version": "2.13.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fe/d1/a0c72b0e006df654709fbc366cc5bcb53e5aee13e1e3395152c6dd293376/httpx2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "httpcore2", "version": "2.13.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/0d/117a771a2bb91df334b66bf4da14cd02f21aefbcfe53180f336ce55e8f90/httpcore2-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "truststore", "version": "0.10.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/19/97/56608b2249fe206a67cd573bc93cd9896e1efb9e98bce9c163bcdc704b88/truststore-0.10.4-py3-none-any.whl"}}], "install_targets_hash": "2544ffc140307d915c4ba79d5aafc0dd"} +{"python_version": "3.15t", "dependencies": [{"metadata": {"name": "fastmcp", "version": "1.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/b9/bf/0a77688242f30f81e3633d3765289966d9c7e408f9dcb4928a85852b9fde/fastmcp-1.0-py3-none-any.whl"}}, {"metadata": {"name": "mcp", "version": "1.29.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/04/d6b4fb82eefe9e81807aabca1ac98f460ae0883974b83a997aaa20c52545/mcp-1.29.1-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.14.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/da/35/f2287558c17e29fafc8ef3daf819bb9834061cfa43bff8014f7df7f63bdc/anyio-4.14.2-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx-sse", "version": "0.4.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.19"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/57/b0/0e52c878c53f245edd3a11020f20979b3f490f245af532c7cae3027754b5/idna-3.19-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema", "version": "4.26.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl"}}, {"metadata": {"name": "attrs", "version": "26.1.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonschema-specifications", "version": "2025.9.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic-settings", "version": "2.15.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/30/a4/2bffa9f8e804325a09867f0e9d30795c80ea9f8d62560bd1b6ad6220eb2f/pydantic_settings-2.15.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "PyJWT", "version": "2.13.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl"}}, {"metadata": {"name": "cryptography", "version": "50.0.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/bb/ad/5d6702db60b1e40b41ef513b6967ff5848f307d50f8449baf1634f5908f1/cryptography-50.0.1.tar.gz"}}, {"metadata": {"name": "cffi", "version": "2.1.1"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/ae/a56fa8c4686ad50e148fcbc8d3ae0d03915ff5c30d795058988c24118cef/cffi-2.1.1-cp315-cp315t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "python-dotenv", "version": "1.2.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0d/17/c5c6b53ddc18f297992099b3d9ec16c855c0ccc83263a21fe4d1c625ec6c/python_dotenv-1.2.3-py3-none-any.whl"}}, {"metadata": {"name": "python-multipart", "version": "0.0.32"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e1/04/e8135ebd1ad02c56ec633277529b2602ff99ff634be76cdba5744cf554fd/python_multipart-0.0.32-py3-none-any.whl"}}, {"metadata": {"name": "referencing", "version": "0.37.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl"}}, {"metadata": {"name": "rpds-py", "version": "2026.6.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/9d/29/9907bdf1c5346763cf10b7f6852aad86652168c259def904cbe0082c5864/rpds_py-2026.6.3-cp315-cp315t-macosx_11_0_arm64.whl"}}, {"metadata": {"name": "sse-starlette", "version": "3.4.8"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/dd/3a/764912c58293d95b6dcdf4cc255f9d10de310580ced547b082eb9d72018c/sse_starlette-3.4.8-py3-none-any.whl"}}, {"metadata": {"name": "starlette", "version": "1.6.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/c8/cb/6a6a47d5b464bd08695d254f3da6e7986cc70c9fa5d778eda57538edfe56/starlette-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "typer", "version": "0.27.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/dc/bf/205d0004930ede8f542fb58f601526fccf4ae7626075ca1e6c4de5d3d652/typer-0.27.2-py3-none-any.whl"}}, {"metadata": {"name": "annotated-doc", "version": "0.0.5"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/3e/30/e900b21425a860e195f32e37657aa1f7c7f2b1bfb26f03ca209b90933c06/annotated_doc-0.0.5-py3-none-any.whl"}}, {"metadata": {"name": "rich", "version": "15.0.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl"}}, {"metadata": {"name": "markdown-it-py", "version": "4.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl"}}, {"metadata": {"name": "mdurl", "version": "0.1.2"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl"}}, {"metadata": {"name": "shellingham", "version": "1.5.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "uvicorn", "version": "0.52.4"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/f1/79/4a20b54ab0491485ccd8c077db2d39187c7f12b3e15485d38a7be37c81b4/uvicorn-0.52.4-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}, {"metadata": {"name": "pycparser", "version": "3.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl"}}], "install_targets_hash": "20723503fc47693dca3f6601f6cab1ee"} +{"python_version": "3.15t", "dependencies": [{"metadata": {"name": "mistralai", "version": "2.3.2"}, "download_info": {"url": "https://files.pythonhosted.org/packages/83/e0/9f246d18f8fe6e815f7cae88c437c986b342d3ff568607c8e0d53f4710d0/mistralai-2.3.2-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-semantic-conventions", "version": "0.60b1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7a/5e/5958555e09635d09b75de3c4f8b9cae7335ca545d77392ffe7331534c402/opentelemetry_semantic_conventions-0.60b1-py3-none-any.whl"}}, {"metadata": {"name": "opentelemetry-api", "version": "1.39.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl"}}, {"metadata": {"name": "importlib_metadata", "version": "8.7.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl"}}, {"metadata": {"name": "pytest-asyncio", "version": "1.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/03/e2/08a497ef684b88559c9cc5f4ad53a37e7b99e727094a86d6ea32536d5d3c/pytest_asyncio-1.4.0-py3-none-any.whl"}}, {"metadata": {"name": "pytest", "version": "9.1.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl"}}, {"metadata": {"name": "pluggy", "version": "1.6.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl"}}, {"metadata": {"name": "httpx", "version": "0.28.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl"}}, {"metadata": {"name": "httpcore", "version": "1.0.9"}, "download_info": {"url": "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl"}}, {"metadata": {"name": "eval_type_backport", "version": "0.4.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/50/a7/bb99bf5e6f78736ddb53480f2c3ff3702ffe2196a7c5e1661c03081d398e/eval_type_backport-0.4.0-py3-none-any.whl"}}, {"metadata": {"name": "h11", "version": "0.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl"}}, {"metadata": {"name": "iniconfig", "version": "2.3.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl"}}, {"metadata": {"name": "jsonpath-python", "version": "1.1.6"}, "download_info": {"url": "https://files.pythonhosted.org/packages/55/8a/1270a6803bd821cbfcdda387eaa13cb41a7b1f7b9bd145979b3bfb9d6cb7/jsonpath_python-1.1.6-py3-none-any.whl"}}, {"metadata": {"name": "packaging", "version": "26.3"}, "download_info": {"url": "https://files.pythonhosted.org/packages/63/34/ba1c580383c9eada3711951fef0795c80b829a078d72188184bcab9dd527/packaging-26.3-py3-none-any.whl"}}, {"metadata": {"name": "pydantic", "version": "2.13.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/eb/47/c95ffc2009878c7aac0c5e08528022dcb885933252a88b5f170058014464/pydantic-2.13.5-py3-none-any.whl"}}, {"metadata": {"name": "pydantic_core", "version": "2.46.5"}, "download_info": {"url": "https://files.pythonhosted.org/packages/af/f9/8a06bea35ef8daf588f707784c973a7046e0034c8d8cfb08828eeffb8b75/pydantic_core-2.46.5.tar.gz"}}, {"metadata": {"name": "annotated-types", "version": "0.8.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/99/91/8acff4f5e50511b911bbccb72b8628a49c68ce14148cd9f6431094859a90/annotated_types-0.8.0-py3-none-any.whl"}}, {"metadata": {"name": "Pygments", "version": "2.21.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/71/46/17f022dd3e953bf20a04a028a21ec746d942f8d2af30fa0f124fa0e6a684/pygments-2.21.0-py3-none-any.whl"}}, {"metadata": {"name": "python-dateutil", "version": "2.9.0.post0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl"}}, {"metadata": {"name": "six", "version": "1.17.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl"}}, {"metadata": {"name": "typing_extensions", "version": "4.16.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl"}}, {"metadata": {"name": "typing-inspection", "version": "0.4.4"}, "download_info": {"url": "https://files.pythonhosted.org/packages/67/81/4add07e5172b7ac40d8ed5ff580409a7801a4fe26d529bdd915401dabfbe/typing_inspection-0.4.4-py3-none-any.whl"}}, {"metadata": {"name": "zipp", "version": "4.1.0"}, "download_info": {"url": "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl"}}, {"metadata": {"name": "anyio", "version": "4.15.1"}, "download_info": {"url": "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl"}}, {"metadata": {"name": "idna", "version": "3.20"}, "download_info": {"url": "https://files.pythonhosted.org/packages/58/a2/bb081bab032533a855d44de1d56f8e8426114ff1ba5d1f07a438a0a654f8/idna-3.20-py3-none-any.whl"}}, {"metadata": {"name": "certifi", "version": "2026.7.22"}, "download_info": {"url": "https://files.pythonhosted.org/packages/0b/a7/71ac2cff56fec219ed242bb11b8efb69fcc4bec75db06fb7bfe35de520e6/certifi-2026.7.22-py3-none-any.whl"}}], "install_targets_hash": "220b48fa30e6d4e6ee437946e03f7dfd"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "Flask", "version": "2.3.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fd/56/26f0be8adc2b4257df20c1c4260ddd0aa396cf8e75d90ab2f7ff99bc34f9/flask-2.3.3-py3-none-any.whl"}}, {"metadata": {"name": "Flask-Login", "version": "0.6.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/59/f5/67e9cc5c2036f58115f9fe0f00d203cf6780c3ff8ae0e705e7a9d9e8ff9e/Flask_Login-0.6.3-py3-none-any.whl"}}, {"metadata": {"name": "Werkzeug", "version": "3.1.8"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl"}}, {"metadata": {"name": "blinker", "version": "1.9.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "itsdangerous", "version": "2.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl"}}, {"metadata": {"name": "Jinja2", "version": "3.1.6"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl"}}, {"metadata": {"name": "MarkupSafe", "version": "3.0.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz"}}], "install_targets_hash": "26b4bd6a717ed504426367c6af492c2d"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "Flask", "version": "2.3.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fd/56/26f0be8adc2b4257df20c1c4260ddd0aa396cf8e75d90ab2f7ff99bc34f9/flask-2.3.3-py3-none-any.whl"}}, {"metadata": {"name": "Flask-Login", "version": "0.6.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/59/f5/67e9cc5c2036f58115f9fe0f00d203cf6780c3ff8ae0e705e7a9d9e8ff9e/Flask_Login-0.6.3-py3-none-any.whl"}}, {"metadata": {"name": "Werkzeug", "version": "3.1.8"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl"}}, {"metadata": {"name": "blinker", "version": "1.9.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "itsdangerous", "version": "2.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl"}}, {"metadata": {"name": "Jinja2", "version": "3.1.6"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl"}}, {"metadata": {"name": "MarkupSafe", "version": "3.0.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz"}}], "install_targets_hash": "26b4bd6a717ed504426367c6af492c2d"} {"python_version": "3.15t", "dependencies": [{"metadata": {"name": "Flask", "version": "2.3.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/fd/56/26f0be8adc2b4257df20c1c4260ddd0aa396cf8e75d90ab2f7ff99bc34f9/flask-2.3.3-py3-none-any.whl"}}, {"metadata": {"name": "Flask-Login", "version": "0.6.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/59/f5/67e9cc5c2036f58115f9fe0f00d203cf6780c3ff8ae0e705e7a9d9e8ff9e/Flask_Login-0.6.3-py3-none-any.whl"}}, {"metadata": {"name": "Werkzeug", "version": "3.1.8"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/93/8c/2e650f2afeb7ee576912636c23ddb621c91ac6a98e66dc8d29c3c69446e1/werkzeug-3.1.8-py3-none-any.whl"}}, {"metadata": {"name": "blinker", "version": "1.9.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl"}}, {"metadata": {"name": "click", "version": "8.5.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/58/50/6c0d534c5f134586a8e1ba4e330569e32f057e33372ae556463212fb4cd3/click-8.5.0-py3-none-any.whl"}}, {"metadata": {"name": "itsdangerous", "version": "2.2.0"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl"}}, {"metadata": {"name": "Jinja2", "version": "3.1.6"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl"}}, {"metadata": {"name": "MarkupSafe", "version": "3.0.3"}, "download_info": {"url": "https://sfw.security.sentry.io/pypi/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz"}}], "install_targets_hash": "26b4bd6a717ed504426367c6af492c2d"} diff --git a/scripts/populate_tox/releases.jsonl b/scripts/populate_tox/releases.jsonl index 8b715656a3..3049a2712d 100644 --- a/scripts/populate_tox/releases.jsonl +++ b/scripts/populate_tox/releases.jsonl @@ -210,3 +210,4 @@ {"info": {"classifiers": ["Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: No Input/Output (Daemon)", "Framework :: Tryton", "Intended Audience :: Developers", "Topic :: Office/Business", "Topic :: Software Development :: Libraries :: Application Frameworks"], "name": "trytond", "requires_python": ">=3.10", "version": "8.0.10", "yanked": false}, "urls": [{"packagetype": "bdist_wheel", "filename": "trytond-8.0.10-py3-none-any.whl"}, {"packagetype": "sdist", "filename": "trytond-8.0.10.tar.gz"}]} {"info": {"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed"], "name": "typer", "requires_python": ">=3.7", "version": "0.15.4", "yanked": false}, "urls": [{"packagetype": "bdist_wheel", "filename": "typer-0.15.4-py3-none-any.whl"}, {"packagetype": "sdist", "filename": "typer-0.15.4.tar.gz"}]} {"info": {"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed"], "name": "typer", "requires_python": ">=3.10", "version": "0.27.2", "yanked": false}, "urls": [{"packagetype": "bdist_wheel", "filename": "typer-0.27.2-py3-none-any.whl"}, {"packagetype": "sdist", "filename": "typer-0.27.2.tar.gz"}]} +{"info": {"classifiers": ["Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Software Development :: Libraries :: Python Modules", "Typing :: Typed"], "name": "typesafe-sdk", "requires_python": ">=3.10", "version": "0.7.2", "yanked": false}, "urls": [{"packagetype": "bdist_wheel", "filename": "typesafe_sdk-0.7.2-py3-none-any.whl"}, {"packagetype": "sdist", "filename": "typesafe_sdk-0.7.2.tar.gz"}]} diff --git a/scripts/split_tox_gh_actions/split_tox_gh_actions.py b/scripts/split_tox_gh_actions/split_tox_gh_actions.py index 923f8f2a2f..586e88b05f 100755 --- a/scripts/split_tox_gh_actions/split_tox_gh_actions.py +++ b/scripts/split_tox_gh_actions/split_tox_gh_actions.py @@ -95,6 +95,7 @@ "mistral", "openai-base", "openai-notiktoken", + "typesafe", ], "Cloud": [ "aws_lambda", diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index 75b5cb7c92..6c15a52f03 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -1187,6 +1187,7 @@ class OP: GEN_AI_CHAT = "gen_ai.chat" GEN_AI_CREATE_AGENT = "gen_ai.create_agent" GEN_AI_EMBEDDINGS = "gen_ai.embeddings" + GEN_AI_EVALUATE = "gen_ai.evaluate" GEN_AI_EXECUTE_TOOL = "gen_ai.execute_tool" GEN_AI_TEXT_COMPLETION = "gen_ai.text_completion" GEN_AI_HANDOFF = "gen_ai.handoff" diff --git a/sentry_sdk/integrations/__init__.py b/sentry_sdk/integrations/__init__.py index da6fc9608b..a8eeacb4e0 100644 --- a/sentry_sdk/integrations/__init__.py +++ b/sentry_sdk/integrations/__init__.py @@ -177,6 +177,7 @@ def iter_default_integrations( "tornado": (6, 0), "trytond_wsgi": (5, 4), "typer": (0, 15), + "typesafe": (0, 7), "unleash": (6, 0, 1), } diff --git a/sentry_sdk/integrations/typesafe.py b/sentry_sdk/integrations/typesafe.py new file mode 100644 index 0000000000..84e11b9bc5 --- /dev/null +++ b/sentry_sdk/integrations/typesafe.py @@ -0,0 +1,262 @@ +import json +from collections.abc import Mapping +from functools import wraps +from typing import TYPE_CHECKING, cast + +import sentry_sdk +from sentry_sdk.consts import OP, SPANDATA +from sentry_sdk.integrations import DidNotEnable, Integration + +if TYPE_CHECKING: + from typing import ( + Any, + Callable, + Literal, + Mapping, + NotRequired, + Sequence, + TypedDict, + Union, + ) + + from typesafe_sdk import JSONContent + from typesafe_sdk._core.question_types import Questions + + class NoulModel(TypedDict): + type: Literal["noul"] + instructions: NotRequired[JSONContent | None] + + class ChoiceModel(TypedDict): + type: Literal["choice"] + criteria: NotRequired[Mapping[str, JSONContent | None]] + instructions: NotRequired[JSONContent | None] + + class ScoreModel(TypedDict): + type: Literal["score"] + criteria: NotRequired[Sequence[JSONContent]] + instructions: NotRequired[JSONContent | None] + + class InputMessageModel(TypedDict): + type: Literal["evaluation"] + state: NotRequired[JSONContent] + questions: NotRequired[dict[str, Union[NoulModel, ChoiceModel, ScoreModel]]] + + +try: + from typesafe_sdk import Choice, Noul, Score + from typesafe_sdk._core.client.aio.client import AsyncTypeSafeClient + from typesafe_sdk._core.client.sync.client import TypeSafeClient + from typesafe_sdk._core.response_types import SystemOneResponse +except ImportError: + raise DidNotEnable("typesafe-sdk not installed") + + +class TypeSafeIntegration(Integration): + identifier = "typesafe" + origin = f"auto.ai.{identifier}" + + @staticmethod + def setup_once() -> None: + TypeSafeClient.system_one = _wrap_system_one(TypeSafeClient.system_one) # type: ignore[method-assign] + AsyncTypeSafeClient.system_one = _wrap_system_one_async( # type: ignore[method-assign] + AsyncTypeSafeClient.system_one + ) + + +def _transform_questions( + questions: "Questions", +) -> "dict[str, Union[NoulModel, ChoiceModel, ScoreModel]]": + transformed_questions: "dict[str, Union[NoulModel, ChoiceModel, ScoreModel]]" = {} + for name, question in questions.items(): + if isinstance(question, Noul): + noul: "NoulModel" = { + "type": "noul", + } + + if question.instructions is not None: + noul["instructions"] = question.instructions + + transformed_questions[name] = noul + continue + + if isinstance(question, Choice): + choice: "ChoiceModel" = { + "type": "choice", + "criteria": question.criteria, + } + + if question.instructions is not None: + choice["instructions"] = question.instructions + + transformed_questions[name] = choice + continue + + if isinstance(question, Score): + score: "ScoreModel" = { + "type": "score", + "criteria": question.criteria, + } + + if question.instructions is not None: + score["instructions"] = question.instructions + + transformed_questions[name] = score + continue + + if not isinstance(question, dict): + continue + + question_type = question.get("type") + if question_type == "noul": + noul = { + "type": question_type, + } + if "instructions" in question: + noul["instructions"] = question["instructions"] + + transformed_questions[name] = noul + continue + + if question_type == "choice": + choice = { + "type": question_type, + } + if "criteria" in question: + choice["criteria"] = cast( + "Mapping[str, JSONContent | None]", question["criteria"] + ) + if "instructions" in question: + choice["instructions"] = question["instructions"] + + transformed_questions[name] = choice + continue + + if question_type == "score": + score = { + "type": question_type, + } + if "criteria" in question: + score["criteria"] = cast("Sequence[JSONContent]", question["criteria"]) + if "instructions" in question: + score["instructions"] = question["instructions"] + + transformed_questions[name] = score + continue + + return transformed_questions + + +def _wrap_system_one(f: "Callable[..., Any]") -> "Callable[..., Any]": + @wraps(f) + def wrap_system_one(self: "TypeSafeClient", *args: "Any", **kwargs: "Any") -> "Any": + client = sentry_sdk.get_client() + integration = client.get_integration(TypeSafeIntegration) + if integration is None: + return f(self, *args, **kwargs) + + model = kwargs.get("model") + if ( + model is None + and hasattr(self, "_config") + and hasattr(self._config, "default_model") + ): + model = self._config.default_model + + with sentry_sdk.start_span( + name=f"evaluate {model}".strip(), + attributes={ + "sentry.op": OP.GEN_AI_EVALUATE, + "sentry.origin": TypeSafeIntegration.origin, + SPANDATA.GEN_AI_PROVIDER_NAME: "typesafe", + SPANDATA.GEN_AI_OPERATION_NAME: "evaluate", + }, + ) as span: + if model is not None: + span.set_attribute(SPANDATA.GEN_AI_REQUEST_MODEL, model) + + if client.options["data_collection"]["gen_ai"]["inputs"]: + input_message: "InputMessageModel" = { + "type": "evaluation", + } + + state = args[0] if len(args) > 0 else kwargs.get("state") + if state is not None: + input_message["state"] = state + + questions = args[1] if len(args) > 1 else kwargs.get("questions") + if isinstance(questions, Mapping): + input_message["questions"] = _transform_questions(questions) + + span.set_attribute( + SPANDATA.GEN_AI_INPUT_MESSAGES, json.dumps([input_message]) + ) + + response = f(self, *args, **kwargs) + + if not isinstance(response, SystemOneResponse): + return response + + span.set_attribute(SPANDATA.GEN_AI_RESPONSE_MODEL, response.model) + + return response + + return wrap_system_one + + +def _wrap_system_one_async(f: "Callable[..., Any]") -> "Callable[..., Any]": + @wraps(f) + async def wrap_system_one_async( + self: "AsyncTypeSafeClient", *args: "Any", **kwargs: "Any" + ) -> "Any": + client = sentry_sdk.get_client() + integration = client.get_integration(TypeSafeIntegration) + if integration is None: + return await f(self, *args, **kwargs) + + model = kwargs.get("model") + if ( + model is None + and hasattr(self, "_config") + and hasattr(self._config, "default_model") + ): + model = self._config.default_model + + with sentry_sdk.start_span( + name=f"evaluate {model}".strip(), + attributes={ + "sentry.op": OP.GEN_AI_EVALUATE, + "sentry.origin": TypeSafeIntegration.origin, + SPANDATA.GEN_AI_PROVIDER_NAME: "typesafe", + SPANDATA.GEN_AI_OPERATION_NAME: "evaluate", + }, + ) as span: + if model is not None: + span.set_attribute(SPANDATA.GEN_AI_REQUEST_MODEL, model) + + if client.options["data_collection"]["gen_ai"]["inputs"]: + input_message: "InputMessageModel" = { + "type": "evaluation", + } + + state = args[0] if len(args) > 0 else kwargs.get("state") + if state is not None: + input_message["state"] = state + + questions = args[1] if len(args) > 1 else kwargs.get("questions") + if isinstance(questions, Mapping): + input_message["questions"] = _transform_questions(questions) + + span.set_attribute( + SPANDATA.GEN_AI_INPUT_MESSAGES, json.dumps([input_message]) + ) + + response = await f(self, *args, **kwargs) + + if not isinstance(response, SystemOneResponse): + return response + + span.set_attribute(SPANDATA.GEN_AI_RESPONSE_MODEL, response.model) + + return response + + return wrap_system_one_async diff --git a/sentry_sdk/tracing_utils.py b/sentry_sdk/tracing_utils.py index a7d4bb84b0..7e5907d4ba 100644 --- a/sentry_sdk/tracing_utils.py +++ b/sentry_sdk/tracing_utils.py @@ -1217,13 +1217,10 @@ def _make_sampling_decision( sample_rate = client.options["traces_sampler"](sampling_context) except Exception: logger.warning( - "[Tracing] traces_sampler raised; falling back to parent sample rate or traces_sample_rate", + "[Tracing] traces_sampler raised; unsampling trace", exc_info=True, ) - if propagation_context.parent_sampled is not None: - sample_rate = propagation_context.parent_sampled - else: - sample_rate = client.options["traces_sample_rate"] + return False, None, None, "callback_error" else: if propagation_context.parent_sampled is not None: sample_rate = propagation_context.parent_sampled diff --git a/tests/integrations/flask/test_flask.py b/tests/integrations/flask/test_flask.py index 400a42dc33..da18734743 100644 --- a/tests/integrations/flask/test_flask.py +++ b/tests/integrations/flask/test_flask.py @@ -355,7 +355,7 @@ def index(): except ZeroDivisionError: pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() (first_event, error_event, session) = envelopes first_event = first_event.get_event() diff --git a/tests/integrations/huey/test_huey.py b/tests/integrations/huey/test_huey.py index 113d6a2025..de47ee7303 100644 --- a/tests/integrations/huey/test_huey.py +++ b/tests/integrations/huey/test_huey.py @@ -85,7 +85,8 @@ def division(a, b): execute_huey_task( huey, division, 1, int(not task_fails), exceptions=(DivisionByZero,) ) - sentry_sdk.get_client().flush() + + sentry_sdk.flush() payloads = [i.payload for i in items] # The task is enqueued without a wrapping span, so in streaming mode no @@ -113,7 +114,8 @@ def retry_task(context): items = capture_items("span") execute_huey_task(huey, retry_task, context) - sentry_sdk.get_client().flush() + + sentry_sdk.flush() payloads = [i.payload for i in items] # The initial enqueue happens without a wrapping span, so no producer @@ -136,7 +138,7 @@ def retry_task(context): task = huey.dequeue() huey.execute(task) - sentry_sdk.get_client().flush() + sentry_sdk.flush() all_payloads = [i.payload for i in items] @@ -158,7 +160,7 @@ def cancel_task(): items = capture_items("span") execute_huey_task(huey, cancel_task) - sentry_sdk.get_client().flush() + sentry_sdk.flush() payloads = [i.payload for i in items] # Enqueued without a wrapping span -> no producer span in streaming mode. @@ -188,7 +190,8 @@ def maybe_locked_task(): with huey.lock_task(lock_name): assert huey.is_locked(task_lock_name) == should_be_locked execute_huey_task(huey, maybe_locked_task) - sentry_sdk.get_client().flush() + + sentry_sdk.flush() payloads = [i.payload for i in items] # Enqueued without a wrapping span -> no producer span in streaming mode. @@ -222,7 +225,9 @@ def division(a, b): items = capture_items("event") execute_huey_task(huey, division, 1, b=0, exceptions=(DivisionByZero,)) - sentry_sdk.get_client().flush() + + sentry_sdk.flush() + events = [item.payload for item in items] (event,) = [event for event in events if "exception" in event] @@ -363,7 +368,7 @@ def task2(): task = huey.dequeue() huey.execute(task) - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(items) == 6 ( @@ -450,7 +455,7 @@ def task2(results): task = huey.dequeue() huey.execute(task) - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(items) == 6 ( diff --git a/tests/integrations/loguru/test_loguru.py b/tests/integrations/loguru/test_loguru.py index 20e90cffcf..0440c2fc1e 100644 --- a/tests/integrations/loguru/test_loguru.py +++ b/tests/integrations/loguru/test_loguru.py @@ -192,7 +192,7 @@ def test_sentry_logs_warning( logger.warning("this is {} a {}", "just", "template") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] attrs = logs[0]["attributes"] @@ -215,7 +215,7 @@ def test_sentry_logs_debug( envelopes = capture_envelopes() logger.debug("this is %s a template %s", "1", "2") - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 0 @@ -237,7 +237,7 @@ def test_sentry_log_levels(sentry_init, capture_items, uninstall_integration, re logger.error("this is a log") logger.critical("this is a log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] assert len(logs) == 4 @@ -270,7 +270,7 @@ def test_disable_loguru_logs( logger.error("this is a log") logger.critical("this is a log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] assert len(logs) == 0 @@ -292,7 +292,7 @@ def test_disable_sentry_logs_by_default( logger.error("this is a log") logger.critical("this is a log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] assert len(logs) == 0 @@ -313,7 +313,7 @@ def test_no_log_infinite_loop( envelopes = capture_envelopes() logger.debug("this is %s a template %s", "1", "2") - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 1 @@ -337,7 +337,7 @@ def test_logging_errors( logger.error(Exception("test exc 1")) logger.error("error is %s", Exception("test exc 2")) - sentry_sdk.get_client().flush() + sentry_sdk.flush() error_event_1 = envelopes[0].items[0].payload.json assert error_event_1["level"] == "error" @@ -395,7 +395,7 @@ def record(self, val): with patch("loguru._handler.Message", FakeMessage): logger.error("some message") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] assert len(logs) == 1 @@ -444,7 +444,7 @@ def record(self, val): with patch("loguru._handler.Message", FakeMessage): logger.error("some message") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] assert len(logs) == 1 @@ -462,7 +462,7 @@ def test_logger_with_all_attributes( items = capture_items("log") logger.warning("log #{}", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -535,7 +535,7 @@ def test_logger_capture_parameters_from_args( logger.warning("Task ID: {}", 123) - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -554,7 +554,7 @@ def test_logger_capture_parameters_from_kwargs( logger.warning("Task ID: {task_id}", task_id=123) - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -574,7 +574,7 @@ def test_logger_capture_parameters_from_contextualize( with logger.contextualize(task_id=123): logger.warning("Log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -592,7 +592,7 @@ def test_logger_capture_parameters_from_bind( items = capture_items("log") logger.bind(task_id=123).warning("Log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -610,7 +610,7 @@ def test_logger_capture_parameters_from_patch( items = capture_items("log") logger.patch(lambda record: record["extra"].update(task_id=123)).warning("Log") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] @@ -628,7 +628,7 @@ def test_no_parameters_no_template( items = capture_items("log") logger.warning("Logging a hardcoded warning") - sentry_sdk.get_client().flush() + sentry_sdk.flush() logs = [item.payload for item in items] diff --git a/tests/integrations/otlp/test_otlp.py b/tests/integrations/otlp/test_otlp.py index 504507e274..0537b3192e 100644 --- a/tests/integrations/otlp/test_otlp.py +++ b/tests/integrations/otlp/test_otlp.py @@ -2,6 +2,7 @@ import responses from opentelemetry import trace from opentelemetry.context import attach, detach +from opentelemetry.exporter.otlp.proto.http import __version__ from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.propagate import get_global_textmap, set_global_textmap from opentelemetry.sdk.trace import TracerProvider @@ -21,6 +22,9 @@ SentryOTLPPropagator, ) from sentry_sdk.scope import get_external_propagation_context +from sentry_sdk.utils import parse_version + +OTLP_EXPORTER_VERSION = parse_version(__version__) original_propagator = get_global_textmap() @@ -81,6 +85,15 @@ def test_sets_new_tracer_provider_with_otlp_exporter(sentry_init): exporter._endpoint == "https://bla.ingest.sentry.io/api/12312012/integration/otlp/v1/traces/" ) + + if OTLP_EXPORTER_VERSION is not None and OTLP_EXPORTER_VERSION >= (1, 45): + assert "x-sentry-auth" in exporter._client._headers + assert ( + "Sentry sentry_key=mysecret, sentry_version=7, sentry_client=sentry.python/" + in exporter._client._headers["x-sentry-auth"] + ) + return + assert "X-Sentry-Auth" in exporter._headers assert ( "Sentry sentry_key=mysecret, sentry_version=7, sentry_client=sentry.python/" @@ -110,6 +123,14 @@ def test_uses_existing_tracer_provider_with_otlp_exporter(sentry_init): exporter._endpoint == "https://bla.ingest.sentry.io/api/12312012/integration/otlp/v1/traces/" ) + if OTLP_EXPORTER_VERSION is not None and OTLP_EXPORTER_VERSION >= (1, 45): + assert "x-sentry-auth" in exporter._client._headers + assert ( + "Sentry sentry_key=mysecret, sentry_version=7, sentry_client=sentry.python/" + in exporter._client._headers["x-sentry-auth"] + ) + return + assert "X-Sentry-Auth" in exporter._headers assert ( "Sentry sentry_key=mysecret, sentry_version=7, sentry_client=sentry.python/" @@ -256,6 +277,14 @@ def test_collector_url_sets_endpoint(sentry_init): exporter = span_processor.span_exporter assert isinstance(exporter, OTLPSpanExporter) assert exporter._endpoint == "https://my-collector.example.com/v1/traces" + + if OTLP_EXPORTER_VERSION is not None and OTLP_EXPORTER_VERSION >= (1, 45): + assert ( + exporter._client._headers is None + or "x-sentry-auth" not in exporter._client._headers + ) + return + assert exporter._headers is None or "X-Sentry-Auth" not in exporter._headers @@ -297,6 +326,11 @@ def test_collector_url_none_falls_back_to_dsn(sentry_init): exporter._endpoint == "https://bla.ingest.sentry.io/api/12312012/integration/otlp/v1/traces/" ) + + if OTLP_EXPORTER_VERSION is not None and OTLP_EXPORTER_VERSION >= (1, 45): + assert "x-sentry-auth" in exporter._client._headers + return + assert "X-Sentry-Auth" in exporter._headers diff --git a/tests/integrations/typesafe/__init__.py b/tests/integrations/typesafe/__init__.py new file mode 100644 index 0000000000..e35cead38f --- /dev/null +++ b/tests/integrations/typesafe/__init__.py @@ -0,0 +1,3 @@ +import pytest + +pytest.importorskip("typesafe_sdk") diff --git a/tests/integrations/typesafe/test_typesafe.py b/tests/integrations/typesafe/test_typesafe.py new file mode 100644 index 0000000000..d50d4b52b7 --- /dev/null +++ b/tests/integrations/typesafe/test_typesafe.py @@ -0,0 +1,254 @@ +import json +from unittest import mock + +import pytest +from typesafe_sdk import ( + AsyncTypeSafeClient, + Choice, + ChoiceAnswer, + Noul, + NoulAnswer, + Score, + ScoreAnswer, + SystemOneResponse, + TypeSafeClient, + Usage, +) + +import sentry_sdk +from sentry_sdk.consts import OP, SPANDATA +from sentry_sdk.integrations.typesafe import TypeSafeIntegration + + +@pytest.fixture +def typesafe_response(): + return SystemOneResponse( + model="jev-latest", + usage=Usage(input_tokens=12, output_tokens=3), + answers={ + "spam": NoulAnswer(noul=0.98), + "tone": ChoiceAnswer( + choice="friendly", + confidence=0.9, + probabilities={"friendly": 0.9, "hostile": 0.1}, + ), + "urgency": ScoreAnswer( + score=1.7, + confidence=0.8, + legend={0: "can wait", 1: "this week", 2: "today"}, + probabilities={0: 0.1, 1: 0.1, 2: 0.8}, + ), + "spam_obj": NoulAnswer(noul=0.98), + "tone_obj": ChoiceAnswer( + choice="friendly", + confidence=0.9, + probabilities={"friendly": 0.9, "hostile": 0.1}, + ), + "urgency_obj": ScoreAnswer( + score=1.7, + confidence=0.8, + legend={0: "can wait", 1: "this week", 2: "today"}, + probabilities={0: 0.1, 1: 0.1, 2: 0.8}, + ), + }, + ) + + +def test_system_one(sentry_init, capture_items, typesafe_response): + sentry_init( + integrations=[TypeSafeIntegration()], + traces_sample_rate=1.0, + data_collection={}, + ) + + client = TypeSafeClient(api_key="z") + + items = capture_items("span") + + with mock.patch.object(TypeSafeClient, "_request", return_value=typesafe_response): + client.system_one( + state={ + "subject": "Charged twice this month", + "body": "I see two charges of $49. I only have one account. Please fix this ASAP.", + }, + questions={ + "spam": {"type": "noul", "instructions": "Spam?"}, + "tone": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + "spam_obj": Noul(instructions="Spam?"), + "tone_obj": Choice( + instructions="Tone?", + criteria={"friendly": None, "hostile": None}, + ), + "quality_obj": Score( + instructions="Quality?", criteria=["bad", "ok", "great"] + ), + }, + ) + + sentry_sdk.flush() + + spans = [item.payload for item in items] + (span,) = ( + span + for span in spans + if span["attributes"].get("sentry.op") == OP.GEN_AI_EVALUATE + ) + assert span["name"] == "evaluate jev-latest" + + assert span["attributes"][SPANDATA.GEN_AI_PROVIDER_NAME] == "typesafe" + assert span["attributes"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate" + assert span["attributes"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest" + + assert span["attributes"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest" + + assert json.loads(span["attributes"][SPANDATA.GEN_AI_INPUT_MESSAGES]) == [ + { + "type": "evaluation", + "state": { + "subject": "Charged twice this month", + "body": "I see two charges of $49. I only have one account. Please fix this ASAP.", + }, + "questions": { + "spam": { + "type": "noul", + "instructions": "Spam?", + }, + "tone": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + "spam_obj": { + "type": "noul", + "instructions": "Spam?", + }, + "tone_obj": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality_obj": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + }, + } + ] + + +@pytest.mark.asyncio +async def test_system_one_async(sentry_init, capture_items, typesafe_response): + sentry_init( + integrations=[TypeSafeIntegration()], + traces_sample_rate=1.0, + data_collection={}, + ) + + client = AsyncTypeSafeClient(api_key="z") + + items = capture_items("span") + + with mock.patch.object( + AsyncTypeSafeClient, + "_request", + new_callable=mock.AsyncMock, + return_value=typesafe_response, + ): + await client.system_one( + state={ + "subject": "Charged twice this month", + "body": "I see two charges of $49. I only have one account. Please fix this ASAP.", + }, + questions={ + "spam": {"type": "noul", "instructions": "Spam?"}, + "tone": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + "spam_obj": Noul(instructions="Spam?"), + "tone_obj": Choice( + instructions="Tone?", + criteria={"friendly": None, "hostile": None}, + ), + "quality_obj": Score( + instructions="Quality?", criteria=["bad", "ok", "great"] + ), + }, + ) + + sentry_sdk.flush() + + spans = [item.payload for item in items] + (span,) = ( + span + for span in spans + if span["attributes"].get("sentry.op") == OP.GEN_AI_EVALUATE + ) + assert span["name"] == "evaluate jev-latest" + + assert span["attributes"][SPANDATA.GEN_AI_PROVIDER_NAME] == "typesafe" + assert span["attributes"][SPANDATA.GEN_AI_OPERATION_NAME] == "evaluate" + assert span["attributes"][SPANDATA.GEN_AI_REQUEST_MODEL] == "jev-latest" + + assert span["attributes"][SPANDATA.GEN_AI_RESPONSE_MODEL] == "jev-latest" + + assert json.loads(span["attributes"][SPANDATA.GEN_AI_INPUT_MESSAGES]) == [ + { + "type": "evaluation", + "state": { + "subject": "Charged twice this month", + "body": "I see two charges of $49. I only have one account. Please fix this ASAP.", + }, + "questions": { + "spam": { + "type": "noul", + "instructions": "Spam?", + }, + "tone": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + "spam_obj": { + "type": "noul", + "instructions": "Spam?", + }, + "tone_obj": { + "type": "choice", + "instructions": "Tone?", + "criteria": {"friendly": None, "hostile": None}, + }, + "quality_obj": { + "type": "score", + "instructions": "Quality?", + "criteria": ["bad", "ok", "great"], + }, + }, + } + ] diff --git a/tests/test_attributes.py b/tests/test_attributes.py index 75e1ecb260..7133e5705f 100644 --- a/tests/test_attributes.py +++ b/tests/test_attributes.py @@ -21,7 +21,7 @@ def test_top_level_api(sentry_init, capture_items): sentry_sdk.remove_attribute("nonexistent") sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -56,7 +56,7 @@ def test_scope_precedence(sentry_init, capture_items): current_scope.set_attribute("overwritten.attribute", "current") sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -99,7 +99,7 @@ def test_telemetry_precedence(sentry_init, capture_items): }, ) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -122,7 +122,7 @@ def test_attribute_out_of_scope(sentry_init, capture_items): sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -141,7 +141,7 @@ def test_remove_attribute(sentry_init, capture_items): sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -177,7 +177,7 @@ class Cat: sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metrics = [item.payload for item in items] (metric,) = metrics @@ -207,7 +207,7 @@ def test_user_attributes(sentry_init, capture_items): with sentry_sdk.start_span(name="login"): sentry_sdk.metrics.count("test", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() metric, span = [item.payload for item in items] diff --git a/tests/test_logs.py b/tests/test_logs.py index c4998d3216..7a9c90a566 100644 --- a/tests/test_logs.py +++ b/tests/test_logs.py @@ -444,7 +444,7 @@ def test_transport_format(sentry_init, capture_envelopes): sentry_sdk.logger.warning("This is a log...") - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 1 assert len(envelopes[0].items) == 1 diff --git a/tests/test_metrics.py b/tests/test_metrics.py index 1e513fbf16..dab4b60706 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -244,7 +244,7 @@ def test_transport_format(sentry_init, capture_envelopes): sentry_sdk.metrics.count("test.counter", 1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 1 assert len(envelopes[0].items) == 1 diff --git a/tests/tracing/test_decorator.py b/tests/tracing/test_decorator.py index 4b9d107845..63635cefd3 100644 --- a/tests/tracing/test_decorator.py +++ b/tests/tracing/test_decorator.py @@ -27,7 +27,7 @@ def traced_function(): result = traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -54,7 +54,7 @@ def traced_function(): result = traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -81,7 +81,7 @@ def traced_function(): result = traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -108,7 +108,7 @@ async def traced_function(): result = await traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -137,7 +137,7 @@ async def traced_function(): result = await traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -165,7 +165,7 @@ async def traced_function(): result = await traced_function() assert result == "ok" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 diff --git a/tests/tracing/test_sampling.py b/tests/tracing/test_sampling.py index 2754e07e68..06a18c59bc 100644 --- a/tests/tracing/test_sampling.py +++ b/tests/tracing/test_sampling.py @@ -122,87 +122,6 @@ def test_tolerates_traces_sampler_returning_a_boolean( assert span.sampled is traces_sampler_return_value -@pytest.mark.parametrize("parent_sampling_decision", [True, False]) -def test_traces_sampler_raising_falls_back_to_parent_sampling_decision( - sentry_init, parent_sampling_decision -): - # set traces_sample_rate to produce the opposite of the parent decision, - # to prove the parent's decision takes precedence in the fallback - sentry_init( - traces_sampler=mock.Mock(side_effect=ValueError("boom")), - traces_sample_rate=0.0 if parent_sampling_decision else 1.0, - ) - - sentry_sdk.continue_trace( - { - "sentry-trace": f"0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-{int(parent_sampling_decision)}" - } - ) - - with sentry_sdk.start_span(name="dogpark") as span: - assert span.sampled is parent_sampling_decision - - -@pytest.mark.parametrize( - "traces_sample_rate,expected_decision", - [(0.0, False), (0.25, False), (0.75, True), (1.00, True)], -) -def test_traces_sampler_raising_falls_back_to_traces_sample_rate( - sentry_init, - traces_sample_rate, - expected_decision, -): - sentry_init( - traces_sampler=mock.Mock(side_effect=ValueError("boom")), - traces_sample_rate=traces_sample_rate, - ) - - sentry_sdk.continue_trace( - { - "sentry-trace": "0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331", - "baggage": "sentry-sample_rand=0.500000", - } - ) - - with sentry_sdk.start_span(name="dogpark") as span: - assert span.sampled is expected_decision - - -@pytest.mark.parametrize( - "traces_sample_rate,expected_decision", - [(0.0, False), (0.25, False), (0.75, True), (1.00, True)], -) -def test_traces_sampler_raising_no_incoming_trace_falls_back_to_traces_sample_rate( - sentry_init, - traces_sample_rate, - expected_decision, - monkeypatch, -): - sentry_init( - traces_sampler=mock.Mock(side_effect=ValueError("boom")), - traces_sample_rate=traces_sample_rate, - ) - - # no continue_trace, so no propagated sample_rand; make it deterministic - monkeypatch.setattr( - "sentry_sdk.tracing_utils._generate_sample_rand", lambda *a, **kw: 0.5 - ) - - with sentry_sdk.start_span(name="dogpark") as span: - assert span.sampled is expected_decision - - -def test_traces_sampler_raising_no_incoming_trace_and_no_traces_sample_rate( - sentry_init, -): - sentry_init( - traces_sampler=mock.Mock(side_effect=ValueError("boom")), - ) - - with sentry_sdk.start_span(name="dogpark") as span: - assert span.sampled is False - - @pytest.mark.parametrize("sampling_decision", [True, False]) def test_only_captures_segment_when_sampled_is_true( sentry_init, sampling_decision, capture_items @@ -453,7 +372,7 @@ def test_unsampled_spans_produce_client_report_if_traces_sample_rate_defined( with sentry_sdk.start_span(name="child2"): pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert not spans @@ -481,7 +400,7 @@ def test_unsampled_spans_produce_client_report_if_traces_sampler_defined( with sentry_sdk.start_span(name="child2"): pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert not spans @@ -509,7 +428,7 @@ def test_no_client_reports_if_tracing_is_off( with sentry_sdk.start_span(name="child2"): pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert not spans diff --git a/tests/tracing/test_span_batcher.py b/tests/tracing/test_span_batcher.py index c4fe6b376a..8bd56a08e2 100644 --- a/tests/tracing/test_span_batcher.py +++ b/tests/tracing/test_span_batcher.py @@ -403,7 +403,7 @@ def test_transport_format(sentry_init, capture_envelopes): with sentry_sdk.start_span(name="test"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 1 assert len(envelopes[0].items) == 1 diff --git a/tests/tracing/test_span_streaming.py b/tests/tracing/test_span_streaming.py index 474400d9fc..826d7395d7 100644 --- a/tests/tracing/test_span_streaming.py +++ b/tests/tracing/test_span_streaming.py @@ -31,7 +31,7 @@ def test_start_span(sentry_init, capture_items): assert child._is_segment() is False assert child._segment == segment - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -70,7 +70,7 @@ def test_start_span_no_context_manager(sentry_init, capture_items): child.end() segment.end() - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -115,7 +115,7 @@ def traces_sampler(sampling_context): segment.set_attribute("delayed_attribute", 12) segment.end() - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -135,7 +135,7 @@ def test_start_span_attributes(sentry_init, capture_items): with sentry_sdk.start_span(name="segment", attributes={"my_attribute": "my_value"}): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -164,7 +164,7 @@ def traces_sampler(sampling_context): with sentry_sdk.start_span(name="segment", attributes={"my_attribute": "my_value"}): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -204,7 +204,7 @@ def traces_sampler(sampling_context): assert received_trace_id == trace_id - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -237,7 +237,7 @@ def before_send_span(span, hint): ): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -271,7 +271,7 @@ def before_send_span(span, hint): with sentry_sdk.start_span(name="span"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -297,7 +297,7 @@ def before_send_span(span, hint): with sentry_sdk.start_span(name="span"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -328,7 +328,7 @@ def before_send_span(span, hint): with sentry_sdk.start_span(name="ignored"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert not spans @@ -354,7 +354,7 @@ def before_send_span(span, hint): with sentry_sdk.start_span(name="span", attributes={"original": "value"}): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] # The exception in before_send_span is swallowed and the original, @@ -387,7 +387,7 @@ def test_span_attributes(sentry_init, capture_items): assert attributes["attribute3"] == 4.5 assert attributes["attribute4"] is False - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -425,7 +425,7 @@ class Class: assert isinstance(attributes["attribute2"], str) assert "Class" in attributes["attribute2"] - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -456,7 +456,7 @@ def traces_sampler(sampling_context): with sentry_sdk.start_span(name="retained", attributes={"drop": False}): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -467,7 +467,7 @@ def traces_sampler(sampling_context): @pytest.mark.tests_internal_exceptions -def test_traces_sampler_exception_falls_back(sentry_init, capture_items): +def test_traces_sampler_exception_unsamples(sentry_init, capture_items): def traces_sampler(sampling_context): raise ValueError("traces_sampler error") @@ -481,11 +481,11 @@ def traces_sampler(sampling_context): with sentry_sdk.traces.start_span(name="test"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() + spans = [item.payload for item in items] - # Falls back to traces_sample_rate=1.0, so span should still be sent - assert len(spans) == 1 + assert not spans def test_traces_sampler_called_once_per_segment(sentry_init): @@ -526,7 +526,7 @@ def test_start_inactive_span(sentry_init, capture_items): # Should have segment as parent since child1 is inactive pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 3 @@ -561,7 +561,7 @@ def test_start_span_override_parent(sentry_init, capture_items): with sentry_sdk.start_span(name="child2", parent_span=segment): pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 3 @@ -600,7 +600,7 @@ def test_sibling_segments(sentry_init, capture_items): with sentry_sdk.start_span(name="segment2"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -634,7 +634,7 @@ def test_sibling_segments_new_trace(sentry_init, capture_items): with sentry_sdk.start_span(name="segment2"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -680,7 +680,7 @@ def test_continue_trace_sampled(sentry_init, capture_items): assert span._parent_span_id == parent_span_id assert span._sample_rand == float(sample_rand) - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -719,7 +719,7 @@ def test_continue_trace_unsampled(sentry_init, capture_items): assert span.trace_id == trace_id assert span.span_id != "0000000000000000" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 0 @@ -767,7 +767,7 @@ def test_backpressure_outcome( with sentry_sdk.start_span(name="span") as span: pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] # Original traces_sample_rate is 0.5, downsampled sample rate is 0.25, so: @@ -814,7 +814,7 @@ def test_continue_trace_no_sample_rand(sentry_init, capture_items): assert span._parent_span_id == parent_span_id assert isinstance(span._sample_rand, float) - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -1194,7 +1194,7 @@ def test_set_span_status(sentry_init, capture_items): with sentry_sdk.start_span(name="span") as span: span.status = "error" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -1215,7 +1215,7 @@ def test_set_span_status_on_error(sentry_init, capture_items): with sentry_sdk.start_span(name="span") as span: raise ValueError("oh no!") - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 1 @@ -1235,7 +1235,7 @@ def test_set_span_status_on_ignored_span(sentry_init, capture_items): with sentry_sdk.start_span(name="ignored") as span: span.status = "error" - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 0 @@ -1336,7 +1336,7 @@ def test_ignore_spans_basic( with sentry_sdk.start_span(name="not ignored") as span: assert span.sampled is True - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] @@ -1373,7 +1373,7 @@ def test_ignore_spans_ignored_segment_drops_whole_tree( assert span2.sampled is False assert isinstance(span2, NoOpSpan) - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 0 @@ -1411,7 +1411,7 @@ def test_ignore_spans_ignored_segment_drops_whole_tree_explicit_parent_span( span2.end() ignored_span.end() - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] @@ -1447,7 +1447,7 @@ def test_ignore_spans_set_ignored_child_span_as_parent( assert span.sampled is True assert span._parent_span_id == segment.span_id - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -1496,7 +1496,7 @@ def test_ignore_spans_set_ignored_child_span_as_parent_explicit_parent_span( ignored_span1.end() segment.end() - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 2 @@ -1536,7 +1536,7 @@ def test_ignore_spans_reparenting(sentry_init, capture_items): assert span5.sampled is True assert span5._parent_span_id == span3.span_id - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert len(spans) == 3 @@ -1565,7 +1565,7 @@ def test_ignored_spans_produce_client_report( with sentry_sdk.start_span(name="span2"): pass - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] assert not spans @@ -1597,7 +1597,7 @@ def test_segment_span_has_profiler_id( with sentry_sdk.start_span(name="profiled segment"): time.sleep(0.1) - sentry_sdk.get_client().flush() + sentry_sdk.flush() time.sleep(0.3) # wait for profiler to flush spans = [item.payload for item in items] @@ -1631,7 +1631,7 @@ def test_segment_span_no_profiler_id_when_unsampled( with sentry_sdk.start_span(name="segment"): time.sleep(0.05) - sentry_sdk.get_client().flush() + sentry_sdk.flush() time.sleep(0.2) spans = [item.payload for item in items] @@ -1686,7 +1686,7 @@ def test_default_attributes(sentry_init, capture_envelopes): with sentry_sdk.start_span(name="test"): ... - sentry_sdk.get_client().flush() + sentry_sdk.flush() assert len(envelopes) == 1 assert len(envelopes[0].items) == 1 @@ -1747,7 +1747,7 @@ def test_ignore_spans_top_level( assert span.sampled is True assert isinstance(span, Span) - sentry_sdk.get_client().flush() + sentry_sdk.flush() spans = [item.payload for item in items] if ignored: diff --git a/tox.ini b/tox.ini index 8870e65f49..37c7493f31 100644 --- a/tox.ini +++ b/tox.ini @@ -130,6 +130,9 @@ envlist = {py3.10,py3.13,py3.14,py3.14t}-openai-notiktoken-v3.17.0 {py3.10,py3.13,py3.14,py3.14t}-openai-notiktoken-latest + {py3.10,py3.13,py3.14,py3.14t}-typesafe-v0.7.2 + {py3.10,py3.13,py3.14,py3.14t}-typesafe-latest + # ~~~ Cloud ~~~ {py3.7,py3.8}-boto3-v1.16.63 @@ -10390,6 +10393,170 @@ deps = openai-notiktoken: httpx openai-notiktoken-v1.0.1: httpx<0.28 + typesafe-v0.7.2: typesafe-sdk==0.7.2 + + py3.10-typesafe-v0.7.2: pytest-asyncio==1.4.0 + py3.10-typesafe-v0.7.2: backports.asyncio.runner==1.2.0 + py3.10-typesafe-v0.7.2: httpx2==2.13.1 + py3.10-typesafe-v0.7.2: httpcore2==2.13.1 + py3.10-typesafe-v0.7.2: pydantic==2.13.5 + py3.10-typesafe-v0.7.2: pydantic_core==2.46.5 + py3.10-typesafe-v0.7.2: pytest==9.1.1 + py3.10-typesafe-v0.7.2: tenacity==9.1.4 + py3.10-typesafe-v0.7.2: typing_extensions==4.16.0 + py3.10-typesafe-v0.7.2: annotated-types==0.8.0 + py3.10-typesafe-v0.7.2: anyio==4.15.1 + py3.10-typesafe-v0.7.2: exceptiongroup==1.3.1 + py3.10-typesafe-v0.7.2: idna==3.20 + py3.10-typesafe-v0.7.2: iniconfig==2.3.0 + py3.10-typesafe-v0.7.2: packaging==26.3 + py3.10-typesafe-v0.7.2: pluggy==1.6.0 + py3.10-typesafe-v0.7.2: Pygments==2.21.0 + py3.10-typesafe-v0.7.2: tomli==2.4.1 + py3.10-typesafe-v0.7.2: truststore==0.10.4 + py3.10-typesafe-v0.7.2: typing-inspection==0.4.4 + py3.10-typesafe-v0.7.2: h11==0.16.0 + + py3.13-typesafe-v0.7.2: pytest-asyncio==1.4.0 + py3.13-typesafe-v0.7.2: httpx2==2.13.1 + py3.13-typesafe-v0.7.2: httpcore2==2.13.1 + py3.13-typesafe-v0.7.2: pydantic==2.13.5 + py3.13-typesafe-v0.7.2: pydantic_core==2.46.5 + py3.13-typesafe-v0.7.2: pytest==9.1.1 + py3.13-typesafe-v0.7.2: tenacity==9.1.4 + py3.13-typesafe-v0.7.2: typing_extensions==4.16.0 + py3.13-typesafe-v0.7.2: annotated-types==0.8.0 + py3.13-typesafe-v0.7.2: anyio==4.15.1 + py3.13-typesafe-v0.7.2: idna==3.20 + py3.13-typesafe-v0.7.2: iniconfig==2.3.0 + py3.13-typesafe-v0.7.2: packaging==26.3 + py3.13-typesafe-v0.7.2: pluggy==1.6.0 + py3.13-typesafe-v0.7.2: Pygments==2.21.0 + py3.13-typesafe-v0.7.2: truststore==0.10.4 + py3.13-typesafe-v0.7.2: typing-inspection==0.4.4 + py3.13-typesafe-v0.7.2: h11==0.16.0 + + py3.14-typesafe-v0.7.2: pytest-asyncio==1.4.0 + py3.14-typesafe-v0.7.2: pytest==9.1.1 + py3.14-typesafe-v0.7.2: pluggy==1.6.0 + py3.14-typesafe-v0.7.2: httpx2==2.13.1 + py3.14-typesafe-v0.7.2: httpcore2==2.13.1 + py3.14-typesafe-v0.7.2: anyio==4.15.1 + py3.14-typesafe-v0.7.2: h11==0.16.0 + py3.14-typesafe-v0.7.2: idna==3.20 + py3.14-typesafe-v0.7.2: iniconfig==2.3.0 + py3.14-typesafe-v0.7.2: packaging==26.3 + py3.14-typesafe-v0.7.2: pydantic==2.13.5 + py3.14-typesafe-v0.7.2: pydantic_core==2.46.5 + py3.14-typesafe-v0.7.2: annotated-types==0.8.0 + py3.14-typesafe-v0.7.2: Pygments==2.21.0 + py3.14-typesafe-v0.7.2: tenacity==9.1.4 + py3.14-typesafe-v0.7.2: truststore==0.10.4 + py3.14-typesafe-v0.7.2: typing_extensions==4.16.0 + py3.14-typesafe-v0.7.2: typing-inspection==0.4.4 + + py3.14t-typesafe-v0.7.2: pytest-asyncio==1.4.0 + py3.14t-typesafe-v0.7.2: pytest==9.1.1 + py3.14t-typesafe-v0.7.2: pluggy==1.6.0 + py3.14t-typesafe-v0.7.2: httpx2==2.13.1 + py3.14t-typesafe-v0.7.2: httpcore2==2.13.1 + py3.14t-typesafe-v0.7.2: anyio==4.15.1 + py3.14t-typesafe-v0.7.2: h11==0.16.0 + py3.14t-typesafe-v0.7.2: idna==3.20 + py3.14t-typesafe-v0.7.2: iniconfig==2.3.0 + py3.14t-typesafe-v0.7.2: packaging==26.3 + py3.14t-typesafe-v0.7.2: pydantic==2.13.5 + py3.14t-typesafe-v0.7.2: pydantic_core==2.46.5 + py3.14t-typesafe-v0.7.2: annotated-types==0.8.0 + py3.14t-typesafe-v0.7.2: Pygments==2.21.0 + py3.14t-typesafe-v0.7.2: tenacity==9.1.4 + py3.14t-typesafe-v0.7.2: truststore==0.10.4 + py3.14t-typesafe-v0.7.2: typing_extensions==4.16.0 + py3.14t-typesafe-v0.7.2: typing-inspection==0.4.4 + + typesafe-latest: typesafe-sdk==0.7.2 + + py3.10-typesafe-latest: pytest-asyncio==1.4.0 + py3.10-typesafe-latest: backports.asyncio.runner==1.2.0 + py3.10-typesafe-latest: httpx2==2.13.1 + py3.10-typesafe-latest: httpcore2==2.13.1 + py3.10-typesafe-latest: pydantic==2.13.5 + py3.10-typesafe-latest: pydantic_core==2.46.5 + py3.10-typesafe-latest: pytest==9.1.1 + py3.10-typesafe-latest: tenacity==9.1.4 + py3.10-typesafe-latest: typing_extensions==4.16.0 + py3.10-typesafe-latest: annotated-types==0.8.0 + py3.10-typesafe-latest: anyio==4.15.1 + py3.10-typesafe-latest: exceptiongroup==1.3.1 + py3.10-typesafe-latest: idna==3.20 + py3.10-typesafe-latest: iniconfig==2.3.0 + py3.10-typesafe-latest: packaging==26.3 + py3.10-typesafe-latest: pluggy==1.6.0 + py3.10-typesafe-latest: Pygments==2.21.0 + py3.10-typesafe-latest: tomli==2.4.1 + py3.10-typesafe-latest: truststore==0.10.4 + py3.10-typesafe-latest: typing-inspection==0.4.4 + py3.10-typesafe-latest: h11==0.16.0 + + py3.13-typesafe-latest: pytest-asyncio==1.4.0 + py3.13-typesafe-latest: httpx2==2.13.1 + py3.13-typesafe-latest: httpcore2==2.13.1 + py3.13-typesafe-latest: pydantic==2.13.5 + py3.13-typesafe-latest: pydantic_core==2.46.5 + py3.13-typesafe-latest: pytest==9.1.1 + py3.13-typesafe-latest: tenacity==9.1.4 + py3.13-typesafe-latest: typing_extensions==4.16.0 + py3.13-typesafe-latest: annotated-types==0.8.0 + py3.13-typesafe-latest: anyio==4.15.1 + py3.13-typesafe-latest: idna==3.20 + py3.13-typesafe-latest: iniconfig==2.3.0 + py3.13-typesafe-latest: packaging==26.3 + py3.13-typesafe-latest: pluggy==1.6.0 + py3.13-typesafe-latest: Pygments==2.21.0 + py3.13-typesafe-latest: truststore==0.10.4 + py3.13-typesafe-latest: typing-inspection==0.4.4 + py3.13-typesafe-latest: h11==0.16.0 + + py3.14-typesafe-latest: pytest-asyncio==1.4.0 + py3.14-typesafe-latest: pytest==9.1.1 + py3.14-typesafe-latest: pluggy==1.6.0 + py3.14-typesafe-latest: httpx2==2.13.1 + py3.14-typesafe-latest: httpcore2==2.13.1 + py3.14-typesafe-latest: anyio==4.15.1 + py3.14-typesafe-latest: h11==0.16.0 + py3.14-typesafe-latest: idna==3.20 + py3.14-typesafe-latest: iniconfig==2.3.0 + py3.14-typesafe-latest: packaging==26.3 + py3.14-typesafe-latest: pydantic==2.13.5 + py3.14-typesafe-latest: pydantic_core==2.46.5 + py3.14-typesafe-latest: annotated-types==0.8.0 + py3.14-typesafe-latest: Pygments==2.21.0 + py3.14-typesafe-latest: tenacity==9.1.4 + py3.14-typesafe-latest: truststore==0.10.4 + py3.14-typesafe-latest: typing_extensions==4.16.0 + py3.14-typesafe-latest: typing-inspection==0.4.4 + + py3.14t-typesafe-latest: pytest-asyncio==1.4.0 + py3.14t-typesafe-latest: pytest==9.1.1 + py3.14t-typesafe-latest: pluggy==1.6.0 + py3.14t-typesafe-latest: httpx2==2.13.1 + py3.14t-typesafe-latest: httpcore2==2.13.1 + py3.14t-typesafe-latest: anyio==4.15.1 + py3.14t-typesafe-latest: h11==0.16.0 + py3.14t-typesafe-latest: idna==3.20 + py3.14t-typesafe-latest: iniconfig==2.3.0 + py3.14t-typesafe-latest: packaging==26.3 + py3.14t-typesafe-latest: pydantic==2.13.5 + py3.14t-typesafe-latest: pydantic_core==2.46.5 + py3.14t-typesafe-latest: annotated-types==0.8.0 + py3.14t-typesafe-latest: Pygments==2.21.0 + py3.14t-typesafe-latest: tenacity==9.1.4 + py3.14t-typesafe-latest: truststore==0.10.4 + py3.14t-typesafe-latest: typing_extensions==4.16.0 + py3.14t-typesafe-latest: typing-inspection==0.4.4 + + typesafe: pytest-asyncio + # ~~~ Cloud ~~~ boto3-v1.16.63: boto3==1.16.63 @@ -19115,6 +19282,7 @@ setenv = tornado: _TESTPATH=tests/integrations/tornado trytond_wsgi: _TESTPATH=tests/integrations/trytond_wsgi typer: _TESTPATH=tests/integrations/typer + typesafe: _TESTPATH=tests/integrations/typesafe unleash: _TESTPATH=tests/integrations/unleash passenv = diff --git a/uv.lock b/uv.lock index d619d4a072..d08368c320 100644 --- a/uv.lock +++ b/uv.lock @@ -74,6 +74,7 @@ typing = [ { name = "types-redis" }, { name = "types-setuptools", specifier = "<71" }, { name = "types-webob" }, + { name = "typesafe-sdk", specifier = ">=0.7.2" }, { name = "unleashclient", specifier = "<6" }, { name = "urllib3", specifier = ">=1.26.11" }, { name = "werkzeug" }, @@ -3136,6 +3137,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/38/98/4c6432692652554556ab468ac03cacadeb752fb736d9d85f86757fbda606/types_webob-1.8.11.20260827-py3-none-any.whl", hash = "sha256:11f34c64d2076013abd327c9a1d62e0a4f2ae07c59ceeec27a7e978f49d89f29", size = 28704, upload-time = "2026-08-27T12:06:24.675Z" }, ] +[[package]] +name = "typesafe-sdk" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx2" }, + { name = "pydantic" }, + { name = "pydantic-core" }, + { name = "tenacity" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/ac/8bad2c02c038b85039cdb198ba106650d54bade0c0c986c68dc6e9cef8c3/typesafe_sdk-0.7.2.tar.gz", hash = "sha256:2434f4af5cdfc45d6ab5ff27048e8b257207f786b60456e69995e345b32e77e1", size = 23169, upload-time = "2026-09-26T21:20:24.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/5e/2b97ba9b0b77612e3a480ddb60c0c0325b4809ef57a7b565341d65ef7bec/typesafe_sdk-0.7.2-py3-none-any.whl", hash = "sha256:0a961148187d52e18276ed7f2d02617cfac48e3b97673cb631a8749397d43d1e", size = 36448, upload-time = "2026-09-26T21:20:23.511Z" }, +] + [[package]] name = "typing-extensions" version = "4.16.0"