# CI: lint + typecheck + unit tests on every branch / PR. # # Self-contained on purpose: python:3.14-trixie has git built in, so no # node/actions-checkout dependency; uv comes from PyPI (both reachable from # the runner network). Mirrors the Makefile lint/test-unit targets. name: ci on: push: branches: ["**"] pull_request: jobs: test: runs-on: docker container: image: python:3.14-trixie steps: - name: Checkout (sha-pinned, no node actions needed) run: | git init -q . git remote add origin ${{ gitea.server_url }}/${{ gitea.repository }}.git git fetch --depth 1 origin ${{ gitea.sha }} git checkout -q FETCH_HEAD - name: Install uv run: pip install --quiet uv - name: Sync dev dependencies run: uv sync --group dev --frozen - name: Lint (ruff) run: | uv run ruff check src tests uv run ruff format --check src tests uv run isort --check-only src tests - name: Typecheck (ty) run: uv run ty check src - name: Unit tests run: uv run pytest -m "not integration" tests/unit