cpython/.github/workflows/require-pr-label.yml

name: Check labels

on:
  pull_request:
    types: [opened, reopened, labeled, unlabeled, synchronize]

permissions:
  issues: write
  pull-requests: write

jobs:
  label-dnm:
    name: DO-NOT-MERGE
    if: github.repository_owner == 'python'
    runs-on: ubuntu-latest
    timeout-minutes: 10

    steps:
      - name: Check there's no DO-NOT-MERGE
        uses: mheap/github-action-required-labels@v5
        with:
          mode: exactly
          count: 0
          labels: |
            DO-NOT-MERGE

  label-reviews:
    name: Unresolved review
    if: github.repository_owner == 'python'
    runs-on: ubuntu-latest
    timeout-minutes: 10

    steps:
      # Check that the PR is not awaiting changes from the author due to previous review.
      - name: Check there's no required changes
        uses: mheap/github-action-required-labels@v5
        with:
          mode: exactly
          count: 0
          labels: |
            awaiting changes
            awaiting change review
      - id: is-feature
        name: Check whether this PR is a feature (contains a "type-feature" label)
        uses: mheap/github-action-required-labels@v5
        with:
          mode: exactly
          count: 1
          labels: |
            type-feature
          exit_type: success  # don't fail the check if the PR is not a feature, just record the result
      # In case of a feature PR, check for a complete review (contains an "awaiting merge" label).
      - id: awaiting-merge
        if: steps.is-feature.outputs.status == 'success'
        name: Check for complete review
        uses: mheap/github-action-required-labels@v5
        with:
          mode: exactly
          count: 1
          labels: |
            awaiting merge