| name: lint and format |
| |
| on: [push, pull_request] |
| |
| permissions: {} |
| |
| jobs: |
| lint: |
| # We want to run on external PRs, but not on our own internal PRs as they'll be run |
| # by the push to the branch. Without this if check, checks are duplicated since |
| # internal PRs match both the push and pull_request events. |
| if: |
| github.event_name == 'push' || github.event.pull_request.head.repo.full_name != |
| github.repository |
| |
| runs-on: ubuntu-latest |
| |
| steps: |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 |
| with: |
| persist-credentials: false |
| |
| - name: Assert PR target is main |
| if: github.event_name == 'pull_request' && github.repository == 'psf/black' |
| run: | |
| if [ "$GITHUB_BASE_REF" != "main" ]; then |
| echo "::error::PR targeting '$GITHUB_BASE_REF', please refile targeting 'main'." && exit 1 |
| fi |
| |
| - name: Set up Python |
| uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 |
| with: |
| python-version: "3.14" |
| pip-version: "25.3" |
| pip-install: -e . --group tox |
| |
| - name: Run pre-commit hooks |
| uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 |
| |
| - name: Format ourselves |
| run: tox -e run_self |
| |
| - name: Regenerate schema |
| run: | |
| tox -e generate_schema |
| git diff --exit-code |