name: Run mypy_primer on: # Only run on PR, since we diff against main pull_request: paths: - "**/*.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] # e.g. change this to [0, 1, 2] and --num-shards below to 3 fail-fast: false steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: path: numpy_to_test fetch-depth: 0 - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.12" - name: Install dependencies run: pip install git+https://github.com/hauntsaninja/mypy_primer.git - name: Run mypy_primer shell: bash run: | cd numpy_to_test MYPY_VERSION=$(grep mypy== requirements/test_requirements.txt | sed -n 's/mypy==\([^;]*\).*/\1/p') echo "new commit" git checkout $GITHUB_SHA git rev-list --format=%s --max-count=1 HEAD MERGE_BASE=$(git merge-base $GITHUB_SHA origin/$GITHUB_BASE_REF) git worktree add ../numpy_base $MERGE_BASE cd ../numpy_base echo "base commit" git rev-list --format=%s --max-count=1 HEAD echo '' cd .. # fail action if exit code isn't zero or one # TODO: note that we don't build numpy, so if a project attempts to use the # numpy mypy plugin, we may see some issues involving version skew. ( mypy_primer \ --new v${MYPY_VERSION} --old v${MYPY_VERSION} \ --known-dependency-selector numpy \ --old-prepend-path numpy_base --new-prepend-path numpy_to_test \ --num-shards 1 --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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: mypy_primer_diffs pattern: mypy_primer_diffs-* delete-merged: true