diff --git a/jedi/imports.py b/jedi/imports.py index 0a4eae9d..3d708329 100644 --- a/jedi/imports.py +++ b/jedi/imports.py @@ -129,7 +129,8 @@ class ImportPath(pr.Base): if on_import_stmt and isinstance(scope, pr.Module) \ and scope.path.endswith('__init__.py'): pkg_path = os.path.dirname(scope.path) - names += self.get_module_names([pkg_path]) + paths = self._namespace_packages(pkg_path, self.import_path) + names += self.get_module_names([pkg_path] + paths) for s, scope_names in evaluate.get_names_of_scope(scope, include_builtin=False): for n in scope_names: diff --git a/test/test_namespace_package.py b/test/test_namespace_package.py index c8478bb2..1e497c6a 100644 --- a/test/test_namespace_package.py +++ b/test/test_namespace_package.py @@ -1,17 +1,20 @@ import jedi import sys +from os.path import dirname, join def test_namespace_package(): - sys.path.insert(0, 'namespace_package/ns1') - sys.path.insert(1, 'namespace_package/ns2') + sys.path.insert(0, join(dirname(__file__), 'namespace_package/ns1')) + sys.path.insert(1, join(dirname(__file__), 'namespace_package/ns2')) try: assert jedi.Script('from pkg import ns1_file').goto_definitions() assert jedi.Script('from pkg import ns2_file').goto_definitions() assert not jedi.Script('from pkg import ns3_file').goto_definitions() completions = jedi.Script('from pkg import ').completions() - names = [c.name for c in completions] - assert names == ['foo', 'ns1_file', 'ns1_folder', 'ns2_folder', 'ns2_file'] + names = [str(c.name) for c in completions] # str because of unicode + compare = ['foo', 'ns1_file', 'ns1_folder', 'ns2_folder', 'ns2_file'] + # must at least contain these items, other items are not important + assert not (set(compare) - set(names)) finally: sys.path.pop(0) sys.path.pop(0)