Skip to content

Commit d2d5918

Browse files
committed
WHL: add support for Python 3.15t+
1 parent 1221b04 commit d2d5918

4 files changed

Lines changed: 35 additions & 15 deletions

File tree

.github/workflows/cd.yml

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -110,25 +110,30 @@ jobs:
110110

111111
macos-arm64:
112112
runs-on: macos-latest
113+
strategy:
114+
matrix:
115+
platform:
116+
- {pyver: '3.11', abi: abi3}
117+
- {pyver: 3.15t, abi: abi3t}
113118
steps:
114119
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
115120
with:
116121
persist-credentials: false
117122
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
118123
with:
119-
python-version: '3.11'
124+
python-version: ${{ matrix.platform.pyver }}
120125
enable-cache: false
121126
- id: discovery
122127
run: |
123128
uv python install
124-
interpreter="$(uv python find 3.11)"
129+
interpreter="$(uv python find ${{ matrix.platform.pyver }})"
125130
echo "interpreter=$interpreter" >> $GITHUB_OUTPUT
126131
- run: rustup update
127132
- name: Build wheels - arm64
128133
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1.50.1
129134
with:
130135
target: aarch64-apple-darwin
131-
args: --release --out dist -F pyo3/abi3 -i ${{ steps.discovery.outputs.interpreter }}
136+
args: --release --out dist -F pyo3/${{ matrix.platform.abi }} -i ${{ steps.discovery.outputs.interpreter }}
132137
- name: Test wheel
133138
run: |
134139
uv sync --only-group test
@@ -145,6 +150,9 @@ jobs:
145150
runs-on: windows-latest
146151
strategy:
147152
matrix:
153+
platform:
154+
- {pyver: '3.11', abi: abi3}
155+
- {pyver: 3.15t, abi: abi3t}
148156
target:
149157
- x86
150158
- x64
@@ -154,7 +162,7 @@ jobs:
154162
persist-credentials: false
155163
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
156164
with:
157-
python-version: '3.11'
165+
python-version: ${{ matrix.platform.pyver }}
158166
architecture: ${{ matrix.target }}
159167
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
160168
with:
@@ -164,14 +172,14 @@ jobs:
164172
echo "UV_PYTHON_PREFERENCE=only-system" >> $env:GITHUB_ENV
165173
- id: discovery
166174
run: |
167-
$interpreter="$(uv python find 3.11)"
175+
$interpreter="$(uv python find ${{ matrix.platform.pyver }})"
168176
echo "interpreter=$interpreter" >> $env:GITHUB_OUTPUT
169177
- run: rustup update
170178
- name: Build wheels
171179
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1.50.1
172180
with:
173181
target: ${{ matrix.target }}
174-
args: --release --out dist --no-default-features -F pyo3/abi3 -F fma -i ${{ steps.discovery.outputs.interpreter }}
182+
args: --release --out dist --no-default-features -F pyo3/${{ matrix.platform.abi }} -F fma -i ${{ steps.discovery.outputs.interpreter }}
175183
- name: Test wheel
176184
run: |
177185
uv sync --only-group test
@@ -188,13 +196,18 @@ jobs:
188196
# this job is separate because it requires a dedicated runner
189197
name: windows (arm64)
190198
runs-on: windows-11-arm
199+
strategy:
200+
matrix:
201+
platform:
202+
- {pyver: '3.11', abi: abi3}
203+
- {pyver: 3.15t, abi: abi3t}
191204
steps:
192205
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
193206
with:
194207
persist-credentials: false
195208
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
196209
with:
197-
python-version: '3.11'
210+
python-version: ${{ matrix.platform.pyver }}
198211
architecture: arm64
199212
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
200213
with:
@@ -204,14 +217,14 @@ jobs:
204217
echo "UV_PYTHON_PREFERENCE=only-system" >> $env:GITHUB_ENV
205218
- id: discovery
206219
run: |
207-
$interpreter="$(uv python find 3.11)"
220+
$interpreter="$(uv python find ${{ matrix.platform.pyver }})"
208221
echo "interpreter=$interpreter" >> $env:GITHUB_OUTPUT
209222
- run: rustup update
210223
- name: Build wheels
211224
uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1.50.1
212225
with:
213226
target: aarch64-pc-windows-msvc
214-
args: --release --out dist -F pyo3/abi3 -i ${{ steps.discovery.outputs.interpreter }}
227+
args: --release --out dist -F pyo3/${{ matrix.platform.abi }} -i ${{ steps.discovery.outputs.interpreter }}
215228
- name: Test wheel
216229
run: |
217230
uv sync --only-group test
@@ -229,6 +242,9 @@ jobs:
229242
strategy:
230243
fail-fast: false
231244
matrix:
245+
platform:
246+
- {pyver: '3.11', abi: abi3}
247+
- {pyver: 3.15t, abi: abi3t}
232248
target:
233249
- x86_64
234250
- aarch64
@@ -238,7 +254,7 @@ jobs:
238254
persist-credentials: false
239255
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
240256
with:
241-
python-version: '3.11'
257+
python-version: ${{ matrix.platform.pyver }}
242258
architecture: x64
243259
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
244260
with:
@@ -251,7 +267,7 @@ jobs:
251267
with:
252268
target: ${{ matrix.target }}
253269
manylinux: '2_28'
254-
args: --release --out dist --no-default-features -F pyo3/abi3 -F fma ${{ startsWith( matrix.target , 'aarch64' ) && '-F branchless' || '' }} -i python3.11
270+
args: --release --out dist --no-default-features -F pyo3/${{ matrix.platform.abi }} -F fma ${{ startsWith( matrix.target , 'aarch64' ) && '-F branchless' || '' }} -i python3.11
255271
- name: Test wheel
256272
if: matrix.target == 'x86_64'
257273
run: |
@@ -271,6 +287,9 @@ jobs:
271287
strategy:
272288
fail-fast: false
273289
matrix:
290+
platform:
291+
- {pyver: '3.11', abi: abi3}
292+
- {pyver: 3.15t, abi: abi3t}
274293
target:
275294
- x86_64-unknown-linux-musl
276295
- aarch64-unknown-linux-musl
@@ -280,7 +299,7 @@ jobs:
280299
persist-credentials: false
281300
- uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
282301
with:
283-
python-version: '3.11'
302+
python-version: ${{ matrix.platform.pyver }}
284303
architecture: x64
285304
- uses: astral-sh/setup-uv@681c641aba71e4a1c380be3ab5e12ad51f415867 # v7.1.6
286305
with:
@@ -293,7 +312,7 @@ jobs:
293312
with:
294313
target: ${{ matrix.target }}
295314
manylinux: musllinux_1_2
296-
args: --release --out dist --no-default-features -F pyo3/abi3 -F fma ${{ startsWith( matrix.target , 'aarch64' ) && '-F branchless' || '' }} -i python3.11
315+
args: --release --out dist --no-default-features -F pyo3/${{ matrix.platform.abi }} -F fma ${{ startsWith( matrix.target , 'aarch64' ) && '-F branchless' || '' }} -i python3.11
297316
- name: Upload wheels
298317
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
299318
with:

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
- DEP: drop support for Python 3.10, require 3.11 or newer
1212
- DEP: upgrade MSRV to 1.83
1313
- DEP: bump rust-numpy and pyo3 to 0.29
14+
- WHL: add support for Python 3.15t+
1415

1516
## 0.5.3 - 2025-11-15
1617

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ philosophy and originated within `rLIC`'s code base.
2525
## Free-threading support
2626

2727
`rlic.convolve` is trivially thread-safe, because it does not mutate any external
28-
data. As of version 0.5.1, Wheels are not yet distributed for free-threaded
29-
CPython, but this build target is still supported and tested.
28+
data. Wheels available for Python 3.15t and later.
3029

3130
## Installation
3231
```

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ classifiers = [
2222
"Programming Language :: Python :: 3.12",
2323
"Programming Language :: Python :: 3.13",
2424
"Programming Language :: Python :: 3.14",
25+
"Programming Language :: Python :: 3.15",
2526
"Programming Language :: Python :: Free Threading :: 4 - Resilient",
2627
"Topic :: Artistic Software",
2728
"Topic :: Scientific/Engineering :: Visualization",

0 commit comments

Comments
 (0)