diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 41d92f9..cb8afc2 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -21,13 +21,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - name: Run pre-commit checks run: | @@ -40,7 +35,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Build sdist - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main with: command: sdist args: --out dist @@ -52,34 +47,42 @@ jobs: linux: needs: [code_checks] - runs-on: ubuntu-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - # s390x currently has issues with gcc - target: [x86_64, aarch64, armv7, ppc64le] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 + # s390x currently has issues building openssl + # - runner: ubuntu-latest + # target: s390x + - runner: ubuntu-latest + target: ppc64le steps: - uses: actions/checkout@v4 + - name: Temporary fix for openssl regression #25366 + run: cargo update openssl-src --precise 300.3.1+3.3.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - - name: Temporary fix for openssl regression #25366 - run: cargo update openssl-src --precise 300.3.1+3.3.1 - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main env: PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" OPENSSL_NO_VENDOR: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter - # sccache: 'true' # Disabled due to issues with sccache on linux + target: ${{ matrix.platform.target }} + # args: --release --out dist --find-interpreter <-- TODO: Add this back when maturin supports it + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + # sccache: 'true' manylinux: auto before-script-linux: | # If we're running on rhel centos, install needed packages. thx s3rius! @@ -87,12 +90,16 @@ jobs: yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic else # If we're running on debian-based system. - apt update -y && apt-get install -y libssl-dev openssl pkg-config + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi + # Create symlink for x86 + if [ "${{ matrix.platform.target }}" = "x86" ]; then + ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so fi - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-linux-${{ matrix.target }} + name: wheels-linux-${{ matrix.platform.target }} path: dist - name: Install and Test shell: bash @@ -101,95 +108,126 @@ jobs: pip install .[dev] --find-links dist --force-reinstall pytest -v tests/ - windows: + musllinux: needs: [code_checks] - runs-on: windows-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x64, x86] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 steps: - uses: actions/checkout@v4 + - name: Temporary fix for openssl regression #25366 + run: cargo update openssl-src --precise 300.3.1+3.3.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - architecture: ${{ matrix.target }} - - name: Set Perl environment variables + - name: Build wheels + uses: PyO3/maturin-action@main + env: + PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + # sccache: 'true' + manylinux: musllinux_1_2 + before-script-linux: | + # If we're running on rhel centos, install needed packages. thx s3rius! + if command -v yum &> /dev/null; then + yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic + else + # If we're running on debian-based system. + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-musllinux-${{ matrix.platform.target }} + path: dist + - name: Install and Test + shell: bash + run: | + set -e + pip install .[dev] --find-links dist --force-reinstall + pytest -v tests/ + + windows: + needs: [code_checks] + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 + steps: + - uses: actions/checkout@v4 + - name: Install OpenSSL + shell: powershell run: | - echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - - name: Remove wincred from docker config - run: sed -i '/wincred/d' ~/.docker/config.json + choco install openssl + # using main for windows due to this issue + # https://github.com/actions/setup-python/issues/935 + - uses: actions/setup-python@main + with: + python-version-file: 'pyproject.toml' + check-latest: true + allow-prereleases: true + architecture: ${{ matrix.platform.target }} - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main + env: + OPENSSL_DIR: C:\Program Files\OpenSSL-Win64 + OPENSSL_STATIC: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-windows-${{ matrix.target }} + name: wheels-windows-${{ matrix.platform.target }} path: dist - - name: Install - shell: bash - run: pip install .[dev] --find-links dist --force-reinstall - # Disabled on windows due to issues with docker - # BuildError: no matching manifest for windows/amd64 ... in the manifest list entries - # - name: Test - # if: ${{ !startsWith(matrix.target, 'x86') }} - # shell: bash - # run: pytest -v tests/ macos: needs: [code_checks] - runs-on: macos-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, aarch64] - env: - OPENSSL_NO_VENDOR: 1 - DOCKER_HOST: unix:///var/run/docker.sock + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 steps: - uses: actions/checkout@v4 + - name: Install OpenSSL + run: | + brew install openssl@1.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - name: Set OPENSSL_DIR run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main with: target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-macos-${{ matrix.target }} + name: wheels-macos-${{ matrix.platform.target }} path: dist - # - name: setup-docker - # run: | - # brew install docker - # open --background -a Docker - # while ! docker info &> /dev/null; do sleep 1; done - - name: Install - shell: bash - run: pip install .[dev] --find-links dist --force-reinstall - # Disabled on macos due to issues with docker - # - name: Test - # shell: bash - # run: pytest -v tests/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5120b3d..765c300 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,8 +1,3 @@ -# This file was initially autogenerated by maturin v1.5.0 -# To update, run -# -# maturin generate-ci github -# name: Release on: @@ -14,34 +9,70 @@ permissions: contents: read jobs: - linux: + code_checks: runs-on: ubuntu-latest - strategy: - matrix: - # s390x currently has issues with gcc - target: [x86_64, aarch64, armv7, ppc64le] steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true + - name: Run pre-commit checks + run: | + pip install pre-commit + pre-commit run --all-files + + sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build sdist + uses: PyO3/maturin-action@main + with: + command: sdist + args: --out dist + - name: Upload sdist + uses: actions/upload-artifact@v4 + with: + name: wheels-sdist + path: dist + + linux: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 + # s390x currently has issues building openssl + # - runner: ubuntu-latest + # target: s390x + - runner: ubuntu-latest + target: ppc64le + steps: + - uses: actions/checkout@v4 - name: Temporary fix for openssl regression #25366 run: cargo update openssl-src --precise 300.3.1+3.3.1 + - uses: actions/setup-python@v5 + with: + python-version-file: 'pyproject.toml' + check-latest: true + allow-prereleases: true - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main env: PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" OPENSSL_NO_VENDOR: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 # sccache: 'true' manylinux: auto before-script-linux: | @@ -50,103 +81,153 @@ jobs: yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic else # If we're running on debian-based system. - apt update -y && apt-get install -y libssl-dev openssl pkg-config + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi + # Create symlink for x86 + if [ "${{ matrix.platform.target }}" = "x86" ]; then + ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so fi - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-linux-${{ matrix.target }} + name: wheels-linux-${{ matrix.platform.target }} path: dist - windows: - runs-on: windows-latest + musllinux: + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x64, x86] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 steps: - uses: actions/checkout@v4 + - name: Temporary fix for openssl regression #25366 + run: cargo update openssl-src --precise 300.3.1+3.3.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - architecture: ${{ matrix.target }} - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main + env: + PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter - sccache: 'true' + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + # sccache: 'true' + manylinux: musllinux_1_2 + before-script-linux: | + # If we're running on rhel centos, install needed packages. thx s3rius! + if command -v yum &> /dev/null; then + yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic + else + # If we're running on debian-based system. + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-windows-${{ matrix.target }} + name: wheels-musllinux-${{ matrix.platform.target }} path: dist - macos: - runs-on: macos-latest + windows: + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, aarch64] - env: - OPENSSL_NO_VENDOR: 1 + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - name: Install OpenSSL + shell: powershell + run: | + choco install openssl + # using main for windows due to this issue + # https://github.com/actions/setup-python/issues/935 + - uses: actions/setup-python@main with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - - name: Set OPENSSL_DIR - run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV + architecture: ${{ matrix.platform.target }} - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main + env: + OPENSSL_DIR: C:\Program Files\OpenSSL-Win64 + OPENSSL_STATIC: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-macos-${{ matrix.target }} + name: wheels-windows-${{ matrix.platform.target }} path: dist - sdist: - runs-on: ubuntu-latest + macos: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 steps: - uses: actions/checkout@v4 - - name: Build sdist - uses: PyO3/maturin-action@v1 + - name: Install OpenSSL + run: | + brew install openssl@1.1 + - uses: actions/setup-python@v5 with: - command: sdist - args: --out dist - - name: Upload sdist + python-version-file: 'pyproject.toml' + check-latest: true + allow-prereleases: true + - name: Set OPENSSL_DIR + run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV + - name: Build wheels + uses: PyO3/maturin-action@main + with: + target: ${{ matrix.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + sccache: 'true' + - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-sdist + name: wheels-macos-${{ matrix.platform.target }} path: dist release: - name: Release - runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" - needs: [linux, windows, macos, sdist] - steps: - - uses: actions/download-artifact@v4 - - name: Publish to PyPI - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} - with: - command: upload - args: --non-interactive --skip-existing wheels-*/* + name: Release + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + needs: [linux, musllinux, windows, macos, sdist] + permissions: + id-token: write + contents: write + attestations: write + steps: + - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: 'wheels-*/*' + - name: Publish to PyPI + if: "startsWith(github.ref, 'refs/tags/')" + uses: PyO3/maturin-action@main + env: + MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} + with: + command: upload + args: --non-interactive --skip-existing wheels-*/* diff --git a/.github/workflows/weekly_build_and_test.yml b/.github/workflows/weekly_build_and_test.yml index 988d41f..56702e3 100644 --- a/.github/workflows/weekly_build_and_test.yml +++ b/.github/workflows/weekly_build_and_test.yml @@ -3,6 +3,11 @@ name: Unreleased Python Build and Test on: schedule: - cron: '0 0 * * 3' + workflow_dispatch: + inputs: + python-version: + description: 'Python version to use' + default: '3.x' permissions: contents: read @@ -14,13 +19,8 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - name: Run pre-commit checks run: | @@ -33,7 +33,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Build sdist - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main with: command: sdist args: --out dist @@ -45,32 +45,41 @@ jobs: linux: needs: [code_checks] - runs-on: ubuntu-latest + runs-on: ${{ matrix.platform.runner }} strategy: - fail-fast: false matrix: - target: [x86_64, aarch64, armv7, ppc64le, s390x] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 + # s390x currently has issues building openssl + # - runner: ubuntu-latest + # target: s390x + - runner: ubuntu-latest + target: ppc64le steps: - uses: actions/checkout@v4 + - name: Temporary fix for openssl regression #25366 + run: cargo update openssl-src --precise 300.3.1+3.3.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main env: PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" OPENSSL_NO_VENDOR: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter - # sccache: 'true' # Disabled due to issues with sccache on linux + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + # sccache: 'true' manylinux: auto before-script-linux: | # If we're running on rhel centos, install needed packages. thx s3rius! @@ -78,12 +87,16 @@ jobs: yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic else # If we're running on debian-based system. - apt update -y && apt-get install -y libssl-dev openssl pkg-config + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi + # Create symlink for x86 + if [ "${{ matrix.platform.target }}" = "x86" ]; then + ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so fi - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-linux-${{ matrix.target }} + name: wheels-linux-${{ matrix.platform.target }} path: dist - name: Install and Test shell: bash @@ -92,97 +105,126 @@ jobs: pip install .[dev] --find-links dist --force-reinstall pytest -v tests/ - windows: + musllinux: needs: [code_checks] - runs-on: windows-latest + runs-on: ${{ matrix.platform.runner }} strategy: - fail-fast: false matrix: - target: [x64, x86] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 steps: - uses: actions/checkout@v4 + - name: Temporary fix for openssl regression #25366 + run: cargo update openssl-src --precise 300.3.1+3.3.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - architecture: ${{ matrix.target }} - - name: Set Perl environment variables + - name: Build wheels + uses: PyO3/maturin-action@main + env: + PKG_CONFIG_PATH: "/usr/share/miniconda/lib/pkgconfig/" + with: + target: ${{ matrix.platform.target }} + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 + # sccache: 'true' + manylinux: musllinux_1_2 + before-script-linux: | + # If we're running on rhel centos, install needed packages. thx s3rius! + if command -v yum &> /dev/null; then + yum update -y && yum install -y gcc perl-core openssl openssl-devel pkgconfig libatomic + else + # If we're running on debian-based system. + apt update -y && apt-get install -y libssl-dev openssl pkg-config libatomic1 + fi + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-musllinux-${{ matrix.platform.target }} + path: dist + - name: Install and Test + shell: bash run: | - echo "PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - echo "OPENSSL_SRC_PERL=$((where.exe perl)[0])" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 - - name: Remove wincred from docker config - run: sed -i '/wincred/d' ~/.docker/config.json + set -e + pip install .[dev] --find-links dist --force-reinstall + pytest -v tests/ + + windows: + needs: [code_checks] + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 + steps: + - uses: actions/checkout@v4 + - name: Install OpenSSL + shell: powershell + run: | + choco install openssl + # using main for windows due to this issue + # https://github.com/actions/setup-python/issues/935 + - uses: actions/setup-python@main + with: + python-version-file: 'pyproject.toml' + check-latest: true + allow-prereleases: true + architecture: ${{ matrix.platform.target }} - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main + env: + OPENSSL_DIR: C:\Program Files\OpenSSL-Win64 + OPENSSL_STATIC: 1 with: - target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-windows-${{ matrix.target }} + name: wheels-windows-${{ matrix.platform.target }} path: dist - - name: Install - shell: bash - run: pip install .[dev] --find-links dist --force-reinstall - # Disabled on windows due to issues with docker - # BuildError: no matching manifest for windows/amd64 ... in the manifest list entries - # - name: Test - # if: ${{ !startsWith(matrix.target, 'x86') }} - # shell: bash - # run: pytest -v tests/ macos: needs: [code_checks] - runs-on: macos-latest + runs-on: ${{ matrix.platform.runner }} strategy: - fail-fast: false matrix: - target: [x86_64, aarch64] - env: - OPENSSL_NO_VENDOR: 1 - DOCKER_HOST: unix:///var/run/docker.sock + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 steps: - uses: actions/checkout@v4 + - name: Install OpenSSL + run: | + brew install openssl@1.1 - uses: actions/setup-python@v5 with: - python-version: | - 3.8 - 3.9 - 3.10 - 3.11 - 3.12 - 3.13 + python-version-file: 'pyproject.toml' + check-latest: true allow-prereleases: true - name: Set OPENSSL_DIR run: echo "OPENSSL_DIR=$(brew --prefix openssl@3)" >> $GITHUB_ENV - name: Build wheels - uses: PyO3/maturin-action@v1 + uses: PyO3/maturin-action@main with: target: ${{ matrix.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i 3.8 3.9 3.10 3.11 3.12 3.13 pypy3.8 pypy3.9 pypy3.10 sccache: 'true' - name: Upload wheels uses: actions/upload-artifact@v4 with: - name: wheels-macos-${{ matrix.target }} + name: wheels-macos-${{ matrix.platform.target }} path: dist - # - name: setup-docker - # run: | - # brew install docker - # open --background -a Docker - # while ! docker info &> /dev/null; do sleep 1; done - - name: Install - shell: bash - run: pip install .[dev] --find-links dist --force-reinstall - # Disabled on macos due to issues with docker - # - name: Test - # shell: bash - # run: pytest -v tests/