bpo-1635741: Port operator module to multiphase initialization (PEP 489) (GH-19150)

This commit is contained in:
Paulo Henrique Silva 2020-03-24 23:18:47 -03:00 committed by GitHub
parent 8f1ed21ecf
commit f3d5ac4772
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 28 additions and 23 deletions

View File

@ -0,0 +1,2 @@
Port operator module to multiphase initialization (PEP 489). Patch by Paulo
Henrique Silva.

View File

@ -1746,16 +1746,38 @@ static PyTypeObject methodcaller_type = {
}; };
/* Initialization function for the module (*must* be called PyInit__operator) */ static int
operator_exec(PyObject *module)
{
PyTypeObject *types[] = {
&itemgetter_type,
&attrgetter_type,
&methodcaller_type
};
for (size_t i = 0; i < Py_ARRAY_LENGTH(types); i++) {
if (PyModule_AddType(module, types[i]) < 0) {
return -1;
}
}
return 0;
}
static struct PyModuleDef_Slot operator_slots[] = {
{Py_mod_exec, operator_exec},
{0, NULL}
};
static struct PyModuleDef operatormodule = { static struct PyModuleDef operatormodule = {
PyModuleDef_HEAD_INIT, PyModuleDef_HEAD_INIT,
"_operator", "_operator",
operator_doc, operator_doc,
-1, 0,
operator_methods, operator_methods,
NULL, operator_slots,
NULL, NULL,
NULL, NULL,
NULL NULL
@ -1764,24 +1786,5 @@ static struct PyModuleDef operatormodule = {
PyMODINIT_FUNC PyMODINIT_FUNC
PyInit__operator(void) PyInit__operator(void)
{ {
PyObject *m; return PyModuleDef_Init(&operatormodule);
/* Create the module and add the functions */
m = PyModule_Create(&operatormodule);
if (m == NULL)
return NULL;
PyTypeObject *types[] = {
&itemgetter_type,
&attrgetter_type,
&methodcaller_type
};
for (size_t i = 0; i < Py_ARRAY_LENGTH(types); i++) {
if (PyModule_AddType(m, types[i]) < 0) {
return NULL;
}
}
return m;
} }