diff --git a/jedi/evaluate/context.py b/jedi/evaluate/context.py index fffc81c6..be6c83ec 100644 --- a/jedi/evaluate/context.py +++ b/jedi/evaluate/context.py @@ -26,7 +26,8 @@ class Context(object): Execute a function with already executed arguments. """ from jedi.evaluate.param import ValuesArguments - return self.execute(ValuesArguments(value_list)) + arguments = ValuesArguments([[value] for value in value_list]) + return self.execute(arguments) def eval_node(self, node): return self.evaluator.eval_element(self, node) diff --git a/jedi/evaluate/instance.py b/jedi/evaluate/instance.py index 4ea4a57e..4f325b40 100644 --- a/jedi/evaluate/instance.py +++ b/jedi/evaluate/instance.py @@ -73,9 +73,8 @@ class AbstractInstanceContext(Context): def execute_function_slots(self, names, *evaluated_args): return unite( - self.execute_evaluated(method, *evaluated_args) + name.execute_evaluated(*evaluated_args) for name in names - for method in name.infer() ) def get_descriptor_returns(self, obj): @@ -208,7 +207,7 @@ class CompiledInstanceClassFilter(compiled.CompiledObjectFilter): for name in names] -class BoundMethod(object): +class BoundMethod(Context): def __init__(self, instance, class_context, function): self._instance = instance self._class_context = class_context diff --git a/jedi/evaluate/param.py b/jedi/evaluate/param.py index 867c7282..a401db4e 100644 --- a/jedi/evaluate/param.py +++ b/jedi/evaluate/param.py @@ -29,16 +29,16 @@ def try_iter_content(types, depth=0): class AbstractArguments(): - def eval_argument_clinic(self, arguments): + def eval_argument_clinic(self, parameters): """Uses a list with argument clinic information (see PEP 436).""" iterator = self.unpack() - for i, (name, optional, allow_kwargs) in enumerate(arguments): + for i, (name, optional, allow_kwargs) in enumerate(parameters): key, argument = next(iterator, (None, None)) if key is not None: raise NotImplementedError if argument is None and not optional: debug.warning('TypeError: %s expected at least %s arguments, got %s', - name, len(arguments), i) + name, len(parameters), i) raise ValueError values = set() if argument is None else argument.infer() diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index fc5bedf9..7280ea44 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -255,7 +255,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): return ContextName(self, self._class_context.name.string_name) def __repr__(self): - return "<%s of %s(%s)>" % (self.__type__.__name__, self._class_context, + return "<%s of %s(%s)>" % (self.__class__.__name__, self._class_context, self.var_args) @@ -388,7 +388,7 @@ class InstanceElement(use_metaclass(CachedMetaClass, tree.Base)): return FunctionContext.py__call__(self, params) def __repr__(self): - return "<%s of %s>" % (self.__type__.__name__, self.var) + return "<%s of %s>" % (self.__class__.__name__, self.var) class Wrapper(tree.Base): @@ -507,7 +507,7 @@ class ClassContext(use_metaclass(CachedMetaClass, context.TreeContext, Wrapper)) raise KeyError("Couldn't find subscope.") def __repr__(self): - return "<%s of %s>" % (self.__type__.__name__, self.classdef) + return "<%s of %s>" % (self.__class__.__name__, self.classdef) @property def name(self): @@ -568,7 +568,7 @@ class FunctionContext(use_metaclass(CachedMetaClass, context.TreeContext, Wrappe return compiled.get_special_object(self.evaluator, name) def __repr__(self): - return "<%s of %s>" % (self.__type__.__name__, self.base_func) + return "<%s of %s>" % (self.__class__.__name__, self.base_func) @property def name(self):