Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 50 additions & 58 deletions Modules/_testlimitedcapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,122 +2,114 @@
* Test the limited C API.
*
* The 'test_*' functions exported by this module are run as part of the
* standard Python regression test, via Lib/test/test_capi.py.
* standard Python regression test, via Lib/test/test_capi/test_misc.py.
*/

#include "pyconfig.h" // Py_GIL_DISABLED

#ifdef Py_GIL_DISABLED
// Cannot test the limited C API
#else
// Use the oldest limited C API version
# define Py_LIMITED_API 0x03020000
#endif
// Need limited C API version 3.15 for PySlot
#define Py_LIMITED_API 0x030f0000

#include "_testlimitedcapi/parts.h"

static PyMethodDef TestMethods[] = {
{NULL, NULL} /* sentinel */
};

static struct PyModuleDef _testlimitedcapimodule = {
PyModuleDef_HEAD_INIT,
.m_name = "_testlimitedcapi",
.m_size = 0,
.m_methods = TestMethods,
};

PyMODINIT_FUNC
PyInit__testlimitedcapi(void)
static int
module_exec(PyObject *mod)
{
PyObject *mod = PyModule_Create(&_testlimitedcapimodule);
if (mod == NULL) {
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED);
#endif

if (_PyTestLimitedCAPI_Init_Abstract(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_ByteArray(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Bytes(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Capsule(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Codec(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Complex(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Dict(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Eval(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Float(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_HeaptypeRelative(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Import(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_List(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Long(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Object(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_PyOS(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Set(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Slots(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Sys(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_ThreadState(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Tuple(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Unicode(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_VectorcallLimited(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Version(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_File(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Weakref(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Run(mod) < 0) {
return NULL;
return -1;
}
if (_PyTestLimitedCAPI_Init_Type(mod) < 0) {
return NULL;
return -1;
}
return mod;
return 0;
}

PyABIInfo_VAR(abi_info);

static PySlot _testlimitedcapimodule_slots[] = {
PySlot_DATA(Py_mod_abi, &abi_info),
PySlot_STATIC_DATA(Py_mod_name, "_testlimitedcapi"),
PySlot_SIZE(Py_mod_state_size, 0),
PySlot_FUNC(Py_mod_exec, module_exec),
PySlot_SIZE(Py_mod_gil, Py_MOD_GIL_NOT_USED),
PySlot_END
};

PyMODEXPORT_FUNC
PyModExport__testlimitedcapi(void)
{
return _testlimitedcapimodule_slots;
}
Loading