1
0
forked from VimPlug/jedi

Fix __getattribute__ and __getattr__.

This commit is contained in:
Dave Halter
2016-11-09 22:23:04 +01:00
parent 20380e80b0
commit 6899c8f646
4 changed files with 11 additions and 11 deletions

View File

@@ -26,7 +26,8 @@ class Context(object):
Execute a function with already executed arguments. Execute a function with already executed arguments.
""" """
from jedi.evaluate.param import ValuesArguments 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): def eval_node(self, node):
return self.evaluator.eval_element(self, node) return self.evaluator.eval_element(self, node)

View File

@@ -73,9 +73,8 @@ class AbstractInstanceContext(Context):
def execute_function_slots(self, names, *evaluated_args): def execute_function_slots(self, names, *evaluated_args):
return unite( return unite(
self.execute_evaluated(method, *evaluated_args) name.execute_evaluated(*evaluated_args)
for name in names for name in names
for method in name.infer()
) )
def get_descriptor_returns(self, obj): def get_descriptor_returns(self, obj):
@@ -208,7 +207,7 @@ class CompiledInstanceClassFilter(compiled.CompiledObjectFilter):
for name in names] for name in names]
class BoundMethod(object): class BoundMethod(Context):
def __init__(self, instance, class_context, function): def __init__(self, instance, class_context, function):
self._instance = instance self._instance = instance
self._class_context = class_context self._class_context = class_context

View File

@@ -29,16 +29,16 @@ def try_iter_content(types, depth=0):
class AbstractArguments(): class AbstractArguments():
def eval_argument_clinic(self, arguments): def eval_argument_clinic(self, parameters):
"""Uses a list with argument clinic information (see PEP 436).""" """Uses a list with argument clinic information (see PEP 436)."""
iterator = self.unpack() 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)) key, argument = next(iterator, (None, None))
if key is not None: if key is not None:
raise NotImplementedError raise NotImplementedError
if argument is None and not optional: if argument is None and not optional:
debug.warning('TypeError: %s expected at least %s arguments, got %s', debug.warning('TypeError: %s expected at least %s arguments, got %s',
name, len(arguments), i) name, len(parameters), i)
raise ValueError raise ValueError
values = set() if argument is None else argument.infer() values = set() if argument is None else argument.infer()

View File

@@ -255,7 +255,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
return ContextName(self, self._class_context.name.string_name) return ContextName(self, self._class_context.name.string_name)
def __repr__(self): 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) self.var_args)
@@ -388,7 +388,7 @@ class InstanceElement(use_metaclass(CachedMetaClass, tree.Base)):
return FunctionContext.py__call__(self, params) return FunctionContext.py__call__(self, params)
def __repr__(self): 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): class Wrapper(tree.Base):
@@ -507,7 +507,7 @@ class ClassContext(use_metaclass(CachedMetaClass, context.TreeContext, Wrapper))
raise KeyError("Couldn't find subscope.") raise KeyError("Couldn't find subscope.")
def __repr__(self): def __repr__(self):
return "<%s of %s>" % (self.__type__.__name__, self.classdef) return "<%s of %s>" % (self.__class__.__name__, self.classdef)
@property @property
def name(self): def name(self):
@@ -568,7 +568,7 @@ class FunctionContext(use_metaclass(CachedMetaClass, context.TreeContext, Wrappe
return compiled.get_special_object(self.evaluator, name) return compiled.get_special_object(self.evaluator, name)
def __repr__(self): def __repr__(self):
return "<%s of %s>" % (self.__type__.__name__, self.base_func) return "<%s of %s>" % (self.__class__.__name__, self.base_func)
@property @property
def name(self): def name(self):