From eedadbfe9588c90e8d7681295bc9d7d7a7898209 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 24 Dec 2013 17:27:06 +0100 Subject: [PATCH] temporary interfaces subclass. let's see if we need to keep it --- jedi/evaluate/interfaces.py | 3 +++ jedi/evaluate/recursion.py | 3 ++- jedi/evaluate/representation.py | 5 +++-- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 jedi/evaluate/interfaces.py diff --git a/jedi/evaluate/interfaces.py b/jedi/evaluate/interfaces.py new file mode 100644 index 00000000..cee5b244 --- /dev/null +++ b/jedi/evaluate/interfaces.py @@ -0,0 +1,3 @@ +class Iterable(): + """Parent class of Generator and Array, exists due to import restrictions.""" + pass diff --git a/jedi/evaluate/recursion.py b/jedi/evaluate/recursion.py index d9407e51..baa1bc9d 100644 --- a/jedi/evaluate/recursion.py +++ b/jedi/evaluate/recursion.py @@ -11,6 +11,7 @@ from jedi.parser import representation as pr from jedi import debug from jedi import settings from jedi.evaluate import builtin +from jedi.evaluate import interfaces class RecursionDecorator(object): @@ -131,7 +132,7 @@ class ExecutionRecursionDecorator(object): if cls.execution_count > settings.max_executions: return True - if isinstance(execution.base, (er.Generator, er.Array)): + if isinstance(execution.base, interfaces.Iterable): return False module = execution.get_parent_until() if evaluate_generator or module == builtin.Builtin.scope: diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 3ef1f4f1..983efb0c 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -25,6 +25,7 @@ from jedi.evaluate import builtin from jedi.evaluate import recursion from jedi import docstrings from jedi import dynamic +from jedi.evaluate.interfaces import Iterable class Executable(pr.IsScope): @@ -778,7 +779,7 @@ class Execution(Executable): (type(self).__name__, self._decorated) -class Generator(use_metaclass(cache.CachedMetaClass, pr.Base)): +class Generator(use_metaclass(cache.CachedMetaClass, pr.Base, Iterable)): """ Cares for `yield` statements. """ def __init__(self, func, var_args): super(Generator, self).__init__() @@ -824,7 +825,7 @@ class Generator(use_metaclass(cache.CachedMetaClass, pr.Base)): return "<%s of %s>" % (type(self).__name__, self.func) -class Array(use_metaclass(cache.CachedMetaClass, pr.Base)): +class Array(use_metaclass(cache.CachedMetaClass, pr.Base, Iterable)): """ Used as a mirror to pr.Array, if needed. It defines some getter methods which are important in this module.