diff options
author | Brett Cannon <brett@python.org> | 2012-07-10 14:05:00 (GMT) |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2012-07-10 14:05:00 (GMT) |
commit | 461c8131648e26d14e4840d11c3cbd1da99cd04f (patch) | |
tree | 24b3f6c5970ff0697086ed71f2493602d8f0c5cf /Lib/importlib/_bootstrap.py | |
parent | c4618e33b2ef1c6f1cb2d8d3c2e23dfcca9f5f44 (diff) | |
download | cpython-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.py | 10 |
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 |