struct _PyArg_Parser *, ...);
#ifdef Py_BUILD_CORE
-// Internal; defined here to avoid explicitly including pycore_modsupport.h
-#define _Py_INTERNAL_ABI_SLOT \
- {Py_mod_abi, (void*) &(PyABIInfo) { \
- .abiinfo_major_version = 1, \
- .abiinfo_minor_version = 0, \
- .flags = PyABIInfo_INTERNAL, \
- .build_version = PY_VERSION_HEX, \
- .abi_version = PY_VERSION_HEX }} \
- ///////////////////////////////////////////////////////
+// For internal use in stdlib. Needs C99 compound literals.
+// Defined here to avoid every stdlib module including pycore_modsupport.h
+#define _Py_ABI_SLOT {Py_mod_abi, (void*) &(PyABIInfo) _PyABIInfo_DEFAULT}
#endif
}
static PyModuleDef_Slot _abcmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _abcmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot bisect_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, bisect_modexec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _bz2_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _bz2_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot _codecs_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL}
#undef ADD_TYPE
static struct PyModuleDef_Slot collections_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, collections_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot csv_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, csv_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _ctypes_mod_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _curses_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _curses_panel_exec},
// XXX gh-103092: fix isolation.
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
/* Initialization function for the module */
static PyModuleDef_Slot cursesmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, cursesmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot module_slots[] = {
- _Py_INTERNAL_ABI_SLOT,
+ _Py_ABI_SLOT,
{Py_mod_exec, _datetime_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _dbmmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _dbm_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _decimal_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _decimal_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot elementtree_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _functools_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _functools_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _gdbm_module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _gdbm_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot hashlib_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, hashlib_init_hashtable},
{Py_mod_exec, hashlib_init_HASH_type},
{Py_mod_exec, hashlib_init_HASHXOF_type},
}
static struct PyModuleDef_Slot heapq_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, heapq_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot iomodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, iomodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _json_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _json_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _locale_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _locale_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _lsprofslots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _lsprof_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot lzma_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, lzma_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot multiprocessing_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, multiprocessing_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _opcode_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static struct PyModuleDef_Slot operator_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, operator_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot pickle_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _pickle_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot _posixsubprocess_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL}
}
static PyModuleDef_Slot queuemodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, queuemodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _random_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _random_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot remote_debugging_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _remote_debugging_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot sre_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, sre_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot sslmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, sslmodule_init_types},
{Py_mod_exec, sslmodule_init_exceptions},
{Py_mod_exec, sslmodule_init_socketapi},
}
static PyModuleDef_Slot _structmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _structmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL},
};
static PyModuleDef_Slot sysconfig_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL}
}
static PyModuleDef_Slot main_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot slots_create_nonmodule[] = {
+ _Py_ABI_SLOT,
{Py_mod_create, createfunc_nonmodule},
{0, NULL},
};
/**** Non-ASCII-named modules ****/
static PyModuleDef_Slot nonascii_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL},
};
}
static PyModuleDef_Slot slots_multiple_create_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_create, createfunc_noop},
{Py_mod_create, createfunc_noop},
{0, NULL},
}
static PyModuleDef_Slot slots_create_null[] = {
+ _Py_ABI_SLOT,
{Py_mod_create, createfunc_null},
{0, NULL},
};
}
static PyModuleDef_Slot slots_create_unreported_exception[] = {
+ _Py_ABI_SLOT,
{Py_mod_create, createfunc_unreported_exception},
{0, NULL},
};
}
static PyModuleDef_Slot slots_nonmodule_with_exec_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_create, createfunc_nonmodule},
{Py_mod_exec, execfunc},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
}
static PyModuleDef_Slot slots_exec_err[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc_err},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot slots_exec_raise[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc_raise},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot slots_exec_unreported_exception[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc_unreported_exception},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot meth_state_access_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, meth_state_access_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
/* multiple interpreters support */
static PyModuleDef_Slot slots_multiple_multiple_interpreters_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot non_isolated_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc},
{Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static PyModuleDef_Slot shared_gil_only_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc},
/* Note that Py_MOD_MULTIPLE_INTERPRETERS_SUPPORTED is the default.
We put it here explicitly to draw attention to the contrast
static PyModuleDef_Slot no_multiple_interpreter_slot_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, execfunc},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL},
The 'threading' module provides a more convenient interface.");
static PyModuleDef_Slot thread_module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, thread_module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
PyMODINIT_FUNC
PyInit__tkinter(void)
{
+ PyABIInfo_VAR(abi_info);
+ if (PyABIInfo_Check(&abi_info, "_tkinter") < 0) {
+ return NULL;
+ }
+
PyObject *m, *uexe, *cexe;
tcl_lock = PyThread_allocate_lock();
PyMODINIT_FUNC
PyInit__tracemalloc(void)
{
+ PyABIInfo_VAR(abi_info);
+ if (PyABIInfo_Check(&abi_info, "_tracemalloc") < 0) {
+ return NULL;
+ }
+
PyObject *mod = PyModule_Create(&module_def);
if (mod == NULL) {
return NULL;
}
static struct PyModuleDef_Slot _typesmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _types_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _typingmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _typing_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot weakref_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, weakref_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot winapi_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, winapi_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{NULL},
};
+PyABIInfo_VAR(abi_info);
+
static PyModuleDef_Slot module_slots[] = {
+ {Py_mod_abi, &abi_info},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL},
};
}
static PyModuleDef_Slot zoneinfomodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, zoneinfomodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _zstd_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _zstd_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot arrayslots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, array_modexec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
");
static PyModuleDef_Slot atexitmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL}
}
static PyModuleDef_Slot binascii_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, binascii_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _blake2_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, blake2_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot _cjk_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _cjk_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot _multibytecodec_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _multibytecodec_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot cmath_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, cmath_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot faulthandler_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, PyExec_faulthandler},
// XXX gh-103092: fix isolation.
//{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
}
static PyModuleDef_Slot fcntl_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, fcntl_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot gcmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, gcmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot grpmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, grpmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot hmacmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, hmacmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot itertoolsmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, itertoolsmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot math_integer_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, math_integer_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot math_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, math_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _md5_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, md5_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot mmap_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, mmap_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot overlapped_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, overlapped_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static PyModuleDef_Slot posixmodile_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, posixmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot pwdmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, pwdmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot pyexpat_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, pyexpat_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
PyMODINIT_FUNC
PyInit_readline(void)
{
+ PyABIInfo_VAR(abi_info);
+ if (PyABIInfo_Check(&abi_info, "readline") < 0) {
+ return NULL;
+ }
+
const char *backend = "readline";
PyObject *m;
readlinestate *mod_state;
}
static struct PyModuleDef_Slot resource_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, resource_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _select_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _select_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
/* Initialize this module. */
static PyModuleDef_Slot _sha1_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _sha1_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _sha2_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, sha2_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot _sha3_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _sha3_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static PyModuleDef_Slot signal_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, signal_module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot socket_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, socket_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot symtable_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, symtable_init_constants},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot syslog_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, syslog_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static struct PyModuleDef_Slot time_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, time_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot unicodedata_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, unicodedata_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot xx_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, xx_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
return 0;
}
+PyABIInfo_VAR(abi_info);
+
static struct PyModuleDef_Slot xxsubtype_slots[] = {
+ {Py_mod_abi, &abi_info},
{Py_mod_exec, xxsubtype_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot zlib_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, zlib_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot module_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
{0, NULL}
self.emit("", 0)
self.emit("""
static PyModuleDef_Slot astmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, astmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot astmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, astmodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
};
static PyModuleDef_Slot tokenizemodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, tokenizemodule_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static struct PyModuleDef_Slot _contextvars_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, _contextvars_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static PyModuleDef_Slot warnings_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, warnings_module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
static PyModuleDef_Slot imp_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, imp_module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
}
static PyModuleDef_Slot marshalmodule_slots[] = {
+ _Py_ABI_SLOT,
{Py_mod_exec, marshal_module_exec},
{Py_mod_multiple_interpreters, Py_MOD_PER_INTERPRETER_GIL_SUPPORTED},
{Py_mod_gil, Py_MOD_GIL_NOT_USED},