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 4747 pass
4848#
4949
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+
5070pickle_loads = {pickle .loads , pickle ._loads }
5171
5272pickle_choices = [(pickle , pickle , proto )
@@ -6383,6 +6403,7 @@ class IranTest(ZoneInfoTest):
63836403
63846404
63856405@unittest .skipIf (_testcapi is None , 'need _testcapi module' )
6406+ @no_rerun ("the encapsulated datetime C API does not support reloading" )
63866407class CapiTest (unittest .TestCase ):
63876408 def setUp (self ):
63886409 # 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)
70487048}
70497049#undef DATETIME_ADD_MACRO
70507050
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 = {
70527059 .m_base = PyModuleDef_HEAD_INIT ,
70537060 .m_name = "_datetime" ,
70547061 .m_doc = "Fast implementation of the datetime type." ,
7055- .m_size = -1 ,
7062+ .m_size = 0 ,
70567063 .m_methods = module_methods ,
7064+ .m_slots = module_slots ,
70577065};
70587066
70597067PyMODINIT_FUNC
70607068PyInit__datetime (void )
70617069{
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 );
70757071}
70767072
70777073/* ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments