From a021e7cb9d88a391308ff107b4a34ce3ee1e69e4 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Sat, 28 Jun 2025 21:16:52 -0700 Subject: [PATCH] bump poetry --- ...litellm_enterprise-0.1.10-py3-none-any.whl | Bin 0 -> 102017 bytes .../dist/litellm_enterprise-0.1.10.tar.gz | Bin 0 -> 41632 bytes enterprise/poetry.lock | 4 +- enterprise/pyproject.toml | 4 +- poetry.lock | 372 +++++++++++++++--- pyproject.toml | 2 +- requirements.txt | 2 +- 7 files changed, 331 insertions(+), 53 deletions(-) create mode 100644 enterprise/dist/litellm_enterprise-0.1.10-py3-none-any.whl create mode 100644 enterprise/dist/litellm_enterprise-0.1.10.tar.gz diff --git a/enterprise/dist/litellm_enterprise-0.1.10-py3-none-any.whl b/enterprise/dist/litellm_enterprise-0.1.10-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..473ff736e3a5097d11a11836f336acb3084faf61 GIT binary patch literal 102017 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 D>J&UL literal 0 HcmV?d00001 diff --git a/enterprise/poetry.lock b/enterprise/poetry.lock index f526fec8da0..bb436a168cd 100644 --- a/enterprise/poetry.lock +++ b/enterprise/poetry.lock @@ -1,7 +1,7 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. package = [] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.8.1,<4.0, !=3.9.7" content-hash = "2cf39473e67ff0615f0a61c9d2ac9f02b38cc08cbb1bdb893d89bee002646623" diff --git a/enterprise/pyproject.toml b/enterprise/pyproject.toml index a650eda22b1..3095245c6c7 100644 --- a/enterprise/pyproject.toml +++ b/enterprise/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "litellm-enterprise" -version = "0.1.9" +version = "0.1.10" description = "Package for LiteLLM Enterprise features" authors = ["BerriAI"] readme = "README.md" @@ -22,7 +22,7 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.commitizen] -version = "0.1.9" +version = "0.1.10" version_files = [ "pyproject.toml:version", "../requirements.txt:litellm-enterprise==", diff --git a/poetry.lock b/poetry.lock index abc8d4a7056..c1fbe6f0df8 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -6,6 +6,7 @@ version = "2.4.4" description = "Happy Eyeballs for asyncio" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, @@ -17,6 +18,7 @@ version = "3.10.11" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "aiohttp-3.10.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5077b1a5f40ffa3ba1f40d537d3bec4383988ee51fbba6b74aa8fb1bc466599e"}, {file = "aiohttp-3.10.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8d6a14a4d93b5b3c2891fca94fa9d41b2322a68194422bef0dd5ec1e57d7d298"}, @@ -121,7 +123,7 @@ multidict = ">=4.5,<7.0" yarl = ">=1.12.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] +speedups = ["Brotli ; platform_python_implementation == \"CPython\"", "aiodns (>=3.2.0) ; sys_platform == \"linux\" or sys_platform == \"darwin\"", "brotlicffi ; platform_python_implementation != \"CPython\""] [[package]] name = "aiosignal" @@ -129,6 +131,7 @@ version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "aiosignal-1.3.1-py3-none-any.whl", hash = "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"}, {file = "aiosignal-1.3.1.tar.gz", hash = "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc"}, @@ -143,6 +146,8 @@ version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, @@ -154,6 +159,7 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, @@ -168,6 +174,7 @@ version = "4.5.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, @@ -181,7 +188,7 @@ typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21.0b1) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -190,6 +197,8 @@ version = "3.11.0" description = "In-process task scheduler with Cron-like capabilities" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "APScheduler-3.11.0-py3-none-any.whl", hash = "sha256:fc134ca32e50f5eadcc4938e3a4545ab19131435e851abb40b34d63d5141c6da"}, {file = "apscheduler-3.11.0.tar.gz", hash = "sha256:4c622d250b0955a65d5d0eb91c33e6d43fd879834bf541e0a18661ae60460133"}, @@ -207,7 +216,7 @@ mongodb = ["pymongo (>=3.0)"] redis = ["redis (>=3.0)"] rethinkdb = ["rethinkdb (>=2.4.0)"] sqlalchemy = ["sqlalchemy (>=1.4)"] -test = ["APScheduler[etcd,mongodb,redis,rethinkdb,sqlalchemy,tornado,zookeeper]", "PySide6", "anyio (>=4.5.2)", "gevent", "pytest", "pytz", "twisted"] +test = ["APScheduler[etcd,mongodb,redis,rethinkdb,sqlalchemy,tornado,zookeeper]", "PySide6 ; platform_python_implementation == \"CPython\" and python_version < \"3.14\"", "anyio (>=4.5.2)", "gevent ; python_version < \"3.14\"", "pytest", "pytz", "twisted ; python_version < \"3.14\""] tornado = ["tornado (>=4.3)"] twisted = ["twisted"] zookeeper = ["kazoo"] @@ -216,8 +225,10 @@ zookeeper = ["kazoo"] name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" -optional = false +optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "python_full_version < \"3.11.3\" and (extra == \"extra-proxy\" or extra == \"proxy\") or python_version <= \"3.10\"" files = [ {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, @@ -229,18 +240,19 @@ version = "25.3.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] [[package]] name = "azure-core" @@ -248,6 +260,7 @@ version = "1.33.0" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.8" +groups = ["main", "proxy-dev"] files = [ {file = "azure_core-1.33.0-py3-none-any.whl", hash = "sha256:9b5b6d0223a1d38c37500e6971118c1e0f13f54951e6893968b38910bc9cda8f"}, {file = "azure_core-1.33.0.tar.gz", hash = "sha256:f367aa07b5e3005fec2c1e184b882b0b039910733907d001c20fb08ebb8c0eb9"}, @@ -268,6 +281,7 @@ version = "1.21.0" description = "Microsoft Azure Identity Library for Python" optional = false python-versions = ">=3.8" +groups = ["main", "proxy-dev"] files = [ {file = "azure_identity-1.21.0-py3-none-any.whl", hash = "sha256:258ea6325537352440f71b35c3dffe9d240eae4a5126c1b7ce5efd5766bd9fd9"}, {file = "azure_identity-1.21.0.tar.gz", hash = "sha256:ea22ce6e6b0f429bc1b8d9212d5b9f9877bd4c82f1724bfa910760612c07a9a6"}, @@ -286,6 +300,8 @@ version = "4.9.0" description = "Microsoft Azure Key Vault Secrets Client Library for Python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "azure_keyvault_secrets-4.9.0-py3-none-any.whl", hash = "sha256:33c7e2aca2cc2092cebc8c6e96eca36a5cc30c767e16ea429c5fa21270e9fba6"}, {file = "azure_keyvault_secrets-4.9.0.tar.gz", hash = "sha256:2a03bb2ffd9a0d6c8ad1c330d9d0310113985a9de06607ece378fd72a5889fe1"}, @@ -302,6 +318,8 @@ version = "2.17.0" description = "Internationalization utilities" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, @@ -311,7 +329,7 @@ files = [ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [package.extras] -dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] +dev = ["backports.zoneinfo ; python_version < \"3.9\"", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata ; sys_platform == \"win32\""] [[package]] name = "backoff" @@ -319,10 +337,12 @@ version = "2.2.1" description = "Function decoration for backoff and retry" optional = false python-versions = ">=3.7,<4.0" +groups = ["main", "dev"] files = [ {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"}, {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, ] +markers = {main = "extra == \"proxy\""} [[package]] name = "backports-zoneinfo" @@ -330,6 +350,8 @@ version = "0.2.1" description = "Backport of the standard library zoneinfo module" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"proxy\" and python_version < \"3.9\"" files = [ {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, @@ -358,6 +380,7 @@ version = "23.12.1" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, @@ -394,7 +417,7 @@ typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] +d = ["aiohttp (>=3.7.4) ; sys_platform != \"win32\" or implementation_name != \"pypy\"", "aiohttp (>=3.7.4,!=3.9.0) ; sys_platform == \"win32\" and implementation_name == \"pypy\""] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] @@ -404,6 +427,8 @@ version = "1.34.34" description = "The AWS SDK for Python" optional = true python-versions = ">= 3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "boto3-1.34.34-py3-none-any.whl", hash = "sha256:33a8b6d9136fa7427160edb92d2e50f2035f04e9d63a2d1027349053e12626aa"}, {file = "boto3-1.34.34.tar.gz", hash = "sha256:b2f321e20966f021ec800b7f2c01287a3dd04fc5965acdfbaa9c505a24ca45d1"}, @@ -423,6 +448,8 @@ version = "1.34.162" description = "Low-level, data-driven core of boto 3." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "botocore-1.34.162-py3-none-any.whl", hash = "sha256:2d918b02db88d27a75b48275e6fb2506e9adaaddbec1ffa6a8a0898b34e769be"}, {file = "botocore-1.34.162.tar.gz", hash = "sha256:adc23be4fb99ad31961236342b7cbf3c0bfc62532cd02852196032e8c0d682f3"}, @@ -432,8 +459,8 @@ files = [ jmespath = ">=0.7.1,<2.0.0" python-dateutil = ">=2.1,<3.0.0" urllib3 = [ - {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}, + {version = ">=1.25.4,<1.27", markers = "python_version < \"3.10\""}, ] [package.extras] @@ -445,6 +472,8 @@ version = "5.5.2" description = "Extensible memoizing collections and decorators" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a"}, {file = "cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4"}, @@ -456,6 +485,7 @@ version = "2025.6.15" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057"}, {file = "certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b"}, @@ -467,6 +497,7 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, @@ -536,6 +567,7 @@ files = [ {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] +markers = {main = "platform_python_implementation != \"PyPy\" or extra == \"proxy\"", dev = "platform_python_implementation != \"PyPy\"", proxy-dev = "platform_python_implementation != \"PyPy\""} [package.dependencies] pycparser = "*" @@ -546,6 +578,7 @@ version = "3.4.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "charset_normalizer-3.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7c48ed483eb946e6c04ccbe02c6b4d1d48e51944b6db70f697e089c193404941"}, {file = "charset_normalizer-3.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2d318c11350e10662026ad0eb71bb51c7812fc8590825304ae0bdd4ac283acd"}, @@ -647,6 +680,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -661,10 +695,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "extra == \"utils\" and sys_platform == \"win32\" or platform_system == \"Windows\"", dev = "platform_system == \"Windows\" or sys_platform == \"win32\"", proxy-dev = "platform_system == \"Windows\""} [[package]] name = "coloredlogs" @@ -672,6 +708,8 @@ version = "15.0.1" description = "Colored terminal output for Python's logging module" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "coloredlogs-15.0.1-py2.py3-none-any.whl", hash = "sha256:612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934"}, {file = "coloredlogs-15.0.1.tar.gz", hash = "sha256:7c991aa71a4577af2f82600d8f8f3a89f936baeaf9b50a9c197da014e5bf16b0"}, @@ -689,6 +727,7 @@ version = "43.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "cryptography-43.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf7a1932ac4176486eab36a19ed4c0492da5d97123f1406cf15e41b05e787d2e"}, {file = "cryptography-43.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63efa177ff54aec6e1c0aefaa1a241232dcd37413835a9b674b6e3f0ae2bfd3e"}, @@ -738,6 +777,7 @@ version = "1.2.18" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +groups = ["dev", "proxy-dev"] files = [ {file = "Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec"}, {file = "deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d"}, @@ -747,7 +787,7 @@ files = [ wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools ; python_version >= \"3.12\"", "tox"] [[package]] name = "diskcache" @@ -755,6 +795,8 @@ version = "5.6.3" description = "Disk Cache -- Disk and file backed persistent cache." optional = true python-versions = ">=3" +groups = ["main"] +markers = "extra == \"caching\"" files = [ {file = "diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19"}, {file = "diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc"}, @@ -766,6 +808,7 @@ version = "1.9.0" description = "Distro - an OS platform information API" optional = false python-versions = ">=3.6" +groups = ["main"] files = [ {file = "distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2"}, {file = "distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed"}, @@ -777,6 +820,8 @@ version = "2.6.1" description = "DNS toolkit" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, @@ -797,6 +842,8 @@ version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, @@ -808,6 +855,8 @@ version = "2.2.0" description = "A robust email address syntax and deliverability validation library." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631"}, {file = "email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"}, @@ -823,6 +872,8 @@ version = "1.3.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] +markers = "python_version <= \"3.10\"" files = [ {file = "exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10"}, {file = "exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88"}, @@ -840,6 +891,8 @@ version = "0.115.13" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "fastapi-0.115.13-py3-none-any.whl", hash = "sha256:0a0cab59afa7bab22f5eb347f8c9864b681558c278395e94035a741fc10cd865"}, {file = "fastapi-0.115.13.tar.gz", hash = "sha256:55d1d25c2e1e0a0a50aceb1c8705cd932def273c102bff0b1c1da88b3c6eb307"}, @@ -860,6 +913,8 @@ version = "0.16.0" description = "FastAPI plugin to enable SSO to most common providers (such as Facebook login, Google login and login via Microsoft Office 365 Account)" optional = true python-versions = "<4.0,>=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "fastapi_sso-0.16.0-py3-none-any.whl", hash = "sha256:3a66a942474ef9756d3a9d8b945d55bd9faf99781facdb9b87a40b73d6d6b0c3"}, {file = "fastapi_sso-0.16.0.tar.gz", hash = "sha256:f3941f986347566b7d3747c710cf474a907f581bfb6697ff3bb3e44eb76b438c"}, @@ -878,6 +933,7 @@ version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, @@ -886,7 +942,7 @@ files = [ [package.extras] docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] -typing = ["typing-extensions (>=4.12.2)"] +typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] [[package]] name = "flake8" @@ -894,6 +950,7 @@ version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" optional = false python-versions = ">=3.8.1" +groups = ["dev"] files = [ {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, @@ -910,6 +967,7 @@ version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, @@ -1011,6 +1069,7 @@ version = "2025.3.0" description = "File-system specification" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "fsspec-2025.3.0-py3-none-any.whl", hash = "sha256:efb87af3efa9103f94ca91a7f8cb7a4df91af9f74fc106c9c7ea0efd7277c1b3"}, {file = "fsspec-2025.3.0.tar.gz", hash = "sha256:a935fd1ea872591f2b5148907d103488fc523295e6c64b835cfad8c3eca44972"}, @@ -1050,6 +1109,8 @@ version = "2.25.1" description = "Google API client core library" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "google_api_core-2.25.1-py3-none-any.whl", hash = "sha256:8a2a56c1fef82987a524371f99f3bd0143702fecc670c72e600c1cda6bf8dbb7"}, {file = "google_api_core-2.25.1.tar.gz", hash = "sha256:d2aaa0b13c78c61cb3f4282c464c046e45fbd75755683c9c525e6e8f7ed0a5e8"}, @@ -1059,15 +1120,15 @@ files = [ google-auth = ">=2.14.1,<3.0.0" googleapis-common-protos = ">=1.56.2,<2.0.0" grpcio = [ - {version = ">=1.33.2,<2.0.0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, {version = ">=1.49.1,<2.0.0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0.0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, ] grpcio-status = [ - {version = ">=1.33.2,<2.0.0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, {version = ">=1.49.1,<2.0.0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, + {version = ">=1.33.2,<2.0.0", optional = true, markers = "extra == \"grpc\""}, ] proto-plus = [ - {version = ">=1.22.3,<2.0.0", markers = "python_version < \"3.13\""}, + {version = ">=1.22.3,<2.0.0"}, {version = ">=1.25.0,<2.0.0", markers = "python_version >= \"3.13\""}, ] protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<7.0.0" @@ -1075,7 +1136,7 @@ requests = ">=2.18.0,<3.0.0" [package.extras] async-rest = ["google-auth[aiohttp] (>=2.35.0,<3.0.0)"] -grpc = ["grpcio (>=1.33.2,<2.0.0)", "grpcio (>=1.49.1,<2.0.0)", "grpcio-status (>=1.33.2,<2.0.0)", "grpcio-status (>=1.49.1,<2.0.0)"] +grpc = ["grpcio (>=1.33.2,<2.0.0)", "grpcio (>=1.49.1,<2.0.0) ; python_version >= \"3.11\"", "grpcio-status (>=1.33.2,<2.0.0)", "grpcio-status (>=1.49.1,<2.0.0) ; python_version >= \"3.11\""] grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0.0)"] grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0.0)"] @@ -1085,6 +1146,8 @@ version = "2.40.3" description = "Google Authentication Library" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "google_auth-2.40.3-py2.py3-none-any.whl", hash = "sha256:1370d4593e86213563547f97a92752fc658456fe4514c809544f330fed45a7ca"}, {file = "google_auth-2.40.3.tar.gz", hash = "sha256:500c3a29adedeb36ea9cf24b8d10858e152f2412e3ca37829b3fa18e33d63b77"}, @@ -1098,11 +1161,11 @@ rsa = ">=3.1.4,<5" [package.extras] aiohttp = ["aiohttp (>=3.6.2,<4.0.0)", "requests (>=2.20.0,<3.0.0)"] enterprise-cert = ["cryptography", "pyopenssl"] -pyjwt = ["cryptography (<39.0.0)", "cryptography (>=38.0.3)", "pyjwt (>=2.0)"] -pyopenssl = ["cryptography (<39.0.0)", "cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] +pyjwt = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyjwt (>=2.0)"] +pyopenssl = ["cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] requests = ["requests (>=2.20.0,<3.0.0)"] -testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "cryptography (<39.0.0)", "cryptography (>=38.0.3)", "flask", "freezegun", "grpcio", "mock", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"] +testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "cryptography (<39.0.0) ; python_version < \"3.8\"", "cryptography (>=38.0.3)", "flask", "freezegun", "grpcio", "mock", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"] urllib3 = ["packaging", "urllib3"] [[package]] @@ -1111,6 +1174,8 @@ version = "2.24.2" description = "Google Cloud Kms API client library" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "google_cloud_kms-2.24.2-py2.py3-none-any.whl", hash = "sha256:368209b035dfac691a467c1cf50986d8b1b26cac1166bdfbaa25d738df91ff7b"}, {file = "google_cloud_kms-2.24.2.tar.gz", hash = "sha256:e9e18bbfafd1a4035c76c03fb5ff03f4f57f596d08e1a9ede7e69ec0151b27a1"}, @@ -1129,10 +1194,12 @@ version = "1.70.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "googleapis_common_protos-1.70.0-py3-none-any.whl", hash = "sha256:b8bfcca8c25a2bb253e0e0b0adaf8c00773e5e6af6fd92397576680b807e0fd8"}, {file = "googleapis_common_protos-1.70.0.tar.gz", hash = "sha256:0e1b44e0ea153e6594f9f394fef15193a68aaaea2d843f83e2742717ca753257"}, ] +markers = {main = "extra == \"extra-proxy\""} [package.dependencies] grpcio = {version = ">=1.44.0,<2.0.0", optional = true, markers = "extra == \"grpc\""} @@ -1147,6 +1214,8 @@ version = "0.14.2" description = "IAM API client library" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "grpc_google_iam_v1-0.14.2-py3-none-any.whl", hash = "sha256:a3171468459770907926d56a440b2bb643eec1d7ba215f48f3ecece42b4d8351"}, {file = "grpc_google_iam_v1-0.14.2.tar.gz", hash = "sha256:b3e1fc387a1a329e41672197d0ace9de22c78dd7d215048c4c78712073f7bd20"}, @@ -1163,6 +1232,7 @@ version = "1.70.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "grpcio-1.70.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:95469d1977429f45fe7df441f586521361e235982a0b39e33841549143ae2851"}, {file = "grpcio-1.70.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:ed9718f17fbdb472e33b869c77a16d0b55e166b100ec57b016dc7de9c8d236bf"}, @@ -1220,6 +1290,7 @@ files = [ {file = "grpcio-1.70.0-cp39-cp39-win_amd64.whl", hash = "sha256:a31d7e3b529c94e930a117b2175b2efd179d96eb3c7a21ccb0289a8ab05b645c"}, {file = "grpcio-1.70.0.tar.gz", hash = "sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56"}, ] +markers = {main = "extra == \"extra-proxy\""} [package.extras] protobuf = ["grpcio-tools (>=1.70.0)"] @@ -1230,6 +1301,8 @@ version = "1.62.3" description = "Status proto mapping for gRPC" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "grpcio-status-1.62.3.tar.gz", hash = "sha256:289bdd7b2459794a12cf95dc0cb727bd4a1742c37bd823f760236c937e53a485"}, {file = "grpcio_status-1.62.3-py3-none-any.whl", hash = "sha256:f9049b762ba8de6b1086789d8315846e094edac2c50beaf462338b301a8fd4b8"}, @@ -1246,6 +1319,8 @@ version = "23.0.0" description = "WSGI HTTP Server for UNIX" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, @@ -1267,6 +1342,7 @@ version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, @@ -1278,6 +1354,7 @@ version = "4.1.0" description = "HTTP/2 State-Machine based protocol implementation" optional = false python-versions = ">=3.6.1" +groups = ["proxy-dev"] files = [ {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, @@ -1293,6 +1370,8 @@ version = "1.1.5" description = "Fast transfer of large files with the Hugging Face Hub." optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"arm64\" or platform_machine == \"aarch64\"" files = [ {file = "hf_xet-1.1.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:f52c2fa3635b8c37c7764d8796dfa72706cc4eded19d638331161e82b0792e23"}, {file = "hf_xet-1.1.5-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:9fa6e3ee5d61912c4a113e0708eaaef987047616465ac7aa30f7121a48fc1af8"}, @@ -1313,6 +1392,7 @@ version = "4.0.0" description = "Pure-Python HPACK header compression" optional = false python-versions = ">=3.6.1" +groups = ["proxy-dev"] files = [ {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, @@ -1324,6 +1404,7 @@ version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, @@ -1345,6 +1426,7 @@ version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -1357,7 +1439,7 @@ httpcore = "==1.*" idna = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -1369,6 +1451,8 @@ version = "0.4.1" description = "Consume Server-Sent Event (SSE) messages with HTTPX." optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"proxy\"" files = [ {file = "httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37"}, {file = "httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e"}, @@ -1380,6 +1464,7 @@ version = "0.33.1" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" +groups = ["main"] files = [ {file = "huggingface_hub-0.33.1-py3-none-any.whl", hash = "sha256:ec8d7444628210c0ba27e968e3c4c973032d44dcea59ca0d78ef3f612196f095"}, {file = "huggingface_hub-0.33.1.tar.gz", hash = "sha256:589b634f979da3ea4b8bdb3d79f97f547840dc83715918daf0b64209c0844c7b"}, @@ -1396,16 +1481,16 @@ tqdm = ">=4.42.1" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "authlib (>=1.3.2)", "fastapi", "gradio (>=4.0.0)", "httpx", "itsdangerous", "jedi", "libcst (==1.4.0)", "mypy (==1.15.0)", "mypy (>=1.14.1,<1.15.0)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "authlib (>=1.3.2)", "fastapi", "gradio (>=4.0.0)", "httpx", "itsdangerous", "jedi", "libcst (==1.4.0)", "mypy (==1.15.0) ; python_version >= \"3.9\"", "mypy (>=1.14.1,<1.15.0) ; python_version == \"3.8\"", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] cli = ["InquirerPy (==0.3.4)"] -dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "authlib (>=1.3.2)", "fastapi", "gradio (>=4.0.0)", "httpx", "itsdangerous", "jedi", "libcst (==1.4.0)", "mypy (==1.15.0)", "mypy (>=1.14.1,<1.15.0)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "authlib (>=1.3.2)", "fastapi", "gradio (>=4.0.0)", "httpx", "itsdangerous", "jedi", "libcst (==1.4.0)", "mypy (==1.15.0) ; python_version >= \"3.9\"", "mypy (>=1.14.1,<1.15.0) ; python_version == \"3.8\"", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.9.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] hf-transfer = ["hf-transfer (>=0.1.4)"] hf-xet = ["hf-xet (>=1.1.2,<2.0.0)"] inference = ["aiohttp"] mcp = ["aiohttp", "mcp (>=1.8.0)", "typer"] oauth = ["authlib (>=1.3.2)", "fastapi", "httpx", "itsdangerous"] -quality = ["libcst (==1.4.0)", "mypy (==1.15.0)", "mypy (>=1.14.1,<1.15.0)", "ruff (>=0.9.0)"] +quality = ["libcst (==1.4.0)", "mypy (==1.15.0) ; python_version >= \"3.9\"", "mypy (>=1.14.1,<1.15.0) ; python_version == \"3.8\"", "ruff (>=0.9.0)"] tensorflow = ["graphviz", "pydot", "tensorflow"] tensorflow-testing = ["keras (<3.0)", "tensorflow"] testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "authlib (>=1.3.2)", "fastapi", "gradio (>=4.0.0)", "httpx", "itsdangerous", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] @@ -1418,6 +1503,8 @@ version = "10.0" description = "Human friendly output for text interfaces using Python" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, @@ -1432,6 +1519,7 @@ version = "0.15.0" description = "A ASGI Server based on Hyper libraries and inspired by Gunicorn" optional = false python-versions = ">=3.7" +groups = ["proxy-dev"] files = [ {file = "hypercorn-0.15.0-py3-none-any.whl", hash = "sha256:5008944999612fd188d7a1ca02e89d20065642b89503020ac392dfed11840730"}, {file = "hypercorn-0.15.0.tar.gz", hash = "sha256:d517f68d5dc7afa9a9d50ecefb0f769f466ebe8c1c18d2c2f447a24e763c9a63"}, @@ -1449,7 +1537,7 @@ wsproto = ">=0.14.0" docs = ["pydata_sphinx_theme", "sphinxcontrib_mermaid"] h3 = ["aioquic (>=0.9.0,<1.0)"] trio = ["exceptiongroup (>=1.1.0)", "trio (>=0.22.0)"] -uvloop = ["uvloop"] +uvloop = ["uvloop ; platform_system != \"Windows\""] [[package]] name = "hyperframe" @@ -1457,6 +1545,7 @@ version = "6.0.1" description = "HTTP/2 framing layer for Python" optional = false python-versions = ">=3.6.1" +groups = ["proxy-dev"] files = [ {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, @@ -1468,6 +1557,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1482,6 +1572,8 @@ version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, @@ -1493,6 +1585,7 @@ version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, @@ -1504,7 +1597,7 @@ zipp = ">=0.5" [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3) ; python_version < \"3.9\"", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy ; platform_python_implementation != \"PyPy\"", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "importlib-resources" @@ -1512,6 +1605,8 @@ version = "6.4.5" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.9\"" files = [ {file = "importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717"}, {file = "importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065"}, @@ -1521,7 +1616,7 @@ files = [ zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] @@ -1534,6 +1629,7 @@ version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, @@ -1545,6 +1641,8 @@ version = "0.7.2" description = "An ISO 8601 date/time/duration parser and formatter" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15"}, {file = "isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6"}, @@ -1556,6 +1654,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["main", "proxy-dev"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -1573,6 +1672,7 @@ version = "0.9.1" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "jiter-0.9.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:c0163baa7ee85860fdc14cc39263014500df901eeffdf94c1eab9a2d713b2a9d"}, {file = "jiter-0.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:514d4dd845e0af4da15112502e6fcb952f0721f27f17e530454e379472b90c14"}, @@ -1658,6 +1758,8 @@ version = "1.0.1" description = "JSON Matching Expressions" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, @@ -1669,6 +1771,7 @@ version = "4.23.0" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1692,6 +1795,7 @@ version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, @@ -1707,6 +1811,7 @@ version = "2.54.1" description = "A client library for accessing langfuse" optional = false python-versions = "<4.0,>=3.8.1" +groups = ["dev"] files = [ {file = "langfuse-2.54.1-py3-none-any.whl", hash = "sha256:1f1261cf763886758c70e192133340ff296169cc0930cde725eee52d467eb661"}, {file = "langfuse-2.54.1.tar.gz", hash = "sha256:7efc70799740ffa0ac7e04066e0596fb6433e8e501fc850c6a4e7967de6de8a7"}, @@ -1728,12 +1833,14 @@ openai = ["openai (>=0.27.8)"] [[package]] name = "litellm-enterprise" -version = "0.1.9" +version = "0.1.10" description = "Package for LiteLLM Enterprise features" optional = true python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ - {file = "litellm_enterprise-0.1.9.tar.gz", hash = "sha256:2bdf629cf8bd36805bad70acb609bfa0c00eaf72d3b42f6e17c54c5b50758c4a"}, + {file = "litellm_enterprise-0.1.10.tar.gz", hash = "sha256:bcdd10a2d10a7452e2b1802cc398517596ad5e8abac55a7f841e92388e7e6a6a"}, ] [[package]] @@ -1742,6 +1849,8 @@ version = "0.2.6" description = "Additional files for the LiteLLM Proxy. Reduces the size of the main litellm package." optional = true python-versions = "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,!=3.7.*,>=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "litellm_proxy_extras-0.2.6-py3-none-any.whl", hash = "sha256:ed5560f97f9bef69464ab3c1d54c90dc7e210c7ad3c05d1f3beb04e326764878"}, {file = "litellm_proxy_extras-0.2.6.tar.gz", hash = "sha256:ef10577433d1c862bcbe54d28ace65111c8474fb7618d6f25f8e66ddb8ae4a32"}, @@ -1753,6 +1862,8 @@ version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, @@ -1777,6 +1888,7 @@ version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" +groups = ["main", "proxy-dev"] files = [ {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, @@ -1846,6 +1958,7 @@ version = "0.7.0" description = "McCabe checker, plugin for flake8" optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, @@ -1857,6 +1970,8 @@ version = "1.9.3" description = "Model Context Protocol SDK" optional = true python-versions = ">=3.10" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"proxy\"" files = [ {file = "mcp-1.9.3-py3-none-any.whl", hash = "sha256:69b0136d1ac9927402ed4cf221d4b8ff875e7132b0b06edd446448766f34f9b9"}, {file = "mcp-1.9.3.tar.gz", hash = "sha256:587ba38448e81885e5d1b84055cfcc0ca56d35cd0c58f50941cab01109405388"}, @@ -1884,6 +1999,8 @@ version = "0.1.2" description = "Markdown URL utilities" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, @@ -1895,6 +2012,8 @@ version = "0.4.1" description = "" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "ml_dtypes-0.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fe8b5b5e70cd67211db94b05cfd58dace592f24489b038dc6f9fe347d2e07d5"}, {file = "ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c09a6d11d8475c2a9fd2bc0695628aec105f97cab3b3a3fb7c9660348ff7d24"}, @@ -1917,10 +2036,10 @@ files = [ [package.dependencies] numpy = [ - {version = ">1.20", markers = "python_version < \"3.10\""}, + {version = ">=1.23.3", markers = "python_version >= \"3.11\""}, + {version = ">1.20"}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, - {version = ">=1.23.3", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, - {version = ">=1.21.2", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] [package.extras] @@ -1932,6 +2051,7 @@ version = "1.32.3" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=3.7" +groups = ["main", "proxy-dev"] files = [ {file = "msal-1.32.3-py3-none-any.whl", hash = "sha256:b2798db57760b1961b142f027ffb7c8169536bf77316e99a0df5c4aaebb11569"}, {file = "msal-1.32.3.tar.gz", hash = "sha256:5eea038689c78a5a70ca8ecbe1245458b55a857bd096efb6989c69ba15985d35"}, @@ -1943,7 +2063,7 @@ PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]} requests = ">=2.0.0,<3" [package.extras] -broker = ["pymsalruntime (>=0.14,<0.18)", "pymsalruntime (>=0.17,<0.18)"] +broker = ["pymsalruntime (>=0.14,<0.18) ; python_version >= \"3.6\" and platform_system == \"Windows\"", "pymsalruntime (>=0.17,<0.18) ; python_version >= \"3.8\" and platform_system == \"Darwin\""] [[package]] name = "msal-extensions" @@ -1951,6 +2071,7 @@ version = "1.3.0" description = "Microsoft Authentication Library extensions (MSAL EX) provides a persistence API that can save your data on disk, encrypted on Windows, macOS and Linux. Concurrent data access will be coordinated by a file lock mechanism." optional = false python-versions = ">=3.7" +groups = ["main", "proxy-dev"] files = [ {file = "msal_extensions-1.3.0-py3-none-any.whl", hash = "sha256:105328ddcbdd342016c9949d8f89e3917554740c8ab26669c0fa0e069e730a0e"}, {file = "msal_extensions-1.3.0.tar.gz", hash = "sha256:96918996642b38c78cd59b55efa0f06fd1373c90e0949be8615697c048fba62c"}, @@ -1968,6 +2089,7 @@ version = "6.1.0" description = "multidict implementation" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, @@ -2072,6 +2194,7 @@ version = "1.14.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, @@ -2131,6 +2254,7 @@ version = "1.1.0" description = "Type system extensions for programs checked with the mypy type checker." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"}, {file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"}, @@ -2142,6 +2266,7 @@ version = "1.9.1" description = "Node.js virtual environment builder" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["main", "proxy-dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -2153,6 +2278,8 @@ version = "1.26.4" description = "Fundamental package for array computing in Python" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.12\"" files = [ {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, @@ -2198,6 +2325,8 @@ version = "2.3.1" description = "Fundamental package for array computing in Python" optional = true python-versions = ">=3.11" +groups = ["main"] +markers = "python_version < \"3.14\" and extra == \"extra-proxy\" and python_version >= \"3.12\"" files = [ {file = "numpy-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ea9e48336a402551f52cd8f593343699003d2353daa4b72ce8d34f66b722070"}, {file = "numpy-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ccb7336eaf0e77c1635b232c141846493a588ec9ea777a7c24d7166bb8533ae"}, @@ -2258,6 +2387,8 @@ version = "1.7.0" description = "Sphinx extension to support docstrings in Numpy format" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "numpydoc-1.7.0-py3-none-any.whl", hash = "sha256:5a56419d931310d79a06cfc2a126d1558700feeb9b4f3d8dcae1a8134be829c9"}, {file = "numpydoc-1.7.0.tar.gz", hash = "sha256:866e5ae5b6509dcf873fc6381120f5c31acf13b135636c1a81d68c166a95f921"}, @@ -2269,7 +2400,7 @@ tabulate = ">=0.8.10" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} [package.extras] -developer = ["pre-commit (>=3.3)", "tomli"] +developer = ["pre-commit (>=3.3)", "tomli ; python_version < \"3.11\""] doc = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pydata-sphinx-theme (>=0.13.3)", "sphinx (>=7)"] test = ["matplotlib", "pytest", "pytest-cov"] @@ -2279,6 +2410,8 @@ version = "3.3.1" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1"}, {file = "oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9"}, @@ -2295,6 +2428,7 @@ version = "1.91.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "openai-1.91.0-py3-none-any.whl", hash = "sha256:207f87aa3bc49365e014fac2f7e291b99929f4fe126c4654143440e0ad446a5f"}, {file = "openai-1.91.0.tar.gz", hash = "sha256:d6b07730d2f7c6745d0991997c16f85cddfc90ddcde8d569c862c30716b9fc90"}, @@ -2322,6 +2456,7 @@ version = "1.25.0" description = "OpenTelemetry Python API" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_api-1.25.0-py3-none-any.whl", hash = "sha256:757fa1aa020a0f8fa139f8959e53dec2051cc26b832e76fa839a6d76ecefd737"}, {file = "opentelemetry_api-1.25.0.tar.gz", hash = "sha256:77c4985f62f2614e42ce77ee4c9da5fa5f0bc1e1821085e9a47533a9323ae869"}, @@ -2337,6 +2472,7 @@ version = "1.25.0" description = "OpenTelemetry Collector Exporters" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_exporter_otlp-1.25.0-py3-none-any.whl", hash = "sha256:d67a831757014a3bc3174e4cd629ae1493b7ba8d189e8a007003cacb9f1a6b60"}, {file = "opentelemetry_exporter_otlp-1.25.0.tar.gz", hash = "sha256:ce03199c1680a845f82e12c0a6a8f61036048c07ec7a0bd943142aca8fa6ced0"}, @@ -2352,6 +2488,7 @@ version = "1.25.0" description = "OpenTelemetry Protobuf encoding" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_exporter_otlp_proto_common-1.25.0-py3-none-any.whl", hash = "sha256:15637b7d580c2675f70246563363775b4e6de947871e01d0f4e3881d1848d693"}, {file = "opentelemetry_exporter_otlp_proto_common-1.25.0.tar.gz", hash = "sha256:c93f4e30da4eee02bacd1e004eb82ce4da143a2f8e15b987a9f603e0a85407d3"}, @@ -2366,6 +2503,7 @@ version = "1.25.0" description = "OpenTelemetry Collector Protobuf over gRPC Exporter" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_exporter_otlp_proto_grpc-1.25.0-py3-none-any.whl", hash = "sha256:3131028f0c0a155a64c430ca600fd658e8e37043cb13209f0109db5c1a3e4eb4"}, {file = "opentelemetry_exporter_otlp_proto_grpc-1.25.0.tar.gz", hash = "sha256:c0b1661415acec5af87625587efa1ccab68b873745ca0ee96b69bb1042087eac"}, @@ -2386,6 +2524,7 @@ version = "1.25.0" description = "OpenTelemetry Collector Protobuf over HTTP Exporter" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_exporter_otlp_proto_http-1.25.0-py3-none-any.whl", hash = "sha256:2eca686ee11b27acd28198b3ea5e5863a53d1266b91cda47c839d95d5e0541a6"}, {file = "opentelemetry_exporter_otlp_proto_http-1.25.0.tar.gz", hash = "sha256:9f8723859e37c75183ea7afa73a3542f01d0fd274a5b97487ea24cb683d7d684"}, @@ -2406,6 +2545,7 @@ version = "1.25.0" description = "OpenTelemetry Python Proto" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_proto-1.25.0-py3-none-any.whl", hash = "sha256:f07e3341c78d835d9b86665903b199893befa5e98866f63d22b00d0b7ca4972f"}, {file = "opentelemetry_proto-1.25.0.tar.gz", hash = "sha256:35b6ef9dc4a9f7853ecc5006738ad40443701e52c26099e197895cbda8b815a3"}, @@ -2420,6 +2560,7 @@ version = "1.25.0" description = "OpenTelemetry Python SDK" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_sdk-1.25.0-py3-none-any.whl", hash = "sha256:d97ff7ec4b351692e9d5a15af570c693b8715ad78b8aafbec5c7100fe966b4c9"}, {file = "opentelemetry_sdk-1.25.0.tar.gz", hash = "sha256:ce7fc319c57707ef5bf8b74fb9f8ebdb8bfafbe11898410e0d2a761d08a98ec7"}, @@ -2436,6 +2577,7 @@ version = "0.46b0" description = "OpenTelemetry Semantic Conventions" optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "opentelemetry_semantic_conventions-0.46b0-py3-none-any.whl", hash = "sha256:6daef4ef9fa51d51855d9f8e0ccd3a1bd59e0e545abe99ac6203804e36ab3e07"}, {file = "opentelemetry_semantic_conventions-0.46b0.tar.gz", hash = "sha256:fbc982ecbb6a6e90869b15c1673be90bd18c8a56ff1cffc0864e38e2edffaefa"}, @@ -2450,6 +2592,8 @@ version = "3.10.15" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "orjson-3.10.15-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:552c883d03ad185f720d0c09583ebde257e41b9521b74ff40e08b7dec4559c04"}, {file = "orjson-3.10.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:616e3e8d438d02e4854f70bfdc03a6bcdb697358dbaa6bcd19cbe24d24ece1f8"}, @@ -2538,6 +2682,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2549,6 +2694,7 @@ version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2560,6 +2706,8 @@ version = "1.3.10" description = "Resolve a name to an object." optional = false python-versions = ">=3.6" +groups = ["main"] +markers = "python_version < \"3.9\"" files = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, @@ -2571,6 +2719,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -2587,6 +2736,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2602,6 +2752,7 @@ version = "2.0.0" description = "A pure-Python implementation of the HTTP/2 priority tree" optional = false python-versions = ">=3.6.1" +groups = ["proxy-dev"] files = [ {file = "priority-2.0.0-py3-none-any.whl", hash = "sha256:6f8eefce5f3ad59baf2c080a664037bb4725cd0a790d53d59ab4059288faf6aa"}, {file = "priority-2.0.0.tar.gz", hash = "sha256:c965d54f1b8d0d0b19479db3924c7c36cf672dbf2aec92d43fbdaf4492ba18c0"}, @@ -2613,6 +2764,7 @@ version = "0.11.0" description = "Prisma Client Python is an auto-generated and fully type-safe database client" optional = false python-versions = ">=3.7.0" +groups = ["main", "proxy-dev"] files = [ {file = "prisma-0.11.0-py3-none-any.whl", hash = "sha256:22bb869e59a2968b99f3483bb417717273ffbc569fd1e9ceed95e5614cbaf53a"}, {file = "prisma-0.11.0.tar.gz", hash = "sha256:3f2f2fd2361e1ec5ff655f2a04c7860c2f2a5bc4c91f78ca9c5c6349735bf693"}, @@ -2638,6 +2790,7 @@ version = "0.20.0" description = "Python client for the Prometheus monitoring system." optional = false python-versions = ">=3.8" +groups = ["proxy-dev"] files = [ {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, @@ -2652,6 +2805,7 @@ version = "0.2.0" description = "Accelerated property cache" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58"}, {file = "propcache-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b"}, @@ -2759,6 +2913,8 @@ version = "1.26.1" description = "Beautiful, Pythonic protocol buffers" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66"}, {file = "proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012"}, @@ -2776,6 +2932,7 @@ version = "4.25.8" description = "" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "protobuf-4.25.8-cp310-abi3-win32.whl", hash = "sha256:504435d831565f7cfac9f0714440028907f1975e4bed228e58e72ecfff58a1e0"}, {file = "protobuf-4.25.8-cp310-abi3-win_amd64.whl", hash = "sha256:bd551eb1fe1d7e92c1af1d75bdfa572eff1ab0e5bf1736716814cdccdb2360f9"}, @@ -2789,6 +2946,7 @@ files = [ {file = "protobuf-4.25.8-py3-none-any.whl", hash = "sha256:15a0af558aa3b13efef102ae6e4f3efac06f1eea11afb3a57db2901447d9fb59"}, {file = "protobuf-4.25.8.tar.gz", hash = "sha256:6135cf8affe1fc6f76cced2641e4ea8d3e59518d1f24ae41ba97bcad82d397cd"}, ] +markers = {main = "extra == \"extra-proxy\""} [[package]] name = "pyasn1" @@ -2796,6 +2954,8 @@ version = "0.6.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629"}, {file = "pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034"}, @@ -2807,6 +2967,8 @@ version = "0.4.2" description = "A collection of ASN.1-based protocols modules" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"}, {file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"}, @@ -2821,6 +2983,7 @@ version = "2.11.1" description = "Python style guide checker" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, @@ -2832,10 +2995,12 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] +markers = {main = "platform_python_implementation != \"PyPy\" or extra == \"proxy\"", dev = "platform_python_implementation != \"PyPy\"", proxy-dev = "platform_python_implementation != \"PyPy\""} [[package]] name = "pydantic" @@ -2843,6 +3008,7 @@ version = "2.10.6" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, @@ -2856,7 +3022,7 @@ typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" @@ -2864,6 +3030,7 @@ version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, @@ -2976,6 +3143,8 @@ version = "2.10.1" description = "Settings management using Pydantic" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"proxy\"" files = [ {file = "pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796"}, {file = "pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee"}, @@ -2999,6 +3168,7 @@ version = "3.1.0" description = "passive checker of Python programs" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, @@ -3010,6 +3180,8 @@ version = "2.19.2" description = "Pygments is a syntax highlighting package written in Python." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\" or extra == \"proxy\"" files = [ {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, @@ -3024,6 +3196,7 @@ version = "2.9.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.8" +groups = ["main", "proxy-dev"] files = [ {file = "PyJWT-2.9.0-py3-none-any.whl", hash = "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850"}, {file = "pyjwt-2.9.0.tar.gz", hash = "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"}, @@ -3044,6 +3217,8 @@ version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" optional = true python-versions = ">=3.6" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, @@ -3070,6 +3245,8 @@ version = "3.5.4" description = "A python implementation of GNU readline." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "python_version >= \"3.9\" and sys_platform == \"win32\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6"}, {file = "pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7"}, @@ -3084,6 +3261,7 @@ version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -3106,6 +3284,7 @@ version = "0.21.2" description = "Pytest support for asyncio" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "pytest_asyncio-0.21.2-py3-none-any.whl", hash = "sha256:ab664c88bb7998f711d8039cacd4884da6430886ae8bbd4eded552ed2004f16b"}, {file = "pytest_asyncio-0.21.2.tar.gz", hash = "sha256:d67738fc232b94b326b9d060750beb16e0074210b98dd8b58a5239fa2a154f45"}, @@ -3124,6 +3303,7 @@ version = "3.14.1" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0"}, {file = "pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e"}, @@ -3141,6 +3321,8 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3155,6 +3337,7 @@ version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" +groups = ["main", "proxy-dev"] files = [ {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, @@ -3169,6 +3352,8 @@ version = "0.0.18" description = "A streaming multipart parser for Python" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "python_multipart-0.0.18-py3-none-any.whl", hash = "sha256:efe91480f485f6a361427a541db4796f9e1591afc0fb8e7a4ba06bfbc6708996"}, {file = "python_multipart-0.0.18.tar.gz", hash = "sha256:7a68db60c8bfb82e460637fa4750727b45af1d5e2ed215593f917f64694d34fe"}, @@ -3180,6 +3365,8 @@ version = "3.0.0" description = "Universally unique lexicographically sortable identifier" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "python_ulid-3.0.0-py3-none-any.whl", hash = "sha256:e4c4942ff50dbd79167ad01ac725ec58f924b4018025ce22c858bfcff99a5e31"}, {file = "python_ulid-3.0.0.tar.gz", hash = "sha256:e50296a47dc8209d28629a22fc81ca26c00982c78934bd7766377ba37ea49a9f"}, @@ -3194,6 +3381,8 @@ version = "2025.2" description = "World timezone definitions, modern and historical" optional = true python-versions = "*" +groups = ["main"] +markers = "extra == \"utils\" and python_version < \"3.9\"" files = [ {file = "pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00"}, {file = "pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3"}, @@ -3205,6 +3394,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -3267,6 +3457,8 @@ version = "5.3.0" description = "Python client for Redis database and key-value store" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "python_version >= \"3.9\" and (extra == \"extra-proxy\" or extra == \"proxy\") and python_version < \"3.14\" or extra == \"proxy\"" files = [ {file = "redis-5.3.0-py3-none-any.whl", hash = "sha256:f1deeca1ea2ef25c1e4e46b07f4ea1275140526b1feea4c6459c0ec27a10ef83"}, {file = "redis-5.3.0.tar.gz", hash = "sha256:8d69d2dde11a12dc85d0dbf5c45577a5af048e2456f7077d87ad35c1c81c310e"}, @@ -3286,6 +3478,8 @@ version = "0.4.1" description = "Python client library and CLI for using Redis as a vector database" optional = true python-versions = "<3.14,>=3.9" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "redisvl-0.4.1-py3-none-any.whl", hash = "sha256:6db5d5bc95b1fe8032a1cdae74ce1c65bc7fe9054e5429b5d34d5a91d28bae5f"}, {file = "redisvl-0.4.1.tar.gz", hash = "sha256:fd6a36426ba94792c0efca20915c31232d4ee3cc58eb23794a62c142696401e6"}, @@ -3310,7 +3504,7 @@ bedrock = ["boto3[bedrock] (>=1.36.0,<2.0.0)"] cohere = ["cohere (>=4.44)"] mistralai = ["mistralai (>=1.0.0)"] openai = ["openai (>=1.13.0,<2.0.0)"] -sentence-transformers = ["scipy (<1.15)", "scipy (>=1.15,<2.0)", "sentence-transformers (>=3.4.0,<4.0.0)"] +sentence-transformers = ["scipy (<1.15) ; python_version < \"3.10\"", "scipy (>=1.15,<2.0) ; python_version >= \"3.10\"", "sentence-transformers (>=3.4.0,<4.0.0)"] vertexai = ["google-cloud-aiplatform (>=1.26,<2.0)", "protobuf (>=5.29.1,<6.0.0)"] voyageai = ["voyageai (>=0.2.2)"] @@ -3320,6 +3514,7 @@ version = "0.35.1" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, @@ -3335,6 +3530,7 @@ version = "2024.11.6" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -3438,6 +3634,7 @@ version = "2.31.0" description = "Python HTTP for Humans." optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, @@ -3459,6 +3656,7 @@ version = "1.12.1" description = "Mock out responses from the requests package" optional = false python-versions = ">=3.5" +groups = ["dev"] files = [ {file = "requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401"}, {file = "requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563"}, @@ -3476,6 +3674,8 @@ version = "0.8.0" description = "Resend Python SDK" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "resend-0.8.0-py2.py3-none-any.whl", hash = "sha256:adc1515dadf4f4fc6b90db55a237f0f37fc56fd74287a986519a8a187fdb661d"}, {file = "resend-0.8.0.tar.gz", hash = "sha256:94142394701724dbcfcd8f760f675c662a1025013e741dd7cc773ca885526257"}, @@ -3490,6 +3690,7 @@ version = "0.25.7" description = "A utility library for mocking out the `requests` Python library." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "responses-0.25.7-py3-none-any.whl", hash = "sha256:92ca17416c90fe6b35921f52179bff29332076bb32694c0df02dcac2c6bc043c"}, {file = "responses-0.25.7.tar.gz", hash = "sha256:8ebae11405d7a5df79ab6fd54277f6f2bc29b2d002d0dd2d5c632594d1ddcedb"}, @@ -3501,7 +3702,7 @@ requests = ">=2.30.0,<3.0" urllib3 = ">=1.25.10,<3.0" [package.extras] -tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli", "tomli-w", "types-PyYAML", "types-requests"] +tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asyncio", "pytest-cov", "pytest-httpserver", "tomli ; python_version < \"3.11\"", "tomli-w", "types-PyYAML", "types-requests"] [[package]] name = "respx" @@ -3509,6 +3710,7 @@ version = "0.22.0" description = "A utility for mocking out the Python HTTPX and HTTP Core libraries." optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "respx-0.22.0-py2.py3-none-any.whl", hash = "sha256:631128d4c9aba15e56903fb5f66fb1eff412ce28dd387ca3a81339e52dbd3ad0"}, {file = "respx-0.22.0.tar.gz", hash = "sha256:3c8924caa2a50bd71aefc07aa812f2466ff489f1848c96e954a5362d17095d91"}, @@ -3523,6 +3725,8 @@ version = "13.7.1" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = true python-versions = ">=3.7.0" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"}, {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"}, @@ -3542,6 +3746,7 @@ version = "0.20.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "rpds_py-0.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a649dfd735fff086e8a9d0503a9f0c7d01b7912a333c7ae77e1515c08c146dad"}, {file = "rpds_py-0.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f16bc1334853e91ddaaa1217045dd7be166170beec337576818461268a3de67f"}, @@ -3654,6 +3859,8 @@ version = "2.3.3" description = "RQ is a simple, lightweight, library for creating background jobs, and processing them." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "rq-2.3.3-py3-none-any.whl", hash = "sha256:2202c4409c4c527ac4bee409867d6c02515dd110030499eb0de54c7374aee0ce"}, {file = "rq-2.3.3.tar.gz", hash = "sha256:20c41c977b6f27c852a41bd855893717402bae7b8d9607dca21fe9dd55453e22"}, @@ -3669,6 +3876,8 @@ version = "4.9.1" description = "Pure-Python RSA implementation" optional = true python-versions = "<4,>=3.6" +groups = ["main"] +markers = "extra == \"extra-proxy\"" files = [ {file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"}, {file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"}, @@ -3683,6 +3892,7 @@ version = "0.1.15" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:5fe8d54df166ecc24106db7dd6a68d44852d14eb0729ea4672bb4d96c320b7df"}, {file = "ruff-0.1.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6f0bfbb53c4b4de117ac4d6ddfd33aa5fc31beeaa21d23c45c6dd249faf9126f"}, @@ -3709,6 +3919,8 @@ version = "0.10.4" description = "An Amazon S3 Transfer Manager" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "s3transfer-0.10.4-py3-none-any.whl", hash = "sha256:244a76a24355363a68164241438de1b72f8781664920260c48465896b712a41e"}, {file = "s3transfer-0.10.4.tar.gz", hash = "sha256:29edc09801743c21eb5ecbc617a152df41d3c287f67b615f73e5f750583666a7"}, @@ -3726,6 +3938,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "proxy-dev"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3737,6 +3950,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -3748,6 +3962,8 @@ version = "3.0.1" description = "This package provides 32 stemmers for 30 languages generated from Snowball algorithms." optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064"}, {file = "snowballstemmer-3.0.1.tar.gz", hash = "sha256:6d5eeeec8e9f84d4d56b847692bacf79bc2c8e90c7f80ca4444ff8b6f2e52895"}, @@ -3759,6 +3975,8 @@ version = "7.1.2" description = "Python documentation generator" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, @@ -3794,6 +4012,8 @@ version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, @@ -3809,6 +4029,8 @@ version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." optional = true python-versions = ">=3.5" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, @@ -3824,6 +4046,8 @@ version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, @@ -3839,6 +4063,8 @@ version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" optional = true python-versions = ">=3.5" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, @@ -3853,6 +4079,8 @@ version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." optional = true python-versions = ">=3.5" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, @@ -3868,6 +4096,8 @@ version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." optional = true python-versions = ">=3.5" +groups = ["main"] +markers = "extra == \"utils\"" files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, @@ -3883,6 +4113,8 @@ version = "2.1.3" description = "SSE plugin for Starlette" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"proxy\"" files = [ {file = "sse_starlette-2.1.3-py3-none-any.whl", hash = "sha256:8ec846438b4665b9e8c560fcdea6bc8081a3abf7942faa95e5a744999d219772"}, {file = "sse_starlette-2.1.3.tar.gz", hash = "sha256:9cd27eb35319e1414e3d2558ee7414487f9529ce3b3cf9b21434fd110e017169"}, @@ -3902,6 +4134,8 @@ version = "0.44.0" description = "The little ASGI library that shines." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "starlette-0.44.0-py3-none-any.whl", hash = "sha256:19edeb75844c16dcd4f9dd72f22f9108c1539f3fc9c4c88885654fef64f85aea"}, {file = "starlette-0.44.0.tar.gz", hash = "sha256:e35166950a3ccccc701962fe0711db0bc14f2ecd37c6f9fe5e3eae0cbaea8715"}, @@ -3920,6 +4154,8 @@ version = "0.9.0" description = "Pretty-print tabular data" optional = true python-versions = ">=3.7" +groups = ["main"] +markers = "python_version >= \"3.9\" and (extra == \"extra-proxy\" or extra == \"utils\") and python_version < \"3.14\" or extra == \"utils\"" files = [ {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"}, {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"}, @@ -3934,6 +4170,8 @@ version = "0.2.2" description = "backport of asyncio.TaskGroup, asyncio.Runner and asyncio.timeout" optional = false python-versions = "*" +groups = ["proxy-dev"] +markers = "python_version <= \"3.10\"" files = [ {file = "taskgroup-0.2.2-py2.py3-none-any.whl", hash = "sha256:e2c53121609f4ae97303e9ea1524304b4de6faf9eb2c9280c7f87976479a52fb"}, {file = "taskgroup-0.2.2.tar.gz", hash = "sha256:078483ac3e78f2e3f973e2edbf6941374fbea81b9c5d0a96f51d297717f4752d"}, @@ -3949,6 +4187,8 @@ version = "9.1.2" description = "Retry code until it succeeds" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.9\" and extra == \"extra-proxy\" and python_version < \"3.14\"" files = [ {file = "tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138"}, {file = "tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb"}, @@ -3964,6 +4204,7 @@ version = "0.7.0" description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "tiktoken-0.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485f3cc6aba7c6b6ce388ba634fbba656d9ee27f766216f45146beb4ac18b25f"}, {file = "tiktoken-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e54be9a2cd2f6d6ffa3517b064983fb695c9a9d8aa7d574d1ef3c3f931a99225"}, @@ -4016,6 +4257,7 @@ version = "0.21.0" description = "" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "tokenizers-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:3c4c93eae637e7d2aaae3d376f06085164e1660f89304c0ab2b1d08a406636b2"}, {file = "tokenizers-0.21.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:f53ea537c925422a2e0e92a24cce96f6bc5046bbef24a1652a5edc8ba975f62e"}, @@ -4048,6 +4290,7 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -4082,6 +4325,7 @@ files = [ {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] +markers = {main = "extra == \"utils\" and python_version <= \"3.10\"", dev = "python_version <= \"3.10\"", proxy-dev = "python_version <= \"3.10\""} [[package]] name = "tomlkit" @@ -4089,6 +4333,7 @@ version = "0.13.3" description = "Style preserving TOML library" optional = false python-versions = ">=3.8" +groups = ["main", "proxy-dev"] files = [ {file = "tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0"}, {file = "tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1"}, @@ -4100,6 +4345,7 @@ version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" +groups = ["main"] files = [ {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, @@ -4121,6 +4367,7 @@ version = "1.16.0.20241221" description = "Typing stubs for cffi" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types_cffi-1.16.0.20241221-py3-none-any.whl", hash = "sha256:e5b76b4211d7a9185f6ab8d06a106d56c7eb80af7cdb8bfcb4186ade10fb112f"}, {file = "types_cffi-1.16.0.20241221.tar.gz", hash = "sha256:1c96649618f4b6145f58231acb976e0b448be6b847f7ab733dabe62dfbff6591"}, @@ -4135,6 +4382,7 @@ version = "24.1.0.20240722" description = "Typing stubs for pyOpenSSL" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types-pyOpenSSL-24.1.0.20240722.tar.gz", hash = "sha256:47913b4678a01d879f503a12044468221ed8576263c1540dcb0484ca21b08c39"}, {file = "types_pyOpenSSL-24.1.0.20240722-py3-none-any.whl", hash = "sha256:6a7a5d2ec042537934cfb4c9d4deb0e16c4c6250b09358df1f083682fe6fda54"}, @@ -4150,6 +4398,7 @@ version = "6.0.12.20241230" description = "Typing stubs for PyYAML" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6"}, {file = "types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c"}, @@ -4161,6 +4410,7 @@ version = "4.6.0.20241004" description = "Typing stubs for redis" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types-redis-4.6.0.20241004.tar.gz", hash = "sha256:5f17d2b3f9091ab75384153bfa276619ffa1cf6a38da60e10d5e6749cc5b902e"}, {file = "types_redis-4.6.0.20241004-py3-none-any.whl", hash = "sha256:ef5da68cb827e5f606c8f9c0b49eeee4c2669d6d97122f301d3a55dc6a63f6ed"}, @@ -4176,6 +4426,8 @@ version = "2.31.0.6" description = "Typing stubs for requests" optional = false python-versions = ">=3.7" +groups = ["dev"] +markers = "python_version < \"3.10\"" files = [ {file = "types-requests-2.31.0.6.tar.gz", hash = "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0"}, {file = "types_requests-2.31.0.6-py3-none-any.whl", hash = "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9"}, @@ -4190,6 +4442,8 @@ version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version >= \"3.10\"" files = [ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, @@ -4204,6 +4458,7 @@ version = "75.8.0.20250110" description = "Typing stubs for setuptools" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "types_setuptools-75.8.0.20250110-py3-none-any.whl", hash = "sha256:a9f12980bbf9bcdc23ecd80755789085bad6bfce4060c2275bc2b4ca9f2bc480"}, {file = "types_setuptools-75.8.0.20250110.tar.gz", hash = "sha256:96f7ec8bbd6e0a54ea180d66ad68ad7a1d7954e7281a710ea2de75e355545271"}, @@ -4215,6 +4470,8 @@ version = "1.26.25.14" description = "Typing stubs for urllib3" optional = false python-versions = "*" +groups = ["dev"] +markers = "python_version < \"3.10\"" files = [ {file = "types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f"}, {file = "types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e"}, @@ -4226,6 +4483,7 @@ version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, @@ -4237,6 +4495,8 @@ version = "0.4.1" description = "Runtime typing introspection tools" optional = true python-versions = ">=3.9" +groups = ["main"] +markers = "python_version >= \"3.10\" and extra == \"proxy\"" files = [ {file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"}, {file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"}, @@ -4251,6 +4511,8 @@ version = "2025.2" description = "Provider of IANA time zone data" optional = true python-versions = ">=2" +groups = ["main"] +markers = "extra == \"proxy\" and platform_system == \"Windows\"" files = [ {file = "tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8"}, {file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"}, @@ -4262,6 +4524,8 @@ version = "5.2" description = "tzinfo object for the local timezone" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, @@ -4280,14 +4544,16 @@ version = "1.26.20" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +groups = ["main", "dev", "proxy-dev"] +markers = "python_version < \"3.10\"" files = [ {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"}, {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +brotli = ["brotli (==1.0.9) ; os_name != \"nt\" and python_version < \"3\" and platform_python_implementation == \"CPython\"", "brotli (>=1.0.9) ; python_version >= \"3\" and platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; (os_name != \"nt\" or python_version >= \"3\") and platform_python_implementation != \"CPython\"", "brotlipy (>=0.6.0) ; os_name == \"nt\" and python_version < \"3\""] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress ; python_version == \"2.7\"", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] @@ -4296,13 +4562,15 @@ version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] +markers = "python_version >= \"3.10\"" files = [ {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +brotli = ["brotli (>=1.0.9) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=0.8.0) ; platform_python_implementation != \"CPython\""] h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -4313,6 +4581,8 @@ version = "0.29.0" description = "The lightning-fast ASGI server." optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "uvicorn-0.29.0-py3-none-any.whl", hash = "sha256:2c2aac7ff4f4365c206fd773a39bf4ebd1047c238f8b8268ad996829323473de"}, {file = "uvicorn-0.29.0.tar.gz", hash = "sha256:6a69214c0b6a087462412670b3ef21224fa48cae0e452b5883e8e8bdfdd11dd0"}, @@ -4324,7 +4594,7 @@ h11 = ">=0.8" typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} [package.extras] -standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] +standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1) ; sys_platform != \"win32\" and sys_platform != \"cygwin\" and platform_python_implementation != \"PyPy\"", "watchfiles (>=0.13)", "websockets (>=10.4)"] [[package]] name = "uvloop" @@ -4332,6 +4602,8 @@ version = "0.21.0" description = "Fast implementation of asyncio event loop on top of libuv" optional = true python-versions = ">=3.8.0" +groups = ["main"] +markers = "sys_platform != \"win32\" and extra == \"proxy\"" files = [ {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ec7e6b09a6fdded42403182ab6b832b71f4edaf7f37a9a0e371a01db5f0cb45f"}, {file = "uvloop-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:196274f2adb9689a289ad7d65700d37df0c0930fd8e4e743fa4834e850d7719d"}, @@ -4383,6 +4655,8 @@ version = "13.1" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" optional = true python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"proxy\"" files = [ {file = "websockets-13.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f48c749857f8fb598fb890a75f540e3221d0976ed0bf879cf3c7eef34151acee"}, {file = "websockets-13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7e72ce6bda6fb9409cc1e8164dd41d7c91466fb599eb047cfda72fe758a34a7"}, @@ -4478,6 +4752,7 @@ version = "1.17.2" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" +groups = ["dev", "proxy-dev"] files = [ {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984"}, {file = "wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22"}, @@ -4566,6 +4841,7 @@ version = "1.2.0" description = "WebSockets state-machine based protocol implementation" optional = false python-versions = ">=3.7.0" +groups = ["proxy-dev"] files = [ {file = "wsproto-1.2.0-py3-none-any.whl", hash = "sha256:b9acddd652b585d75b20477888c56642fdade28bdfd3579aa24a4d2c037dd736"}, {file = "wsproto-1.2.0.tar.gz", hash = "sha256:ad565f26ecb92588a3e43bc3d96164de84cd9902482b130d0ddbaa9664a85065"}, @@ -4580,6 +4856,7 @@ version = "1.15.2" description = "Yet another URL library" optional = false python-versions = ">=3.8" +groups = ["main"] files = [ {file = "yarl-1.15.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e4ee8b8639070ff246ad3649294336b06db37a94bdea0d09ea491603e0be73b8"}, {file = "yarl-1.15.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7cf963a357c5f00cb55b1955df8bbe68d2f2f65de065160a1c26b85a1e44172"}, @@ -4692,17 +4969,18 @@ version = "3.20.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" +groups = ["main", "dev", "proxy-dev"] files = [ {file = "zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350"}, {file = "zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29"}, ] [package.extras] -check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)"] +check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1) ; sys_platform != \"cygwin\""] cover = ["pytest-cov"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] enabler = ["pytest-enabler (>=2.2)"] -test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] +test = ["big-O", "importlib-resources ; python_version < \"3.9\"", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-ignore-flaky"] type = ["pytest-mypy"] [extras] @@ -4712,6 +4990,6 @@ proxy = ["PyJWT", "apscheduler", "backoff", "boto3", "cryptography", "fastapi", utils = ["numpydoc"] [metadata] -lock-version = "2.0" +lock-version = "2.1" python-versions = ">=3.8.1,<4.0, !=3.9.7" -content-hash = "49b9a951a4fa45aed575ebaf36d7158b63b7d23665f83344a11dd4d954ac881a" +content-hash = "3af0b1a75c3328caee0941f01bcc82f917149d412bce0783728fe3910c48f962" diff --git a/pyproject.toml b/pyproject.toml index a39d3ab7420..367195946ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,7 @@ redisvl = {version = "^0.4.1", optional = true, markers = "python_version >= '3. mcp = {version = "1.9.3", optional = true, python = ">=3.10"} litellm-proxy-extras = {version = "0.2.6", optional = true} rich = {version = "13.7.1", optional = true} -litellm-enterprise = {version = "0.1.9", optional = true} +litellm-enterprise = {version = "0.1.10", optional = true} diskcache = {version = "^5.6.1", optional = true} [tool.poetry.extras] diff --git a/requirements.txt b/requirements.txt index b50ad713c33..105edb03db3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -57,4 +57,4 @@ websockets==13.1.0 # for realtime API ######################## # LITELLM ENTERPRISE DEPENDENCIES ######################## -litellm-enterprise==0.1.9 +litellm-enterprise==0.1.10