Skip to content

Add support for 3.12, drop 3.9 #137

Add support for 3.12, drop 3.9

Add support for 3.12, drop 3.9 #137

# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Tests
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch:
jobs:
setup:
name: Setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.12
uses: actions/setup-python@v3
with:
python-version: 3.12
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install nox
- name: List nox sessions
id: nox-sessions
run: |
echo "matrix=$(nox -s get_versions -- test)" >> $GITHUB_OUTPUT
echo "latest=$(nox -s get_latest_version -- test)" >> $GITHUB_OUTPUT
outputs:
matrix: ${{ steps.nox-sessions.outputs.matrix }}
latest: ${{ steps.nox-sessions.outputs.latest }}
test:
name: Test
needs: setup
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ${{ fromJson(needs.setup.outputs.matrix) }}
env:
latest-python-version: ${{ fromJson(needs.setup.outputs.latest) }}
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
sudo apt-get install -y jq
python -m pip install --upgrade pip
python -m pip install poetry nox
poetry config virtualenvs.in-project true
poetry install
- name: Run tests
run: nox -s test-${{ matrix.python-version }}
- name: Verify pre-commit hooks passed
run: |
. .venv/bin/activate
pre-commit run --all-files
- name: (${{ env.latest-python-version }} only) Docs build, copy coverage, extract coverage percent
if: ${{ matrix.python-version == env.latest-python-version }}
run: |
. .venv/bin/activate
./mkdocs.py build
rm htmlcov/.gitignore
cp -R htmlcov ./site/coverage
echo "COVERAGE_PERCENT=$(jq '.totals.percent_covered_display' < coverage.json | tr -d '"')" >> $GITHUB_ENV
- name: (${{ env.latest-python-version }} only) Publish site
if: ${{ matrix.python-version == env.latest-python-version }}
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./site/
- name: (${{ env.latest-python-version }} only) Coverage badge
if: ${{ matrix.python-version == env.latest-python-version }}
uses: Schneegans/dynamic-badges-action@v1.6.0
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: f493b14288af4e8358ea8578c393213a
filename: arguably-coverage-badge.json
label: Coverage
message: ${{ env.COVERAGE_PERCENT }}%
valColorRange: ${{ env.COVERAGE_PERCENT }}
minColorRange: 50
maxColorRange: 90