From becf1027c04af6cdfad56a704891185b160cf076 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Tue, 6 Dec 2016 09:51:57 +0100 Subject: [PATCH] Refactor our create_context constructs. --- jedi/api/classes.py | 1 - jedi/api/completion.py | 15 ++++++--------- jedi/evaluate/__init__.py | 4 ++-- jedi/evaluate/context.py | 4 ++-- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/jedi/api/classes.py b/jedi/api/classes.py index caef6c94..140c605a 100644 --- a/jedi/api/classes.py +++ b/jedi/api/classes.py @@ -174,7 +174,6 @@ class BaseDefinition(object): yield name.string_name name.api_type parent_context = name.parent_context - print(parent_context) while parent_context is not None: try: method = parent_context.py__name__ diff --git a/jedi/api/completion.py b/jedi/api/completion.py index 65ff9f68..62425506 100644 --- a/jedi/api/completion.py +++ b/jedi/api/completion.py @@ -53,7 +53,6 @@ def get_user_scope(module_context, position): Returns the scope in which the user resides. This includes flows. """ user_stmt = module_context.module_node.get_statement_for_position(position) - evaluator = module_context.evaluator if user_stmt is None: def scan(scope): for s in scope.children: @@ -66,15 +65,10 @@ def get_user_scope(module_context, position): scanned_node = scan(module_context.module_node) if scanned_node: - return evaluator.create_context(module_context, scanned_node) + return module_context.create_context(scanned_node, node_is_context=True) return module_context else: - scope_node = user_stmt.get_parent_scope(include_flows=True) - return evaluator.create_context(module_context, scope_node) - - # TODO need something like this in this func? - #if not context.is_scope(): # Might be a flow (if/while/etc). - #context = context.get_parent_scope() + return module_context.create_context(user_stmt) class Completion: @@ -236,7 +230,10 @@ class Completion: cls = leaf.get_parent_until(tree.Class) if isinstance(cls, (tree.Class, tree.Function)): # Complete the methods that are defined in the super classes. - random_context = self._module_context.create_context(cls) + random_context = self._module_context.create_context( + cls, + node_is_context=True + ) else: return diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 0424649f..9a52ec66 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -544,7 +544,7 @@ class Evaluator(object): raise DeprecationWarning return element - def create_context(self, base_context, node): + def create_context(self, base_context, node, node_is_context=False): def parent_scope(node): while True: node = node.parent @@ -594,7 +594,7 @@ class Evaluator(object): base_node = base_context.get_node() - if node.is_scope(): + if node_is_context and node.is_scope(): scope_node = node else: scope_node = parent_scope(node) diff --git a/jedi/evaluate/context.py b/jedi/evaluate/context.py index 1576d775..b3578a94 100644 --- a/jedi/evaluate/context.py +++ b/jedi/evaluate/context.py @@ -53,8 +53,8 @@ class Context(object): return self.evaluator.find_types( self, name_or_str, name_context, position, search_global, is_goto) - def create_context(self, node): - return self.evaluator.create_context(self, node) + def create_context(self, node, node_is_context=False): + return self.evaluator.create_context(self, node, node_is_context) def is_class(self): return False