@@ -1400,58 +1400,62 @@ static PyTypeObject lru_cache_type = {
1400
1400
1401
1401
/* module level code ********************************************************/
1402
1402
1403
- PyDoc_STRVAR (module_doc ,
1403
+ PyDoc_STRVAR (_functools_doc ,
1404
1404
"Tools that operate on functions." );
1405
1405
1406
- static PyMethodDef module_methods [] = {
1406
+ static PyMethodDef _functools_methods [] = {
1407
1407
{"reduce" , functools_reduce , METH_VARARGS , functools_reduce_doc },
1408
1408
{"cmp_to_key" , (PyCFunction )(void (* )(void ))functools_cmp_to_key ,
1409
1409
METH_VARARGS | METH_KEYWORDS , functools_cmp_to_key_doc },
1410
1410
{NULL , NULL } /* sentinel */
1411
1411
};
1412
1412
1413
1413
static void
1414
- module_free (void * m )
1414
+ _functools_free (void * m )
1415
1415
{
1416
1416
Py_CLEAR (kwd_mark );
1417
1417
}
1418
1418
1419
- static struct PyModuleDef _functoolsmodule = {
1420
- PyModuleDef_HEAD_INIT ,
1421
- "_functools" ,
1422
- module_doc ,
1423
- -1 ,
1424
- module_methods ,
1425
- NULL ,
1426
- NULL ,
1427
- NULL ,
1428
- module_free ,
1429
- };
1430
-
1431
- PyMODINIT_FUNC
1432
- PyInit__functools (void )
1419
+ static int
1420
+ _functools_exec (PyObject * module )
1433
1421
{
1434
- PyObject * m ;
1435
1422
PyTypeObject * typelist [] = {
1436
1423
& partial_type ,
1437
1424
& lru_cache_type
1438
1425
};
1439
1426
1440
- m = PyModule_Create (& _functoolsmodule );
1441
- if (m == NULL )
1442
- return NULL ;
1443
-
1444
1427
kwd_mark = _PyObject_CallNoArg ((PyObject * )& PyBaseObject_Type );
1445
1428
if (!kwd_mark ) {
1446
- Py_DECREF (m );
1447
- return NULL ;
1429
+ return -1 ;
1448
1430
}
1449
1431
1450
1432
for (size_t i = 0 ; i < Py_ARRAY_LENGTH (typelist ); i ++ ) {
1451
- if (PyModule_AddType (m , typelist [i ]) < 0 ) {
1452
- Py_DECREF (m );
1453
- return NULL ;
1433
+ if (PyModule_AddType (module , typelist [i ]) < 0 ) {
1434
+ return -1 ;
1454
1435
}
1455
1436
}
1456
- return m ;
1437
+ return 0 ;
1438
+ }
1439
+
1440
+ static struct PyModuleDef_Slot _functools_slots [] = {
1441
+ {Py_mod_exec , _functools_exec },
1442
+ {0 , NULL }
1443
+ };
1444
+
1445
+ static struct PyModuleDef _functools_module = {
1446
+ PyModuleDef_HEAD_INIT ,
1447
+ "_functools" ,
1448
+ _functools_doc ,
1449
+ 0 ,
1450
+ _functools_methods ,
1451
+ _functools_slots ,
1452
+ NULL ,
1453
+ NULL ,
1454
+ _functools_free ,
1455
+ };
1456
+
1457
+ PyMODINIT_FUNC
1458
+ PyInit__functools (void )
1459
+ {
1460
+ return PyModuleDef_Init (& _functools_module );
1457
1461
}
0 commit comments