name: CI on: workflow_dispatch: push: branches: - main pull_request: types: [opened, reopened, synchronize] permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: "3.10" - name: Install uv uses: astral-sh/setup-uv@v7 with: version: "0.11.7" enable-cache: true - name: Install dependencies run: uv sync --extra dev --locked --python 3.10 - name: Run pre-commit run: uv run pre-commit run --all-files unit-test: name: Unit test (${{ matrix.os }}, Python ${{ matrix.python-version }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - os: ubuntu-latest python-version: "3.10" - os: ubuntu-latest python-version: "3.11" - os: ubuntu-latest python-version: "3.12" - os: ubuntu-latest python-version: "3.13" - os: macos-latest python-version: "3.13" steps: - uses: actions/checkout@v6 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} - name: Install uv uses: astral-sh/setup-uv@v7 with: version: "0.11.7" enable-cache: true - name: Install dependencies run: uv sync --locked --python ${{ matrix.python-version }} - name: Run unit tests run: uv run python -m unittest discover -s tests -v