name: Run mypy_primer on: # Only run on PR, since we diff against main pull_request: paths: - "stdlib/**" - "stubs/**/*.pyi" - ".github/workflows/mypy_primer.yml" - ".github/workflows/mypy_primer_comment.yml" concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true permissions: contents: read jobs: mypy_primer: name: Run runs-on: ubuntu-latest strategy: matrix: shard-index: [0, 1, 2, 3] fail-fast: false steps: - uses: actions/checkout@v6 with: path: typeshed_to_test fetch-depth: 0 - uses: actions/setup-python@v6 with: python-version: "3.13" - name: Install dependencies run: pip install git+https://github.com/hauntsaninja/mypy_primer.git - name: Run mypy_primer shell: bash run: | cd typeshed_to_test MYPY_VERSION=$(grep mypy== requirements-tests.txt | cut -d = -f 3) echo "new commit" git rev-list --format=%s --max-count=1 $GITHUB_SHA git checkout -b upstream_main origin/main echo "base commit" git rev-list --format=%s --max-count=1 upstream_main echo '' cd .. # fail action if exit code isn't zero or one ( mypy_primer \ --new v${MYPY_VERSION} --old v${MYPY_VERSION} \ --custom-typeshed-repo typeshed_to_test \ --new-typeshed $GITHUB_SHA --old-typeshed upstream_main \ --num-shards 4 --shard-index ${{ matrix.shard-index }} \ --debug \ --output concise \ | tee diff_${{ matrix.shard-index }}.txt ) || [ $? -eq 1 ] - if: ${{ matrix.shard-index == 0 }} name: Save PR number run: | echo ${{ github.event.pull_request.number }} | tee pr_number.txt - name: Upload mypy_primer diff + PR number uses: actions/upload-artifact@v7 if: ${{ matrix.shard-index == 0 }} with: name: mypy_primer_diffs-${{ matrix.shard-index }} path: | diff_${{ matrix.shard-index }}.txt pr_number.txt - name: Upload mypy_primer diff uses: actions/upload-artifact@v7 if: ${{ matrix.shard-index != 0 }} with: name: mypy_primer_diffs-${{ matrix.shard-index }} path: diff_${{ matrix.shard-index }}.txt join_artifacts: name: Join artifacts runs-on: ubuntu-latest needs: [mypy_primer] permissions: contents: read steps: - name: Merge artifacts uses: actions/upload-artifact/merge@v7 with: name: mypy_primer_diffs pattern: mypy_primer_diffs-* delete-merged: true