From 5d76733c412de019596b2b93018101ab5e4059d8 Mon Sep 17 00:00:00 2001 From: Artur Shiriev Date: Sun, 20 Sep 2026 21:01:13 +0300 Subject: [PATCH] ci: resolve the declared dependency floors on every matrix entry --- .github/workflows/_checks.yml | 43 +++++++++++++++++++++++++++++++++++ pyproject.toml | 7 +++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/.github/workflows/_checks.yml b/.github/workflows/_checks.yml index 25a705f..569dde6 100644 --- a/.github/workflows/_checks.yml +++ b/.github/workflows/_checks.yml @@ -54,6 +54,49 @@ jobs: PYTHONUNBUFFERED: 1 REDIS_URL: redis://127.0.0.1:6379/0 + floors: + # Every other job resolves newest, so the declared floors are a claim nothing installs. + # This one resolves the bottom of each range, on every matrix entry: wheel coverage is + # per interpreter, so two interpreters resolving the same versions can still disagree + # on whether those versions install. + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: + - "3.10" + - "3.11" + - "3.12" + - "3.13" + - "3.14" + services: + redis: + image: redis:8 + ports: + - 6379:6379 + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + steps: + - uses: actions/checkout@v6 + - uses: astral-sh/setup-uv@v8.2.0 + with: + enable-cache: true + cache-dependency-glob: "**/pyproject.toml" + - run: uv python install ${{ matrix.python-version }} + - run: uv python pin ${{ matrix.python-version }} + # --no-build so a floor with no wheel for this interpreter fails here instead of + # quietly compiling its sdist; --no-install-project because that flag would refuse to + # build this project too, and the tests import it from the checkout. + - run: uv sync --all-extras --no-install-project --resolution lowest-direct --no-build + - run: uv run --no-sync pytest + env: + PYTHONDONTWRITEBYTECODE: 1 + PYTHONUNBUFFERED: 1 + REDIS_URL: redis://127.0.0.1:6379/0 + links: runs-on: ubuntu-latest steps: diff --git a/pyproject.toml b/pyproject.toml index 6026208..7e26f05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,12 @@ Issues = "https://github.com/modern-python/modern-di-arq/issues" Changelog = "https://github.com/modern-python/modern-di-arq/releases" [dependency-groups] -dev = ["pytest", "pytest-cov", "pytest-asyncio"] +# Floored so `uv sync --resolution lowest-direct` resolves a usable harness, not each name's first release. +dev = [ + "pytest>=8", + "pytest-cov>=5", + "pytest-asyncio>=0.24", +] lint = ["ty", "ruff", "eof-fixer", "typing-extensions"] [build-system]