summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2012-08-17 17:21:16 (GMT)
committerBrett Cannon <brett@python.org>2012-08-17 17:21:16 (GMT)
commit7385adc84cf7bc47b6975ba51fbf1da7b0a33b46 (patch)
tree7b0918b655f0a1606607edfb05353954894b05f1 /Lib/importlib
parentb391b24efe9d12e44e237064ea26be43d6a6e9a2 (diff)
downloadcpython-7385adc84cf7bc47b6975ba51fbf1da7b0a33b46.zip
cpython-7385adc84cf7bc47b6975ba51fbf1da7b0a33b46.tar.gz
cpython-7385adc84cf7bc47b6975ba51fbf1da7b0a33b46.tar.bz2
Issue #15715: Ignore failed imports triggered by the use of fromlist.
When the fromlist argument is specified for __import__() and the attribute doesn't already exist, an import is attempted. If that fails (e.g. module doesn't exist), the ImportError will now be silenced (for backwards-compatibility). This *does not* affect ``from ... import ...`` statements. Thanks to Eric Snow for the patch and Simon Feltman for reporting the regression.
Diffstat (limited to 'Lib/importlib')
-rw-r--r--Lib/importlib/_bootstrap.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 8ecc882..471b380 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1573,8 +1573,13 @@ def _handle_fromlist(module, fromlist, import_):
fromlist.extend(module.__all__)
for x in fromlist:
if not hasattr(module, x):
- _call_with_frames_removed(import_,
- '{}.{}'.format(module.__name__, x))
+ try:
+ _call_with_frames_removed(import_,
+ '{}.{}'.format(module.__name__, x))
+ except ImportError:
+ # Backwards-compatibility dictates we ignore failed
+ # imports triggered by fromlist.
+ pass
return module