post-merge #1
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: Lint source code | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
env: | |
FORCE_COLOR: "1" | |
UV_SYSTEM_PYTHON: "1" # make uv do global installs | |
jobs: | |
# If you update any of these commands, don't forget to update the equivalent | |
# tox environment | |
ruff: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get Ruff version from pyproject.toml | |
run: | | |
RUFF_VERSION=$(awk -F'[="]' '/\[project\.optional-dependencies\]/ {p=1} /ruff/ {if (p) print $4}' pyproject.toml) | |
echo "RUFF_VERSION=$RUFF_VERSION" >> $GITHUB_ENV | |
- name: Install Ruff | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
--write-out "%{stderr}Downloaded: %{url}\n" | |
"https://astral.sh/ruff/$RUFF_VERSION/install.sh" | |
| sh | |
- name: Lint with Ruff | |
run: ruff check . --output-format github | |
- name: Format with Ruff | |
run: ruff format . --diff | |
flake8: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3" | |
- name: Install uv | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
"https://astral.sh/uv/install.sh" | |
| sh | |
- name: Install dependencies | |
run: uv pip install --upgrade "flake8>=6.0" | |
- name: Lint with flake8 | |
run: flake8 . | |
mypy: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3" | |
- name: Install uv | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
"https://astral.sh/uv/install.sh" | |
| sh | |
- name: Install dependencies | |
run: uv pip install ".[lint,test]" | |
- name: Type check with mypy | |
run: mypy | |
pyright: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3" | |
- name: Install uv | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
"https://astral.sh/uv/install.sh" | |
| sh | |
- name: Install dependencies | |
run: uv pip install ".[lint,test]" | |
- name: Type check with pyright | |
run: pyright | |
docs-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3" | |
- name: Install uv | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
"https://astral.sh/uv/install.sh" | |
| sh | |
- name: Install dependencies | |
run: uv pip install --upgrade sphinx-lint | |
- name: Lint documentation with sphinx-lint | |
run: make doclinter | |
twine: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3" | |
- name: Install uv | |
run: > | |
curl --no-progress-meter --location --fail | |
--proto '=https' --tlsv1.2 | |
"https://astral.sh/uv/install.sh" | |
| sh | |
- name: Install dependencies | |
run: uv pip install --upgrade twine build | |
- name: Lint with twine | |
run: | | |
python -m build . | |
twine check dist/* |