|
# Workflow to run mypy on select parts of the CPython repo |
|
name: mypy |
|
|
|
on: |
|
push: |
|
branches: |
|
- main |
|
pull_request: |
|
paths: |
|
- ".github/workflows/mypy.yml" |
|
- "Lib/_colorize.py" |
|
- "Lib/_pyrepl/**" |
|
- "Lib/test/libregrtest/**" |
|
- "Lib/tomllib/**" |
|
- "Misc/mypy/**" |
|
- "Tools/build/check_extension_modules.py" |
|
- "Tools/build/check_warnings.py" |
|
- "Tools/build/compute-changes.py" |
|
- "Tools/build/deepfreeze.py" |
|
- "Tools/build/generate-build-details.py" |
|
- "Tools/build/generate_levenshtein_examples.py" |
|
- "Tools/build/generate_sbom.py" |
|
- "Tools/build/generate_stdlib_module_names.py" |
|
- "Tools/build/mypy.ini" |
|
- "Tools/build/umarshal.py" |
|
- "Tools/build/update_file.py" |
|
- "Tools/build/verify_ensurepip_wheels.py" |
|
- "Tools/cases_generator/**" |
|
- "Tools/check-c-api-docs/**" |
|
- "Tools/clinic/**" |
|
- "Tools/jit/**" |
|
- "Tools/peg_generator/**" |
|
- "Tools/requirements-dev.txt" |
|
workflow_dispatch: |
|
|
|
permissions: |
|
contents: read |
|
|
|
env: |
|
PIP_DISABLE_PIP_VERSION_CHECK: 1 |
|
FORCE_COLOR: 1 |
|
TERM: xterm-256color # needed for FORCE_COLOR to work on mypy on Ubuntu, see https://github.com/python/mypy/issues/13817 |
|
|
|
concurrency: |
|
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} |
|
cancel-in-progress: true |
|
|
|
jobs: |
|
mypy: |
|
name: Run mypy on ${{ matrix.target }} |
|
runs-on: ubuntu-latest |
|
timeout-minutes: 10 |
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
target: [ |
|
"Lib/_pyrepl", |
|
"Lib/test/libregrtest", |
|
"Lib/tomllib", |
|
"Tools/build", |
|
"Tools/cases_generator", |
|
"Tools/check-c-api-docs", |
|
"Tools/clinic", |
|
"Tools/jit", |
|
"Tools/peg_generator", |
|
] |
|
steps: |
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
|
with: |
|
persist-credentials: false |
|
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0 |
|
with: |
|
python-version: "3.13" |
|
activate-environment: true |
|
cache-dependency-glob: Tools/requirements-dev.txt |
|
- run: uv pip install -r Tools/requirements-dev.txt |
|
- run: python3 Misc/mypy/make_symlinks.py --symlink |
|
- run: mypy --num-workers 4 --config-file ${{ matrix.target }}/mypy.ini |