From: Hai Shi Date: Mon, 17 Feb 2020 13:50:35 +0000 (+0800) Subject: bpo-1635741: Port _abc extension to multiphase initialization (PEP 489) (GH-18030) X-Git-Tag: v3.9.0a4~38 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c1b6a6f4fc46add0097efb3026cf3f0c89f88a2;p=thirdparty%2FPython%2Fcpython.git bpo-1635741: Port _abc extension to multiphase initialization (PEP 489) (GH-18030) --- diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-01-16-12-00-04.bpo-1635741.fuqoBG.rst b/Misc/NEWS.d/next/Core and Builtins/2020-01-16-12-00-04.bpo-1635741.fuqoBG.rst new file mode 100644 index 000000000000..4dd37a65b0e9 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-01-16-12-00-04.bpo-1635741.fuqoBG.rst @@ -0,0 +1 @@ +Port _abc extension module to multiphase initialization (:pep:`489`). diff --git a/Modules/_abc.c b/Modules/_abc.c index e21fe782d0a1..c991295d311a 100644 --- a/Modules/_abc.c +++ b/Modules/_abc.c @@ -807,26 +807,35 @@ static struct PyMethodDef module_functions[] = { {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); }