name: build on: [push, pull_request] jobs: test: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} timeout-minutes: 30 strategy: fail-fast: false matrix: include: - name: 'check' python: '3.11' command: 'uv run ruff check . && uv run ruff format --check .' os: 'ubuntu-latest' - name: 'docs' python: '3.11' command: 'uv run --group docs sphinx-build -b html docs dist/docs && uv run --group docs sphinx-build -b linkcheck docs dist/docs' os: 'ubuntu-latest' - name: 'py311 (ubuntu)' python: '3.11' command: 'uv run pytest' os: 'ubuntu-latest' - name: 'pypy311 (ubuntu)' python: 'pypy-3.11' command: 'uv run pytest' os: 'ubuntu-latest' - name: 'py312 (ubuntu)' python: '3.12' command: 'uv run pytest' os: 'ubuntu-latest' - name: 'py313 (ubuntu)' python: '3.13' command: 'uv run pytest' os: 'ubuntu-latest' - name: 'py314 (ubuntu)' python: '3.14' command: 'uv run pytest' os: 'ubuntu-latest' steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 with: fetch-depth: 0 - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 with: python-version: ${{ matrix.python }} - name: install graphviz system package run: sudo apt-get update && sudo apt-get install -y graphviz - name: install dependencies run: uv sync --frozen --all-groups - name: ${{ matrix.name }} run: ${{ matrix.command }}