Skip to content

Commit 877373f

Browse files
feat(core): add python 3.14 and 3.14t support
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 7a4b410 commit 877373f

8 files changed

Lines changed: 719 additions & 918 deletions

File tree

.github/workflows/build.yml

Lines changed: 118 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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

.github/workflows/release.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ jobs:
6969
with:
7070
force: "patch"
7171
github_token: ${{ secrets.GITHUB_TOKEN }}
72+
changelog: "false"
7273
root_options: "-v --noop"
7374
# python-semantic-release displays what it would have
7475
# committed if commit is true and noop is set
@@ -135,6 +136,7 @@ jobs:
135136
if: needs.check_release.outputs.is_release_needed == 'true'
136137
with:
137138
force: "patch"
139+
changelog: "false"
138140
github_token: ${{ secrets.GITHUB_TOKEN }}
139141
ssh_public_signing_key: ${{ secrets.CI_SSH_PUBLIC_KEY }}
140142
ssh_private_signing_key: ${{ secrets.CI_SSH_PRIVATE_KEY }}

0 commit comments

Comments
 (0)