name: Continuous integration

concurrency:
  group: ${{ github.ref }}
  cancel-in-progress: true

on:
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        extras:
          - ""
          - "cli"
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
    steps:
      - uses: actions/checkout@v6
      - uses: astral-sh/setup-uv@v7
        with:
          python-version: ${{ matrix.python-version }}
      - name: pre-commit
        run: uv run pre-commit run --all-files
      - name: pytest
        run: uv run pytest
  min-dependencies:
    name: Minimum dependencies
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: astral-sh/setup-uv@v7
        with:
          python-version: "3.10"
      - name: pytest
        run: uv run --resolution lowest-direct pytest
      - name: pytest with all extras
        run: uv run --resolution lowest-direct --all-extras pytest
