Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 31 additions & 16 deletions .github/workflows/build-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,43 +65,53 @@ jobs:
macos-x86_64:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
runs-on: macos-15
strategy:
matrix:
# Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
# which is not available on macos-15 runners
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4.2.2
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
- uses: actions/setup-python@v5.5.0
with:
python-version: ${{ env.PYTHON_VERSION }}
python-version: ${{ matrix.python-version }}
architecture: x64
- name: "Build wheels - x86_64"
uses: PyO3/maturin-action@v1.49.1
with:
target: x86_64
args: --release --locked --out dist -i python3
args: --release --locked --out dist -i python${{ matrix.python-version }}
- name: "Upload wheels"
uses: actions/upload-artifact@v4.6.2
with:
name: wheels-macos-x86_64
name: wheels-macos-x86_64-py${{ matrix.python-version }}
path: dist

macos-aarch64:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
runs-on: macos-15
strategy:
matrix:
# Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
# which is not available on macos-15 runners
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4.2.2
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
- uses: actions/setup-python@v5.5.0
with:
python-version: ${{ env.PYTHON_VERSION }}
python-version: ${{ matrix.python-version }}
architecture: arm64
- name: "Build wheels - aarch64"
uses: PyO3/maturin-action@v1.49.1
with:
target: aarch64
args: --release --locked --out dist -i python3
args: --release --locked --out dist -i python${{ matrix.python-version }}
- name: "Test wheel - aarch64"
run: |
pip install ${{ env.PACKAGE_NAME }} --find-links dist/ --force-reinstall
Expand All @@ -110,7 +120,7 @@ jobs:
- name: "Upload wheels"
uses: actions/upload-artifact@v4.6.2
with:
name: wheels-aarch64-apple-darwin
name: wheels-aarch64-apple-darwin-py${{ matrix.python-version }}
path: dist

windows:
Expand All @@ -124,20 +134,21 @@ jobs:
# NOTE: i686 disabled due to poor support in PyArrow and friends.
#- target: i686-pc-windows-msvc
# arch: x86
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4.2.2
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
- uses: actions/setup-python@v5.5.0
with:
python-version: ${{ env.PYTHON_VERSION }}
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.platform.arch }}
- name: "Build wheels"
uses: PyO3/maturin-action@v1.49.1
with:
target: ${{ matrix.platform.target }}
args: --release --locked --out dist -i python3
args: --release --locked --out dist -i python${{ matrix.python-version }}
- name: "Test wheel"
shell: bash
run: |
Expand All @@ -147,25 +158,29 @@ jobs:
- name: "Upload wheels"
uses: actions/upload-artifact@v4.6.2
with:
name: wheels-${{ matrix.platform.target }}
name: wheels-${{ matrix.platform.target }}-py${{ matrix.python-version }}
path: dist

windows-aarch64:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
runs-on: windows-11-arm
strategy:
matrix:
# Python ARM64 Windows builds started with 3.11
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4.2.2
with:
submodules: recursive
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
- uses: actions/setup-python@v5.5.0
with:
python-version: ${{ env.PYTHON_VERSION }}
python-version: ${{ matrix.python-version }}
- name: "Build wheels"
uses: PyO3/maturin-action@v1.49.1
with:
target: aarch64-pc-windows-msvc
args: --release --locked --out dist -i python3
args: --release --locked --out dist -i python${{ matrix.python-version }}
- name: "Test wheel"
shell: bash
run: |
Expand All @@ -175,7 +190,7 @@ jobs:
- name: "Upload wheels"
uses: actions/upload-artifact@v4.6.2
with:
name: wheels-aarch64-pc-windows-msvc
name: wheels-aarch64-pc-windows-msvc-py${{ matrix.python-version }}
path: dist

linux:
Expand All @@ -199,7 +214,7 @@ jobs:
uses: PyO3/maturin-action@v1.49.1
with:
manylinux: auto
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
before-script-linux: |
# If we're running on rhel centos, install needed packages.
if command -v yum &> /dev/null; then
Expand Down Expand Up @@ -253,7 +268,7 @@ jobs:
target: ${{ matrix.platform.target }}
manylinux: auto
docker-options: ${{ matrix.platform.maturin_docker_options }}
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
env:
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
# Set the CFLAGS for the aarch64 target, defining the ARM architecture
Expand Down Expand Up @@ -309,7 +324,7 @@ jobs:
with:
target: ${{ matrix.target }}
manylinux: musllinux_1_2
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
- name: "Test wheel"
if: matrix.target == 'x86_64-unknown-linux-musl'
uses: addnab/docker-run-action@v3
Expand Down Expand Up @@ -347,7 +362,7 @@ jobs:
with:
target: ${{ matrix.platform.target }}
manylinux: musllinux_1_2
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
- uses: uraimo/run-on-arch-action@v2
name: Test wheel
with:
Expand Down
51 changes: 11 additions & 40 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ http = "1.1"
indicatif = "0.17"
nix = { version = "0.30", features = ["signal"] }
pem = "3"
pyo3 = { version = "0.24", features = ["extension-module"] }
pyo3 = { version = "0.28", features = ["extension-module"] }
promptly = "0.3"
rand = "0.8"
regex = "1"
Expand Down
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ classifiers = [
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Rust",
"Topic :: Software Development :: Libraries :: Python Modules",
Expand All @@ -37,7 +38,7 @@ classifiers = [
dependencies = [
"attrs==24.2.0",
"httpx==0.28.1",
"pydantic>=2.11.0,<3.0.0",
"pydantic>=2.12.0,<3.0.0",
"pydantic-core>=2.27.0,<3.0.0",
"python-dateutil==2.9.0.post0",
]
Expand Down
Loading