name: Shared Checks on: workflow_call: permissions: contents: read env: COLUMNS: 150 jobs: pre-commit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v7 with: enable-cache: true version: 0.9.5 - name: Install dependencies run: uv sync --frozen --all-extras --python 3.10 - uses: pre-commit/action@v3.0.1 with: extra_args: --all-files --verbose env: SKIP: no-commit-to-branch test: name: test (${{ matrix.python-version }}, ${{ matrix.dep-resolution.name }}, ${{ matrix.os }}) runs-on: ${{ matrix.os }} timeout-minutes: 10 continue-on-error: true strategy: matrix: python-version: ["3.10", "3.11", "3.12", "3.13"] dep-resolution: - name: lowest-direct install-flags: "--resolution lowest-direct" - name: highest install-flags: "--frozen" os: [ubuntu-latest, windows-latest] steps: - uses: actions/checkout@v5 - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true version: 0.9.5 - name: Install the project run: uv sync ${{ matrix.dep-resolution.install-flags }} --all-extras --python ${{ matrix.python-version }} - name: Run pytest with coverage run: | uv run ${{ matrix.dep-resolution.install-flags }} --no-sync coverage run -m pytest uv run ${{ matrix.dep-resolution.install-flags }} --no-sync coverage combine uv run ${{ matrix.dep-resolution.install-flags }} --no-sync coverage report env: UV_RESOLUTION: ${{ matrix.dep-resolution.name == 'lowest-direct' && 'lowest-direct' || 'highest' }} readme-snippets: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: astral-sh/setup-uv@v7 with: enable-cache: true version: 0.9.5 - name: Install dependencies run: uv sync --frozen --all-extras --python 3.10 - name: Check README snippets are up to date run: uv run --frozen scripts/update_readme_snippets.py --check