Workflow file for this run
This file contains 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: "python tests and coverage" | |
# Uses: | |
# https://github.com/actions/setup-python | |
# https://github.com/actions/checkout | |
# https://github.com/actions/download-artifact | |
# https://github.com/actions/upload-artifact | |
on: | |
pull_request: | |
branches: | |
- "main" | |
push: | |
branches: | |
- "main" | |
jobs: | |
run-tests-and-coverage: | |
name: "Run nox for tests and coverage" | |
runs-on: "${{ matrix.os }}" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- "macos-latest" | |
- "windows-latest" | |
- "ubuntu-latest" | |
python-version: | |
- "3.9" | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
- "3.13" | |
steps: | |
- name: "Repo checkout" | |
uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" | |
- name: "Set up Python ${{ matrix.python-version }}" | |
uses: "actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c" | |
with: | |
python-version: "${{ matrix.python-version }}" | |
allow-prereleases: true | |
- name: "Install nox" | |
run: | | |
python -m pip install --upgrade pip nox | |
- name: "Run tests and coverage via nox" | |
run: | | |
nox --session tests_with_coverage-${{ matrix.python-version }} | |
- name: "Save coverage artifact" | |
uses: "actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3" | |
with: | |
name: "coverage-artifact-${{ matrix.os}}-${{ matrix.python-version}}" | |
path: ".coverage.*" | |
retention-days: 1 | |
coverage-compile: | |
name: "coverage compile" | |
needs: "run-tests-and-coverage" | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: "Repo checkout" | |
uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" | |
- name: "Set up Python" | |
uses: "actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c" | |
with: | |
python-version: "3.12" | |
- name: "Install nox" | |
run: | | |
python -m pip install --upgrade pip nox | |
- name: "Download coverage artifacts" | |
uses: "actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427" | |
with: | |
pattern: "coverage-artifact-*" | |
merge-multiple: true | |
- name: "Compile coverage data, print report" | |
run: | | |
nox --session coverage_combine_and_report | |
export TOTAL=$(python -c "import json;print(json.load(open('coverage.json'))['totals']['percent_covered_display'])") | |
echo "TOTAL=$TOTAL" >> $GITHUB_ENV | |
echo "### Total coverage: ${TOTAL}%" >> $GITHUB_STEP_SUMMARY | |
mypy-check: | |
name: "mypy strict enforcement" | |
runs-on: "ubuntu-latest" | |
steps: | |
- name: "Repo checkout" | |
uses: "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" | |
- name: "Set up Python" | |
uses: "actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c" | |
with: | |
python-version: "3.12" | |
- name: "Install nox" | |
run: | | |
python -m pip install --upgrade pip nox | |
- name: "Enforce strict type annotations with mypy" | |
run: | | |
nox --session mypy_check |