Skip to content

mypyc build improvements #47

mypyc build improvements

mypyc build improvements #47

Workflow file for this run

name: Build wheels and publish to PyPI
on:
release:
types: [published]
pull_request:
push:
branches:
- main
permissions:
contents: read
jobs:
main:
name: sdist + pure wheel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up latest Python
uses: actions/setup-python@v4
with:
python-version: "*"
- name: Install latest pip, build, twine
run: |
python -m pip install --upgrade --disable-pip-version-check pip
python -m pip install --upgrade build twine
- name: Build wheel and source distributions
run: python -m build
- if: github.event_name == 'release'
name: Upload to PyPI via Twine
env:
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: twine upload --verbose -u '__token__' dist/*
generate_wheels_matrix:
name: Generate wheels matrix
runs-on: ubuntu-latest
outputs:
include: ${{ steps.set-matrix.outputs.include }}
steps:
- uses: actions/checkout@v3
- name: Install cibuildwheel and pypyp
run: |
pipx install cibuildwheel==2.15.0
pipx install pypyp==1
- id: set-matrix
if: github.event_name != 'pull_request'
run: |
MATRIX=$(
{
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"})'
} | pyp 'json.dumps(list(map(json.loads, lines)))'
)
echo "include=$MATRIX" | tee -a $GITHUB_OUTPUT
env:
CIBW_ARCHS_LINUX: x86_64
CIBW_ARCHS_MACOS: x86_64 arm64
CIBW_ARCHS_WINDOWS: AMD64
- id: set-matrix

Check failure on line 70 in .github/workflows/pypi_upload.yml

View workflow run for this annotation

GitHub Actions / Build wheels and publish to PyPI

Invalid workflow file

The workflow is not valid. .github/workflows/pypi_upload.yml (Line: 70, Col: 13): The identifier 'set-matrix' may not be used more than once within the same scope.
if: github.event_name == 'pull_request'
run: |
MATRIX=$(
cibuildwheel --print-build-identifiers --platform linux \
| pyp 'json.dumps({"only": x, "os": "ubuntu-latest"})' \
| pyp 'json.dumps(list(map(json.loads, lines)))'
)
echo "include=$MATRIX" | tee -a $GITHUB_OUTPUT
env:
CIBW_ARCHS_LINUX: x86_64
mypyc:
name: mypy wheels ${{ matrix.only }}
needs: generate_wheels_matrix
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.generate_wheels_matrix.outputs.include) }}
steps:
- uses: actions/checkout@v3
- uses: pypa/[email protected]
with:
only: ${{ matrix.only }}
- name: Upload wheels as workflow artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}-mypyc-wheels
path: ./wheelhouse/*.whl
- if: github.event_name == 'release'
name: Upload wheels to PyPI via Twine
env:
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: pipx run twine upload --verbose -u '__token__' wheelhouse/*.whl
update-stable-branch:
name: Update stable branch
needs: [main, mypyc]
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout stable branch
uses: actions/checkout@v3
with:
ref: stable
fetch-depth: 0
- if: github.event_name == 'release'
name: Update stable branch to release tag & push
run: |
git reset --hard ${{ github.event.release.tag_name }}
git push