Skip to content

Commit 5000c83

Browse files
committed
Use multi-phase initialization
1 parent 5a04b95 commit 5000c83

File tree

8 files changed

+80
-108
lines changed

8 files changed

+80
-108
lines changed

src/_avif.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -881,26 +881,22 @@ setup_module(PyObject *m) {
881881
return 0;
882882
}
883883

884+
static PyModuleDef_Slot slots[] = {
885+
{Py_mod_exec, setup_module},
886+
#ifdef Py_GIL_DISABLED
887+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
888+
#endif
889+
{0, NULL}
890+
};
891+
884892
PyMODINIT_FUNC
885893
PyInit__avif(void) {
886-
PyObject *m;
887-
888894
static PyModuleDef module_def = {
889895
PyModuleDef_HEAD_INIT,
890896
.m_name = "_avif",
891-
.m_size = -1,
892897
.m_methods = avifMethods,
898+
.m_slots = slots
893899
};
894900

895-
m = PyModule_Create(&module_def);
896-
if (setup_module(m) < 0) {
897-
Py_DECREF(m);
898-
return NULL;
899-
}
900-
901-
#ifdef Py_GIL_DISABLED
902-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
903-
#endif
904-
905-
return m;
901+
return PyModuleDef_Init(&module_def);
906902
}

src/_imaging.c

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4460,27 +4460,22 @@ setup_module(PyObject *m) {
44604460
return 0;
44614461
}
44624462

4463+
static PyModuleDef_Slot slots[] = {
4464+
{Py_mod_exec, setup_module},
4465+
#ifdef Py_GIL_DISABLED
4466+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
4467+
#endif
4468+
{0, NULL}
4469+
};
4470+
44634471
PyMODINIT_FUNC
44644472
PyInit__imaging(void) {
4465-
PyObject *m;
4466-
44674473
static PyModuleDef module_def = {
44684474
PyModuleDef_HEAD_INIT,
44694475
.m_name = "_imaging",
4470-
.m_size = -1,
44714476
.m_methods = functions,
4477+
.m_slots = slots
44724478
};
44734479

4474-
m = PyModule_Create(&module_def);
4475-
4476-
if (setup_module(m) < 0) {
4477-
Py_DECREF(m);
4478-
return NULL;
4479-
}
4480-
4481-
#ifdef Py_GIL_DISABLED
4482-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
4483-
#endif
4484-
4485-
return m;
4480+
return PyModuleDef_Init(&module_def);
44864481
}

src/_imagingcms.c

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,28 +1463,24 @@ setup_module(PyObject *m) {
14631463
return 0;
14641464
}
14651465

1466+
static PyModuleDef_Slot slots[] = {
1467+
{Py_mod_exec, setup_module},
1468+
#ifdef Py_GIL_DISABLED
1469+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
1470+
#endif
1471+
{0, NULL}
1472+
};
1473+
14661474
PyMODINIT_FUNC
14671475
PyInit__imagingcms(void) {
1468-
PyObject *m;
1476+
PyDateTime_IMPORT;
14691477

14701478
static PyModuleDef module_def = {
14711479
PyModuleDef_HEAD_INIT,
14721480
.m_name = "_imagingcms",
1473-
.m_size = -1,
14741481
.m_methods = pyCMSdll_methods,
1482+
.m_slots = slots
14751483
};
14761484

1477-
m = PyModule_Create(&module_def);
1478-
1479-
if (setup_module(m) < 0) {
1480-
return NULL;
1481-
}
1482-
1483-
PyDateTime_IMPORT;
1484-
1485-
#ifdef Py_GIL_DISABLED
1486-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
1487-
#endif
1488-
1489-
return m;
1485+
return PyModuleDef_Init(&module_def);
14901486
}

src/_imagingft.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1599,26 +1599,22 @@ setup_module(PyObject *m) {
15991599
return 0;
16001600
}
16011601

1602+
static PyModuleDef_Slot slots[] = {
1603+
{Py_mod_exec, setup_module},
1604+
#ifdef Py_GIL_DISABLED
1605+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
1606+
#endif
1607+
{0, NULL}
1608+
};
1609+
16021610
PyMODINIT_FUNC
16031611
PyInit__imagingft(void) {
1604-
PyObject *m;
1605-
16061612
static PyModuleDef module_def = {
16071613
PyModuleDef_HEAD_INIT,
16081614
.m_name = "_imagingft",
1609-
.m_size = -1,
16101615
.m_methods = _functions,
1616+
.m_slots = slots
16111617
};
16121618

1613-
m = PyModule_Create(&module_def);
1614-
1615-
if (setup_module(m) < 0) {
1616-
return NULL;
1617-
}
1618-
1619-
#ifdef Py_GIL_DISABLED
1620-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
1621-
#endif
1622-
1623-
return m;
1619+
return PyModuleDef_Init(&module_def);
16241620
}

