Respect the magic trailing comma in starred type parameter lists #3293
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build and publish | |
| on: | |
| release: | |
| types: published | |
| pull_request: | |
| push: | |
| branches: main | |
| permissions: {} | |
| env: | |
| PROJECT: https://pypi.org/p/black | |
| jobs: | |
| configure: | |
| name: generate wheels matrix | |
| runs-on: ubuntu-latest | |
| outputs: | |
| include: ${{ steps.set-matrix.outputs.include }} | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: "3.14" | |
| pip-version: "25.3" | |
| pip-install: --group cibw | |
| - name: generate matrix | |
| if: | | |
| github.event_name != 'pull_request' || contains(github.event.pull_request.labels.*.name, 'ci: build all wheels') | |
| run: | | |
| { | |
| cibuildwheel --print-build-identifiers --platform linux \ | |
| | pyp 'json.dumps({"only": x, "os": "ubuntu-latest"})' \ | |
| && cibuildwheel --print-build-identifiers --platform macos \ | |
| | pyp 'json.dumps({"only": x, "os": "macos-latest"})' \ | |
| && cibuildwheel --print-build-identifiers --platform windows \ | |
| | pyp 'json.dumps({"only": x, "os": "windows-latest"})' \ | |
| && cibuildwheel --print-build-identifiers --platform windows --archs ARM64 \ | |
| | pyp 'json.dumps({"only": x, "os": "windows-11-arm"})' | |
| } | pyp 'json.dumps(list(map(json.loads, lines)))' > /tmp/matrix | |
| env: | |
| CIBW_ARCHS_LINUX: x86_64 | |
| CIBW_ARCHS_MACOS: x86_64 arm64 | |
| CIBW_ARCHS_WINDOWS: AMD64 | |
| - name: generate matrix (PR) | |
| if: | | |
| github.event_name == 'pull_request' && !contains(github.event.pull_request.labels.*.name, 'ci: build all wheels') | |
| run: | | |
| { | |
| CIBW_BUILD="cp310-*" cibuildwheel --print-build-identifiers --platform linux | pyp 'json.dumps({"only": x, "os": "ubuntu-latest"})' | |
| CIBW_BUILD="cp314-*" cibuildwheel --print-build-identifiers --platform windows | pyp 'json.dumps({"only": x, "os": "windows-latest"})' | |
| } | pyp 'json.dumps(list(map(json.loads, lines)))' > /tmp/matrix | |
| env: | |
| CIBW_ARCHS_LINUX: x86_64 | |
| - id: set-matrix | |
| run: echo "include=$(cat /tmp/matrix)" | tee -a $GITHUB_OUTPUT | |
| mypyc: | |
| name: mypyc wheels ${{ matrix.only }} | |
| needs: configure | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| include: ${{ fromJson(needs.configure.outputs.include) }} | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: "3.14" | |
| pip-version: "25.3" | |
| pip-install: --group cibw | |
| - name: Run cibuildwheel | |
| run: cibuildwheel . --only ${{ matrix.only }} | |
| - name: Upload wheels as workflow artifacts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: ${{ matrix.only }}-mypyc-wheels | |
| path: wheelhouse/ | |
| hatch: | |
| name: sdist + pure wheel | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - name: Set up Python | |
| uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 | |
| with: | |
| python-version: "3.14" | |
| pip-version: "25.3" | |
| pip-install: --group hatch | |
| - name: Build wheel and source distributions | |
| run: python -m hatch build | |
| - name: Store the distribution packages | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: sdist-and-pure-wheel | |
| path: dist/ | |
| publish-mypyc: | |
| if: github.event_name == 'release' | |
| needs: mypyc | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: release | |
| url: ${{ env.PROJECT }} | |
| permissions: | |
| id-token: write # Required for PyPI trusted publishing | |
| steps: | |
| - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| pattern: "*-mypyc-wheels" | |
| path: wheelhouse/ | |
| merge-multiple: true | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 | |
| with: | |
| packages-dir: wheelhouse/ | |
| verbose: true | |
| publish-hatch: | |
| if: github.event_name == 'release' | |
| needs: hatch | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: release | |
| url: ${{ env.PROJECT }} | |
| permissions: | |
| id-token: write # Required for PyPI trusted publishing | |
| steps: | |
| - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: sdist-and-pure-wheel | |
| path: dist/ | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 | |
| with: | |
| verbose: true |