| # 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/_pyrepl/**" | |
| - "Lib/test/libregrtest/**" | |
| - "Tools/build/generate_sbom.py" | |
| - "Tools/cases_generator/**" | |
| - "Tools/clinic/**" | |
| - "Tools/jit/**" | |
| - "Tools/peg_generator/**" | |
| - "Tools/requirements-dev.txt" | |
| - "Tools/wasm/**" | |
| 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: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: [ | |
| "Lib/_pyrepl", | |
| "Lib/test/libregrtest", | |
| "Tools/build", | |
| "Tools/cases_generator", | |
| "Tools/clinic", | |
| "Tools/jit", | |
| "Tools/peg_generator", | |
| "Tools/wasm", | |
| ] | |
| name: Run mypy on ${{ matrix.target }} | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.13" | |
| cache: pip | |
| cache-dependency-path: Tools/requirements-dev.txt | |
| - run: pip install -r Tools/requirements-dev.txt | |
| - run: mypy --config-file ${{ matrix.target }}/mypy.ini |