summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/_bootstrap.py
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-07-10 14:05:00 (GMT)
committerBrett Cannon <brett@python.org>2012-07-10 14:05:00 (GMT)
commit461c8131648e26d14e4840d11c3cbd1da99cd04f (patch)
tree24b3f6c5970ff0697086ed71f2493602d8f0c5cf /Lib/importlib/_bootstrap.py
parentc4618e33b2ef1c6f1cb2d8d3c2e23dfcca9f5f44 (diff)
downloadcpython-461c8131648e26d14e4840d11c3cbd1da99cd04f.zip
cpython-461c8131648e26d14e4840d11c3cbd1da99cd04f.tar.gz
cpython-461c8131648e26d14e4840d11c3cbd1da99cd04f.tar.bz2
Issue #15111: When a module was imported using a 'from import'
statement (e.g. ``from distutils import msvc9compiler``) that triggers an ImportError of its own (e.g. the non-existence of winreg), let that exception propagate instead of raising a generic ImportError for the module being requested (e.g. msvc9compiler).
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r--Lib/importlib/_bootstrap.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 618dd26..dd214c4 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1459,16 +1459,14 @@ def _handle_fromlist(module, fromlist, import_):
# The hell that is fromlist ...
# If a package was imported, try to import stuff from fromlist.
if hasattr(module, '__path__'):
- if '*' in fromlist and hasattr(module, '__all__'):
+ if '*' in fromlist:
fromlist = list(fromlist)
fromlist.remove('*')
- fromlist.extend(module.__all__)
+ if hasattr(module, '__all__'):
+ fromlist.extend(module.__all__)
for x in fromlist:
if not hasattr(module, x):
- try:
- import_('{}.{}'.format(module.__name__, x))
- except ImportError:
- pass
+ import_('{}.{}'.format(module.__name__, x))
return module