Skip to content

Commit 8e1fd4d

Browse files
committed
Expand wheel matrix for Python 3.13/3.14
Add macOS/Windows entries for free-threaded variants. Include distinct artifact suffixes and use explicit maturin interpreter settings. Add manylinux entries for the latest Python versions with similar configurations.
1 parent 7aff363 commit 8e1fd4d

File tree

1 file changed

+82
-9
lines changed

1 file changed

+82
-9
lines changed

.github/workflows/build.yml

Lines changed: 82 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,49 @@ jobs:
7474
strategy:
7575
fail-fast: false
7676
matrix:
77-
python-version: ["3.10"]
78-
os: [macos-latest, windows-latest]
77+
include:
78+
- os: macos-latest
79+
python-version: "3.10"
80+
artifact-suffix: ""
81+
- os: macos-latest
82+
python-version: "3.11"
83+
artifact-suffix: ""
84+
- os: macos-latest
85+
python-version: "3.12"
86+
artifact-suffix: ""
87+
- os: macos-latest
88+
python-version: "3.13"
89+
artifact-suffix: ""
90+
- os: macos-latest
91+
python-version: "3.14"
92+
artifact-suffix: ""
93+
- os: macos-latest
94+
python-version: "3.13t"
95+
artifact-suffix: "-freethreaded"
96+
- os: macos-latest
97+
python-version: "3.14t"
98+
artifact-suffix: "-freethreaded"
99+
- os: windows-latest
100+
python-version: "3.10"
101+
artifact-suffix: ""
102+
- os: windows-latest
103+
python-version: "3.11"
104+
artifact-suffix: ""
105+
- os: windows-latest
106+
python-version: "3.12"
107+
artifact-suffix: ""
108+
- os: windows-latest
109+
python-version: "3.13"
110+
artifact-suffix: ""
111+
- os: windows-latest
112+
python-version: "3.14"
113+
artifact-suffix: ""
114+
- os: windows-latest
115+
python-version: "3.13t"
116+
artifact-suffix: "-freethreaded"
117+
- os: windows-latest
118+
python-version: "3.14t"
119+
artifact-suffix: "-freethreaded"
79120
steps:
80121
- uses: actions/checkout@v5
81122

@@ -105,7 +146,7 @@ jobs:
105146
- name: Build Python package
106147
run: |
107148
uv sync --dev --no-install-package datafusion
108-
uv run --no-project maturin build --release --strip --features substrait
149+
uv run --no-project maturin build --release --strip --features substrait --interpreter python
109150
110151
- name: List Windows wheels
111152
if: matrix.os == 'windows-latest'
@@ -121,7 +162,7 @@ jobs:
121162
- name: Archive wheels
122163
uses: actions/upload-artifact@v4
123164
with:
124-
name: dist-${{ matrix.os }}
165+
name: dist-${{ matrix.os }}${{ matrix.artifact-suffix }}
125166
path: target/wheels/*
126167

127168
build-macos-x86_64:
@@ -131,7 +172,21 @@ jobs:
131172
strategy:
132173
fail-fast: false
133174
matrix:
134-
python-version: ["3.10"]
175+
include:
176+
- python-version: "3.10"
177+
artifact-suffix: ""
178+
- python-version: "3.11"
179+
artifact-suffix: ""
180+
- python-version: "3.12"
181+
artifact-suffix: ""
182+
- python-version: "3.13"
183+
artifact-suffix: ""
184+
- python-version: "3.14"
185+
artifact-suffix: ""
186+
- python-version: "3.13t"
187+
artifact-suffix: "-freethreaded"
188+
- python-version: "3.14t"
189+
artifact-suffix: "-freethreaded"
135190
steps:
136191
- uses: actions/checkout@v5
137192

@@ -161,21 +216,29 @@ jobs:
161216
- name: Build Python package
162217
run: |
163218
uv sync --dev --no-install-package datafusion
164-
uv run --no-project maturin build --release --strip --features substrait
219+
uv run --no-project maturin build --release --strip --features substrait --interpreter python
165220
166221
- name: List Mac wheels
167222
run: find target/wheels/
168223

169224
- name: Archive wheels
170225
uses: actions/upload-artifact@v4
171226
with:
172-
name: dist-macos-aarch64
227+
name: dist-macos-aarch64${{ matrix.artifact-suffix }}
173228
path: target/wheels/*
174229

175230
build-manylinux-x86_64:
176231
needs: [generate-license]
177232
name: Manylinux x86_64
178233
runs-on: ubuntu-latest
234+
strategy:
235+
fail-fast: false
236+
matrix:
237+
include:
238+
- interpreter: "3.10 3.11 3.12 3.13 3.14"
239+
artifact-suffix: ""
240+
- interpreter: "3.13t 3.14t"
241+
artifact-suffix: "-freethreaded"
179242
steps:
180243
- uses: actions/checkout@v5
181244
- run: rm LICENSE.txt
@@ -194,17 +257,26 @@ jobs:
194257
target: x86_64
195258
manylinux: auto
196259
rustup-components: rust-std rustfmt # Keep them in one line due to https://github.com/PyO3/maturin-action/issues/153
260+
interpreter: ${{ matrix.interpreter }}
197261
args: --release --manylinux 2014 --features protoc,substrait
198262
- name: Archive wheels
199263
uses: actions/upload-artifact@v4
200264
with:
201-
name: dist-manylinux-x86_64
265+
name: dist-manylinux-x86_64${{ matrix.artifact-suffix }}
202266
path: target/wheels/*
203267

204268
build-manylinux-aarch64:
205269
needs: [generate-license]
206270
name: Manylinux arm64
207271
runs-on: ubuntu-latest
272+
strategy:
273+
fail-fast: false
274+
matrix:
275+
include:
276+
- interpreter: "3.10 3.11 3.12 3.13 3.14"
277+
artifact-suffix: ""
278+
- interpreter: "3.13t 3.14t"
279+
artifact-suffix: "-freethreaded"
208280
steps:
209281
- uses: actions/checkout@v5
210282
- run: rm LICENSE.txt
@@ -224,11 +296,12 @@ jobs:
224296
# Use manylinux_2_28-cross because the manylinux2014-cross has GCC 4.8.5, which causes the build to fail
225297
manylinux: 2_28
226298
rustup-components: rust-std rustfmt # Keep them in one line due to https://github.com/PyO3/maturin-action/issues/153
299+
interpreter: ${{ matrix.interpreter }}
227300
args: --release --features protoc,substrait
228301
- name: Archive wheels
229302
uses: actions/upload-artifact@v4
230303
with:
231-
name: dist-manylinux-aarch64
304+
name: dist-manylinux-aarch64${{ matrix.artifact-suffix }}
232305
path: target/wheels/*
233306

234307
build-sdist:

0 commit comments

Comments
 (0)