Build Python 3.13 wheels, require macOS >= 13 (was 10.9) #150
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: CI | |
| on: [push, pull_request] | |
| permissions: read-all | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: | |
| - os-image: ubuntu-latest | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_x86_64 | |
| python-arch: 'x86_64' | |
| python-version: '3.9' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-latest | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_x86_64 | |
| python-arch: 'x86_64' | |
| python-version: '3.10' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-latest | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_x86_64 | |
| python-arch: 'x86_64' | |
| python-version: '3.11' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-latest | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_x86_64 | |
| python-arch: 'x86_64' | |
| python-version: '3.12' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-latest | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_x86_64 | |
| python-arch: 'x86_64' | |
| python-version: '3.13' | |
| numpy-version: '2.2.*' | |
| - os-image: ubuntu-22.04-arm | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_aarch64 | |
| python-arch: 'aarch64' | |
| python-version: '3.9' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-22.04-arm | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_aarch64 | |
| python-arch: 'aarch64' | |
| python-version: '3.10' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-22.04-arm | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_aarch64 | |
| python-arch: 'aarch64' | |
| python-version: '3.11' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-22.04-arm | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_aarch64 | |
| python-arch: 'aarch64' | |
| python-version: '3.12' | |
| numpy-version: '2.0.*' | |
| - os-image: ubuntu-22.04-arm | |
| os-name: linux | |
| docker-image: quay.io/pypa/manylinux2014_aarch64 | |
| python-arch: 'aarch64' | |
| python-version: '3.13' | |
| numpy-version: '2.2.*' | |
| - os-image: macos-13 | |
| os-name: mac | |
| macos-min-version: '13.0' | |
| python-arch: 'x86_64' | |
| python-version: '3.9' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-13 | |
| os-name: mac | |
| macos-min-version: '13.0' | |
| python-arch: 'x86_64' | |
| python-version: '3.10' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-13 | |
| os-name: mac | |
| macos-min-version: '13.0' | |
| python-arch: 'x86_64' | |
| python-version: '3.11' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-13 | |
| os-name: mac | |
| macos-min-version: '13.0' | |
| python-arch: 'x86_64' | |
| python-version: '3.12' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-13 | |
| os-name: mac | |
| macos-min-version: '13.0' | |
| python-arch: 'x86_64' | |
| python-version: '3.13' | |
| numpy-version: '2.2.*' | |
| - os-image: macos-14 # M1 | |
| os-name: mac | |
| python-arch: arm64 | |
| macos-min-version: '14.0' | |
| python-version: '3.10' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-14 # M1 | |
| os-name: mac | |
| python-arch: arm64 | |
| macos-min-version: '14.0' | |
| python-version: '3.11' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-14 # M1 | |
| os-name: mac | |
| python-arch: arm64 | |
| macos-min-version: '14.0' | |
| python-version: '3.12' | |
| numpy-version: '2.0.*' | |
| - os-image: macos-14 # M1 | |
| os-name: mac | |
| python-arch: arm64 | |
| macos-min-version: '14.0' | |
| python-version: '3.13' | |
| numpy-version: '2.2.*' | |
| - os-image: windows-2019 | |
| os-name: windows | |
| python-arch: 'x86_64' | |
| python-version: '3.9' | |
| numpy-version: '2.0.*' | |
| - os-image: windows-2019 | |
| os-name: windows | |
| python-arch: 'x86_64' | |
| python-version: '3.10' | |
| numpy-version: '2.0.*' | |
| - os-image: windows-2019 | |
| os-name: windows | |
| python-arch: 'x86_64' | |
| python-version: '3.11' | |
| numpy-version: '2.0.*' | |
| - os-image: windows-2019 | |
| os-name: windows | |
| python-arch: 'x86_64' | |
| python-version: '3.12' | |
| numpy-version: '2.0.*' | |
| - os-image: windows-2019 | |
| os-name: windows | |
| python-arch: 'x86_64' | |
| python-version: '3.13' | |
| numpy-version: '2.2.*' | |
| runs-on: ${{ matrix.config.os-image }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: Build wheels (Linux) | |
| if: matrix.config.os-name == 'linux' | |
| run: docker run --rm -e PYTHON_ARCH -e PYTHON_VERSION -e NUMPY_VERSION -v `pwd`:/io ${{ matrix.config.docker-image }} /io/.github/scripts/build-linux.sh | |
| env: | |
| PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
| PYTHON_VERSION: ${{ matrix.config.python-version }} | |
| NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
| - name: Build wheels (macOS) | |
| if: matrix.config.os-name == 'mac' | |
| run: .github/scripts/build-macos.sh | |
| env: | |
| MACOS_MIN_VERSION: ${{ matrix.config.macos-min-version }} | |
| PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
| PYTHON_VERSION: ${{ matrix.config.python-version }} | |
| NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
| - name: Setup Python (Windows) | |
| if: matrix.config.os-name == 'windows' | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: ${{ matrix.config.python-version }} | |
| - name: Remove pre-installed vcpkg | |
| if: matrix.config.os-name == 'windows' | |
| run: | | |
| rm -rf "$VCPKG_INSTALLATION_ROOT" | |
| echo "VCPKG_INSTALLATION_ROOT=" >> $GITHUB_ENV | |
| echo "VCPKG_ROOT=" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Build wheels (Windows) | |
| if: matrix.config.os-name == 'windows' | |
| run: .github/scripts/build-windows.ps1 | |
| shell: pwsh | |
| env: | |
| PYTHON_VERSION: ${{ matrix.config.python-version }} | |
| PYTHON_ARCH: ${{ matrix.config.python-arch }} | |
| NUMPY_VERSION: ${{ matrix.config.numpy-version }} | |
| - name: Store wheels as artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel-${{ matrix.config.os-name }}-${{ matrix.config.python-arch }}-${{ matrix.config.python-version }} | |
| path: dist | |
| docs: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.10' | |
| - name: Download wheels from artifact storage | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: wheel-* | |
| merge-multiple: true | |
| path: dist | |
| - name: Install lensfunpy from wheel | |
| run: | | |
| pip install dist/lensfunpy*cp310*manylinux*x86_64*.whl | |
| pip install -r dev-requirements.txt | |
| - name: Build docs | |
| run: sphinx-build -b html docs dist-docs | |
| - name: Store docs HTML as artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: dist-docs | |
| publish-wheels: | |
| runs-on: ubuntu-latest | |
| needs: [build, docs] | |
| if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
| steps: | |
| - name: Download wheels from artifact storage | |
| uses: actions/download-artifact@v4 | |
| with: | |
| pattern: wheel-* | |
| merge-multiple: true | |
| path: dist | |
| - name: Setup Python | |
| uses: actions/setup-python@v4 | |
| - name: Upload wheels to PyPI | |
| run: | | |
| pip install twine | |
| twine upload -u __token__ -p ${{ secrets.PYPI_TOKEN }} --skip-existing dist/* | |
| publish-docs: | |
| runs-on: ubuntu-latest | |
| needs: [publish-wheels] | |
| permissions: | |
| pages: write # to deploy to Pages | |
| id-token: write # to verify the deployment originates from an appropriate source | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |