From b550f67bceed1b2e4ca334cd4c0f6c4a9a3cb372 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 28 Oct 2014 11:33:28 +0100 Subject: [PATCH] Small instance refactoring, now adding is_generated as a param. --- jedi/evaluate/finder.py | 9 +++++---- jedi/evaluate/representation.py | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/jedi/evaluate/finder.py b/jedi/evaluate/finder.py index 310f65d2..459fcee0 100644 --- a/jedi/evaluate/finder.py +++ b/jedi/evaluate/finder.py @@ -74,6 +74,7 @@ class NameFinder(object): names = [] self.maybe_descriptor = isinstance(self.scope, er.Class) for name_list_scope, name_list in scope_names_generator: + print(name_list_scope) break_scopes = [] if not isinstance(name_list_scope, compiled.CompiledObject): # Here is the position stuff happening (sorting of variables). @@ -305,7 +306,7 @@ class NameFinder(object): cls = func.parent.get_parent_until((pr.Class, pr.Function)) - from jedi.evaluate.param import ExecutedParam + from jedi.evaluate.param import ExecutedParam, Arguments if isinstance(cls, pr.Class) and param.position_nr == 0 \ and not isinstance(param, ExecutedParam): # This is where we add self - if it has never been @@ -313,9 +314,9 @@ class NameFinder(object): if isinstance(self.scope, er.InstanceElement): res_new.append(self.scope.instance) else: - for inst in evaluator.execute(er.Class(evaluator, cls)): - inst.is_generated = True - res_new.append(inst) + inst = er.Instance(evaluator, er.wrap(evaluator, cls), + Arguments(evaluator, ()), is_generated=True) + res_new.append(inst) return res_new # Instances are typically faked, if the instance is not called from diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 38e975c9..6f1f70e8 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -84,7 +84,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): """ This class is used to evaluate instances. """ - def __init__(self, evaluator, base, var_args=()): + def __init__(self, evaluator, base, var_args, is_generated=False): super(Instance, self).__init__(evaluator, base, var_args) if base.name.get_code() in ['list', 'set'] \ and compiled.builtin == base.get_parent_until(): @@ -97,7 +97,7 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): self.execute_subscope_by_name('__init__', self.var_args) # Generated instances are classes that are just generated by self # (No var_args) used. - self.is_generated = False + self.is_generated = is_generated @property def py__call__(self):