diff --git a/.github/workflows/providers-build.yml b/.github/workflows/providers-build.yml index 8268a0085..6de72cd60 100644 --- a/.github/workflows/providers-build.yml +++ b/.github/workflows/providers-build.yml @@ -11,6 +11,8 @@ on: - 'llama_stack/distribution/*.sh' - '.github/workflows/providers-build.yml' - 'llama_stack/templates/**' + - 'pyproject.toml' + pull_request: paths: - 'llama_stack/cli/stack/build.py' @@ -19,6 +21,7 @@ on: - 'llama_stack/distribution/*.sh' - '.github/workflows/providers-build.yml' - 'llama_stack/templates/**' + - 'pyproject.toml' concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/llama_stack/providers/registry/inference.py b/llama_stack/providers/registry/inference.py index 66f2e8bce..47be57eee 100644 --- a/llama_stack/providers/registry/inference.py +++ b/llama_stack/providers/registry/inference.py @@ -70,7 +70,7 @@ def available_providers() -> list[ProviderSpec]: api=Api.inference, adapter=AdapterSpec( adapter_type="ollama", - pip_packages=["ollama", "aiohttp"], + pip_packages=["ollama", "aiohttp", "h11>=0.16.0"], config_class="llama_stack.providers.remote.inference.ollama.OllamaImplConfig", module="llama_stack.providers.remote.inference.ollama", ), diff --git a/llama_stack/providers/registry/safety.py b/llama_stack/providers/registry/safety.py index e0a04be48..f0fe1e9f5 100644 --- a/llama_stack/providers/registry/safety.py +++ b/llama_stack/providers/registry/safety.py @@ -67,7 +67,7 @@ def available_providers() -> list[ProviderSpec]: api=Api.safety, adapter=AdapterSpec( adapter_type="sambanova", - pip_packages=["litellm"], + pip_packages=["litellm", "requests"], module="llama_stack.providers.remote.safety.sambanova", config_class="llama_stack.providers.remote.safety.sambanova.SambaNovaSafetyConfig", provider_data_validator="llama_stack.providers.remote.safety.sambanova.config.SambaNovaProviderDataValidator", diff --git a/llama_stack/providers/registry/scoring.py b/llama_stack/providers/registry/scoring.py index 7980d6a13..244b06842 100644 --- a/llama_stack/providers/registry/scoring.py +++ b/llama_stack/providers/registry/scoring.py @@ -13,7 +13,7 @@ def available_providers() -> list[ProviderSpec]: InlineProviderSpec( api=Api.scoring, provider_type="inline::basic", - pip_packages=[], + pip_packages=["requests"], module="llama_stack.providers.inline.scoring.basic", config_class="llama_stack.providers.inline.scoring.basic.BasicScoringConfig", api_dependencies=[ diff --git a/pyproject.toml b/pyproject.toml index 97624fade..99be1a80a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,8 +22,8 @@ classifiers = [ ] dependencies = [ "aiohttp", - "fastapi>=0.115.0,<1.0", - "fire", + "fastapi>=0.115.0,<1.0", # server + "fire", # for MCP in LLS client "httpx", "huggingface-hub>=0.30.0,<1.0", "jinja2>=3.1.6", @@ -34,15 +34,18 @@ dependencies = [ "python-dotenv", "python-jose", "pydantic>=2", - "requests", "rich", - "setuptools", "starlette", "termcolor", "tiktoken", "pillow", "h11>=0.16.0", - "python-multipart>=0.0.20", + "python-multipart>=0.0.20", # For fastapi Form + "uvicorn>=0.34.0", # server + "opentelemetry-sdk", # server + "opentelemetry-exporter-otlp-proto-http", # server + "aiosqlite>=0.21.0", # server - for metadata store + "asyncpg", # for metadata store ] [project.optional-dependencies] @@ -67,7 +70,6 @@ dev = [ "types-requests", "types-setuptools", "pre-commit", - "uvicorn", "ruamel.yaml", # needed for openapi generator ] # These are the dependencies required for running unit tests. @@ -80,7 +82,6 @@ unit = [ "mcp", "chardet", "qdrant-client", - "opentelemetry-exporter-otlp-proto-http", "sqlalchemy", "sqlalchemy[asyncio]>=2.0.41", "blobfile", @@ -96,8 +97,6 @@ test = [ "aiohttp", "torch>=2.6.0", "torchvision>=0.21.0", - "opentelemetry-sdk", - "opentelemetry-exporter-otlp-proto-http", "chardet", "pypdf", "mcp", @@ -106,6 +105,7 @@ test = [ "transformers", "sqlalchemy", "sqlalchemy[asyncio]>=2.0.41", + "requests", ] docs = [ "sphinx-autobuild", @@ -122,6 +122,7 @@ docs = [ "tomli", "linkify", "sphinxcontrib.openapi", + "requests", ] codegen = ["rich", "pydantic", "jinja2>=3.1.6"] diff --git a/requirements.txt b/requirements.txt index 7e7aa38ce..2e016ef72 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,8 @@ aiohttp==3.11.13 # via llama-stack aiosignal==1.3.2 # via aiohttp +aiosqlite==0.21.0 + # via llama-stack annotated-types==0.7.0 # via pydantic anyio==4.8.0 @@ -14,6 +16,8 @@ anyio==4.8.0 # llama-stack-client # openai # starlette +asyncpg==0.30.0 + # via llama-stack attrs==25.1.0 # via # aiohttp @@ -27,11 +31,18 @@ certifi==2025.1.31 charset-normalizer==3.4.1 # via requests click==8.1.8 - # via llama-stack-client + # via + # llama-stack-client + # uvicorn colorama==0.4.6 ; sys_platform == 'win32' # via # click # tqdm +deprecated==1.2.18 + # via + # opentelemetry-api + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-semantic-conventions distro==1.9.0 # via # llama-stack-client @@ -50,10 +61,13 @@ frozenlist==1.5.0 # aiosignal fsspec==2024.12.0 # via huggingface-hub +googleapis-common-protos==1.67.0 + # via opentelemetry-exporter-otlp-proto-http h11==0.16.0 # via # httpcore # llama-stack + # uvicorn hf-xet==1.1.5 ; platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'arm64' or platform_machine == 'x86_64' # via huggingface-hub httpcore==1.0.9 @@ -71,6 +85,8 @@ idna==3.10 # httpx # requests # yarl +importlib-metadata==8.5.0 + # via opentelemetry-api jinja2==3.1.6 # via llama-stack jiter==0.8.2 @@ -95,6 +111,25 @@ numpy==2.2.3 # via pandas openai==1.71.0 # via llama-stack +opentelemetry-api==1.30.0 + # via + # opentelemetry-exporter-otlp-proto-http + # opentelemetry-sdk + # opentelemetry-semantic-conventions +opentelemetry-exporter-otlp-proto-common==1.30.0 + # via opentelemetry-exporter-otlp-proto-http +opentelemetry-exporter-otlp-proto-http==1.30.0 + # via llama-stack +opentelemetry-proto==1.30.0 + # via + # opentelemetry-exporter-otlp-proto-common + # opentelemetry-exporter-otlp-proto-http +opentelemetry-sdk==1.30.0 + # via + # llama-stack + # opentelemetry-exporter-otlp-proto-http +opentelemetry-semantic-conventions==0.51b0 + # via opentelemetry-sdk packaging==24.2 # via huggingface-hub pandas==2.2.3 @@ -109,6 +144,10 @@ propcache==0.3.0 # via # aiohttp # yarl +protobuf==5.29.3 + # via + # googleapis-common-protos + # opentelemetry-proto pyaml==25.1.0 # via llama-stack-client pyasn1==0.4.8 @@ -148,7 +187,7 @@ regex==2024.11.6 requests==2.32.4 # via # huggingface-hub - # llama-stack + # opentelemetry-exporter-otlp-proto-http # tiktoken rich==13.9.4 # via @@ -160,8 +199,6 @@ rpds-py==0.22.3 # referencing rsa==4.9 # via python-jose -setuptools==80.8.0 - # via llama-stack six==1.17.0 # via # ecdsa @@ -189,11 +226,13 @@ tqdm==4.67.1 # openai typing-extensions==4.12.2 # via + # aiosqlite # anyio # fastapi # huggingface-hub # llama-stack-client # openai + # opentelemetry-sdk # pydantic # pydantic-core # referencing @@ -201,7 +240,13 @@ tzdata==2025.1 # via pandas urllib3==2.3.0 # via requests +uvicorn==0.34.0 + # via llama-stack wcwidth==0.2.13 # via prompt-toolkit +wrapt==1.17.2 + # via deprecated yarl==1.18.3 # via aiohttp +zipp==3.21.0 + # via importlib-metadata diff --git a/uv.lock b/uv.lock index 42eece4e1..31e296642 100644 --- a/uv.lock +++ b/uv.lock @@ -158,6 +158,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] +[[package]] +name = "asyncpg" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/4c/7c991e080e106d854809030d8584e15b2e996e26f16aee6d757e387bc17d/asyncpg-0.30.0.tar.gz", hash = "sha256:c551e9928ab6707602f44811817f82ba3c446e018bfe1d3abecc8ba5f3eac851", size = 957746, upload-time = "2024-10-20T00:30:41.127Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/0e/f5d708add0d0b97446c402db7e8dd4c4183c13edaabe8a8500b411e7b495/asyncpg-0.30.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5e0511ad3dec5f6b4f7a9e063591d407eee66b88c14e2ea636f187da1dcfff6a", size = 674506, upload-time = "2024-10-20T00:29:27.988Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a0/67ec9a75cb24a1d99f97b8437c8d56da40e6f6bd23b04e2f4ea5d5ad82ac/asyncpg-0.30.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:915aeb9f79316b43c3207363af12d0e6fd10776641a7de8a01212afd95bdf0ed", size = 645922, upload-time = "2024-10-20T00:29:29.391Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d9/a7584f24174bd86ff1053b14bb841f9e714380c672f61c906eb01d8ec433/asyncpg-0.30.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c198a00cce9506fcd0bf219a799f38ac7a237745e1d27f0e1f66d3707c84a5a", size = 3079565, upload-time = "2024-10-20T00:29:30.832Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d7/a4c0f9660e333114bdb04d1a9ac70db690dd4ae003f34f691139a5cbdae3/asyncpg-0.30.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3326e6d7381799e9735ca2ec9fd7be4d5fef5dcbc3cb555d8a463d8460607956", size = 3109962, upload-time = "2024-10-20T00:29:33.114Z" }, + { url = "https://files.pythonhosted.org/packages/3c/21/199fd16b5a981b1575923cbb5d9cf916fdc936b377e0423099f209e7e73d/asyncpg-0.30.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:51da377487e249e35bd0859661f6ee2b81db11ad1f4fc036194bc9cb2ead5056", size = 3064791, upload-time = "2024-10-20T00:29:34.677Z" }, + { url = "https://files.pythonhosted.org/packages/77/52/0004809b3427534a0c9139c08c87b515f1c77a8376a50ae29f001e53962f/asyncpg-0.30.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bc6d84136f9c4d24d358f3b02be4b6ba358abd09f80737d1ac7c444f36108454", size = 3188696, upload-time = "2024-10-20T00:29:36.389Z" }, + { url = "https://files.pythonhosted.org/packages/52/cb/fbad941cd466117be58b774a3f1cc9ecc659af625f028b163b1e646a55fe/asyncpg-0.30.0-cp311-cp311-win32.whl", hash = "sha256:574156480df14f64c2d76450a3f3aaaf26105869cad3865041156b38459e935d", size = 567358, upload-time = "2024-10-20T00:29:37.915Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0a/0a32307cf166d50e1ad120d9b81a33a948a1a5463ebfa5a96cc5606c0863/asyncpg-0.30.0-cp311-cp311-win_amd64.whl", hash = "sha256:3356637f0bd830407b5597317b3cb3571387ae52ddc3bca6233682be88bbbc1f", size = 629375, upload-time = "2024-10-20T00:29:39.987Z" }, + { url = "https://files.pythonhosted.org/packages/4b/64/9d3e887bb7b01535fdbc45fbd5f0a8447539833b97ee69ecdbb7a79d0cb4/asyncpg-0.30.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c902a60b52e506d38d7e80e0dd5399f657220f24635fee368117b8b5fce1142e", size = 673162, upload-time = "2024-10-20T00:29:41.88Z" }, + { url = "https://files.pythonhosted.org/packages/6e/eb/8b236663f06984f212a087b3e849731f917ab80f84450e943900e8ca4052/asyncpg-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aca1548e43bbb9f0f627a04666fedaca23db0a31a84136ad1f868cb15deb6e3a", size = 637025, upload-time = "2024-10-20T00:29:43.352Z" }, + { url = "https://files.pythonhosted.org/packages/cc/57/2dc240bb263d58786cfaa60920779af6e8d32da63ab9ffc09f8312bd7a14/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c2a2ef565400234a633da0eafdce27e843836256d40705d83ab7ec42074efb3", size = 3496243, upload-time = "2024-10-20T00:29:44.922Z" }, + { url = "https://files.pythonhosted.org/packages/f4/40/0ae9d061d278b10713ea9021ef6b703ec44698fe32178715a501ac696c6b/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1292b84ee06ac8a2ad8e51c7475aa309245874b61333d97411aab835c4a2f737", size = 3575059, upload-time = "2024-10-20T00:29:46.891Z" }, + { url = "https://files.pythonhosted.org/packages/c3/75/d6b895a35a2c6506952247640178e5f768eeb28b2e20299b6a6f1d743ba0/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5712350388d0cd0615caec629ad53c81e506b1abaaf8d14c93f54b35e3595a", size = 3473596, upload-time = "2024-10-20T00:29:49.201Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e7/3693392d3e168ab0aebb2d361431375bd22ffc7b4a586a0fc060d519fae7/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:db9891e2d76e6f425746c5d2da01921e9a16b5a71a1c905b13f30e12a257c4af", size = 3641632, upload-time = "2024-10-20T00:29:50.768Z" }, + { url = "https://files.pythonhosted.org/packages/32/ea/15670cea95745bba3f0352341db55f506a820b21c619ee66b7d12ea7867d/asyncpg-0.30.0-cp312-cp312-win32.whl", hash = "sha256:68d71a1be3d83d0570049cd1654a9bdfe506e794ecc98ad0873304a9f35e411e", size = 560186, upload-time = "2024-10-20T00:29:52.394Z" }, + { url = "https://files.pythonhosted.org/packages/7e/6b/fe1fad5cee79ca5f5c27aed7bd95baee529c1bf8a387435c8ba4fe53d5c1/asyncpg-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a0292c6af5c500523949155ec17b7fe01a00ace33b68a476d6b5059f9630305", size = 621064, upload-time = "2024-10-20T00:29:53.757Z" }, + { url = "https://files.pythonhosted.org/packages/3a/22/e20602e1218dc07692acf70d5b902be820168d6282e69ef0d3cb920dc36f/asyncpg-0.30.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05b185ebb8083c8568ea8a40e896d5f7af4b8554b64d7719c0eaa1eb5a5c3a70", size = 670373, upload-time = "2024-10-20T00:29:55.165Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b3/0cf269a9d647852a95c06eb00b815d0b95a4eb4b55aa2d6ba680971733b9/asyncpg-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c47806b1a8cbb0a0db896f4cd34d89942effe353a5035c62734ab13b9f938da3", size = 634745, upload-time = "2024-10-20T00:29:57.14Z" }, + { url = "https://files.pythonhosted.org/packages/8e/6d/a4f31bf358ce8491d2a31bfe0d7bcf25269e80481e49de4d8616c4295a34/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b6fde867a74e8c76c71e2f64f80c64c0f3163e687f1763cfaf21633ec24ec33", size = 3512103, upload-time = "2024-10-20T00:29:58.499Z" }, + { url = "https://files.pythonhosted.org/packages/96/19/139227a6e67f407b9c386cb594d9628c6c78c9024f26df87c912fabd4368/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46973045b567972128a27d40001124fbc821c87a6cade040cfcd4fa8a30bcdc4", size = 3592471, upload-time = "2024-10-20T00:30:00.354Z" }, + { url = "https://files.pythonhosted.org/packages/67/e4/ab3ca38f628f53f0fd28d3ff20edff1c975dd1cb22482e0061916b4b9a74/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9110df111cabc2ed81aad2f35394a00cadf4f2e0635603db6ebbd0fc896f46a4", size = 3496253, upload-time = "2024-10-20T00:30:02.794Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5f/0bf65511d4eeac3a1f41c54034a492515a707c6edbc642174ae79034d3ba/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04ff0785ae7eed6cc138e73fc67b8e51d54ee7a3ce9b63666ce55a0bf095f7ba", size = 3662720, upload-time = "2024-10-20T00:30:04.501Z" }, + { url = "https://files.pythonhosted.org/packages/e7/31/1513d5a6412b98052c3ed9158d783b1e09d0910f51fbe0e05f56cc370bc4/asyncpg-0.30.0-cp313-cp313-win32.whl", hash = "sha256:ae374585f51c2b444510cdf3595b97ece4f233fde739aa14b50e0d64e8a7a590", size = 560404, upload-time = "2024-10-20T00:30:06.537Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/cec76b3389c4c5ff66301cd100fe88c318563ec8a520e0b2e792b5b84972/asyncpg-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:f59b430b8e27557c3fb9869222559f7417ced18688375825f8f12302c34e915e", size = 621623, upload-time = "2024-10-20T00:30:09.024Z" }, +] + [[package]] name = "attrs" version = "25.1.0" @@ -1187,6 +1219,8 @@ version = "0.2.12" source = { editable = "." } dependencies = [ { name = "aiohttp" }, + { name = "aiosqlite" }, + { name = "asyncpg" }, { name = "fastapi" }, { name = "fire" }, { name = "h11" }, @@ -1196,18 +1230,19 @@ dependencies = [ { name = "jsonschema" }, { name = "llama-stack-client" }, { name = "openai" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-sdk" }, { name = "pillow" }, { name = "prompt-toolkit" }, { name = "pydantic" }, { name = "python-dotenv" }, { name = "python-jose" }, { name = "python-multipart" }, - { name = "requests" }, { name = "rich" }, - { name = "setuptools" }, { name = "starlette" }, { name = "termcolor" }, { name = "tiktoken" }, + { name = "uvicorn" }, ] [package.optional-dependencies] @@ -1238,11 +1273,11 @@ dev = [ { name = "ruff" }, { name = "types-requests" }, { name = "types-setuptools" }, - { name = "uvicorn" }, ] docs = [ { name = "linkify" }, { name = "myst-parser" }, + { name = "requests" }, { name = "sphinx" }, { name = "sphinx-autobuild" }, { name = "sphinx-copybutton" }, @@ -1264,9 +1299,8 @@ test = [ { name = "datasets" }, { name = "mcp" }, { name = "openai" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, - { name = "opentelemetry-sdk" }, { name = "pypdf" }, + { name = "requests" }, { name = "sqlalchemy", extra = ["asyncio"] }, { name = "torch", version = "2.6.0", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform == 'darwin'" }, { name = "torch", version = "2.6.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "sys_platform != 'darwin'" }, @@ -1282,7 +1316,6 @@ unit = [ { name = "faiss-cpu" }, { name = "mcp" }, { name = "openai" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "pypdf" }, { name = "qdrant-client" }, { name = "sqlalchemy", extra = ["asyncio"] }, @@ -1292,6 +1325,8 @@ unit = [ [package.metadata] requires-dist = [ { name = "aiohttp" }, + { name = "aiosqlite", specifier = ">=0.21.0" }, + { name = "asyncpg" }, { name = "fastapi", specifier = ">=0.115.0,<1.0" }, { name = "fire" }, { name = "h11", specifier = ">=0.16.0" }, @@ -1302,6 +1337,8 @@ requires-dist = [ { name = "llama-stack-client", specifier = ">=0.2.12" }, { name = "llama-stack-client", marker = "extra == 'ui'", specifier = ">=0.2.12" }, { name = "openai", specifier = ">=1.66" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-sdk" }, { name = "pandas", marker = "extra == 'ui'" }, { name = "pillow" }, { name = "prompt-toolkit" }, @@ -1309,14 +1346,13 @@ requires-dist = [ { name = "python-dotenv" }, { name = "python-jose" }, { name = "python-multipart", specifier = ">=0.0.20" }, - { name = "requests" }, { name = "rich" }, - { name = "setuptools" }, { name = "starlette" }, { name = "streamlit", marker = "extra == 'ui'" }, { name = "streamlit-option-menu", marker = "extra == 'ui'" }, { name = "termcolor" }, { name = "tiktoken" }, + { name = "uvicorn", specifier = ">=0.34.0" }, ] provides-extras = ["ui"] @@ -1340,11 +1376,11 @@ dev = [ { name = "ruff" }, { name = "types-requests" }, { name = "types-setuptools" }, - { name = "uvicorn" }, ] docs = [ { name = "linkify" }, { name = "myst-parser" }, + { name = "requests" }, { name = "sphinx" }, { name = "sphinx-autobuild" }, { name = "sphinx-copybutton" }, @@ -1366,9 +1402,8 @@ test = [ { name = "datasets" }, { name = "mcp" }, { name = "openai" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, - { name = "opentelemetry-sdk" }, { name = "pypdf" }, + { name = "requests" }, { name = "sqlalchemy" }, { name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.41" }, { name = "torch", specifier = ">=2.6.0", index = "https://download.pytorch.org/whl/cpu" }, @@ -1383,7 +1418,6 @@ unit = [ { name = "faiss-cpu" }, { name = "mcp" }, { name = "openai" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, { name = "pypdf" }, { name = "qdrant-client" }, { name = "sqlalchemy" },