From bf3fa11f6fd6a06975bdbb654e9a5faf7e4b1841 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sat, 10 Oct 2015 20:01:03 +0200 Subject: [PATCH] Name lookups shouldn't return duplicates. --- jedi/api/__init__.py | 2 +- jedi/evaluate/finder.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jedi/api/__init__.py b/jedi/api/__init__.py index fe8ae14c..945b98a1 100644 --- a/jedi/api/__init__.py +++ b/jedi/api/__init__.py @@ -332,7 +332,7 @@ class Script(object): :rtype: list of :class:`classes.Definition` """ def resolve_import_paths(scopes): - for s in scopes.copy(): + for s in set(scopes): if isinstance(s, imports.ImportWrapper): scopes.remove(s) scopes.update(resolve_import_paths(set(s.follow()))) diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 3219f1d1..f396740d 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -248,7 +248,7 @@ class NameFinder(object): return result def _names_to_types(self, names, search_global): - types = [] + types = set() # Add isinstance and other if/assert knowledge. if isinstance(self.name_str, tree.Name): @@ -268,12 +268,12 @@ class NameFinder(object): for name in names: new_types = _name_to_types(self._evaluator, name, self.scope) if isinstance(self.scope, (er.Class, er.Instance)) and not search_global: - types += self._resolve_descriptors(name, new_types) + types |= set(self._resolve_descriptors(name, new_types)) else: - types += new_types + types |= set(new_types) if not names and isinstance(self.scope, er.Instance): # handling __getattr__ / __getattribute__ - types = self._check_getattr(self.scope) + return self._check_getattr(self.scope) return types