From fdca0718bcb7d19eb4d9fb500f9f2e82f15896f0 Mon Sep 17 00:00:00 2001 From: Kevin Wang Date: Wed, 7 Jan 2026 23:27:37 +0000 Subject: [PATCH] fix(templates): fix python free-threading compatibility (cherry picked from commit 630fa52717f2c575a53e21b1d324ade8e528b0bd) --- crates/cli/src/init.rs | 10 +++++++++- crates/cli/src/templates/setup.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/cli/src/init.rs b/crates/cli/src/init.rs index 00b7657b..70ca25af 100644 --- a/crates/cli/src/init.rs +++ b/crates/cli/src/init.rs @@ -959,11 +959,19 @@ pub fn generate_grammar_files( allow_update, |path| generate_file(path, SETUP_PY_TEMPLATE, language_name, &generate_opts), |path| { - let contents = fs::read_to_string(path)?; + let mut contents = fs::read_to_string(path)?; if !contents.contains("build_ext") { info!("Replacing setup.py"); generate_file(path, SETUP_PY_TEMPLATE, language_name, &generate_opts)?; } + if !contents.contains(" and not get_config_var") { + info!("Updating Python free-threading support in setup.py"); + contents = contents.replace( + r#"startswith("cp"):"#, + r#"startswith("cp") and not get_config_var("Py_GIL_DISABLED"):"# + ); + write_file(path, contents)?; + } Ok(()) }, )?; diff --git a/crates/cli/src/templates/setup.py b/crates/cli/src/templates/setup.py index 7f92eaee..bcf184b7 100644 --- a/crates/cli/src/templates/setup.py +++ b/crates/cli/src/templates/setup.py @@ -32,7 +32,7 @@ class BuildExt(build_ext): class BdistWheel(bdist_wheel): def get_tag(self): python, abi, platform = super().get_tag() - if python.startswith("cp"): + if python.startswith("cp") and not get_config_var("Py_GIL_DISABLED"): python, abi = "cp310", "abi3" return python, abi, platform