Skip to content

Commit f5e36f5

Browse files
neonenenoahbkim
authored andcommitted
pythongh-120782: Update internal type cache when reloading datetime (python#120829)
1 parent 407e3df commit f5e36f5

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

Lib/test/datetimetester.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6870,6 +6870,23 @@ def pickle_fake_date(datetime_) -> Type[FakeDate]:
68706870
""")
68716871
script_helper.assert_python_ok('-c', script)
68726872

6873+
def test_update_type_cache(self):
6874+
# gh-120782
6875+
script = textwrap.dedent("""
6876+
import sys
6877+
for i in range(5):
6878+
import _datetime
6879+
_datetime.date.max > _datetime.date.min
6880+
_datetime.time.max > _datetime.time.min
6881+
_datetime.datetime.max > _datetime.datetime.min
6882+
_datetime.timedelta.max > _datetime.timedelta.min
6883+
isinstance(_datetime.timezone.min, _datetime.tzinfo)
6884+
isinstance(_datetime.timezone.utc, _datetime.tzinfo)
6885+
isinstance(_datetime.timezone.max, _datetime.tzinfo)
6886+
del sys.modules['_datetime']
6887+
""")
6888+
script_helper.assert_python_ok('-c', script)
6889+
68736890

68746891
def load_tests(loader, standard_tests, pattern):
68756892
standard_tests.addTest(ZoneInfoCompleteTest())
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix wrong references of the :mod:`datetime` types after reloading the module.

Modules/_datetimemodule.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7296,6 +7296,12 @@ _datetime_exec(PyObject *module)
72967296
static_assert(DI100Y == 25 * DI4Y - 1, "DI100Y");
72977297
assert(DI100Y == days_before_year(100+1));
72987298

7299+
if (reloading) {
7300+
for (size_t i = 0; i < Py_ARRAY_LENGTH(capi_types); i++) {
7301+
PyType_Modified(capi_types[i]);
7302+
}
7303+
}
7304+
72997305
if (set_current_module(interp, module) < 0) {
73007306
goto error;
73017307
}

0 commit comments

Comments
 (0)