chore(ci): run the suite on Python 3.11 and 3.12 #8038
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: Test & Lint Python | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| jobs: | |
| ruff: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| - name: Set up Python | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version: "3.14" | |
| - name: Run ruff check | |
| run: uvx ruff@0.15.0 check src tests | |
| pytest: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| python-version: ["3.13", "3.14"] | |
| # pyproject declares requires-python = ">=3.11" and security.yml audits | |
| # 3.11-3.14, but the suite itself only ran on the two newest | |
| # interpreters — so the older half of the supported range was shipped | |
| # untested. Exercise it on Linux rather than tripling the matrix across | |
| # all three runners for interpreters whose OS-specific paths are | |
| # already covered by 3.13/3.14. | |
| include: | |
| - os: ubuntu-latest | |
| python-version: "3.11" | |
| - os: ubuntu-latest | |
| python-version: "3.12" | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: uv sync --extra test | |
| # On windows-latest, bash tests auto-skip unless Git-for-Windows | |
| # bash (MSYS2/MINGW) is detected. The WSL launcher is rejected | |
| # because it cannot handle native Windows paths in test fixtures. | |
| # See tests/conftest.py::_has_working_bash() for details. | |
| - name: Run tests | |
| run: uv run pytest |