| # 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 |