name: CI on: push: branches: [main] tags: ["v*"] pull_request: jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v6 - run: uv run --no-sources ruff check . - run: uv run --no-sources ruff format --check . test: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v6 with: python-version: ${{ matrix.python-version }} - run: uv sync --no-sources - run: uv run --no-sources pytest -v publish: needs: [lint, test] if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest environment: pypi permissions: id-token: write steps: - uses: actions/checkout@v4 - uses: astral-sh/setup-uv@v6 - run: uv build - uses: pypa/gh-action-pypi-publish@release/v1