Move build system from setuptools to uv, wire uv into CI/CD
CI / lint:ruff (push) Successful in 25s
CI / format:ruff (push) Successful in 14s
CI / typecheck:ty (push) Successful in 15s
CI / vulnerabilities:pip-audit (push) Successful in 17s
CI / test:pytest (push) Successful in 24s

Convert both pyproject.toml files to the uv_build backend and turn the
repo into a proper uv workspace (plotstyle moved to src layout, since
uv_build requires the module in its own subdirectory). Dev tooling
moves from an optional-dependencies extra to a dependency-group, and
plotstyle's matplotlib dependency is now its own rather than a
gallery "plotting" extra.

Gitea Actions workflows and the Dockerfile now use astral-sh/setup-uv,
uv sync, uv run, uv build, and uv publish throughout instead of pip,
build, and twine. Also fixes .dockerignore, which was excluding
uv.lock, deploy/, and README.md and would have broken even the
previous Dockerfile's COPY of deploy/entrypoint.sh.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 10:30:20 +02:00
parent 2020ac4883
commit 5109b6505c
17 changed files with 1081 additions and 757 deletions
+20 -25
View File
@@ -10,52 +10,48 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: astral-sh/setup-uv@v9.0.0
with:
python-version: "3.11"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]"
- run: ruff check gallery plotstyle tests
enable-cache: true
- run: uv sync --all-packages
- run: uv run ruff check gallery plotstyle tests
format:
name: format:ruff
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: astral-sh/setup-uv@v9.0.0
with:
python-version: "3.11"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]"
- run: ruff format --check gallery plotstyle tests
enable-cache: true
- run: uv sync --all-packages
- run: uv run ruff format --check gallery plotstyle tests
typecheck:
name: typecheck:ty
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: astral-sh/setup-uv@v9.0.0
with:
python-version: "3.11"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]"
- run: ty check gallery plotstyle
enable-cache: true
- run: uv sync --all-packages
- run: uv run ty check gallery plotstyle
vulnerabilities:
name: vulnerabilities:pip-audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: astral-sh/setup-uv@v9.0.0
with:
python-version: "3.11"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]"
- run: pip-audit --skip-editable
enable-cache: true
- run: uv sync --all-packages
- run: uv run pip-audit --skip-editable
test:
name: test:pytest
@@ -63,10 +59,9 @@ jobs:
needs: [lint, format, typecheck, vulnerabilities]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: astral-sh/setup-uv@v9.0.0
with:
python-version: "3.11"
cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]"
- run: python -m pytest tests/ -v
enable-cache: true
- run: uv sync --all-packages
- run: uv run pytest tests/ -v