Use multi-phase initialization

This commit is contained in:
Andrew Murray 2025-05-28 23:50:18 +10:00
parent 5a04b9581b
commit 5000c83bcc
8 changed files with 80 additions and 108 deletions

View File

@ -881,26 +881,22 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__avif(void) { PyInit__avif(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_avif", .m_name = "_avif",
.m_size = -1,
.m_methods = avifMethods, .m_methods = avifMethods,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
Py_DECREF(m);
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -4460,27 +4460,22 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imaging(void) { PyInit__imaging(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imaging", .m_name = "_imaging",
.m_size = -1,
.m_methods = functions, .m_methods = functions,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
Py_DECREF(m);
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -1463,28 +1463,24 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imagingcms(void) { PyInit__imagingcms(void) {
PyObject *m; PyDateTime_IMPORT;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imagingcms", .m_name = "_imagingcms",
.m_size = -1,
.m_methods = pyCMSdll_methods, .m_methods = pyCMSdll_methods,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
return NULL;
}
PyDateTime_IMPORT;
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -1599,26 +1599,22 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imagingft(void) { PyInit__imagingft(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imagingft", .m_name = "_imagingft",
.m_size = -1,
.m_methods = _functions, .m_methods = _functions,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -302,26 +302,22 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imagingmath(void) { PyInit__imagingmath(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imagingmath", .m_name = "_imagingmath",
.m_size = -1,
.m_methods = _functions, .m_methods = _functions,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -246,23 +246,22 @@ static PyMethodDef functions[] = {
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
static PyModuleDef_Slot slots[] = {
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imagingmorph(void) { PyInit__imagingmorph(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imagingmorph", .m_name = "_imagingmorph",
.m_doc = "A module for doing image morphology", .m_doc = "A module for doing image morphology",
.m_size = -1,
.m_methods = functions, .m_methods = functions,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -46,24 +46,22 @@ static PyMethodDef functions[] = {
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, load_tkinter_funcs},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__imagingtk(void) { PyInit__imagingtk(void) {
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_imagingtk", .m_name = "_imagingtk",
.m_size = -1,
.m_methods = functions, .m_methods = functions,
.m_slots = slots
}; };
PyObject *m;
m = PyModule_Create(&module_def);
if (load_tkinter_funcs() != 0) {
Py_DECREF(m);
return NULL;
}
#ifdef Py_GIL_DISABLED return PyModuleDef_Init(&module_def);
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }

View File

@ -777,26 +777,22 @@ setup_module(PyObject *m) {
return 0; return 0;
} }
static PyModuleDef_Slot slots[] = {
{Py_mod_exec, setup_module},
#ifdef Py_GIL_DISABLED
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
#endif
{0, NULL}
};
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__webp(void) { PyInit__webp(void) {
PyObject *m;
static PyModuleDef module_def = { static PyModuleDef module_def = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
.m_name = "_webp", .m_name = "_webp",
.m_size = -1,
.m_methods = webpMethods, .m_methods = webpMethods,
.m_slots = slots
}; };
m = PyModule_Create(&module_def); return PyModuleDef_Init(&module_def);
if (setup_module(m) < 0) {
Py_DECREF(m);
return NULL;
}
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
return m;
} }