Skip to content

Commit 46d9691

Browse files
authored
Use PEP 489 multi-phase initialization (#8983)
2 parents 1e5eb3b + 5000c83 commit 46d9691

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
@@ -4463,27 +4463,22 @@ setup_module(PyObject *m) {
44634463
return 0;
44644464
}
44654465

4466+
static PyModuleDef_Slot slots[] = {
4467+
{Py_mod_exec, setup_module},
4468+
#ifdef Py_GIL_DISABLED
4469+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
4470+
#endif
4471+
{0, NULL}
4472+
};
4473+
44664474
PyMODINIT_FUNC
44674475
PyInit__imaging(void) {
4468-
PyObject *m;
4469-
44704476
static PyModuleDef module_def = {
44714477
PyModuleDef_HEAD_INIT,
44724478
.m_name = "_imaging",
4473-
.m_size = -1,
44744479
.m_methods = functions,
4480+
.m_slots = slots
44754481
};
44764482

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

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
@@ -1601,26 +1601,22 @@ setup_module(PyObject *m) {
16011601
return 0;
16021602
}
16031603

1604+
static PyModuleDef_Slot slots[] = {
1605+
{Py_mod_exec, setup_module},
1606+
#ifdef Py_GIL_DISABLED
1607+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
1608+
#endif
1609+
{0, NULL}
1610+
};
1611+
16041612
PyMODINIT_FUNC
16051613
PyInit__imagingft(void) {
1606-
PyObject *m;
1607-
16081614
static PyModuleDef module_def = {
16091615
PyModuleDef_HEAD_INIT,
16101616
.m_name = "_imagingft",
1611-
.m_size = -1,
16121617
.m_methods = _functions,
1618+
.m_slots = slots
16131619
};
16141620

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

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
@@ -780,26 +780,22 @@ setup_module(PyObject *m) {
780780
return 0;
781781
}
782782

783+
static PyModuleDef_Slot slots[] = {
784+
{Py_mod_exec, setup_module},
785+
#ifdef Py_GIL_DISABLED
786+
{Py_mod_gil, Py_MOD_GIL_NOT_USED},
787+
#endif
788+
{0, NULL}
789+
};
790+
783791
PyMODINIT_FUNC
784792
PyInit__webp(void) {
785-
PyObject *m;
786-
787793
static PyModuleDef module_def = {
788794
PyModuleDef_HEAD_INIT,
789795
.m_name = "_webp",
790-
.m_size = -1,
791796
.m_methods = webpMethods,
797+
.m_slots = slots
792798
};
793799

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

0 commit comments

Comments
 (0)