diff --git a/AGENTS.md b/AGENTS.md index 6f222c19f..032e7ea36 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -17,16 +17,17 @@ AGENTS.md — Instructions for AI coding assistants (Claude, Cursor, Copilot, Co - The virtual environment is `.venv/` — `uv run` automatically uses it ```bash -pre-commit install # Required: install git hooks -uv sync --all-extras --all-groups # Install all deps (required for tests) -ollama serve # Start Ollama (required for most tests) -uv run pytest # Default: qualitative tests, skip slow tests -uv run pytest -m "not qualitative" # Fast tests only (~2 min) -uv run pytest -m slow # Run only slow tests (>5 min) -uv run pytest --co -q # Run ALL tests including slow (bypass config) -uv run ruff format . # Format code -uv run ruff check . # Lint code -uv run mypy . # Type check +pre-commit install # Required: install git hooks +uv sync --all-extras --all-groups # Install all deps (required for tests) +uv sync --extra backends --all-groups # Install just backend deps (lighter) +ollama serve # Start Ollama (required for most tests) +uv run pytest # Default: qualitative tests, skip slow tests +uv run pytest -m "not qualitative" # Fast tests only (~2 min) +uv run pytest -m slow # Run only slow tests (>5 min) +uv run pytest --co -q # Run ALL tests including slow (bypass config) +uv run ruff format . # Format code +uv run ruff check . # Lint code +uv run mypy . # Type check ``` **Branches**: `feat/topic`, `fix/issue-id`, `docs/topic` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 579fccf15..4dd1c602f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,14 +58,13 @@ to melleaadmin@ibm.com. source .venv/bin/activate # On Windows: .venv\Scripts\activate ``` -3. **Install with all dependencies:** +3. **Install dependencies:** ```bash + # Install all dependencies (recommended for development) uv sync --all-extras --all-groups - ``` - - Or for minimal development setup: - ```bash - uv pip install -e ".[all]" --group dev --group notebook --group docs + + # Or install just the backend dependencies + uv sync --extra backends --all-groups ``` 4. **Install pre-commit hooks (Required):** diff --git a/mellea/backends/tools.py b/mellea/backends/tools.py index 814c92503..ff3200cd7 100644 --- a/mellea/backends/tools.py +++ b/mellea/backends/tools.py @@ -76,7 +76,7 @@ def parameter_remapper(*args, **kwargs): except ImportError as e: raise ImportError( f"It appears you are attempting to utilize a langchain tool '{type(tool)}'. " - "Please install langchain core: uv pip install langchain-core" + "Please install mellea with tools support: pip install 'mellea[tools]'" ) from e @classmethod @@ -131,7 +131,7 @@ def tool_call(*args, **kwargs): except ImportError as e: raise ImportError( f"It appears you are attempting to utilize a smolagents tool '{type(tool)}'. " - "Please install mellea with smolagents support: uv pip install 'mellea[smolagents]'" + "Please install mellea with tools support: pip install 'mellea[tools]'" ) from e @classmethod diff --git a/mellea/stdlib/tools/interpreter.py b/mellea/stdlib/tools/interpreter.py index d7bc40e80..0660f02f2 100644 --- a/mellea/stdlib/tools/interpreter.py +++ b/mellea/stdlib/tools/interpreter.py @@ -203,7 +203,7 @@ def execute(self, code: str, timeout: int) -> ExecutionResult: stdout=None, stderr=None, skipped=True, - skip_message="llm-sandbox not installed. Install with: uv add 'llm-sandbox[docker]'", + skip_message="llm-sandbox not installed. Install with: pip install 'mellea[sandbox]'", ) try: diff --git a/pyproject.toml b/pyproject.toml index 218c16e56..492896339 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,33 +29,23 @@ dependencies = [ "pydantic", "openai", "jinja2", - "json5", "ollama>=0.5.1", - "ansicolors", "requests>=2.32.3", - "uvicorn", - "fastapi", - "types-requests", - "types-tqdm", "typer", "click<8.2.0", # Newer versions will cause errors with --help in typer CLIs. "mistletoe>=1.4.0", - "huggingface-hub>=0.33.4", "pillow", # Needed for Intrinsics (HF and OpenAI Backends). "math_verify", # Needed for Majority Voting Sampling Strategies. "rouge_score", # Needed for Majority Voting Sampling Strategies. - "llm-sandbox[docker]>=0.3.23", ] [project.scripts] m = "cli.m:cli" [project.optional-dependencies] -# Use these like: -# uv pip install "mellea[hf]" -# uv pip install -e ".[hf, watsonx]" -# if you want to install all dependencies, use uv sync --all-extras +# Install optional features: pip install "mellea[all]" or uv sync --all-extras +# Backend integrations hf = [ "accelerate>=1.9.0", "datasets>=4.0.0", @@ -64,11 +54,12 @@ hf = [ "transformers>=4.53.2,<5", "trl==0.19.1", "xgrammar", # Necessary for granite_common intrinsics. + "huggingface-hub>=0.33.4", ] vllm = [ "vllm>=0.13.0; sys_platform != 'darwin'", - "numpy<=2.2", # ImportError: Numba needs NumPy 2.2 or less. Got NumPy 2.4. + "numpy<=2.2", # ImportError: Numba needs NumPy 2.2 or less. Got NumPy 2.4. ] litellm = [ @@ -80,14 +71,10 @@ watsonx = [ "ibm-watsonx-ai>=1.3.31", ] -docling = [ - "docling>=2.45.0", -] - +# Feature integrations tools = [ "smolagents>=1.0.0", - "langchain-community>=0.3.0", - "ddgs>=9.0.0", # Required by DuckDuckGoSearchResults in langchain-community + "langchain-core>=1.2.7", ] telemetry = [ @@ -97,31 +84,79 @@ telemetry = [ "opentelemetry-distro>=0.59b0", ] -all = ["mellea[watsonx,docling,hf,vllm,litellm,tools,telemetry]"] +docling = [ + "docling>=2.45.0", +] + +granite_retriever = [ + "sentence-transformers", + "pyarrow", + "elasticsearch>=8.0.0,<9.0.0", +] + +# Infrastructure +server = [ + "uvicorn", + "fastapi", +] + +sandbox = [ + "llm-sandbox[docker]>=0.3.23", +] + +backends = ["mellea[watsonx,hf,vllm,litellm]"] + +all = ["mellea[backends,docling,tools,telemetry,server,sandbox,granite_retriever]"] [dependency-groups] -# Use these like: -# pip install -e . --group dev -# pip install mellea --group dev -dev = [ +# Development groups: uv sync --all-groups + +# Code quality +lint = [ + "ruff>=0.11.6", "isort>=6.0.0", "pre-commit>=4.2.0", "pylint>=3.3.4", - "ruff>=0.11.6", - "pdm>=2.24.0", +] + +test = [ "pytest", "pytest-asyncio", "pytest-cov>=6.0.0", "pytest-timeout", # For test suite timeout configuration "psutil", # For test infrastructure: RAM detection in conftest.py + "nbmake>=1.5.5", # Notebook testing + "sentencepiece==0.2.1", # Necessary for test_huggingface_tools test because of Mistral model + "jsonschema", + # Example-only dependencies (run via pytest) + "langchain-community>=0.3.0", + "ddgs>=9.0.0", # Required by DuckDuckGoSearchResults in langchain-community +] + +typecheck = [ "mypy>=1.17.0", + "types-requests", + "types-tqdm", +] + +build = [ + "pdm>=2.24.0", +] + +release = [ "python-semantic-release~=7.32", - "nbmake>=1.5.5", - "langchain-core>=1.2.7", # Necessary for mypy and some tool tests - "sentencepiece==0.2.1", # Necessary for test_huggingface_tools test because of Mistral model - "jsonschema", ] +# Convenience: includes all dev dependencies (used by default with uv run) +dev = [ + {include-group = "lint"}, + {include-group = "test"}, + {include-group = "typecheck"}, + {include-group = "build"}, + {include-group = "release"}, +] + +# Documentation and notebooks notebook = [ "ipykernel>=6.29.5", "ipython>=8.36.0", @@ -134,13 +169,6 @@ docs = [ "sphinx_mdinclude", ] -# Necessary for granite retriever. -granite_common_retriever = [ - "sentence-transformers", - "pyarrow", - "elasticsearch>=8.0.0,<9.0.0" -] - # ----------------------------- # Ruff - Linting and Formatting # ----------------------------- diff --git a/uv.lock b/uv.lock index d06c61b1a..f66f2df1a 100644 --- a/uv.lock +++ b/uv.lock @@ -260,15 +260,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] -[[package]] -name = "ansicolors" -version = "1.1.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/31/7faed52088732704523c259e24c26ce6f2f33fbeff2ff59274560c27628e/ansicolors-1.1.8.zip", hash = "sha256:99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0", size = 23027, upload-time = "2017-06-02T21:22:10.729Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/18/a56e2fe47b259bb52201093a3a9d4a32014f9d85071ad07e9d60600890ca/ansicolors-1.1.8-py2.py3-none-any.whl", hash = "sha256:00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187", size = 13847, upload-time = "2017-06-02T21:22:12.67Z" }, -] - [[package]] name = "anthropic" version = "0.79.0" @@ -755,6 +746,11 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/84/85/57c314a6b35336efbbdc13e5fc9ae13f6b60a0647cfa7c1221178ac6d8ae/brotlicffi-1.2.0.0.tar.gz", hash = "sha256:34345d8d1f9d534fcac2249e57a4c3c8801a33c9942ff9f8574f67a175e17adb", size = 476682, upload-time = "2025-11-21T18:17:57.334Z" } wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/87/ba6298c3d7f8d66ce80d7a487f2a487ebae74a79c6049c7c2990178ce529/brotlicffi-1.2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b13fb476a96f02e477a506423cb5e7bc21e0e3ac4c060c20ba31c44056e38c68", size = 433038, upload-time = "2026-03-05T17:57:37.96Z" }, + { url = "https://files.pythonhosted.org/packages/00/49/16c7a77d1cae0519953ef0389a11a9c2e2e62e87d04f8e7afbae40124255/brotlicffi-1.2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:17db36fb581f7b951635cd6849553a95c6f2f53c1a707817d06eae5aeff5f6af", size = 1541124, upload-time = "2026-03-05T17:57:39.488Z" }, + { url = "https://files.pythonhosted.org/packages/e8/17/fab2c36ea820e2288f8c1bf562de1b6cd9f30e28d66f1ce2929a4baff6de/brotlicffi-1.2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:40190192790489a7b054312163d0ce82b07d1b6e706251036898ce1684ef12e9", size = 1541983, upload-time = "2026-03-05T17:57:41.061Z" }, + { url = "https://files.pythonhosted.org/packages/78/c9/849a669b3b3bb8ac96005cdef04df4db658c33443a7fc704a6d4a2f07a56/brotlicffi-1.2.0.0-cp314-cp314t-win32.whl", hash = "sha256:a8079e8ecc32ecef728036a1d9b7105991ce6a5385cf51ee8c02297c90fb08c2", size = 349046, upload-time = "2026-03-05T17:57:42.76Z" }, + { url = "https://files.pythonhosted.org/packages/a4/25/09c0fd21cfc451fa38ad538f4d18d8be566746531f7f27143f63f8c45a9f/brotlicffi-1.2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:ca90c4266704ca0a94de8f101b4ec029624273380574e4cf19301acfa46c61a0", size = 385653, upload-time = "2026-03-05T17:57:44.224Z" }, { url = "https://files.pythonhosted.org/packages/e4/df/a72b284d8c7bef0ed5756b41c2eb7d0219a1dd6ac6762f1c7bdbc31ef3af/brotlicffi-1.2.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:9458d08a7ccde8e3c0afedbf2c70a8263227a68dea5ab13590593f4c0a4fd5f4", size = 432340, upload-time = "2025-11-21T18:17:42.277Z" }, { url = "https://files.pythonhosted.org/packages/74/2b/cc55a2d1d6fb4f5d458fba44a3d3f91fb4320aa14145799fd3a996af0686/brotlicffi-1.2.0.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:84e3d0020cf1bd8b8131f4a07819edee9f283721566fe044a20ec792ca8fd8b7", size = 1534002, upload-time = "2025-11-21T18:17:43.746Z" }, { url = "https://files.pythonhosted.org/packages/e4/9c/d51486bf366fc7d6735f0e46b5b96ca58dc005b250263525a1eea3cd5d21/brotlicffi-1.2.0.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:33cfb408d0cff64cd50bef268c0fed397c46fbb53944aa37264148614a62e990", size = 1536547, upload-time = "2025-11-21T18:17:45.729Z" }, @@ -4029,13 +4025,8 @@ name = "mellea" version = "0.3.2" source = { editable = "." } dependencies = [ - { name = "ansicolors" }, { name = "click" }, - { name = "fastapi" }, - { name = "huggingface-hub" }, { name = "jinja2" }, - { name = "json5" }, - { name = "llm-sandbox", extra = ["docker"] }, { name = "math-verify" }, { name = "mistletoe" }, { name = "ollama" }, @@ -4045,9 +4036,6 @@ dependencies = [ { name = "requests" }, { name = "rouge-score" }, { name = "typer" }, - { name = "types-requests" }, - { name = "types-tqdm" }, - { name = "uvicorn" }, ] [package.optional-dependencies] @@ -4055,14 +4043,17 @@ all = [ { name = "accelerate" }, { name = "boto3" }, { name = "datasets" }, - { name = "ddgs" }, { name = "docling" }, + { name = "elasticsearch" }, + { name = "fastapi" }, + { name = "huggingface-hub" }, { name = "ibm-watsonx-ai", version = "1.3.42", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "ibm-watsonx-ai", version = "1.4.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, - { name = "langchain-community" }, + { name = "langchain-core" }, { name = "litellm" }, { name = "llguidance", version = "0.7.30", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "llguidance", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, + { name = "llm-sandbox", extra = ["docker"] }, { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'darwin'" }, { name = "numpy", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or sys_platform != 'darwin'" }, { name = "opentelemetry-api" }, @@ -4070,19 +4061,47 @@ all = [ { name = "opentelemetry-exporter-otlp" }, { name = "opentelemetry-sdk" }, { name = "peft" }, + { name = "pyarrow" }, + { name = "sentence-transformers" }, { name = "smolagents" }, { name = "transformers", version = "4.53.3", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "transformers", version = "4.57.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, { name = "trl" }, + { name = "uvicorn" }, + { name = "vllm", marker = "sys_platform != 'darwin'" }, + { name = "xgrammar" }, +] +backends = [ + { name = "accelerate" }, + { name = "boto3" }, + { name = "datasets" }, + { name = "huggingface-hub" }, + { name = "ibm-watsonx-ai", version = "1.3.42", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ibm-watsonx-ai", version = "1.4.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "litellm" }, + { name = "llguidance", version = "0.7.30", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "llguidance", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, + { name = "numpy", version = "1.26.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.13' and sys_platform == 'darwin'" }, + { name = "numpy", version = "2.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.13' or sys_platform != 'darwin'" }, + { name = "peft" }, + { name = "transformers", version = "4.53.3", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, + { name = "transformers", version = "4.57.6", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, + { name = "trl" }, { name = "vllm", marker = "sys_platform != 'darwin'" }, { name = "xgrammar" }, ] docling = [ { name = "docling" }, ] +granite-retriever = [ + { name = "elasticsearch" }, + { name = "pyarrow" }, + { name = "sentence-transformers" }, +] hf = [ { name = "accelerate" }, { name = "datasets" }, + { name = "huggingface-hub" }, { name = "llguidance", version = "0.7.30", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform == 'darwin'" }, { name = "llguidance", version = "1.3.0", source = { registry = "https://pypi.org/simple" }, marker = "sys_platform != 'darwin'" }, { name = "peft" }, @@ -4095,6 +4114,13 @@ litellm = [ { name = "boto3" }, { name = "litellm" }, ] +sandbox = [ + { name = "llm-sandbox", extra = ["docker"] }, +] +server = [ + { name = "fastapi" }, + { name = "uvicorn" }, +] telemetry = [ { name = "opentelemetry-api" }, { name = "opentelemetry-distro" }, @@ -4102,8 +4128,7 @@ telemetry = [ { name = "opentelemetry-sdk" }, ] tools = [ - { name = "ddgs" }, - { name = "langchain-community" }, + { name = "langchain-core" }, { name = "smolagents" }, ] vllm = [ @@ -4117,10 +4142,14 @@ watsonx = [ ] [package.dev-dependencies] +build = [ + { name = "pdm" }, +] dev = [ + { name = "ddgs" }, { name = "isort" }, { name = "jsonschema" }, - { name = "langchain-core" }, + { name = "langchain-community" }, { name = "mypy" }, { name = "nbmake" }, { name = "pdm" }, @@ -4134,6 +4163,8 @@ dev = [ { name = "python-semantic-release" }, { name = "ruff" }, { name = "sentencepiece" }, + { name = "types-requests" }, + { name = "types-tqdm" }, ] docs = [ { name = "sphinx-autodoc-typehints", version = "3.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, @@ -4141,10 +4172,11 @@ docs = [ { name = "sphinx-mdinclude" }, { name = "sphinx-rtd-theme" }, ] -granite-common-retriever = [ - { name = "elasticsearch" }, - { name = "pyarrow" }, - { name = "sentence-transformers" }, +lint = [ + { name = "isort" }, + { name = "pre-commit" }, + { name = "pylint" }, + { name = "ruff" }, ] notebook = [ { name = "ipykernel" }, @@ -4152,27 +4184,46 @@ notebook = [ { name = "ipython", version = "9.7.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "jupyter" }, ] +release = [ + { name = "python-semantic-release" }, +] +test = [ + { name = "ddgs" }, + { name = "jsonschema" }, + { name = "langchain-community" }, + { name = "nbmake" }, + { name = "psutil" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, + { name = "pytest-timeout" }, + { name = "sentencepiece" }, +] +typecheck = [ + { name = "mypy" }, + { name = "types-requests" }, + { name = "types-tqdm" }, +] [package.metadata] requires-dist = [ { name = "accelerate", marker = "extra == 'hf'", specifier = ">=1.9.0" }, - { name = "ansicolors" }, { name = "boto3", marker = "extra == 'litellm'" }, { name = "click", specifier = "<8.2.0" }, { name = "datasets", marker = "extra == 'hf'", specifier = ">=4.0.0" }, - { name = "ddgs", marker = "extra == 'tools'", specifier = ">=9.0.0" }, { name = "docling", marker = "extra == 'docling'", specifier = ">=2.45.0" }, - { name = "fastapi" }, - { name = "huggingface-hub", specifier = ">=0.33.4" }, + { name = "elasticsearch", marker = "extra == 'granite-retriever'", specifier = ">=8.0.0,<9.0.0" }, + { name = "fastapi", marker = "extra == 'server'" }, + { name = "huggingface-hub", marker = "extra == 'hf'", specifier = ">=0.33.4" }, { name = "ibm-watsonx-ai", marker = "extra == 'watsonx'", specifier = ">=1.3.31" }, { name = "jinja2" }, - { name = "json5" }, - { name = "langchain-community", marker = "extra == 'tools'", specifier = ">=0.3.0" }, + { name = "langchain-core", marker = "extra == 'tools'", specifier = ">=1.2.7" }, { name = "litellm", marker = "extra == 'litellm'", specifier = ">=1.76" }, { name = "llguidance", marker = "extra == 'hf'" }, - { name = "llm-sandbox", extras = ["docker"], specifier = ">=0.3.23" }, + { name = "llm-sandbox", extras = ["docker"], marker = "extra == 'sandbox'", specifier = ">=0.3.23" }, { name = "math-verify" }, - { name = "mellea", extras = ["watsonx", "docling", "hf", "vllm", "litellm", "tools", "telemetry"], marker = "extra == 'all'" }, + { name = "mellea", extras = ["backends", "docling", "tools", "telemetry", "server", "sandbox", "granite-retriever"], marker = "extra == 'all'" }, + { name = "mellea", extras = ["watsonx", "hf", "vllm", "litellm"], marker = "extra == 'backends'" }, { name = "mistletoe", specifier = ">=1.4.0" }, { name = "numpy", marker = "extra == 'vllm'", specifier = "<=2.2" }, { name = "ollama", specifier = ">=0.5.1" }, @@ -4183,26 +4234,28 @@ requires-dist = [ { name = "opentelemetry-sdk", marker = "extra == 'telemetry'", specifier = ">=1.20.0" }, { name = "peft", marker = "extra == 'hf'", specifier = ">=0.18.1" }, { name = "pillow" }, + { name = "pyarrow", marker = "extra == 'granite-retriever'" }, { name = "pydantic" }, { name = "requests", specifier = ">=2.32.3" }, { name = "rouge-score" }, + { name = "sentence-transformers", marker = "extra == 'granite-retriever'" }, { name = "smolagents", marker = "extra == 'tools'", specifier = ">=1.0.0" }, { name = "transformers", marker = "extra == 'hf'", specifier = ">=4.53.2,<5" }, { name = "trl", marker = "extra == 'hf'", specifier = "==0.19.1" }, { name = "typer" }, - { name = "types-requests" }, - { name = "types-tqdm" }, - { name = "uvicorn" }, + { name = "uvicorn", marker = "extra == 'server'" }, { name = "vllm", marker = "sys_platform != 'darwin' and extra == 'vllm'", specifier = ">=0.13.0" }, { name = "xgrammar", marker = "extra == 'hf'" }, ] -provides-extras = ["hf", "vllm", "litellm", "watsonx", "docling", "tools", "telemetry", "all"] +provides-extras = ["hf", "vllm", "litellm", "watsonx", "tools", "telemetry", "docling", "granite-retriever", "server", "sandbox", "backends", "all"] [package.metadata.requires-dev] +build = [{ name = "pdm", specifier = ">=2.24.0" }] dev = [ + { name = "ddgs", specifier = ">=9.0.0" }, { name = "isort", specifier = ">=6.0.0" }, { name = "jsonschema" }, - { name = "langchain-core", specifier = ">=1.2.7" }, + { name = "langchain-community", specifier = ">=0.3.0" }, { name = "mypy", specifier = ">=1.17.0" }, { name = "nbmake", specifier = ">=1.5.5" }, { name = "pdm", specifier = ">=2.24.0" }, @@ -4216,22 +4269,43 @@ dev = [ { name = "python-semantic-release", specifier = "~=7.32" }, { name = "ruff", specifier = ">=0.11.6" }, { name = "sentencepiece", specifier = "==0.2.1" }, + { name = "types-requests" }, + { name = "types-tqdm" }, ] docs = [ { name = "sphinx-autodoc-typehints" }, { name = "sphinx-mdinclude" }, { name = "sphinx-rtd-theme" }, ] -granite-common-retriever = [ - { name = "elasticsearch", specifier = ">=8.0.0,<9.0.0" }, - { name = "pyarrow" }, - { name = "sentence-transformers" }, +lint = [ + { name = "isort", specifier = ">=6.0.0" }, + { name = "pre-commit", specifier = ">=4.2.0" }, + { name = "pylint", specifier = ">=3.3.4" }, + { name = "ruff", specifier = ">=0.11.6" }, ] notebook = [ { name = "ipykernel", specifier = ">=6.29.5" }, { name = "ipython", specifier = ">=8.36.0" }, { name = "jupyter", specifier = ">=1.1.1" }, ] +release = [{ name = "python-semantic-release", specifier = "~=7.32" }] +test = [ + { name = "ddgs", specifier = ">=9.0.0" }, + { name = "jsonschema" }, + { name = "langchain-community", specifier = ">=0.3.0" }, + { name = "nbmake", specifier = ">=1.5.5" }, + { name = "psutil" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov", specifier = ">=6.0.0" }, + { name = "pytest-timeout" }, + { name = "sentencepiece", specifier = "==0.2.1" }, +] +typecheck = [ + { name = "mypy", specifier = ">=1.17.0" }, + { name = "types-requests" }, + { name = "types-tqdm" }, +] [[package]] name = "mistletoe"