xieofxie commented on code in PR #51377:
URL: https://github.com/apache/arrow/pull/51377#discussion_r4226107932


##########
dev/tasks/tasks.yml:
##########
@@ -138,75 +138,81 @@ tasks:
 
   ########################### Python Wheels ############################
 
-{% for python_version, python_tag, abi_tag in [("3.11", "cp311", "cp311"),
-                                               ("3.12", "cp312", "cp312"),
-                                               ("3.13", "cp313", "cp313"),
-                                               ("3.14", "cp314", "cp314"),
-                                               ("3.14", "cp314", "cp314t"),
-                                               ("3.15", "cp315", "cp315"),
-                                               ("3.15", "cp315", "cp315t")
-                                               ] %}
+{# Single wheel build tagged cp311-abi3 via SKBUILD_WHEEL_PY_API.
+     The abi3 build must run on Python 3.14: the limited-API build (see
+     python/CMakeLists.txt) requires >= 3.13 dev headers.
+     Freethreading (cp314t/cp315t) wheels are not built: CPython does not
+     support the limited API in free-threaded builds (gh-111506; 3.14t's

Review Comment:
   Could we restore the separate full-API free-threaded wheel builds? 
`cp311-abi3` wheels do not support free-threaded Python, so removing the 
`cp314t`/`cp315t` rows drops coverage rather than consolidating it. Python 
3.14t’s Limited API restriction does not prevent building a version-specific 
full-API wheel.
   
   To retain those builds, we would need to:
   
   - Make `Py_LIMITED_API=0x030B0000`, the `.abi3.so` suffix, and the 
`cp311-abi3` wheel tagging conditional; free-threaded builds should use the 
full API and interpreter-specific suffixes/tags.
   - Fix the full-API import failure mentioned in the comment, where 
assignments such as `KeyValueMetadata.get = Mapping.get` depend on mutable heap 
types. Disabling `Py_LIMITED_API` alone will not fix that.
   - Restore the free-threaded CI rows and verify imports and tests on those 
interpreters.
   
   Most Limited API replacements can remain shared between both build modes. 
Also, 
[[python/cpython#111506](https://github.com/python/cpython/issues/111506)](https://github.com/python/cpython/issues/111506)
 was superseded by Python 3.15’s `abi3t` implementation in 
[[python/cpython#146636](https://github.com/python/cpython/issues/146636)](https://github.com/python/cpython/issues/146636).
 Migrating to `abi3t` could be a follow-up for 3.15+, but it would not cover 
3.14t or be necessary to restore full-API wheels.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to