1
0
forked from VimPlug/jedi

instance readability improvements

This commit is contained in:
David Halter
2013-08-10 22:11:31 +04:30
parent ce8a8cfa3a
commit ee1df18694

View File

@@ -53,9 +53,9 @@ class Executable(pr.IsScope):
class Instance(use_metaclass(cache.CachedMetaClass, Executable)): class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
"""
""" This class is used to evaluate instances. """ This class is used to evaluate instances.
"""
def __init__(self, base, var_args=()): def __init__(self, base, var_args=()):
super(Instance, self).__init__(base, var_args) super(Instance, self).__init__(base, var_args)
if str(base.name) in ['list', 'set'] \ if str(base.name) in ['list', 'set'] \
@@ -72,22 +72,22 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
self.is_generated = False self.is_generated = False
@cache.memoize_default() @cache.memoize_default()
def get_init_execution(self, func): def _get_init_execution(self, func):
func = InstanceElement(self, func, True) func = InstanceElement(self, func, True)
return Execution(func, self.var_args) return Execution(func, self.var_args)
def get_func_self_name(self, func): def _get_func_self_name(self, func):
""" """
Returns the name of the first param in a class method (which is Returns the name of the first param in a class method (which is
normally self normally self
""" """
try: try:
return func.params[0].used_vars[0].names[0] return str(func.params[0].used_vars[0])
except IndexError: except IndexError:
return None return None
@cache.memoize_default([]) @cache.memoize_default([])
def get_self_properties(self): def _get_self_properties(self):
def add_self_dot_name(name): def add_self_dot_name(name):
n = copy.copy(name) n = copy.copy(name)
n.names = n.names[1:] n.names = n.names[1:]
@@ -100,11 +100,11 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
if isinstance(sub, pr.Class): if isinstance(sub, pr.Class):
continue continue
# Get the self name, if there's one. # Get the self name, if there's one.
self_name = self.get_func_self_name(sub) self_name = self._get_func_self_name(sub)
if self_name: if self_name:
# Check the __init__ function. # Check the __init__ function.
if sub.name.get_code() == '__init__': if sub.name.get_code() == '__init__':
sub = self.get_init_execution(sub) sub = self._get_init_execution(sub)
for n in sub.get_set_vars(): for n in sub.get_set_vars():
# Only names with the selfname are being added. # Only names with the selfname are being added.
# It is also important, that they have a len() of 2, # It is also important, that they have a len() of 2,
@@ -113,7 +113,7 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
add_self_dot_name(n) add_self_dot_name(n)
for s in self.base.get_super_classes(): for s in self.base.get_super_classes():
names += Instance(s).get_self_properties() names += Instance(s)._get_self_properties()
return names return names
@@ -138,7 +138,7 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
Get the instance vars of a class. This includes the vars of all Get the instance vars of a class. This includes the vars of all
classes classes
""" """
names = self.get_self_properties() names = self._get_self_properties()
class_names = self.base.get_defined_names() class_names = self.base.get_defined_names()
for var in class_names: for var in class_names:
@@ -150,7 +150,7 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)):
An Instance has two scopes: The scope with self names and the class An Instance has two scopes: The scope with self names and the class
scope. Instance variables have priority over the class scope. scope. Instance variables have priority over the class scope.
""" """
yield self, self.get_self_properties() yield self, self._get_self_properties()
names = [] names = []
class_names = self.base.get_defined_names() class_names = self.base.get_defined_names()
@@ -682,9 +682,6 @@ class Execution(Executable):
return iter(common.PushBackIterator(iterate())) return iter(common.PushBackIterator(iterate()))
def get_set_vars(self):
return self.get_defined_names()
def get_defined_names(self): def get_defined_names(self):
""" """
Call the default method with the own instance (self implements all Call the default method with the own instance (self implements all
@@ -692,6 +689,8 @@ class Execution(Executable):
""" """
return self.get_params() + pr.Scope.get_set_vars(self) return self.get_params() + pr.Scope.get_set_vars(self)
get_set_vars = get_defined_names
@common.rethrow_uncaught @common.rethrow_uncaught
def copy_properties(self, prop): def copy_properties(self, prop):
""" """