File tree Expand file tree Collapse file tree 2 files changed +32
-15
lines changed Expand file tree Collapse file tree 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 @@ -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