Skip to content

Commit 3ca6c3e

Browse files
committed
set _Py_OPAQUE_PYOBJECT for limited API free-threaded builds
1 parent a3e64bf commit 3ca6c3e

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

src/cffi/recompiler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
USE_LIMITED_API = ((sys.platform != 'win32' or sys.version_info < (3, 0) or
1111
sys.version_info >= (3, 5)) and
12-
not sysconfig.get_config_var("Py_GIL_DISABLED")) # free-threaded doesn't yet support limited API
12+
(not sysconfig.get_config_var("Py_GIL_DISABLED") or sys.version_info >= (3, 15))) # free-threaded doesn't yet support limited API
1313

1414
class GlobalExpr:
1515
def __init__(self, name, address, type_op, size=0, check_value=0):

src/cffi/setuptools_ext.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,13 @@ def _set_py_limited_api(Extension, kwds):
104104
# warning.
105105
kwds['py_limited_api'] = True
106106

107-
if sysconfig.get_config_var("Py_GIL_DISABLED") and sys.version_info < (3, 15):
108-
if kwds.get('py_limited_api'):
109-
log.info("Ignoring py_limited_api=True for free-threaded build.")
110-
kwds['py_limited_api'] = False
107+
if sysconfig.get_config_var("Py_GIL_DISABLED"):
108+
if sys.version_info < (3, 15):
109+
if kwds.get('py_limited_api'):
110+
log.info("Ignoring py_limited_api=True for free-threaded build.")
111+
kwds['py_limited_api'] = False
112+
else:
113+
kwds.setdefault("define_macros", []).append(("_Py_OPAQUE_PYOBJECT", None))
111114

112115
if kwds.get('py_limited_api') is False:
113116
# avoid setting Py_LIMITED_API if py_limited_api=False

0 commit comments

Comments
 (0)