diff --git a/jedi/common/__init__.py b/jedi/common/__init__.py index b190d863..702a5e60 100644 --- a/jedi/common/__init__.py +++ b/jedi/common/__init__.py @@ -1 +1 @@ -from jedi.common.context import BaseContextSet +from jedi.common.context import BaseContextSet, BaseContext diff --git a/jedi/common/context.py b/jedi/common/context.py index 95839ea9..dfcf5a9e 100644 --- a/jedi/common/context.py +++ b/jedi/common/context.py @@ -1,3 +1,16 @@ +class BaseContext(object): + def __init__(self, evaluator, parent_context=None): + self.evaluator = evaluator + self.parent_context = parent_context + + def get_root_context(self): + context = self + while True: + if context.parent_context is None: + return context + context = context.parent_context + + class BaseContextSet(object): def __init__(self, *args): self._set = set(args) diff --git a/jedi/evaluate/context.py b/jedi/evaluate/context.py index c4fd3fab..673b561b 100644 --- a/jedi/evaluate/context.py +++ b/jedi/evaluate/context.py @@ -3,23 +3,19 @@ from parso.python.tree import ExprStmt, CompFor from jedi import debug from jedi._compatibility import Python3Method, zip_longest, unicode from jedi.parser_utils import clean_scope_docstring, get_doc_with_call_signature -from jedi.common import BaseContextSet +from jedi.common import BaseContextSet, BaseContext -class Context(object): +class Context(BaseContext): """ Should be defined, otherwise the API returns empty types. """ + predefined_names = {} + tree_node = None """ To be defined by subclasses. """ - predefined_names = {} - tree_node = None - - def __init__(self, evaluator, parent_context=None): - self.evaluator = evaluator - self.parent_context = parent_context @property def api_type(self): @@ -27,13 +23,6 @@ class Context(object): # overwritten. return self.__class__.__name__.lower() - def get_root_context(self): - context = self - while True: - if context.parent_context is None: - return context - context = context.parent_context - @debug.increase_indent def execute(self, arguments): """