parent_name = name.rpartition('.')[0]
if parent_name and parent_name not in sys.modules:
msg = "parent {!r} not in sys.modules"
- raise ImportError(msg.format(parentname), name=parent_name)
+ raise ImportError(msg.format(parent_name), name=parent_name)
return module.__loader__.load_module(name)
finally:
try:
import marshal
imp.reload(marshal)
+ def test_with_deleted_parent(self):
+ # see #18681
+ from html import parser
+ del sys.modules['html']
+ def cleanup(): del sys.modules['html.parser']
+ self.addCleanup(cleanup)
+ with self.assertRaisesRegex(ImportError, 'html'):
+ imp.reload(parser)
+
class PEP3147Tests(unittest.TestCase):
"""Tests of PEP 3147."""
Library
-------
+- Issue #18681: Fix a NameError in imp.reload() (noticed by Weizhao Li).
+
- Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error
if methods have annotations; it now correctly displays the annotations.