Skip to content

Commit 4dd7bf3

Browse files
authored
Builds for all other python versions (#201)
* chore: Builds for all other python versions * Windows ARM64 only supports starting at 3.11. * macOS builds only support Python 3.11+
1 parent b962430 commit 4dd7bf3

File tree

5 files changed

+162
-144
lines changed

5 files changed

+162
-144
lines changed

.github/workflows/build-binaries.yml

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,43 +65,53 @@ jobs:
6565
macos-x86_64:
6666
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
6767
runs-on: macos-15
68+
strategy:
69+
matrix:
70+
# Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
71+
# which is not available on macos-15 runners
72+
python-version: ["3.11", "3.12", "3.13", "3.14"]
6873
steps:
6974
- uses: actions/checkout@v4.2.2
7075
with:
7176
submodules: recursive
7277
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
7378
- uses: actions/setup-python@v5.5.0
7479
with:
75-
python-version: ${{ env.PYTHON_VERSION }}
80+
python-version: ${{ matrix.python-version }}
7681
architecture: x64
7782
- name: "Build wheels - x86_64"
7883
uses: PyO3/maturin-action@v1.49.1
7984
with:
8085
target: x86_64
81-
args: --release --locked --out dist -i python3
86+
args: --release --locked --out dist -i python${{ matrix.python-version }}
8287
- name: "Upload wheels"
8388
uses: actions/upload-artifact@v4.6.2
8489
with:
85-
name: wheels-macos-x86_64
90+
name: wheels-macos-x86_64-py${{ matrix.python-version }}
8691
path: dist
8792

8893
macos-aarch64:
8994
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
9095
runs-on: macos-15
96+
strategy:
97+
matrix:
98+
# Python 3.9/3.10 macOS builds require libintl from Homebrew gettext,
99+
# which is not available on macos-15 runners
100+
python-version: ["3.11", "3.12", "3.13", "3.14"]
91101
steps:
92102
- uses: actions/checkout@v4.2.2
93103
with:
94104
submodules: recursive
95105
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
96106
- uses: actions/setup-python@v5.5.0
97107
with:
98-
python-version: ${{ env.PYTHON_VERSION }}
108+
python-version: ${{ matrix.python-version }}
99109
architecture: arm64
100110
- name: "Build wheels - aarch64"
101111
uses: PyO3/maturin-action@v1.49.1
102112
with:
103113
target: aarch64
104-
args: --release --locked --out dist -i python3
114+
args: --release --locked --out dist -i python${{ matrix.python-version }}
105115
- name: "Test wheel - aarch64"
106116
run: |
107117
pip install ${{ env.PACKAGE_NAME }} --find-links dist/ --force-reinstall
@@ -110,7 +120,7 @@ jobs:
110120
- name: "Upload wheels"
111121
uses: actions/upload-artifact@v4.6.2
112122
with:
113-
name: wheels-aarch64-apple-darwin
123+
name: wheels-aarch64-apple-darwin-py${{ matrix.python-version }}
114124
path: dist
115125

116126
windows:
@@ -124,20 +134,21 @@ jobs:
124134
# NOTE: i686 disabled due to poor support in PyArrow and friends.
125135
#- target: i686-pc-windows-msvc
126136
# arch: x86
137+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
127138
steps:
128139
- uses: actions/checkout@v4.2.2
129140
with:
130141
submodules: recursive
131142
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
132143
- uses: actions/setup-python@v5.5.0
133144
with:
134-
python-version: ${{ env.PYTHON_VERSION }}
145+
python-version: ${{ matrix.python-version }}
135146
architecture: ${{ matrix.platform.arch }}
136147
- name: "Build wheels"
137148
uses: PyO3/maturin-action@v1.49.1
138149
with:
139150
target: ${{ matrix.platform.target }}
140-
args: --release --locked --out dist -i python3
151+
args: --release --locked --out dist -i python${{ matrix.python-version }}
141152
- name: "Test wheel"
142153
shell: bash
143154
run: |
@@ -147,25 +158,29 @@ jobs:
147158
- name: "Upload wheels"
148159
uses: actions/upload-artifact@v4.6.2
149160
with:
150-
name: wheels-${{ matrix.platform.target }}
161+
name: wheels-${{ matrix.platform.target }}-py${{ matrix.python-version }}
151162
path: dist
152163

153164
windows-aarch64:
154165
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }}
155166
runs-on: windows-11-arm
167+
strategy:
168+
matrix:
169+
# Python ARM64 Windows builds started with 3.11
170+
python-version: ["3.11", "3.12", "3.13", "3.14"]
156171
steps:
157172
- uses: actions/checkout@v4.2.2
158173
with:
159174
submodules: recursive
160175
- uses: actions-rust-lang/setup-rust-toolchain@v1.11.0
161176
- uses: actions/setup-python@v5.5.0
162177
with:
163-
python-version: ${{ env.PYTHON_VERSION }}
178+
python-version: ${{ matrix.python-version }}
164179
- name: "Build wheels"
165180
uses: PyO3/maturin-action@v1.49.1
166181
with:
167182
target: aarch64-pc-windows-msvc
168-
args: --release --locked --out dist -i python3
183+
args: --release --locked --out dist -i python${{ matrix.python-version }}
169184
- name: "Test wheel"
170185
shell: bash
171186
run: |
@@ -175,7 +190,7 @@ jobs:
175190
- name: "Upload wheels"
176191
uses: actions/upload-artifact@v4.6.2
177192
with:
178-
name: wheels-aarch64-pc-windows-msvc
193+
name: wheels-aarch64-pc-windows-msvc-py${{ matrix.python-version }}
179194
path: dist
180195

181196
linux:
@@ -199,7 +214,7 @@ jobs:
199214
uses: PyO3/maturin-action@v1.49.1
200215
with:
201216
manylinux: auto
202-
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
217+
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
203218
before-script-linux: |
204219
# If we're running on rhel centos, install needed packages.
205220
if command -v yum &> /dev/null; then
@@ -253,7 +268,7 @@ jobs:
253268
target: ${{ matrix.platform.target }}
254269
manylinux: auto
255270
docker-options: ${{ matrix.platform.maturin_docker_options }}
256-
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
271+
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
257272
env:
258273
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
259274
# Set the CFLAGS for the aarch64 target, defining the ARM architecture
@@ -309,7 +324,7 @@ jobs:
309324
with:
310325
target: ${{ matrix.target }}
311326
manylinux: musllinux_1_2
312-
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
327+
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
313328
- name: "Test wheel"
314329
if: matrix.target == 'x86_64-unknown-linux-musl'
315330
uses: addnab/docker-run-action@v3
@@ -347,7 +362,7 @@ jobs:
347362
with:
348363
target: ${{ matrix.platform.target }}
349364
manylinux: musllinux_1_2
350-
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13
365+
args: --release --locked --out dist -i python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
351366
- uses: uraimo/run-on-arch-action@v2
352367
name: Test wheel
353368
with:

Cargo.lock

Lines changed: 11 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ http = "1.1"
3838
indicatif = "0.17"
3939
nix = { version = "0.30", features = ["signal"] }
4040
pem = "3"
41-
pyo3 = { version = "0.24", features = ["extension-module"] }
41+
pyo3 = { version = "0.28", features = ["extension-module"] }
4242
promptly = "0.3"
4343
rand = "0.8"
4444
regex = "1"

pyproject.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ classifiers = [
2929
"Programming Language :: Python :: 3.11",
3030
"Programming Language :: Python :: 3.12",
3131
"Programming Language :: Python :: 3.13",
32+
"Programming Language :: Python :: 3.14",
3233
"Programming Language :: Python :: 3 :: Only",
3334
"Programming Language :: Rust",
3435
"Topic :: Software Development :: Libraries :: Python Modules",
@@ -37,7 +38,7 @@ classifiers = [
3738
dependencies = [
3839
"attrs==24.2.0",
3940
"httpx==0.28.1",
40-
"pydantic>=2.11.0,<3.0.0",
41+
"pydantic>=2.12.0,<3.0.0",
4142
"pydantic-core>=2.27.0,<3.0.0",
4243
"python-dateutil==2.9.0.post0",
4344
]

0 commit comments

Comments
 (0)