[Python-checkins] bpo-1635741: Port _abc extension to multiphase initialization (PEP 489) (GH-18030)

Hai Shi webhook-mailer at python.org
Mon Feb 17 08:50:40 EST 2020


https://github.com/python/cpython/commit/4c1b6a6f4fc46add0097efb3026cf3f0c89f88a2
commit: 4c1b6a6f4fc46add0097efb3026cf3f0c89f88a2
branch: master
author: Hai Shi <shihai1992 at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-02-17T14:50:35+01:00
summary:

bpo-1635741: Port _abc extension to multiphase initialization (PEP 489) (GH-18030)

files:
A Misc/NEWS.d/next/Core and Builtins/2020-01-16-12-00-04.bpo-1635741.fuqoBG.rst
M Modules/_abc.c

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 0000000000000..4dd37a65b0e99
--- /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 e21fe782d0a18..c991295d311a1 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);
 }



More information about the Python-checkins mailing list