@@ -176,11 +176,16 @@ jobs:
176176 with :
177177 enable-cache : true
178178
179+ - name : Remove project venv
180+ run : python -c "import pathlib, shutil; p = pathlib.Path('.venv'); shutil.rmtree(p) if p.exists() else None"
181+
179182 - name : Set up Python
180- run : uv python install
183+ run : uv python install 3.12
181184
182185 - name : Install dependencies
183- run : uv sync --group build --no-install-project
186+ run : |
187+ uv venv --python 3.12 .venv
188+ uv pip install --python .venv --group build --quiet
184189
185190 - name : Build source distribution
186191 run : uvx --from build pyproject-build --installer=uv --sdist --verbose
@@ -205,39 +210,55 @@ jobs:
205210 include :
206211 # 🐧 manylinux x86_64
207212 - os : ubuntu-24.04
208- python : " 3.11 "
213+ host_python : " 3.12 "
209214 python_id : cp310
210215 platform_id : manylinux_x86_64
211216 - os : ubuntu-24.04
212- python : " 3.11 "
217+ host_python : " 3.12 "
213218 python_id : cp311
214219 platform_id : manylinux_x86_64
215220 - os : ubuntu-24.04
216- python : " 3.12"
221+ host_python : " 3.12"
217222 python_id : cp312
218223 platform_id : manylinux_x86_64
219224 - os : ubuntu-24.04
220- python : " 3.13 "
225+ host_python : " 3.12 "
221226 python_id : cp313
222227 platform_id : manylinux_x86_64
228+ - os : ubuntu-24.04
229+ host_python : " 3.12"
230+ python_id : cp314
231+ platform_id : manylinux_x86_64
232+ - os : ubuntu-24.04
233+ host_python : " 3.12"
234+ python_id : cp314t
235+ platform_id : manylinux_x86_64
223236
224237 # 🐧 manylinux aarch64
225238 - os : ubuntu-24.04-arm
226- python : " 3.11 "
239+ host_python : " 3.12 "
227240 python_id : cp310
228241 platform_id : manylinux_aarch64
229242 - os : ubuntu-24.04-arm
230- python : " 3.11 "
243+ host_python : " 3.12 "
231244 python_id : cp311
232245 platform_id : manylinux_aarch64
233246 - os : ubuntu-24.04-arm
234- python : " 3.12"
247+ host_python : " 3.12"
235248 python_id : cp312
236249 platform_id : manylinux_aarch64
237250 - os : ubuntu-24.04-arm
238- python : " 3.13 "
251+ host_python : " 3.12 "
239252 python_id : cp313
240253 platform_id : manylinux_aarch64
254+ - os : ubuntu-24.04-arm
255+ host_python : " 3.12"
256+ python_id : cp314
257+ platform_id : manylinux_aarch64
258+ - os : ubuntu-24.04-arm
259+ host_python : " 3.12"
260+ python_id : cp314t
261+ platform_id : manylinux_aarch64
241262
242263 # 🐧 manylinux2014 PyPy x86_64
243264 - os : ubuntu-24.04
@@ -268,6 +289,14 @@ jobs:
268289 python : " 3.13"
269290 python_id : cp313
270291 platform_id : musllinux_x86_64
292+ - os : ubuntu-24.04
293+ python : " 3.14"
294+ python_id : cp314
295+ platform_id : musllinux_x86_64
296+ - os : ubuntu-24.04
297+ python : " 3.14"
298+ python_id : cp314t
299+ platform_id : musllinux_x86_64
271300
272301 # 🦀 musllinux ARM
273302 - os : ubuntu-24.04-arm
@@ -286,60 +315,92 @@ jobs:
286315 python : " 3.13"
287316 python_id : cp313
288317 platform_id : musllinux_aarch64
318+ - os : ubuntu-24.04-arm
319+ python : " 3.14"
320+ python_id : cp314
321+ platform_id : musllinux_aarch64
322+ - os : ubuntu-24.04-arm
323+ python : " 3.14"
324+ python_id : cp314t
325+ platform_id : musllinux_aarch64
289326
290327 # 🍎 macOS x86_64
291328 - os : macos-13
292- python : " 3.11 "
329+ host_python : " 3.12 "
293330 python_id : cp310
294331 platform_id : macosx_x86_64
295332 - os : macos-13
296- python : " 3.11 "
333+ host_python : " 3.12 "
297334 python_id : cp311
298335 platform_id : macosx_x86_64
299336 - os : macos-13
300- python : " 3.12"
337+ host_python : " 3.12"
301338 python_id : cp312
302339 platform_id : macosx_x86_64
303340 - os : macos-13
304- python : " 3.13 "
341+ host_python : " 3.12 "
305342 python_id : cp313
306343 platform_id : macosx_x86_64
344+ - os : macos-13
345+ host_python : " 3.12"
346+ python_id : cp314
347+ platform_id : macosx_x86_64
348+ - os : macos-13
349+ host_python : " 3.12"
350+ python_id : cp314t
351+ platform_id : macosx_x86_64
307352
308353 # 🍎 macOS arm64 (Apple silicon)
309354 - os : macos-15
310- python : " 3.11 "
355+ host_python : " 3.12 "
311356 python_id : cp310
312357 platform_id : macosx_arm64
313358 - os : macos-15
314- python : " 3.11 "
359+ host_python : " 3.12 "
315360 python_id : cp311
316361 platform_id : macosx_arm64
317362 - os : macos-15
318- python : " 3.12"
363+ host_python : " 3.12"
319364 python_id : cp312
320365 platform_id : macosx_arm64
321366 - os : macos-15
322- python : " 3.13 "
367+ host_python : " 3.12 "
323368 python_id : cp313
324369 platform_id : macosx_arm64
370+ - os : macos-15
371+ host_python : " 3.12"
372+ python_id : cp314
373+ platform_id : macosx_arm64
374+ - os : macos-15
375+ host_python : " 3.12"
376+ python_id : cp314t
377+ platform_id : macosx_arm64
325378
326379 # 🪟 Windows x86_64
327380 - os : windows-2025
328- python : " 3.11 "
381+ host_python : " 3.12 "
329382 python_id : cp310
330383 platform_id : win_amd64
331384 - os : windows-2025
332- python : " 3.11 "
385+ host_python : " 3.12 "
333386 python_id : cp311
334387 platform_id : win_amd64
335388 - os : windows-2025
336- python : " 3.12"
389+ host_python : " 3.12"
337390 python_id : cp312
338391 platform_id : win_amd64
339392 - os : windows-2025
340- python : " 3.13 "
393+ host_python : " 3.12 "
341394 python_id : cp313
342395 platform_id : win_amd64
396+ - os : windows-2025
397+ host_python : " 3.12"
398+ python_id : cp314
399+ platform_id : win_amd64
400+ - os : windows-2025
401+ host_python : " 3.12"
402+ python_id : cp314t
403+ platform_id : win_amd64
343404
344405 steps :
345406 - uses : actions/checkout@v4
@@ -352,17 +413,50 @@ jobs:
352413 with :
353414 enable-cache : true
354415
416+ - name : Remove project venv
417+ run : python -c "import pathlib, shutil; p = pathlib.Path('.venv'); shutil.rmtree(p) if p.exists() else None"
418+
419+ - name : Install host Python
420+ shell : bash
421+ run : |
422+ PY_VERSION="${{ matrix.host_python }}"
423+ if [ -z "$PY_VERSION" ]; then
424+ PY_VERSION="${{ matrix.python }}"
425+ fi
426+ if [ -z "$PY_VERSION" ]; then
427+ PY_VERSION="3.12"
428+ fi
429+ uv python install "$PY_VERSION"
430+
355431 - name : Install build dependencies
356- run : uv sync --group build --no-install-project
432+ shell : bash
433+ run : |
434+ PY_VERSION="${{ matrix.host_python }}"
435+ if [ -z "$PY_VERSION" ]; then
436+ PY_VERSION="${{ matrix.python }}"
437+ fi
438+ if [ -z "$PY_VERSION" ]; then
439+ PY_VERSION="3.12"
440+ fi
441+ uv venv --python "$PY_VERSION" .venv
442+ uv pip install --python .venv --group build --quiet
357443
358444 - name : Build and test wheels
359445 env :
360446 CIBW_ARCHS_MACOS : ${{ matrix.platform_id == 'macosx_arm64' && 'arm64' || 'x86_64' }}
361447 CIBW_ARCHS_LINUX : auto aarch64
362448 CIBW_BUILD : ${{ matrix.python_id }}-${{ matrix.platform_id }}
363449 CIBW_BUILD_VERBOSITY : " 1"
450+ shell : bash
364451 run : |
365- uv run --no-sync cibuildwheel --output-dir wheelhouse
452+ PY_VERSION="${{ matrix.host_python }}"
453+ if [ -z "$PY_VERSION" ]; then
454+ PY_VERSION="${{ matrix.python }}"
455+ fi
456+ if [ -z "$PY_VERSION" ]; then
457+ PY_VERSION="3.12"
458+ fi
459+ uv run --python "$PY_VERSION" --no-sync cibuildwheel --output-dir wheelhouse
366460
367461 - name : Save build artifacts
368462 uses : actions/cache/save@v4
0 commit comments