From bb852c3e85650e33ce57a8b67cf6b08829384cfd Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 30 Jul 2019 23:48:54 +0200 Subject: [PATCH] Fix some minor signature issues --- jedi/evaluate/context/instance.py | 6 +++--- jedi/evaluate/signature.py | 11 +++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/jedi/evaluate/context/instance.py b/jedi/evaluate/context/instance.py index 17e0382e..91bc3184 100644 --- a/jedi/evaluate/context/instance.py +++ b/jedi/evaluate/context/instance.py @@ -232,8 +232,8 @@ class AbstractInstanceContext(Context): return class_context def get_signatures(self): - init_funcs = self.py__getattribute__('__call__') - return [sig.bind(self) for sig in init_funcs.get_signatures()] + call_funcs = self.py__getattribute__('__call__').py__get__(self, self.class_context) + return [s.bind(self) for s in call_funcs.get_signatures()] def __repr__(self): return "<%s of %s(%s)>" % (self.__class__.__name__, self.class_context, @@ -400,7 +400,7 @@ class BoundMethod(FunctionMixin, ContextWrapper): return function_execution.infer() def get_signatures(self): - return [sig.bind(self) for sig in super(BoundMethod, self).get_signatures()] + return [sig.bind(self, self) for sig in self._wrapped_context.get_signatures()] def __repr__(self): return '<%s: %s>' % (self.__class__.__name__, self._wrapped_context) diff --git a/jedi/evaluate/signature.py b/jedi/evaluate/signature.py index 1b4d60dc..bf65789e 100644 --- a/jedi/evaluate/signature.py +++ b/jedi/evaluate/signature.py @@ -50,17 +50,20 @@ class AbstractSignature(_SignatureMixin): return param_names[1:] return param_names - def bind(self, context): + def bind(self, context, function_context=None): raise NotImplementedError + def __repr__(self): + return '<%s: %s, %s>' % (self.__class__.__name__, self.context, self._function_context) + class TreeSignature(AbstractSignature): def __init__(self, context, function_context=None, is_bound=False): super(TreeSignature, self).__init__(context, is_bound) self._function_context = function_context or context - def bind(self, context): - return TreeSignature(context, self._function_context, is_bound=True) + def bind(self, context, function_context=None): + return TreeSignature(context, function_context or self._function_context, is_bound=True) @property def _annotation(self): @@ -98,7 +101,7 @@ class BuiltinSignature(AbstractSignature): def _function_context(self): return self.context - def bind(self, context): + def bind(self, context, function_context=None): assert not self.is_bound return BuiltinSignature(context, self._return_string, is_bound=True)