Skip to content

Commit 624f084

Browse files
committed
Add Python 3.15 and 3.15t to Linux nightly wheel builds
Add 3.15 and 3.15t (free-threaded) to the binary build matrix for Linux wheels on the nightly channel. 3.15 is brand new and only the Linux manywheel builders are ready for it, so: - The versions are added to the "nightly" entry of PYTHON_ARCHES_DICT only; "test" and "release" stay at 3.10-3.14t until 3.15 is releasable. - generate_wheels_matrix skips any 3.15* version when the OS is not linux or linux-aarch64, mirroring the per-OS exclusion previously used for 3.14 on Windows. macOS, Windows, and Windows arm64 are unaffected. The conda environment setup in setup-binary-builds installs 3.15/3.15t from the conda-forge python_dev label (where the 3.15 alphas and the python-freethreading metapackage are published), since 3.15 is not yet on the default Anaconda channel. This mirrors how 3.14 was first brought up via conda-forge/label/python_rc before being switched to the default channel once it shipped. The pinned alpha (3.15.0a8) should be bumped as newer pre-releases are published. The reference matrices under tools/tests/assets were regenerated for the four Linux wheel configurations; macOS/Windows references are unchanged. Test Plan: ``` cd tools/tests python3 -m tools.tests.test_generate_binary_build_matrix ``` All 7 tests pass. Also verified per-OS/per-channel scoping: ``` python3 -c "from tools.scripts.generate_binary_build_matrix import generate_build_matrix; ..." # linux/linux-aarch64 nightly include 3.15/3.15t; macos/windows do not; # linux test/release do not. ``` This PR was authored with the assistance of an AI assistant.
1 parent b9b7ab8 commit 624f084

6 files changed

Lines changed: 19 additions & 5 deletions

File tree

.github/actions/setup-binary-builds/action.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,16 @@ runs:
133133
134134
# shellcheck disable=SC2153
135135
case $PYTHON_VERSION in
136+
3.15t)
137+
# 3.15 is pre-release; conda-forge ships it under the python_dev
138+
# label. Bump the pinned alpha/beta as newer ones are published.
139+
export PYTHON_VERSION=3.15.0a8
140+
export CONDA_EXTRA_PARAM=" python-freethreading -c conda-forge/label/python_dev -c conda-forge"
141+
;;
142+
3.15)
143+
export PYTHON_VERSION=3.15.0a8
144+
export CONDA_EXTRA_PARAM=" -c conda-forge/label/python_dev -c conda-forge"
145+
;;
136146
3.14t)
137147
export PYTHON_VERSION=3.14
138148
export CONDA_EXTRA_PARAM=" python-freethreading"

tools/scripts/generate_binary_build_matrix.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323

2424
PYTHON_ARCHES_DICT = {
25-
"nightly": ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"],
25+
"nightly": ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t", "3.15", "3.15t"],
2626
"test": ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"],
2727
"release": ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"],
2828
}
@@ -463,6 +463,10 @@ def generate_wheels_matrix(
463463
ret: List[Dict[str, Any]] = []
464464
for python_version in python_versions:
465465
for arch_version in arches:
466+
# Python 3.15 and 3.15t are currently only built for Linux wheels.
467+
if os not in (LINUX, LINUX_AARCH64) and python_version.startswith("3.15"):
468+
continue
469+
466470
gpu_arch_type = arch_type(arch_version)
467471
gpu_arch_version = (
468472
"" if arch_version in [CPU, CPU_AARCH64, XPU] else arch_version

tools/tests/assets/build_matrix_linux_wheel_cuda.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

tools/tests/assets/build_matrix_linux_wheel_cuda_norocm.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

tools/tests/assets/build_matrix_linux_wheel_nocpu.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

tools/tests/assets/build_matrix_linux_wheel_xpu.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)