diff --git a/jedi/evaluate/context/instance.py b/jedi/evaluate/context/instance.py index ae1bb422..96b46b4f 100644 --- a/jedi/evaluate/context/instance.py +++ b/jedi/evaluate/context/instance.py @@ -146,8 +146,10 @@ class AbstractInstanceContext(Context): def py__getitem__(self, index_context_set, contextualized_node): names = self.get_function_slot_names(u'__getitem__') if not names: - debug.warning('Found no __getitem__ on %s', self) - return NO_CONTEXTS + return super(AbstractInstanceContext, self).py__getitem__( + index_context_set, + contextualized_node, + ) args = ValuesArguments([index_context_set]) return ContextSet.from_sets(name.infer().execute(args) for name in names) diff --git a/jedi/evaluate/context/iterable.py b/jedi/evaluate/context/iterable.py index 62da28b6..6ae64125 100644 --- a/jedi/evaluate/context/iterable.py +++ b/jedi/evaluate/context/iterable.py @@ -55,6 +55,12 @@ class GeneratorBase(LazyAttributeOverwrite, IterableMixin): .execute_annotation() return generator + def is_instance(self): + return False + + def py__bool__(self): + return True + @publish_method('__iter__') def py__iter__(self, contextualized_node=None): return ContextSet([self]) diff --git a/jedi/evaluate/syntax_tree.py b/jedi/evaluate/syntax_tree.py index f65ad2e2..c8b9e45e 100644 --- a/jedi/evaluate/syntax_tree.py +++ b/jedi/evaluate/syntax_tree.py @@ -639,7 +639,7 @@ def _apply_decorators(context, node): decoratee_context = FunctionContext.from_context(context, node) initial = values = ContextSet([decoratee_context]) for dec in reversed(node.get_decorators()): - debug.dbg('decorator: %s %s', dec, values) + debug.dbg('decorator: %s %s', dec, values, color="MAGENTA") with debug.increase_indent_cm(): dec_values = context.eval_node(dec.children[1]) trailer_nodes = dec.children[2:-1] @@ -663,7 +663,7 @@ def _apply_decorators(context, node): debug.warning('not possible to resolve wrappers found %s', node) return initial - debug.dbg('decorator end %s', values) + debug.dbg('decorator end %s', values, color="MAGENTA") return values