From 612ad2f49145bfee9b1c8e71ff615740f7824d86 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 28 Sep 2017 14:17:37 +0200 Subject: [PATCH] Move eval_subscript_list to the syntax_tree module. --- jedi/evaluate/iterable.py | 30 ------------------------------ jedi/evaluate/syntax_tree.py | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index d8730dee..d13970ec 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -786,33 +786,3 @@ class Slice(context.Context): return slice(get(self._start), get(self._stop), get(self._step)) except IndexError: return slice(None, None, None) - - -def create_index_types(evaluator, context, index): - """ - Handles slices in subscript nodes. - """ - if index == ':': - # Like array[:] - return ContextSet(Slice(context, None, None, None)) - - elif index.type == 'subscript' and not index.children[0] == '.': - # subscript basically implies a slice operation, except for Python 2's - # Ellipsis. - # e.g. array[:3] - result = [] - for el in index.children: - if el == ':': - if not result: - result.append(None) - elif el.type == 'sliceop': - if len(el.children) == 2: - result.append(el.children[1]) - else: - result.append(el) - result += [None] * (3 - len(result)) - - return ContextSet(Slice(context, *result)) - - # No slices - return context.eval_node(index) diff --git a/jedi/evaluate/syntax_tree.py b/jedi/evaluate/syntax_tree.py index 1ea6455f..e542ce52 100644 --- a/jedi/evaluate/syntax_tree.py +++ b/jedi/evaluate/syntax_tree.py @@ -118,7 +118,6 @@ def eval_trailer(context, base_contexts, trailer): node = () if trailer_op == '[': - from jedi.evaluate import iterable from jedi.evaluate.representation import ClassContext from jedi.evaluate.instance import TreeInstance @@ -137,7 +136,7 @@ def eval_trailer(context, base_contexts, trailer): result |= typing_module_types return result | base_contexts.get_item( - iterable.create_index_types(context.evaluator, context, node), + eval_subscript_list(context.evaluator, context, node), ContextualizedNode(context, trailer) ) else: @@ -582,3 +581,34 @@ def check_tuple_assignments(evaluator, contextualized_name, context_set): return ContextSet() context_set = lazy_context.infer() return context_set + + +def eval_subscript_list(evaluator, context, index): + """ + Handles slices in subscript nodes. + """ + from jedi.evaluate.iterable import Slice + if index == ':': + # Like array[:] + return ContextSet(Slice(context, None, None, None)) + + elif index.type == 'subscript' and not index.children[0] == '.': + # subscript basically implies a slice operation, except for Python 2's + # Ellipsis. + # e.g. array[:3] + result = [] + for el in index.children: + if el == ':': + if not result: + result.append(None) + elif el.type == 'sliceop': + if len(el.children) == 2: + result.append(el.children[1]) + else: + result.append(el) + result += [None] * (3 - len(result)) + + return ContextSet(Slice(context, *result)) + + # No slices + return context.eval_node(index)