diff options
-rw-r--r-- | astroid/modutils.py | 4 | ||||
-rw-r--r-- | astroid/tests/testdata/python2/data/namespace_pep_420/module.py | 0 | ||||
-rw-r--r-- | astroid/tests/testdata/python3/data/namespace_pep_420/module.py | 0 | ||||
-rw-r--r-- | astroid/tests/unittest_manager.py | 11 |
4 files changed, 13 insertions, 2 deletions
diff --git a/astroid/modutils.py b/astroid/modutils.py index abc89814..8b45d4f5 100644 --- a/astroid/modutils.py +++ b/astroid/modutils.py @@ -652,7 +652,7 @@ def _precache_zipimporters(path=None): try: pic[entry_path] = zipimport.zipimporter(entry_path) except zipimport.ZipImportError: - pic[entry_path] = None + continue return pic @@ -805,7 +805,7 @@ def _find_spec(modpath, path=None): # Need a copy for not mutating the argument. modpath = modpath[:] - submodule_path = [] + submodule_path = None module_parts = modpath[:] processed = [] diff --git a/astroid/tests/testdata/python2/data/namespace_pep_420/module.py b/astroid/tests/testdata/python2/data/namespace_pep_420/module.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/astroid/tests/testdata/python2/data/namespace_pep_420/module.py diff --git a/astroid/tests/testdata/python3/data/namespace_pep_420/module.py b/astroid/tests/testdata/python3/data/namespace_pep_420/module.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/astroid/tests/testdata/python3/data/namespace_pep_420/module.py diff --git a/astroid/tests/unittest_manager.py b/astroid/tests/unittest_manager.py index 9c74b78f..abf1d32c 100644 --- a/astroid/tests/unittest_manager.py +++ b/astroid/tests/unittest_manager.py @@ -113,6 +113,17 @@ class AstroidManagerTest(resources.SysPathSetup, def test_ast_from_namespace_pkg_resources(self): self._test_ast_from_old_namespace_package_protocol('pkg_resources') + @unittest.skipUnless(sys.version_info[:2] > (3, 3), "Needs PEP 420 namespace protocol") + def test_implicit_namespace_package(self): + data_dir = os.path.abspath(os.path.join(resources.DATA_DIR, 'data')) + sys.path.insert(0, data_dir) + try: + module = self.manager.ast_from_module_name('namespace_pep_420.module') + self.assertIsInstance(module, astroid.Module) + self.assertEqual(module.name, 'namespace_pep_420.module') + finally: + sys.path.pop(0) + def _test_ast_from_zip(self, archive): origpath = sys.path[:] sys.modules.pop('mypypa', None) |