name: Python CI concurrency: group: python-${{ github.ref }} cancel-in-progress: true on: [push, workflow_dispatch] jobs: ruff: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v5 - name: Run Ruff check uses: https://github.com/astral-sh/ruff-action@v3 with: args: "check" ruff-format-check: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v5 - name: Run Ruff format check uses: https://github.com/astral-sh/ruff-action@v3 with: args: "format --check --diff" ty: runs-on: ubuntu-latest steps: - name: Install UV run: python3 -m pip install uv --break-system-packages - name: Checkout repository uses: actions/checkout@v5 - name: Sync Python dependencies run: python3 -m uv sync - name: Run ty check run: python3 -m uv run ty check --output-format github coverage: runs-on: ubuntu-latest steps: - name: Install UV run: python3 -m pip install uv --break-system-packages - name: Checkout repository uses: actions/checkout@v5 - name: Sync Python dependencies run: python3 -m uv sync - name: Run tests with coverage run: python3 -m uv run coverage run -m unittest -v - name: Generate coverage XML report run: python3 -m uv run coverage xml - name: Create coverage summary uses: https://github.com/irongut/CodeCoverageSummary@v1.3.0 with: filename: coverage.xml