Skip to content

Reformatted file

Reformatted file #41

Workflow file for this run

name: Python PR
permissions:
contents: read
on:
pull_request:
branches: ["master"]
push:
branches: ["master"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
comment:
name: Comment
runs-on: ubuntu-latest
permissions:
pull-requests: write
if: ${{ github.event_name == 'pull_request' && github.event.action == 'opened' }}
steps:
- name: Comment PR
uses: thollander/actions-comment-pull-request@v3
with:
message: |
:wave: Thank you for contributing this pull request!
This repository uses GitHub Actions to automatically run tests, build the project, and check code quality on each pull request.
Please address _all_ issues found by these checks to ensure a smooth review process.
test:
name: Quick Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.14"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip pip-tools regex
pip-compile --extra test -o requirements.txt pyproject.toml
pip install -r requirements.txt
- name: Test using pytest
run: |
pytest
build:
name: Build
runs-on: ${{ matrix.os }}
needs:
- test
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.14"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip build
- name: Build and install with pip
run: |
python -m build
pip install .
lint:
name: Lint
runs-on: ubuntu-latest
needs:
- test
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip pip-tools setuptools-git-versioning
pip-compile --all-extras -o requirements-dev.txt pyproject.toml
pip install -r requirements-dev.txt
- name: Lint with flake8
run: |
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- name: Type checking with Pyright
run: |
python -m pyright
- name: Lint with Black
run: |
black . --check
- name: Lint with Ruff
run: |
ruff check --output-format=github .
test-minimal:
name: Minimal Dependency Test
runs-on: ${{ matrix.os }}
needs:
- test
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, windows-latest]
python-version: ["3.9", "3.14"]
steps:
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip uv regex
uv pip compile pyproject.toml --resolution lowest-direct --extra test -o requirements-minimal.txt
pip install -r requirements-minimal.txt
- name: Test using pytest
run: |
pytest
lint-minimal:
name: Minimal Dependency Lint
runs-on: ubuntu-latest
needs:
- test-minimal
- lint
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.9"
cache: "pip"
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip setuptools-git-versioning uv
uv pip compile pyproject.toml --resolution lowest-direct --all-extras -o requirements-minimal-dev.txt
pip install -r requirements-minimal-dev.txt
- name: Install Pyright
run: |
python -m pip install --upgrade --upgrade-strategy eager pyright
- name: Type checking with Pyright
run: |
python -m pyright
markdownlint:
name: Markdownlint
runs-on: ubuntu-latest
needs:
- lint
steps:
- name: Checkout repository
uses: actions/checkout@v5
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
src:
- "**/*.md"
- name: Setup Node.js
if: steps.changes.outputs.src == 'true'
uses: actions/setup-node@v6
- name: Install markdownlint-cli2
if: steps.changes.outputs.src == 'true'
run: npm install -g markdownlint-cli2
- name: Run Markdownlint
if: steps.changes.outputs.src == 'true'
run: markdownlint-cli2 "**/*.md"
docs:
name: Docs
runs-on: ubuntu-latest
needs:
- markdownlint
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
- name: Install dependencies
run: |
python -m pip install --upgrade --upgrade-strategy eager pip pip-tools
pip-compile --all-extras -o requirements-dev.txt pyproject.toml
pip install -r requirements-dev.txt
- name: Generate docs with sphinx
run: |
cd docs
make clean
make html