diff --git a/jedi/evaluate/compiled/fake.py b/jedi/evaluate/compiled/fake.py index 436f149f..a979f263 100644 --- a/jedi/evaluate/compiled/fake.py +++ b/jedi/evaluate/compiled/fake.py @@ -116,8 +116,6 @@ def _faked(module, obj, name): if faked_mod is None: return None, None - module.used_names = faked_mod.used_names - # Having the module as a `parser.representation.module`, we need to scan # for methods. if name is None: @@ -193,7 +191,8 @@ def _get_faked(module, obj, name=None): def get_faked(module, obj, name=None, parent=None): faked, fake_module = _get_faked(module and module.obj, obj, name) faked.parent = parent - module.used_names = fake_module.used_names + if module is not None: + module.used_names = fake_module.used_names return faked diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 79a1a0e2..b165f1fb 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -31,6 +31,7 @@ from jedi.evaluate.cache import CachedMetaClass, memoize_default from jedi.evaluate import analysis from jedi.evaluate import pep0484 from jedi import common +from jedi.evaluate.filters import DictFilter class IterableWrapper(tree.Base): @@ -56,10 +57,10 @@ class IterableWrapper(tree.Base): try: method = builtin_methods[name_str, self.type] except KeyError: - dct[name_str] = [name] + dct[name_str] = name else: parent = BuiltinMethod(self, method, name.parent) - dct[name_str] = [helpers.FakeName(name_str, parent, is_definition=True)] + dct[name_str] = helpers.FakeName(name_str, parent, is_definition=True) return dct @@ -111,6 +112,10 @@ class GeneratorMixin(object): gen_obj = compiled.get_special_object(self._evaluator, 'GENERATOR_OBJECT') yield self._get_names_dict(gen_obj.names_dict) + def get_filters(self, search_global, until_position=None, origin_scope=None): + gen_obj = compiled.get_special_object(self._evaluator, 'GENERATOR_OBJECT') + yield DictFilter(self._get_names_dict(gen_obj.names_dict)) + def py__bool__(self): return True