deprecation: cp313t (#2787)

Free-Threading Python 3.13 was experimental.
Now that Python 3.14 has been released with explicit support, we can schedule removal of Python 3.13 free-threading.
This commit is contained in:
Matthieu Darbois
2026-04-02 14:39:47 +01:00
committed by GitHub
parent 097806b6b1
commit 54b8a010d0
6 changed files with 90 additions and 10 deletions
+8 -5
View File
@@ -441,11 +441,7 @@ def print_preamble(platform: str, options: Options, identifiers: Sequence[str])
def detect_errors(*, options: Options, identifiers: Iterable[str]) -> Generator[str, None, None]:
# Check for deprecated CIBW_FREE_THREADED_SUPPORT environment variable
if "CIBW_FREE_THREADED_SUPPORT" in os.environ:
yield (
"CIBW_FREE_THREADED_SUPPORT environment variable is no longer supported. "
'Use tool.cibuildwheel.enable = ["cpython-freethreading"] in pyproject.toml '
"or set CIBW_ENABLE=cpython-freethreading instead."
)
yield "CIBW_FREE_THREADED_SUPPORT environment variable is no longer supported."
# Deprecated {python} and {pip}
for option_name in ["test_command", "before_build"]:
@@ -472,6 +468,13 @@ def detect_warnings(*, options: Options) -> Generator[str, None, None]:
build_selector = options.globals.build_selector
test_selector = options.globals.test_selector
if EnableGroup.CPythonFreeThreading in build_selector.enable:
yield (
"'cpython-freethreading' enable is deprecated and will be removed in a future version. "
"It should be removed from tool.cibuildwheel.enable in pyproject.toml "
"or CIBW_ENABLE environment variable."
)
all_valid_identifiers = [
config.identifier
for module in ALL_PLATFORM_MODULES.values()
+2
View File
@@ -686,6 +686,8 @@ class Options:
skip_config = ""
architectures = Architecture.all_archs(self.platform)
enable |= EnableGroup.all_groups()
if args.only.startswith("cp313t-"):
enable.add(EnableGroup.CPythonFreeThreading)
build_selector = BuildSelector(
build_config=build_config,
+2 -1
View File
@@ -38,7 +38,8 @@ class EnableGroup(StrEnum):
@classmethod
def all_groups(cls) -> frozenset[Self]:
return frozenset(cls)
# see https://github.com/python/mypy/issues/20434 for the reason to type: ignore[arg-type]
return frozenset(set(cls) - {cls.CPythonFreeThreading}) # type: ignore[arg-type]
@classmethod
def parse_option_value(cls, value: str) -> frozenset[Self]: