Switch to uv #23
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| name: CI | |
| on: | |
| push: | |
| branches: ["main"] | |
| pull_request: | |
| branches: ["main"] | |
| workflow_dispatch: | |
| jobs: | |
| tests: | |
| name: "Python ${{ matrix.python-version }}" | |
| runs-on: "ubuntu-latest" | |
| strategy: | |
| matrix: | |
| python-version: ["3.11", "3.12", "3.13", "3.14"] | |
| redis-version: [6] | |
| fail-fast: false | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| persist-credentials: false | |
| - uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3.0.0 | |
| - uses: hynek/setup-cached-uv@757bedc3f972eb7227a1aa657651f15a8527c817 # v2.3.0 | |
| - name: "Start Redis" | |
| uses: "supercharge/[email protected]" | |
| with: | |
| redis-version: "${{ matrix.redis-version }}" | |
| - name: "Run Tests" | |
| run: | | |
| just python=${{ matrix.python-version }} covcleanup="false" cov | |
| - name: Upload coverage data | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-data-${{ matrix.python-version }} | |
| path: .coverage.* | |
| if-no-files-found: ignore | |
| include-hidden-files: true | |
| coverage: | |
| name: "Combine & check coverage." | |
| needs: "tests" | |
| runs-on: "ubuntu-latest" | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| persist-credentials: false | |
| - name: Download coverage data | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: coverage-data-* | |
| merge-multiple: true | |
| - uses: hynek/setup-cached-uv@757bedc3f972eb7227a1aa657651f15a8527c817 # v2.3.0 | |
| - name: "Combine coverage" | |
| run: | | |
| uv run --group test coverage combine | |
| uv run --group test coverage html | |
| uv run --group test coverage json | |
| # Report and write to summary. | |
| uv run --group test coverage report --format=markdown >> $GITHUB_STEP_SUMMARY | |
| export TOTAL=$(uv run python -c "import json;print(json.load(open('coverage.json'))['totals']['percent_covered_display'])") | |
| echo "total=$TOTAL" >> $GITHUB_ENV | |
| # Report again and fail if under the threshold. | |
| uv run --group test coverage report --fail-under=100 | |
| - name: "Upload HTML report." | |
| uses: "actions/upload-artifact@v4" | |
| with: | |
| name: "html-report" | |
| path: "htmlcov" | |
| if: always() | |
| - name: "Make badge" | |
| if: github.ref == 'refs/heads/main' | |
| uses: "schneegans/[email protected]" | |
| with: | |
| # GIST_TOKEN is a GitHub personal access token with scope "gist". | |
| auth: ${{ secrets.GIST_TOKEN }} | |
| gistID: fe982b645791164107bd8f6699ed0a38 | |
| filename: covbadge.json | |
| label: Coverage | |
| message: ${{ env.total }}% | |
| minColorRange: 50 | |
| maxColorRange: 90 | |
| valColorRange: ${{ env.total }} | |
| lint: | |
| name: "Run linters" | |
| runs-on: "ubuntu-latest" | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| persist-credentials: false | |
| - uses: extractions/setup-just@e33e0265a09d6d736e2ee1e0eb685ef1de4669ff # v3.0.0 | |
| - uses: hynek/setup-cached-uv@757bedc3f972eb7227a1aa657651f15a8527c817 # v2.3.0 | |
| - name: "Run linters" | |
| run: | | |
| just lint | |
| package: | |
| name: "Build & verify package" | |
| runs-on: "ubuntu-latest" | |
| steps: | |
| - uses: "actions/checkout@v4" | |
| with: | |
| persist-credentials: false | |
| - uses: hynek/setup-cached-uv@757bedc3f972eb7227a1aa657651f15a8527c817 | |
| - name: "Build package" | |
| run: "uvx --from build pyproject-build" | |
| - name: "List result" | |
| run: "ls -l dist" | |
| - name: "Check wheel contents" | |
| run: "uvx check-wheel-contents dist/*.whl" | |
| - name: "Check long_description" | |
| run: "uvx twine check dist/*" |