mirror of
https://github.com/meta-llama/llama-stack.git
synced 2025-06-27 18:50:41 +00:00
chore: use dependency-groups for dev (#2287)
# What does this PR do? The previous `[project.optional-dependencies]` was misrepresenting what the packages were. They were NOT optional dependencies to the project but development dependencies. Unlike optional dependencies, development dependencies are local-only and will not be included in the project requirements when published to PyPI or other indexes. As such, development dependencies are not included in the [project] table. Additionally, the dev group is synced by default. Source: https://docs.astral.sh/uv/concepts/projects/dependencies/#development-dependencies Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
parent
484abe3116
commit
4f3f28f718
6 changed files with 96 additions and 79 deletions
2
.github/actions/setup-runner/action.yml
vendored
2
.github/actions/setup-runner/action.yml
vendored
|
@ -13,7 +13,7 @@ runs:
|
|||
- name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
uv sync --all-extras
|
||||
uv sync --all-groups
|
||||
uv pip install ollama faiss-cpu
|
||||
# always test against the latest version of the client
|
||||
# TODO: this is not necessarily a good idea. we need to test against both published and latest
|
||||
|
|
|
@ -61,6 +61,7 @@ repos:
|
|||
"--frozen",
|
||||
"--no-hashes",
|
||||
"--no-emit-project",
|
||||
"--no-default-groups",
|
||||
"--output-file=requirements.txt"
|
||||
]
|
||||
|
||||
|
@ -89,7 +90,7 @@ repos:
|
|||
name: Distribution Template Codegen
|
||||
additional_dependencies:
|
||||
- uv==0.7.8
|
||||
entry: uv run --extra codegen ./scripts/distro_codegen.py
|
||||
entry: uv run --group codegen ./scripts/distro_codegen.py
|
||||
language: python
|
||||
pass_filenames: false
|
||||
require_serial: true
|
||||
|
@ -98,7 +99,7 @@ repos:
|
|||
name: API Spec Codegen
|
||||
additional_dependencies:
|
||||
- uv==0.7.8
|
||||
entry: sh -c 'uv run --with ".[dev]" ./docs/openapi_generator/run_openapi_generator.sh > /dev/null'
|
||||
entry: sh -c 'uv run ./docs/openapi_generator/run_openapi_generator.sh > /dev/null'
|
||||
language: python
|
||||
pass_filenames: false
|
||||
require_serial: true
|
||||
|
|
|
@ -42,6 +42,14 @@ dependencies = [
|
|||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
ui = [
|
||||
"streamlit",
|
||||
"pandas",
|
||||
"llama-stack-client>=0.2.8",
|
||||
"streamlit-option-menu",
|
||||
]
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"pytest",
|
||||
"pytest-timeout",
|
||||
|
@ -112,12 +120,6 @@ docs = [
|
|||
"sphinxcontrib.openapi",
|
||||
]
|
||||
codegen = ["rich", "pydantic", "jinja2>=3.1.6"]
|
||||
ui = [
|
||||
"streamlit",
|
||||
"pandas",
|
||||
"llama-stack-client>=0.2.8",
|
||||
"streamlit-option-menu",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
Homepage = "https://github.com/meta-llama/llama-stack"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# This file was autogenerated by uv via the following command:
|
||||
# uv export --frozen --no-hashes --no-emit-project --output-file=requirements.txt
|
||||
# uv export --frozen --no-hashes --no-emit-project --no-default-groups --output-file=requirements.txt
|
||||
annotated-types==0.7.0
|
||||
# via pydantic
|
||||
anyio==4.8.0
|
||||
|
|
|
@ -10,10 +10,10 @@ PYTHON_VERSION=${PYTHON_VERSION:-3.10}
|
|||
|
||||
command -v uv >/dev/null 2>&1 || { echo >&2 "uv is required but it's not installed. Exiting."; exit 1; }
|
||||
|
||||
uv python find $PYTHON_VERSION
|
||||
uv python find "$PYTHON_VERSION"
|
||||
FOUND_PYTHON=$?
|
||||
if [ $FOUND_PYTHON -ne 0 ]; then
|
||||
uv python install $PYTHON_VERSION
|
||||
uv python install "$PYTHON_VERSION"
|
||||
fi
|
||||
|
||||
uv run --python $PYTHON_VERSION --with-editable . --with-editable ".[dev]" --with-editable ".[unit]" pytest --asyncio-mode=auto -s -v tests/unit/ $@
|
||||
uv run --python "$PYTHON_VERSION" --with-editable . --group unit pytest --asyncio-mode=auto -s -v tests/unit/ $@
|
||||
|
|
146
uv.lock
generated
146
uv.lock
generated
|
@ -1477,6 +1477,14 @@ dependencies = [
|
|||
]
|
||||
|
||||
[package.optional-dependencies]
|
||||
ui = [
|
||||
{ name = "llama-stack-client" },
|
||||
{ name = "pandas" },
|
||||
{ name = "streamlit" },
|
||||
{ name = "streamlit-option-menu" },
|
||||
]
|
||||
|
||||
[package.dev-dependencies]
|
||||
codegen = [
|
||||
{ name = "jinja2" },
|
||||
{ name = "pydantic" },
|
||||
|
@ -1533,12 +1541,6 @@ test = [
|
|||
{ name = "torchvision", version = "0.21.0+cpu", source = { registry = "https://download.pytorch.org/whl/cpu" }, marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux')" },
|
||||
{ name = "transformers" },
|
||||
]
|
||||
ui = [
|
||||
{ name = "llama-stack-client" },
|
||||
{ name = "pandas" },
|
||||
{ name = "streamlit" },
|
||||
{ name = "streamlit-option-menu" },
|
||||
]
|
||||
unit = [
|
||||
{ name = "aiohttp" },
|
||||
{ name = "aiosqlite" },
|
||||
|
@ -1555,89 +1557,101 @@ unit = [
|
|||
|
||||
[package.metadata]
|
||||
requires-dist = [
|
||||
{ name = "aiohttp", marker = "extra == 'test'" },
|
||||
{ name = "aiohttp", marker = "extra == 'unit'" },
|
||||
{ name = "aiosqlite", marker = "extra == 'test'" },
|
||||
{ name = "aiosqlite", marker = "extra == 'unit'" },
|
||||
{ name = "autoevals", marker = "extra == 'test'" },
|
||||
{ name = "black", marker = "extra == 'dev'" },
|
||||
{ name = "blobfile", marker = "extra == 'unit'" },
|
||||
{ name = "chardet", marker = "extra == 'test'" },
|
||||
{ name = "chardet", marker = "extra == 'unit'" },
|
||||
{ name = "datasets", marker = "extra == 'test'" },
|
||||
{ name = "fastapi", marker = "extra == 'dev'" },
|
||||
{ name = "fire" },
|
||||
{ name = "h11", specifier = ">=0.16.0" },
|
||||
{ name = "httpx" },
|
||||
{ name = "huggingface-hub" },
|
||||
{ name = "jinja2", specifier = ">=3.1.6" },
|
||||
{ name = "jinja2", marker = "extra == 'codegen'", specifier = ">=3.1.6" },
|
||||
{ name = "jsonschema" },
|
||||
{ name = "linkify", marker = "extra == 'docs'" },
|
||||
{ name = "llama-stack-client", specifier = ">=0.2.8" },
|
||||
{ name = "llama-stack-client", marker = "extra == 'ui'", specifier = ">=0.2.8" },
|
||||
{ name = "mcp", marker = "extra == 'test'" },
|
||||
{ name = "mcp", marker = "extra == 'unit'" },
|
||||
{ name = "myst-parser", marker = "extra == 'docs'" },
|
||||
{ name = "nbval", marker = "extra == 'dev'" },
|
||||
{ name = "openai", specifier = ">=1.66" },
|
||||
{ name = "openai", marker = "extra == 'test'" },
|
||||
{ name = "openai", marker = "extra == 'unit'" },
|
||||
{ name = "opentelemetry-exporter-otlp-proto-http", marker = "extra == 'test'" },
|
||||
{ name = "opentelemetry-exporter-otlp-proto-http", marker = "extra == 'unit'" },
|
||||
{ name = "opentelemetry-sdk", marker = "extra == 'test'" },
|
||||
{ name = "pandas", marker = "extra == 'ui'" },
|
||||
{ name = "pillow" },
|
||||
{ name = "pre-commit", marker = "extra == 'dev'" },
|
||||
{ name = "prompt-toolkit" },
|
||||
{ name = "pydantic", specifier = ">=2" },
|
||||
{ name = "pydantic", marker = "extra == 'codegen'" },
|
||||
{ name = "pypdf", marker = "extra == 'test'" },
|
||||
{ name = "pypdf", marker = "extra == 'unit'" },
|
||||
{ name = "pytest", marker = "extra == 'dev'" },
|
||||
{ name = "pytest-asyncio", marker = "extra == 'dev'" },
|
||||
{ name = "pytest-cov", marker = "extra == 'dev'" },
|
||||
{ name = "pytest-html", marker = "extra == 'dev'" },
|
||||
{ name = "pytest-json-report", marker = "extra == 'dev'" },
|
||||
{ name = "pytest-timeout", marker = "extra == 'dev'" },
|
||||
{ name = "python-dotenv" },
|
||||
{ name = "python-jose" },
|
||||
{ name = "qdrant-client", marker = "extra == 'unit'" },
|
||||
{ name = "requests" },
|
||||
{ name = "rich" },
|
||||
{ name = "rich", marker = "extra == 'codegen'" },
|
||||
{ name = "ruamel-yaml", marker = "extra == 'dev'" },
|
||||
{ name = "ruff", marker = "extra == 'dev'" },
|
||||
{ name = "setuptools" },
|
||||
{ name = "sphinx", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-autobuild", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-copybutton", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-design", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-rtd-dark-mode", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-rtd-theme", marker = "extra == 'docs'" },
|
||||
{ name = "sphinx-tabs", marker = "extra == 'docs'" },
|
||||
{ name = "sphinxcontrib-mermaid", marker = "extra == 'docs'" },
|
||||
{ name = "sphinxcontrib-openapi", marker = "extra == 'docs'" },
|
||||
{ name = "sphinxcontrib-redoc", marker = "extra == 'docs'" },
|
||||
{ name = "sphinxcontrib-video", marker = "extra == 'docs'" },
|
||||
{ name = "sqlalchemy", marker = "extra == 'test'" },
|
||||
{ name = "sqlalchemy", marker = "extra == 'unit'" },
|
||||
{ name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'test'", specifier = ">=2.0.41" },
|
||||
{ name = "sqlalchemy", extras = ["asyncio"], marker = "extra == 'unit'", specifier = ">=2.0.41" },
|
||||
{ name = "sqlite-vec", marker = "extra == 'unit'" },
|
||||
{ name = "streamlit", marker = "extra == 'ui'" },
|
||||
{ name = "streamlit-option-menu", marker = "extra == 'ui'" },
|
||||
{ name = "termcolor" },
|
||||
{ name = "tiktoken" },
|
||||
{ name = "tomli", marker = "extra == 'docs'" },
|
||||
{ name = "torch", marker = "extra == 'test'", specifier = ">=2.6.0", index = "https://download.pytorch.org/whl/cpu" },
|
||||
{ name = "torchvision", marker = "extra == 'test'", specifier = ">=0.21.0", index = "https://download.pytorch.org/whl/cpu" },
|
||||
{ name = "transformers", marker = "extra == 'test'" },
|
||||
{ name = "types-requests", marker = "extra == 'dev'" },
|
||||
{ name = "types-setuptools", marker = "extra == 'dev'" },
|
||||
{ name = "uvicorn", marker = "extra == 'dev'" },
|
||||
]
|
||||
provides-extras = ["dev", "unit", "test", "docs", "codegen", "ui"]
|
||||
provides-extras = ["ui"]
|
||||
|
||||
[package.metadata.requires-dev]
|
||||
codegen = [
|
||||
{ name = "jinja2", specifier = ">=3.1.6" },
|
||||
{ name = "pydantic" },
|
||||
{ name = "rich" },
|
||||
]
|
||||
dev = [
|
||||
{ name = "black" },
|
||||
{ name = "fastapi" },
|
||||
{ name = "nbval" },
|
||||
{ name = "pre-commit" },
|
||||
{ name = "pytest" },
|
||||
{ name = "pytest-asyncio" },
|
||||
{ name = "pytest-cov" },
|
||||
{ name = "pytest-html" },
|
||||
{ name = "pytest-json-report" },
|
||||
{ name = "pytest-timeout" },
|
||||
{ name = "ruamel-yaml" },
|
||||
{ name = "ruff" },
|
||||
{ name = "types-requests" },
|
||||
{ name = "types-setuptools" },
|
||||
{ name = "uvicorn" },
|
||||
]
|
||||
docs = [
|
||||
{ name = "linkify" },
|
||||
{ name = "myst-parser" },
|
||||
{ name = "sphinx" },
|
||||
{ name = "sphinx-autobuild" },
|
||||
{ name = "sphinx-copybutton" },
|
||||
{ name = "sphinx-design" },
|
||||
{ name = "sphinx-rtd-dark-mode" },
|
||||
{ name = "sphinx-rtd-theme" },
|
||||
{ name = "sphinx-tabs" },
|
||||
{ name = "sphinxcontrib-mermaid" },
|
||||
{ name = "sphinxcontrib-openapi" },
|
||||
{ name = "sphinxcontrib-redoc" },
|
||||
{ name = "sphinxcontrib-video" },
|
||||
{ name = "tomli" },
|
||||
]
|
||||
test = [
|
||||
{ name = "aiohttp" },
|
||||
{ name = "aiosqlite" },
|
||||
{ name = "autoevals" },
|
||||
{ name = "chardet" },
|
||||
{ name = "datasets" },
|
||||
{ name = "mcp" },
|
||||
{ name = "openai" },
|
||||
{ name = "opentelemetry-exporter-otlp-proto-http" },
|
||||
{ name = "opentelemetry-sdk" },
|
||||
{ name = "pypdf" },
|
||||
{ name = "sqlalchemy" },
|
||||
{ name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.41" },
|
||||
{ name = "torch", specifier = ">=2.6.0", index = "https://download.pytorch.org/whl/cpu" },
|
||||
{ name = "torchvision", specifier = ">=0.21.0", index = "https://download.pytorch.org/whl/cpu" },
|
||||
{ name = "transformers" },
|
||||
]
|
||||
unit = [
|
||||
{ name = "aiohttp" },
|
||||
{ name = "aiosqlite" },
|
||||
{ name = "blobfile" },
|
||||
{ name = "chardet" },
|
||||
{ name = "mcp" },
|
||||
{ name = "openai" },
|
||||
{ name = "opentelemetry-exporter-otlp-proto-http" },
|
||||
{ name = "pypdf" },
|
||||
{ name = "qdrant-client" },
|
||||
{ name = "sqlalchemy" },
|
||||
{ name = "sqlalchemy", extras = ["asyncio"], specifier = ">=2.0.41" },
|
||||
{ name = "sqlite-vec" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "llama-stack-client"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue