🔧 Replace rye with tox and add sphinx-needs version matrix #332
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci | |
| on: | |
| push: | |
| branches: [main] | |
| tags: | |
| - "v[0-9]+.[0-9]+.[0-9]+*" | |
| pull_request: | |
| types: [closed, labeled, reopened, unlabeled, synchronize, opened] | |
| concurrency: | |
| # For PRs, cancel in progress runs, if a new commit is pushed | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| # These permissions are needed to interact with GitHub's OIDC Token endpoint. | |
| permissions: | |
| id-token: write | |
| contents: read | |
| jobs: | |
| pre-commit: | |
| name: Pre-commit | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: ".python-version" | |
| - run: python -m pip install pre-commit pre-commit-uv | |
| # - uses: pre-commit/action@v3.0.1 # note we don't use this, since it calls ations/cache, which actually takes longer than without it | |
| - run: pre-commit run --all --show-diff-on-failure --color=always | |
| mypy: | |
| name: MyPy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: ".python-version" | |
| - run: python -m pip install tox tox-uv | |
| - run: tox -e mypy | |
| pytest: | |
| name: "Pytest: ${{ matrix.tox-env }} (${{ matrix.os }})" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # minimal versions | |
| - os: ubuntu-latest | |
| python: "3.12" | |
| tox-env: py312-sphinx7-needs5 | |
| # maximal versions | |
| - os: ubuntu-latest | |
| python: "3.14" | |
| tox-env: py314-sphinx8-needs8 | |
| # minimal version on Windows | |
| - os: windows-latest | |
| python: "3.14" | |
| tox-env: py312-sphinx7-needs5 | |
| # maximal versions on other OSes | |
| - os: ubuntu-24.04-arm | |
| python: "3.14" | |
| tox-env: py314-sphinx8-needs8 | |
| - os: windows-latest | |
| python: "3.14" | |
| tox-env: py314-sphinx8-needs8 | |
| - os: macos-latest | |
| python: "3.14" | |
| tox-env: py314-sphinx8-needs8 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "${{ matrix.python }}" | |
| allow-prereleases: true | |
| - run: python -m pip install tox tox-uv | |
| - run: tox -e "${{ matrix.tox-env }}" | |
| docs: | |
| name: Documentation build | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: ".python-version" | |
| - run: python -m pip install tox tox-uv | |
| - run: tox -e docs-clean | |
| all_good: | |
| # This job does nothing and is only used for the branch protection | |
| # see https://github.com/marketplace/actions/alls-green#why | |
| if: ${{ !cancelled() }} | |
| needs: | |
| - pre-commit | |
| - mypy | |
| - pytest | |
| - docs | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Decide whether the needed jobs succeeded or failed | |
| uses: re-actors/alls-green@release/v1 | |
| with: | |
| jobs: ${{ toJSON(needs) }} |