name: CI on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "latest" - name: Cache dependencies uses: actions/cache@v3 with: path: | .venv .cache/uv key: ${{ runner.os }}-uv-${{ hashFiles('**/pyproject.toml') }} restore-keys: | ${{ runner.os }}-uv- - name: Install dependencies run: | uv pip install -e ".[dev]" - name: Run linting run: | uv run ruff check src/ tests/ example/ - name: Run formatting check run: | uv run ruff format --check src/ tests/ example/ - name: Run type checking run: | uv run mypy src/ - name: Run tests run: | uv run pytest --cov=src --cov-report=xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: file: ./coverage.xml flags: unittests name: codecov-umbrella fail_ci_if_error: false pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.13" - name: Install uv uses: astral-sh/setup-uv@v3 with: version: "latest" - name: Install dependencies run: | uv pip install -e ".[dev]" - name: Run pre-commit run: | uv run pre-commit run --all-files