File tree 2 files changed +32
-15
lines changed 2 files changed +32
-15
lines changed Original file line number Diff line number Diff line change 47
47
pass
48
48
#
49
49
50
+ # This is copied from test_import/__init__.py.
51
+ # XXX Move it to support/__init__.py.
52
+ def no_rerun (reason ):
53
+ """Skip rerunning for a particular test.
54
+
55
+ WARNING: Use this decorator with care; skipping rerunning makes it
56
+ impossible to find reference leaks. Provide a clear reason for skipping the
57
+ test using the 'reason' parameter.
58
+ """
59
+ def deco (func ):
60
+ _has_run = False
61
+ def wrapper (self ):
62
+ nonlocal _has_run
63
+ if _has_run :
64
+ self .skipTest (reason )
65
+ func (self )
66
+ _has_run = True
67
+ return wrapper
68
+ return deco
69
+
50
70
pickle_loads = {pickle .loads , pickle ._loads }
51
71
52
72
pickle_choices = [(pickle , pickle , proto )
@@ -6383,6 +6403,7 @@ class IranTest(ZoneInfoTest):
6383
6403
6384
6404
6385
6405
@unittest .skipIf (_testcapi is None , 'need _testcapi module' )
6406
+ @no_rerun ("the encapsulated datetime C API does not support reloading" )
6386
6407
class CapiTest (unittest .TestCase ):
6387
6408
def setUp (self ):
6388
6409
# Since the C API is not present in the _Pure tests, skip all tests
Original file line number Diff line number Diff line change @@ -6970,30 +6970,26 @@ _datetime_exec(PyObject *module)
6970
6970
}
6971
6971
#undef DATETIME_ADD_MACRO
6972
6972
6973
- static struct PyModuleDef datetimemodule = {
6973
+ static PyModuleDef_Slot module_slots [] = {
6974
+ {Py_mod_exec , _datetime_exec },
6975
+ {Py_mod_multiple_interpreters , Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED },
6976
+ {Py_mod_gil , Py_MOD_GIL_NOT_USED },
6977
+ {0 , NULL },
6978
+ };
6979
+
6980
+ static PyModuleDef datetimemodule = {
6974
6981
.m_base = PyModuleDef_HEAD_INIT ,
6975
6982
.m_name = "_datetime" ,
6976
6983
.m_doc = "Fast implementation of the datetime type." ,
6977
- .m_size = -1 ,
6984
+ .m_size = 0 ,
6978
6985
.m_methods = module_methods ,
6986
+ .m_slots = module_slots ,
6979
6987
};
6980
6988
6981
6989
PyMODINIT_FUNC
6982
6990
PyInit__datetime (void )
6983
6991
{
6984
- PyObject * mod = PyModule_Create (& datetimemodule );
6985
- if (mod == NULL )
6986
- return NULL ;
6987
- #ifdef Py_GIL_DISABLED
6988
- PyUnstable_Module_SetGIL (mod , Py_MOD_GIL_NOT_USED );
6989
- #endif
6990
-
6991
- if (_datetime_exec (mod ) < 0 ) {
6992
- Py_DECREF (mod );
6993
- return NULL ;
6994
- }
6995
-
6996
- return mod ;
6992
+ return PyModuleDef_Init (& datetimemodule );
6997
6993
}
6998
6994
6999
6995
/* ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments