diff --git a/jedi/evaluate/context/function.py b/jedi/evaluate/context/function.py index ed295c52..8978a869 100644 --- a/jedi/evaluate/context/function.py +++ b/jedi/evaluate/context/function.py @@ -13,7 +13,7 @@ from jedi.evaluate.arguments import AnonymousArguments from jedi.evaluate.filters import ParserTreeFilter, FunctionExecutionFilter, \ ContextName, AbstractNameDefinition, ParamName from jedi.evaluate.base_context import ContextualizedNode, NO_CONTEXTS, \ - ContextSet, TreeContext + ContextSet, TreeContext, ContextWrapper from jedi.evaluate.lazy_context import LazyKnownContexts, LazyKnownContext, \ LazyTreeContext from jedi.evaluate.context.typing import TypeVar @@ -296,14 +296,14 @@ class FunctionExecutionContext(TreeContext): return self.get_return_values() -class OverloadedFunctionContext(object): +class OverloadedFunctionContext(ContextWrapper): def __init__(self, function, overloaded_functions): - self._function = function + super(OverloadedFunctionContext, self).__init__(function) self._overloaded_functions = overloaded_functions def py__call__(self, arguments): context_set = ContextSet() - debug.dbg("Execute overloaded function %s", self._function, color='BLUE') + debug.dbg("Execute overloaded function %s", self._wrapped_context, color='BLUE') for f in self._overloaded_functions: signature = parser_utils.get_call_signature(f.tree_node) if signature_matches(f, arguments): @@ -315,9 +315,6 @@ class OverloadedFunctionContext(object): signature, f.tree_node.start_pos[0], arguments, color='BLUE') return context_set - def __getattr__(self, name): - return getattr(self._function, name) - def signature_matches(function_context, arguments): unpacked_arguments = arguments.unpack() diff --git a/jedi/plugins/stdlib.py b/jedi/plugins/stdlib.py index 1438c038..764b7980 100644 --- a/jedi/plugins/stdlib.py +++ b/jedi/plugins/stdlib.py @@ -123,17 +123,13 @@ def argument_clinic(string, want_obj=False, want_context=False, @argument_clinic('obj, type, /', want_obj=True, want_arguments=True) def builtins_property(objects, types, obj, arguments): - print(obj) - print(obj.instance.var_args) property_args = obj.instance.var_args.unpack() key, lazy_context = next(property_args, (None, None)) if key is not None or lazy_context is None: debug.warning('property expected a first param, not %s', arguments) return NO_CONTEXTS - print('lazy_context', lazy_context, lazy_context.infer()) - print() - print(objects, type) - return NO_CONTEXTS + + return lazy_context.infer().py__call__(arguments=ValuesArguments([objects])) @argument_clinic('iterator[, default], /', want_evaluator=True)