Update cruft #635
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
# This file configures the continuous integration (CI) system on GitHub. | |
# Introductory materials can be found here: https://docs.github.com/en/actions/learn-github-actions/understanding-github-actions. | |
# Documentation for editing this file can be found here: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions | |
name: Tests | |
# by default, give the GITHUB_TOKEN no permissions | |
# See https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token | |
permissions: {} | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
lint: | |
name: Code Quality | |
permissions: | |
# give only read-only access to the contents of the repository | |
# this is the only permission this job requires, so keep it to the least privilege | |
# i.e., not to issues, discussions, actions, etc. | |
contents: read | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: [ "3.12", "3.9" ] | |
tox-command: ["manifest", "lint", "pyroma", "mypy"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Install uv" | |
uses: "astral-sh/setup-uv@v3" | |
with: | |
enable-cache: true | |
cache-dependency-glob: "pyproject.toml" | |
- name: "Run command" | |
run: | | |
uvx -p ${{ matrix.python-version }} --with tox-uv tox -e ${{ matrix.tox-command }} | |
docs: | |
name: Documentation | |
permissions: | |
contents: read | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
# We only test documentation on the latest version | |
# sphinx 8.0 / sphinx-rtd-theme 3.0 discontinued Python 3.9 support | |
# a year early, which prompted re-thinking about this. | |
python-version: [ "3.12" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Install uv" | |
uses: "astral-sh/setup-uv@v3" | |
with: | |
enable-cache: true | |
cache-dependency-glob: "pyproject.toml" | |
- name: Install dependencies | |
run: | | |
sudo apt-get install graphviz | |
- name: Check RST conformity with doc8 | |
run: uvx -p ${{ matrix.python-version }} --with tox-uv tox -e doc8 | |
- name: Check docstring coverage | |
run: uvx -p ${{ matrix.python-version }} --with tox-uv tox -e docstr-coverage | |
- name: Check documentation build with Sphinx | |
run: uvx -p ${{ matrix.python-version }} --with tox-uv tox -e docs-test | |
tests: | |
name: Tests | |
permissions: | |
contents: read | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ ubuntu-latest ] | |
python-version: [ "3.12", "3.9" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Install uv" | |
uses: "astral-sh/setup-uv@v3" | |
with: | |
enable-cache: true | |
cache-dependency-glob: "pyproject.toml" | |
- name: Test with pytest and generate coverage file | |
run: | |
uvx -p ${{ matrix.python-version }} --with tox-uv tox -e py | |
- name: Upload coverage report to codecov | |
uses: codecov/codecov-action@v4 | |
if: success() | |
with: | |
file: coverage.xml |