diff --git a/jedi/api/classes.py b/jedi/api/classes.py index 5c445e5f..ef8355b8 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -29,6 +29,7 @@ def defined_names(evaluator, scope): pair = next(get_names_of_scope(evaluator, scope, star_search=False, include_builtin=False), None) names = pair[1] if pair else [] + names = [n for n in names if isinstance(n, pr.Import) or (len(n) == 1)] return [Definition(evaluator, d) for d in sorted(names, key=lambda s: s.start_pos)] diff --git a/jedi/evaluate/imports.py b/jedi/evaluate/imports.py index 4db6d66a..77757b15 100644 --- a/jedi/evaluate/imports.py +++ b/jedi/evaluate/imports.py @@ -167,8 +167,8 @@ class ImportPath(pr.Base): # This is not an existing Import statement. Therefore, set position to # 0 (0 is not a valid line number). zero = (0, 0) - names = ((name_part.string, name_part.start_pos) - for name_part in i.namespace.names[1:]) + names = [(name_part.string, name_part.start_pos) + for name_part in i.namespace.names[1:]] n = pr.Name(i._sub_module, names, zero, zero, self.import_stmt) new = pr.Import(i._sub_module, zero, zero, n) new.parent = parent diff --git a/jedi/parser/representation.py b/jedi/parser/representation.py index e68a7c89..ca5229c4 100644 --- a/jedi/parser/representation.py +++ b/jedi/parser/representation.py @@ -315,18 +315,9 @@ class Scope(Simple, IsScope, DocstringMixin): ... b.c = z ... ''')) >>> parser.module.get_defined_names() - [, ] - - Note that unlike :meth:`get_set_vars`, assignment to object - attribute does not change the result because it does not change - the defined names in this scope. - - >>> parser.module.get_set_vars() [, , ] - """ - return [n for n in self.get_set_vars() - if isinstance(n, Import) or (len(n) == 1)] + return self.get_set_vars() @Python3Method def get_statement_for_position(self, pos, include_imports=False): @@ -1433,10 +1424,11 @@ class Name(Simple): def __init__(self, module, names, start_pos, end_pos, parent=None): super(Name, self).__init__(module, start_pos, end_pos) - names = tuple(NamePart(n[0], self, n[1]) for n in names) # Cache get_code, because it's used quite often for comparisons # (seen by using the profiler). - self._get_code = ".".join(unicode(n) for n in names) + self._get_code = ".".join(n[0] for n in names) + + names = tuple(NamePart(n[0], self, n[1]) for n in names) self.names = names if parent is not None: self.parent = parent