mirror of
https://github.com/python/cpython.git
synced 2025-09-27 10:50:04 +00:00
ihooks FancyModuleLoader.load_module()
imputils Importer._process_result(): remove name from modules dict if exec fails. This is what all the builtin importers do now, new in 2.4.
This commit is contained in:
parent
51fa3b740f
commit
3d3cfdb499
2 changed files with 13 additions and 2 deletions
|
@ -322,7 +322,13 @@ class FancyModuleLoader(ModuleLoader):
|
||||||
if path:
|
if path:
|
||||||
m.__path__ = path
|
m.__path__ = path
|
||||||
m.__file__ = filename
|
m.__file__ = filename
|
||||||
exec code in m.__dict__
|
try:
|
||||||
|
exec code in m.__dict__
|
||||||
|
except:
|
||||||
|
d = self.hooks.modules_dict()
|
||||||
|
if name in d:
|
||||||
|
del d[name]
|
||||||
|
raise
|
||||||
return m
|
return m
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,12 @@ class Importer:
|
||||||
|
|
||||||
# execute the code within the module's namespace
|
# execute the code within the module's namespace
|
||||||
if not is_module:
|
if not is_module:
|
||||||
exec code in module.__dict__
|
try:
|
||||||
|
exec code in module.__dict__
|
||||||
|
except:
|
||||||
|
if fqname in sys.modules:
|
||||||
|
del sys.modules[fqname]
|
||||||
|
raise
|
||||||
|
|
||||||
# fetch from sys.modules instead of returning module directly.
|
# fetch from sys.modules instead of returning module directly.
|
||||||
# also make module's __name__ agree with fqname, in case
|
# also make module's __name__ agree with fqname, in case
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue