summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_import/__init__.py3
-rw-r--r--Python/import.c1
2 files changed, 3 insertions, 1 deletions
diff --git a/Lib/test/test_import/__init__.py b/Lib/test/test_import/__init__.py
index cc6e8d4..06adf01 100644
--- a/Lib/test/test_import/__init__.py
+++ b/Lib/test/test_import/__init__.py
@@ -131,6 +131,7 @@ if _testsinglephase is not None:
def restore__testsinglephase(*, _orig=_testsinglephase):
# We started with the module imported and want to restore
# it to its nominal state.
+ sys.modules.pop('_testsinglephase', None)
_orig._clear_globals()
_testinternalcapi.clear_extension('_testsinglephase', _orig.__file__)
import _testsinglephase
@@ -2110,7 +2111,7 @@ class SinglephaseInitTests(unittest.TestCase):
_interpreters.run_string(interpid, textwrap.dedent(f'''
name = {self.NAME!r}
if name in sys.modules:
- sys.modules[name]._clear_globals()
+ sys.modules.pop(name)._clear_globals()
_testinternalcapi.clear_extension(name, {self.FILE!r})
'''))
_interpreters.destroy(interpid)
diff --git a/Python/import.c b/Python/import.c
index f8f01f1..3f3f2a2 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -1080,6 +1080,7 @@ _extensions_cache_delete(PyObject *filename, PyObject *name)
However, this decref would be problematic if the module def were
dynamically allocated, it were the last ref, and this function
were called with an interpreter other than the def's owner. */
+ assert(_Py_IsImmortal(entry->value));
entry->value = NULL;
finally: