bpo-1635741: Port _abc extension to multiphase initialization (PEP 489) (GH-18030)
diff --git a/Modules/_abc.c b/Modules/_abc.c
index e21fe78..c991295 100644
--- a/Modules/_abc.c
+++ b/Modules/_abc.c
@@ -807,26 +807,35 @@
{NULL, NULL} /* sentinel */
};
+static int
+_abc_exec(PyObject *module)
+{
+ if (PyType_Ready(&_abc_data_type) < 0) {
+ return -1;
+ }
+ _abc_data_type.tp_doc = abc_data_doc;
+ return 0;
+}
+
+static PyModuleDef_Slot _abc_slots[] = {
+ {Py_mod_exec, _abc_exec},
+ {0, NULL}
+};
+
static struct PyModuleDef _abcmodule = {
PyModuleDef_HEAD_INIT,
"_abc",
_abc__doc__,
- -1,
+ 0,
module_functions,
- NULL,
+ _abc_slots,
NULL,
NULL,
NULL
};
-
PyMODINIT_FUNC
PyInit__abc(void)
{
- if (PyType_Ready(&_abc_data_type) < 0) {
- return NULL;
- }
- _abc_data_type.tp_doc = abc_data_doc;
-
- return PyModule_Create(&_abcmodule);
+ return PyModuleDef_Init(&_abcmodule);
}