name: CI on: push: branches: [main, develop] pull_request: branches: [main, develop] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: lint: name: Lint & Typecheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup uv uses: astral-sh/setup-uv@v3 with: enable-cache: true - name: Sync dependencies run: uv sync --extra dev - name: Ruff check run: uv run ruff check src tests - name: Ruff format check run: uv run ruff format --check src tests - name: Pyrefly typecheck run: uv run pyrefly check src/pyflowx test: name: Test (Python ${{ matrix.python-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ["3.8", "3.11", "3.13"] steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Setup uv uses: astral-sh/setup-uv@v3 with: enable-cache: true - name: Sync dependencies run: uv sync --extra dev - name: Run tests with coverage run: uv run pytest -m "not slow" --cov=pyflowx --cov-report=xml --cov-report=term-missing --cov-fail-under=95 - name: Upload coverage if: matrix.python-version == '3.11' uses: actions/upload-artifact@v4 with: name: coverage path: coverage.xml docs: name: Docs Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup uv uses: astral-sh/setup-uv@v3 with: enable-cache: true - name: Sync dependencies run: uv sync --extra docs - name: Build Sphinx docs run: uv run sphinx-build -b html docs/ docs/_build/ --keep-going env: LC_ALL: C.UTF-8 LANG: C.UTF-8 - name: Upload docs artifact uses: actions/upload-artifact@v4 with: name: docs-html path: docs/_build/