@@ -277,6 +277,13 @@ def gen_ctypes_test(manifest, args, outfile):
277277 from _testcapi import get_feature_macros
278278
279279 feature_macros = get_feature_macros()
280+
281+ # Stable ABI is incompatible with Py_TRACE_REFS builds due to PyObject
282+ # layout differences.
283+ # See https://github.com/python/cpython/issues/88299#issuecomment-1113366226
284+ if feature_macros['Py_TRACE_REFS']:
285+ raise unittest.SkipTest("incompatible with Py_TRACE_REFS.")
286+
280287 ctypes_test = import_module('ctypes')
281288
282289 class TestStableABIAvailability(unittest.TestCase):
@@ -307,16 +314,11 @@ def test_windows_feature_macros(self):
307314 {'function' , 'data' },
308315 include_abi_only = True ,
309316 )
310- optional_items = {}
317+ feature_macros = list (manifest .select ({'feature_macro' }))
318+ optional_items = {m .name : [] for m in feature_macros }
311319 for item in items :
312- if item .name in (
313- # Some symbols aren't exported on all platforms.
314- # This is a bug: https://bugs.python.org/issue44133
315- 'PyModule_Create2' , 'PyModule_FromDefAndSpec2' ,
316- ):
317- continue
318320 if item .ifdef :
319- optional_items . setdefault ( item .ifdef , []) .append (item .name )
321+ optional_items [ item .ifdef ] .append (item .name )
320322 else :
321323 write (f' "{ item .name } ",' )
322324 write (")" )
@@ -327,7 +329,6 @@ def test_windows_feature_macros(self):
327329 write (f" { name !r} ," )
328330 write (" )" )
329331 write ("" )
330- feature_macros = list (manifest .select ({'feature_macro' }))
331332 feature_names = sorted (m .name for m in feature_macros )
332333 write (f"EXPECTED_FEATURE_MACROS = set({ pprint .pformat (feature_names )} )" )
333334
0 commit comments