@@ -449,11 +449,25 @@ static PyType_Spec sonyflake_type_spec = {
449449 .slots = sonyflake_type_slots ,
450450};
451451
452+ static int sonyflake_exec (PyObject * module );
453+
454+ static PyModuleDef_Slot sonyflake_slots [] = {
455+ {Py_mod_exec , sonyflake_exec },
456+ #if !defined (Py_LIMITED_API ) || Py_LIMITED_API + 0 >= 0x030c0000
457+ {Py_mod_multiple_interpreters , Py_MOD_PER_INTERPRETER_GIL_SUPPORTED },
458+ #endif
459+ #if !defined (Py_LIMITED_API ) && defined (Py_GIL_DISABLED )
460+ {Py_mod_gil , Py_MOD_GIL_NOT_USED },
461+ #endif
462+ {0 , NULL }
463+ };
464+
452465static struct PyModuleDef sonyflake_module = {
453466 PyModuleDef_HEAD_INIT ,
454467 .m_name = "sonyflake_turbo" ,
455468 .m_doc = "" ,
456- .m_size = -1 ,
469+ .m_size = 0 ,
470+ .m_slots = sonyflake_slots ,
457471};
458472
459473inline uint16_t machine_id_lcg (uint32_t x ) {
@@ -552,16 +566,11 @@ static PyType_Spec machine_id_lcg_spec = {
552566PyMODINIT_FUNC
553567PyInit__sonyflake (void )
554568{
555- PyObject * sonyflake_cls , * machine_id_lcg_cls ;
556- PyObject * module = PyModule_Create (& sonyflake_module );
557-
558- if (!module ) {
559- return NULL ;
560- }
569+ return PyModuleDef_Init (& sonyflake_module );
570+ }
561571
562- #if defined(Py_GIL_DISABLED ) && !defined(Py_LIMITED_API )
563- PyUnstable_Module_SetGIL (module , Py_MOD_GIL_NOT_USED );
564- #endif
572+ static int sonyflake_exec (PyObject * module ) {
573+ PyObject * sonyflake_cls , * machine_id_lcg_cls ;
565574
566575 sonyflake_cls = PyType_FromSpec (& sonyflake_type_spec );
567576
@@ -591,13 +600,12 @@ PyInit__sonyflake(void)
591600 PyModule_AddIntMacro (module , SONYFLAKE_MACHINE_ID_OFFSET );
592601 PyModule_AddIntMacro (module , SONYFLAKE_TIME_OFFSET );
593602
594- return module ;
603+ return 0 ;
595604
596605err_lcg :
597606 Py_DECREF (machine_id_lcg_cls );
598607err_sf :
599608 Py_DECREF (sonyflake_cls );
600609err :
601- Py_DECREF (module );
602- return NULL ;
610+ return -1 ;
603611}
0 commit comments