Skip to content
This repository was archived by the owner on Jul 5, 2026. It is now read-only.

Update to support Python 3.10–3.14 and to fully drop Python 3.9 across packaging, CI, tooling, and docs #284

Update to support Python 3.10–3.14 and to fully drop Python 3.9 across packaging, CI, tooling, and docs

Update to support Python 3.10–3.14 and to fully drop Python 3.9 across packaging, CI, tooling, and docs #284

Workflow file for this run

name: Run Python linters and tests
on:
pull_request:
paths:
- '**/*.py'
- 'poetry.lock'
- 'pyproject.toml'
- '.github/workflows/python-check.yml'
branches:
- master
- dev
- release/*
jobs:
lint:
name: Run Python linters
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
poetry-version: ["2.2.1"]
steps:
- name: "Checkout"
uses: actions/checkout@v6
- name: "Install Poetry ${{matrix.poetry-version}}"
run: pipx install poetry==${{matrix.poetry-version}}
- name: "Setup Python ${{matrix.python-version}}"
uses: actions/setup-python@v6
with:
python-version: ${{matrix.python-version}}
cache: 'poetry'
- name: "Install dependencies"
run: make install
- name: "Run flake8"
run: make flake
- name: "Run mypy"
run: make mypy
- name: "Run black lint"
run: make black-lint
- name: "Run Poetry check"
run: make poetry-check
test:
name: Run Python tests
runs-on: ${{matrix.os}}
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
poetry-version: ["2.2.1"]
browser: ["chromium", "firefox", "webkit"]
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
steps:
- name: "Checkout"
uses: actions/checkout@v6
- name: "Install Poetry ${{matrix.poetry-version}}"
run: pipx install poetry==${{matrix.poetry-version}}
- name: "Setup Python ${{matrix.python-version}}"
uses: actions/setup-python@v6
with:
python-version: ${{matrix.python-version}}
cache: "poetry"
- name: Install dependencies
run: make install
- name: "Install ${{matrix.browser}} dependencies"
run: make browser-install browser=${{matrix.browser}}
- name: "Run pytest"
run: make test browser=${{matrix.browser}}
- name: "Upload coverage reports to Codecov"
if: matrix.python-version == '3.14' && matrix.os == 'ubuntu-latest' && matrix.browser == 'chromium' && github.actor != 'dependabot[bot]'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}