From 6899c8f6462f3ac7d3a1c9edc1ebf2ab264abeaf Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Wed, 9 Nov 2016 22:23:04 +0100 Subject: [PATCH] Fix __getattribute__ and __getattr__. --- jedi/evaluate/context.py | 3 ++- jedi/evaluate/instance.py | 5 ++--- jedi/evaluate/param.py | 6 +++--- jedi/evaluate/representation.py | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) 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):