Fix star imports checks, fixes #1235

This commit is contained in:
Dave Halter
2019-06-22 16:45:43 +02:00
parent c413b486fb
commit 56ec79d62a
2 changed files with 21 additions and 3 deletions

View File

@@ -145,13 +145,18 @@ class ModuleMixin(SubModuleDictMixin):
# to push the star imports into Evaluator.module_cache, if we reenable this.
@evaluator_method_cache([])
def star_imports(self):
from jedi.evaluate.imports import infer_import
from jedi.evaluate.imports import Importer
modules = []
for i in self.tree_node.iter_imports():
if i.is_star_import():
name = i.get_paths()[-1][-1]
new = infer_import(self, name)
new = Importer(
self.evaluator,
import_path=i.get_paths()[-1],
module_context=self,
level=i.level
).follow()
for module in new:
if isinstance(module, ModuleContext):
modules += module.star_imports()

View File

@@ -462,3 +462,16 @@ def test_import_with_semicolon(Script):
names = [c.name for c in Script('xzy; from abc import ').completions()]
assert 'ABCMeta' in names
assert 'abc' not in names
def test_relative_import_star(Script):
# Coming from github #1235
import jedi
source = """
from . import *
furl.c
"""
script = jedi.Script(source,3,len("furl.c"), 'export.py')
assert script.completions()