summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-10-10 23:03:46 (GMT)
committerBrett Cannon <brett@python.org>2012-10-10 23:03:46 (GMT)
commita6ce4fd426cb9df0e4816a627c79aff0fc6ecf63 (patch)
tree09d85350d6408bf0422af543458737067e40e736 /Lib/importlib
parent3fa8c59024418e904abd4394b5ec47642f076ae3 (diff)
downloadcpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.zip
cpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.tar.gz
cpython-a6ce4fd426cb9df0e4816a627c79aff0fc6ecf63.tar.bz2
Closes issue #15111: Calling __import__ with a module specified in
fromlist which causes its own ImportError (e.g. the module tries to import a non-existent module) should have that exception propagate.
Diffstat (limited to 'Lib/importlib')
-rw-r--r--Lib/importlib/_bootstrap.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 98361a7..fad95a6 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1602,19 +1602,19 @@ def _handle_fromlist(module, fromlist, import_):
fromlist.extend(module.__all__)
for x in fromlist:
if not hasattr(module, x):
+ from_name = '{}.{}'.format(module.__name__, x)
try:
- _call_with_frames_removed(import_,
- '{}.{}'.format(module.__name__, x))
+ _call_with_frames_removed(import_, from_name)
except ImportError as exc:
# Backwards-compatibility dictates we ignore failed
# imports triggered by fromlist for modules that don't
# exist.
# TODO(brett): In Python 3.4, have import raise
# ModuleNotFound and catch that.
- if hasattr(exc, '_not_found') and exc._not_found:
- pass
- else:
- raise
+ if getattr(exc, '_not_found', False):
+ if exc.name == from_name:
+ continue
+ raise
return module