diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/importlib/_bootstrap.py | 10 | ||||
-rw-r--r-- | Lib/importlib/test/import_/test_fromlist.py | 17 |
2 files changed, 7 insertions, 20 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 diff --git a/Lib/importlib/test/import_/test_fromlist.py b/Lib/importlib/test/import_/test_fromlist.py index 4ff5f5e..281961d 100644 --- a/Lib/importlib/test/import_/test_fromlist.py +++ b/Lib/importlib/test/import_/test_fromlist.py @@ -39,11 +39,9 @@ class HandlingFromlist(unittest.TestCase): [object case]. This is even true if the object does not exist [bad object]. If a package is being imported, then what is listed in fromlist may be - treated as a module to be imported [module]. But once again, even if - something in fromlist does not exist as a module, no error is thrown - [no module]. And this extends to what is contained in __all__ when '*' is - imported [using *]. And '*' does not need to be the only name in the - fromlist [using * with others]. + treated as a module to be imported [module]. And this extends to what is + contained in __all__ when '*' is imported [using *]. And '*' does not need + to be the only name in the fromlist [using * with others]. """ @@ -71,15 +69,6 @@ class HandlingFromlist(unittest.TestCase): self.assertTrue(hasattr(module, 'module')) self.assertEqual(module.module.__name__, 'pkg.module') - def test_no_module_from_package(self): - # [no module] - with util.mock_modules('pkg.__init__') as importer: - with util.import_state(meta_path=[importer], - path_hooks=[imp.NullImporter]): - module = import_util.import_('pkg', fromlist='non_existent') - self.assertEqual(module.__name__, 'pkg') - self.assertTrue(not hasattr(module, 'non_existent')) - def test_empty_string(self): with util.mock_modules('pkg.__init__', 'pkg.mod') as importer: with util.import_state(meta_path=[importer]): |