src/_imagingmath.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -302,26 +302,22 @@ setup_module(PyObject *m) {
302302
return 0;
303303
}
304304

305+
static PyModuleDef_Slot slots[] = {
306+
{Py_mod_exec, setup_module},
307+
#ifdef Py_GIL_DISABLED
308+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
309+
#endif
310+
{0, NULL}
311+
};
312+
305313
PyMODINIT_FUNC
306314
PyInit__imagingmath(void) {
307-
PyObject *m;
308-
309315
static PyModuleDef module_def = {
310316
PyModuleDef_HEAD_INIT,
311317
.m_name = "_imagingmath",
312-
.m_size = -1,
313318
.m_methods = _functions,
319+
.m_slots = slots
314320
};
315321

316-
m = PyModule_Create(&module_def);
317-
318-
if (setup_module(m) < 0) {
319-
return NULL;
320-
}
321-
322-
#ifdef Py_GIL_DISABLED
323-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
324-
#endif
325-
326-
return m;
322+
return PyModuleDef_Init(&module_def);
327323
}

src/_imagingmorph.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -246,23 +246,22 @@ static PyMethodDef functions[] = {
246246
{NULL, NULL, 0, NULL}
247247
};
248248

249+
static PyModuleDef_Slot slots[] = {
250+
#ifdef Py_GIL_DISABLED
251+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
252+
#endif
253+
{0, NULL}
254+
};
255+
249256
PyMODINIT_FUNC
250257
PyInit__imagingmorph(void) {
251-
PyObject *m;
252-
253258
static PyModuleDef module_def = {
254259
PyModuleDef_HEAD_INIT,
255260
.m_name = "_imagingmorph",
256261
.m_doc = "A module for doing image morphology",
257-
.m_size = -1,
258262
.m_methods = functions,
263+
.m_slots = slots
259264
};
260265

261-
m = PyModule_Create(&module_def);
262-
263-
#ifdef Py_GIL_DISABLED
264-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
265-
#endif
266-
267-
return m;
266+
return PyModuleDef_Init(&module_def);
268267
}

src/_imagingtk.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,24 +46,22 @@ static PyMethodDef functions[] = {
4646
{NULL, NULL} /* sentinel */
4747
};
4848

49+
static PyModuleDef_Slot slots[] = {
50+
{Py_mod_exec, load_tkinter_funcs},
51+
#ifdef Py_GIL_DISABLED
52+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
53+
#endif
54+
{0, NULL}
55+
};
56+
4957
PyMODINIT_FUNC
5058
PyInit__imagingtk(void) {
5159
static PyModuleDef module_def = {
5260
PyModuleDef_HEAD_INIT,
5361
.m_name = "_imagingtk",
54-
.m_size = -1,
5562
.m_methods = functions,
63+
.m_slots = slots
5664
};
57-
PyObject *m;
58-
m = PyModule_Create(&module_def);
59-
if (load_tkinter_funcs() != 0) {
60-
Py_DECREF(m);
61-
return NULL;
62-
}
63-
64-
#ifdef Py_GIL_DISABLED
65-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
66-
#endif
6765

68-
return m;
66+
return PyModuleDef_Init(&module_def);
6967
}

src/_webp.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -777,26 +777,22 @@ setup_module(PyObject *m) {
777777
return 0;
778778
}
779779

780+
static PyModuleDef_Slot slots[] = {
781+
{Py_mod_exec, setup_module},
782+
#ifdef Py_GIL_DISABLED
783+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
784+
#endif
785+
{0, NULL}
786+
};
787+
780788
PyMODINIT_FUNC
781789
PyInit__webp(void) {
782-
PyObject *m;
783-
784790
static PyModuleDef module_def = {
785791
PyModuleDef_HEAD_INIT,
786792
.m_name = "_webp",
787-
.m_size = -1,
788793
.m_methods = webpMethods,
794+
.m_slots = slots
789795
};
790796

791-
m = PyModule_Create(&module_def);
792-
if (setup_module(m) < 0) {
793-
Py_DECREF(m);
794-
return NULL;
795-
}
796-
797-
#ifdef Py_GIL_DISABLED
798-
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
799-
#endif
800-
801-
return m;
797+
return PyModuleDef_Init(&module_def);
802798
}

0 commit comments

Comments
 (0)