name: Run mypy_primer permissions: {} on: pull_request: paths: - "crates/red_knot*/**" - "crates/ruff_db" - "crates/ruff_python_ast" - "crates/ruff_python_parser" - ".github/workflows/mypy_primer.yaml" - ".github/workflows/mypy_primer_comment.yaml" concurrency: group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }} cancel-in-progress: true env: CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 CARGO_TERM_COLOR: always RUSTUP_MAX_RETRIES: 10 jobs: mypy_primer: name: Run mypy_primer runs-on: depot-ubuntu-22.04-16 timeout-minutes: 20 steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: path: ruff fetch-depth: 0 persist-credentials: false - name: Install the latest version of uv uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1 - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 with: workspaces: "ruff" - name: Install Rust toolchain run: rustup show - name: Install mypy_primer run: | uv tool install "git+https://github.com/astral-sh/mypy_primer.git@add-red-knot-support-v5" - name: Run mypy_primer shell: bash run: | cd ruff echo "new commit" git rev-list --format=%s --max-count=1 "$GITHUB_SHA" MERGE_BASE="$(git merge-base "$GITHUB_SHA" "origin/$GITHUB_BASE_REF")" git checkout -b base_commit "$MERGE_BASE" echo "base commit" git rev-list --format=%s --max-count=1 base_commit cd .. # Allow the exit code to be 0 or 1, only fail for actual mypy_primer crashes/bugs uvx mypy_primer \ --repo ruff \ --type-checker knot \ --old base_commit \ --new "$GITHUB_SHA" \ --project-selector '/(mypy_primer|black|pyp|git-revise|zipp|arrow|isort|itsdangerous|rich|packaging|pybind11|pyinstrument|typeshed-stats|scrapy|werkzeug|bidict|async-utils)$' \ --output concise \ --debug > mypy_primer.diff || [ $? -eq 1 ] # Output diff with ANSI color codes cat mypy_primer.diff # Remove ANSI color codes before uploading sed -ie 's/\x1b\[[0-9;]*m//g' mypy_primer.diff echo ${{ github.event.number }} > pr-number - name: Upload diff uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: mypy_primer_diff path: mypy_primer.diff - name: Upload pr-number uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: pr-number path: pr-number