|
--- |
|
name: Linting |
|
on: [pull_request] |
|
|
|
permissions: {} |
|
|
|
jobs: |
|
pre-commit: |
|
name: precommit |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
fetch-depth: 0 |
|
persist-credentials: false |
|
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 |
|
with: |
|
python-version: "3.x" |
|
- uses: j178/prek-action@e98a699c41eb69ab013a45817a0406469a748f8d # v2.0.5 |
|
with: |
|
extra-args: --hook-stage manual --all-files |
|
|
|
ruff: |
|
name: ruff |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
checks: write |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
|
|
- name: Set up Python 3 |
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 |
|
with: |
|
python-version: '3.12' |
|
|
|
- name: Install ruff |
|
run: pip3 install ruff |
|
|
|
- name: Set up reviewdog |
|
uses: reviewdog/action-setup@d8a7baabd7f3e8544ee4dbde3ee41d0011c3a93f # v1.5.0 |
|
|
|
- name: Run ruff |
|
env: |
|
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
run: | |
|
set -o pipefail |
|
ruff check --output-format rdjson | \ |
|
reviewdog -f=rdjson \ |
|
-tee -reporter=github-check -filter-mode nofilter |
|
mypy: |
|
name: mypy |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
checks: write |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
|
|
- name: Set up Python 3 |
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 |
|
with: |
|
python-version: '3.12' |
|
|
|
- name: Install mypy |
|
run: pip3 install --group build --group typing |
|
|
|
- name: Set up reviewdog |
|
uses: reviewdog/action-setup@d8a7baabd7f3e8544ee4dbde3ee41d0011c3a93f # v1.5.0 |
|
|
|
- name: Run mypy |
|
env: |
|
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
run: | |
|
set -o pipefail |
|
mypy --config pyproject.toml | \ |
|
reviewdog -f=mypy -name=mypy \ |
|
-tee -reporter=github-check -filter-mode nofilter |
|
|
|
|
|
clang-tidy: |
|
name: clang-tidy (macOS / Objective-C) |
|
runs-on: macos-latest # run on macOS so we can lint the objectiveC file |
|
permissions: |
|
contents: read |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
|
|
- name: Set up Python 3 |
|
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 |
|
with: |
|
python-version: '3.14' |
|
|
|
- name: Install OS dependencies |
|
run: brew install llvm |
|
|
|
- name: Install build dependencies |
|
run: pip3 install meson ninja pybind11 setuptools-scm |
|
|
|
- name: Run clang-tidy |
|
run: | |
|
set -o pipefail |
|
LLVM_PREFIX=$(brew --prefix llvm) |
|
export CC=$LLVM_PREFIX/bin/clang |
|
export CXX=$LLVM_PREFIX/bin/clang++ |
|
export OBJC=$LLVM_PREFIX/bin/clang |
|
export PATH=$LLVM_PREFIX/bin:$PATH |
|
python tools/run_clang_tidy.py |
|
|
|
eslint: |
|
name: eslint |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
checks: write |
|
steps: |
|
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 |
|
with: |
|
persist-credentials: false |
|
|
|
- name: eslint |
|
uses: reviewdog/action-eslint@556a3fdaf8b4201d4d74d406013386aa4f7dab96 # v1.34.0 |
|
with: |
|
filter_mode: nofilter |
|
github_token: ${{ secrets.GITHUB_TOKEN }} |
|
reporter: github-check |
|
workdir: 'lib/matplotlib/backends/web_backend/' |