File tree Expand file tree Collapse file tree 2 files changed +31
-15
lines changed Expand file tree Collapse file tree 2 files changed +31
-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
+ def no_rerun (reason ):
52
+ """Skip rerunning for a particular test.
53
+
54
+ WARNING: Use this decorator with care; skipping rerunning makes it
55
+ impossible to find reference leaks. Provide a clear reason for skipping the
56
+ test using the 'reason' parameter.
57
+ """
58
+ def deco (func ):
59
+ _has_run = False
60
+ def wrapper (self ):
61
+ nonlocal _has_run
62
+ if _has_run :
63
+ self .skipTest (reason )
64
+ func (self )
65
+ _has_run = True
66
+ return wrapper
67
+ return deco
68
+
50
69
pickle_loads = {pickle .loads , pickle ._loads }
51
70
52
71
pickle_choices = [(pickle , pickle , proto )
@@ -6383,6 +6402,7 @@ class IranTest(ZoneInfoTest):
6383
6402
6384
6403
6385
6404
@unittest .skipIf (_testcapi is None , 'need _testcapi module' )
6405
+ @no_rerun ("the encapsulated datetime C API does not support reloading" )
6386
6406
class CapiTest (unittest .TestCase ):
6387
6407
def setUp (self ):
6388
6408
# Since the C API is not present in the _Pure tests, skip all tests
Original file line number Diff line number Diff line change @@ -7048,30 +7048,26 @@ _datetime_exec(PyObject *module)
7048
7048
}
7049
7049
#undef DATETIME_ADD_MACRO
7050
7050
7051
- static struct PyModuleDef datetimemodule = {
7051
+ static PyModuleDef_Slot module_slots [] = {
7052
+ {Py_mod_exec , _datetime_exec },
7053
+ {Py_mod_multiple_interpreters , Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED },
7054
+ {Py_mod_gil , Py_MOD_GIL_NOT_USED },
7055
+ {0 , NULL },
7056
+ };
7057
+
7058
+ static PyModuleDef datetimemodule = {
7052
7059
.m_base = PyModuleDef_HEAD_INIT ,
7053
7060
.m_name = "_datetime" ,
7054
7061
.m_doc = "Fast implementation of the datetime type." ,
7055
- .m_size = -1 ,
7062
+ .m_size = 0 ,
7056
7063
.m_methods = module_methods ,
7064
+ .m_slots = module_slots ,
7057
7065
};
7058
7066
7059
7067
PyMODINIT_FUNC
7060
7068
PyInit__datetime (void )
7061
7069
{
7062
- PyObject * mod = PyModule_Create (& datetimemodule );
7063
- if (mod == NULL )
7064
- return NULL ;
7065
- #ifdef Py_GIL_DISABLED
7066
- PyUnstable_Module_SetGIL (mod , Py_MOD_GIL_NOT_USED );
7067
- #endif
7068
-
7069
- if (_datetime_exec (mod ) < 0 ) {
7070
- Py_DECREF (mod );
7071
- return NULL ;
7072
- }
7073
-
7074
- return mod ;
7070
+ return PyModuleDef_Init (& datetimemodule );
7075
7071
}
7076
7072
7077
7073
/* ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments