Star imports are now part of the ModuleWrapper.

This commit is contained in:
Dave Halter
2014-11-19 18:09:49 +01:00
parent 08bdcfb8ca
commit ba0e61d99f
4 changed files with 38 additions and 5 deletions
+2
View File
@@ -569,9 +569,11 @@ def get_names_of_scope(evaluator, scope, position=None, star_search=True, includ
# Add star imports.
if star_search:
"""
for s in imports.remove_star_imports(evaluator, non_flow.get_parent_until()):
for g in get_names_of_scope(evaluator, s, star_search=False):
yield g
"""
# Add builtins to the global scope.
if include_builtin:
+4 -3
View File
@@ -77,9 +77,9 @@ class ImportWrapper(pr.Base):
else:
scopes = [module]
star_imports = remove_star_imports(self._evaluator, module)
if star_imports:
scopes = [StarImportModule(scopes[0], star_imports)]
#star_imports = remove_star_imports(self._evaluator, module)
#if star_imports:
# scopes = [StarImportModule(scopes[0], star_imports)]
# goto only accepts `Name`
if is_goto and not rest:
@@ -616,6 +616,7 @@ def remove_star_imports(evaluator, scope, ignored_modules=()):
and follow these modules.
"""
raise NotImplementedError
if isinstance(scope, StarImportModule):
return scope.star_import_modules
modules = follow_imports(evaluator, (i for i in scope.get_imports() if i.star))
+12
View File
@@ -48,6 +48,7 @@ from jedi.evaluate import docstrings
from jedi.evaluate import helpers
from jedi.evaluate import param
from jedi.evaluate import flow_analysis
from jedi.evaluate import imports
def wrap(evaluator, element):
@@ -714,11 +715,22 @@ class ModuleWrapper(use_metaclass(CachedMetaClass, pr.Module, Wrapper)):
def scope_names_generator(self, position=None):
yield self, pr.filter_after_position(self._module.get_defined_names(), position)
yield self, self._module_attributes()
for star_module in self.star_imports():
yield self, star_module.get_defined_names()
yield self, self.base.global_names
sub_modules = self._sub_modules()
if sub_modules:
yield self, self._sub_modules()
@underscore_memoization
def star_imports(self):
modules = []
for i in self.base.imports:
if i.is_star_import():
name = i.star_import_name()
modules += imports.ImportWrapper(self._evaluator, name).follow()
return modules
@memoize_default()
def _module_attributes(self):
def parent_callback():