Repository navigation
Add Windows ARM64 wheels and improve Linux ARM64 support #212
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: CI | |
| on: [push, pull_request] | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.x | |
| - name: Run lint | |
| run: | | |
| python -m pip install tox | |
| tox -e lint | |
| test: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest, windows-11-arm] | |
| python-version: [ | |
| ["3.9", "py39"], | |
| ["3.10", "py310"], | |
| ["3.11", "py311"], | |
| ["3.12", "py312"], | |
| ["3.13", "py313"], | |
| ["3.14", "py314"], | |
| ["3.14t", "py314t"], | |
| ] | |
| # setup-python only provides Windows ARM64 builds for Python 3.11+ | |
| exclude: | |
| - os: windows-11-arm | |
| python-version: ["3.9", "py39"] | |
| - os: windows-11-arm | |
| python-version: ["3.10", "py310"] | |
| steps: | |
| - name: Set git to use LF on Windows | |
| if: runner.os == 'Windows' | |
| run: | | |
| git config --global core.autocrlf false | |
| git config --global core.eol lf | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version[0] }} | |
| allow-prereleases: true | |
| - name: Run tests | |
| run: | | |
| python -m pip install tox | |
| tox -e ${{ matrix.python-version[1] }} | |
| package-sdist: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.x | |
| - name: Build source package | |
| run: | | |
| pip install build | |
| python -m build --sdist | |
| - name: Upload source package | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| name: sdist | |
| path: dist/ | |
| package-wheel: | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest, windows-11-arm] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| submodules: recursive | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: 3.x | |
| - name: Install cibuildwheel | |
| run: python -m pip install cibuildwheel | |
| # - name: Install Visual C++ for Python 2.7 | |
| # if: runner.os == 'Windows' | |
| # run: choco install vcpython27 -f -y | |
| - name: Build wheels | |
| run: python -m cibuildwheel --output-dir wheelhouse | |
| env: | |
| CIBW_BUILD: "cp39-* pp*-* cp314t-*" | |
| CIBW_SKIP: "*musllinux*" | |
| CIBW_ENABLE: pypy | |
| CIBW_BEFORE_BUILD_LINUX: yum install -y libffi-devel | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ matrix.wheel-tag }} | |
| path: ./wheelhouse/*.whl | |
| publish: | |
| runs-on: ubuntu-latest | |
| needs: [lint, test, package-sdist, package-wheel] | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
| environment: publish | |
| permissions: | |
| # Required by Trusted Publishing | |
| id-token: write | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| name: sdist | |
| path: dist/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: wheels-windows-latest-* | |
| path: dist/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: wheels-windows-11-arm-* | |
| path: dist/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: wheels-macos-latest-* | |
| path: dist/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: wheels-ubuntu-latest-* | |
| path: dist/ | |
| - uses: actions/download-artifact@v6 | |
| with: | |
| pattern: wheels-ubuntu-24.04-arm-* | |
| path: dist/ | |
| - name: Publish to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |