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 @@ -6970,30 +6970,26 @@ _datetime_exec(PyObject *module)
69706970}
69716971#undef DATETIME_ADD_MACRO
69726972
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 = {
69746981 .m_base = PyModuleDef_HEAD_INIT ,
69756982 .m_name = "_datetime" ,
69766983 .m_doc = "Fast implementation of the datetime type." ,
6977- .m_size = -1 ,
6984+ .m_size = 0 ,
69786985 .m_methods = module_methods ,
6986+ .m_slots = module_slots ,
69796987};
69806988
69816989PyMODINIT_FUNC
69826990PyInit__datetime (void )
69836991{
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 );
69976993}
69986994
69996995/* ---------------------------------------------------------------------------
You can’t perform that action at this time.
0 commit comments