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);
 }