| # 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/consts_getter.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@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0 | |
| with: | |
| python-version: "3.15" | |
| 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 |