name: Run mypy_primer permissions: {} on: pull_request: paths: - "crates/ty*/**" - "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 RUST_BACKTRACE: 1 jobs: mypy_primer: name: Run mypy_primer runs-on: depot-ubuntu-22.04-32 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@d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86 # v5.4.2 - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8 with: workspaces: "ruff" - name: Install Rust toolchain run: rustup show - name: Run mypy_primer shell: bash run: | cd ruff PRIMER_SELECTOR="$(paste -s -d'|' crates/ty_python_semantic/resources/primer/good.txt)" 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 .. echo "Project selector: $PRIMER_SELECTOR" # Allow the exit code to be 0 or 1, only fail for actual mypy_primer crashes/bugs uvx \ --from="git+https://github.com/hauntsaninja/mypy_primer@4b15cf3b07db69db67bbfaebfffb2a8a28040933" \ mypy_primer \ --repo ruff \ --type-checker ty \ --old base_commit \ --new "$GITHUB_SHA" \ --project-selector "/($PRIMER_SELECTOR)\$" \ --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