1
0
forked from VimPlug/jedi

AbstractSequence -> AbstractIterable.

This commit is contained in:
Dave Halter
2017-09-30 17:23:15 +02:00
parent 3bfff846ed
commit f733e07045
7 changed files with 16 additions and 16 deletions

View File

@@ -160,7 +160,7 @@ def _check_for_exception_catch(node_context, jedi_name, exception, payload=None)
except_classes = node_context.eval_node(node) except_classes = node_context.eval_node(node)
for cls in except_classes: for cls in except_classes:
from jedi.evaluate import iterable from jedi.evaluate import iterable
if isinstance(cls, iterable.AbstractSequence) and \ if isinstance(cls, iterable.AbstractIterable) and \
cls.array_type == 'tuple': cls.array_type == 'tuple':
# multiple exceptions # multiple exceptions
for lazy_context in cls.py__iter__(): for lazy_context in cls.py__iter__():

View File

@@ -81,7 +81,7 @@ class Context(BaseContext):
def get_item(self, index_contexts, contextualized_node): def get_item(self, index_contexts, contextualized_node):
from jedi.evaluate.compiled import CompiledObject from jedi.evaluate.compiled import CompiledObject
from jedi.evaluate.iterable import Slice, AbstractSequence from jedi.evaluate.iterable import Slice, AbstractIterable
result = ContextSet() result = ContextSet()
for index in index_contexts: for index in index_contexts:
@@ -91,7 +91,7 @@ class Context(BaseContext):
if type(index) not in (float, int, str, unicode, slice, type(Ellipsis)): if type(index) not in (float, int, str, unicode, slice, type(Ellipsis)):
# If the index is not clearly defined, we have to get all the # If the index is not clearly defined, we have to get all the
# possiblities. # possiblities.
if isinstance(self, AbstractSequence) and self.array_type == 'dict': if isinstance(self, AbstractIterable) and self.array_type == 'dict':
result |= self.dict_values() result |= self.dict_values()
else: else:
result |= iterate_contexts(ContextSet(self)) result |= iterate_contexts(ContextSet(self))

View File

@@ -248,7 +248,7 @@ def _check_isinstance_type(context, element, search_name):
context_set = ContextSet() context_set = ContextSet()
for cls_or_tup in lazy_context_cls.infer(): for cls_or_tup in lazy_context_cls.infer():
if isinstance(cls_or_tup, iterable.AbstractSequence) and \ if isinstance(cls_or_tup, iterable.AbstractIterable) and \
cls_or_tup.array_type == 'tuple': cls_or_tup.array_type == 'tuple':
for lazy_context in cls_or_tup.py__iter__(): for lazy_context in cls_or_tup.py__iter__():
for context in lazy_context.infer(): for context in lazy_context.infer():

View File

@@ -22,14 +22,14 @@ It is important to note that:
""" """
from jedi import debug from jedi import debug
from jedi import settings from jedi import settings
from jedi.evaluate.utils import safe_property
from jedi.evaluate.utils import to_list
from jedi.evaluate import compiled from jedi.evaluate import compiled
from jedi.evaluate import helpers from jedi.evaluate import helpers
from jedi.evaluate import analysis from jedi.evaluate import analysis
from jedi.evaluate import context from jedi.evaluate import context
from jedi.evaluate import recursion from jedi.evaluate import recursion
from jedi.evaluate.helpers import is_string from jedi.evaluate.helpers import is_string
from jedi.evaluate.utils import safe_property
from jedi.evaluate.utils import to_list
from jedi.evaluate.cache import evaluator_method_cache from jedi.evaluate.cache import evaluator_method_cache
from jedi.evaluate.filters import ParserTreeFilter, has_builtin_methods, \ from jedi.evaluate.filters import ParserTreeFilter, has_builtin_methods, \
register_builtin_method, SpecialMethodFilter register_builtin_method, SpecialMethodFilter
@@ -38,12 +38,12 @@ from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS, Context, \
from jedi.parser_utils import get_comp_fors from jedi.parser_utils import get_comp_fors
class AbstractSequence(Context): class AbstractIterable(Context):
builtin_methods = {} builtin_methods = {}
api_type = 'instance' api_type = 'instance'
def __init__(self, evaluator): def __init__(self, evaluator):
super(AbstractSequence, self).__init__(evaluator, evaluator.BUILTINS) super(AbstractIterable, self).__init__(evaluator, evaluator.BUILTINS)
def get_filters(self, search_global, until_position=None, origin_scope=None): def get_filters(self, search_global, until_position=None, origin_scope=None):
raise NotImplementedError raise NotImplementedError
@@ -111,7 +111,7 @@ class CompForContext(TreeContext):
yield ParserTreeFilter(self.evaluator, self) yield ParserTreeFilter(self.evaluator, self)
class Comprehension(AbstractSequence): class Comprehension(AbstractIterable):
@staticmethod @staticmethod
def from_atom(evaluator, context, atom): def from_atom(evaluator, context, atom):
bracket = atom.children[0] bracket = atom.children[0]
@@ -278,7 +278,7 @@ class GeneratorComprehension(GeneratorMixin, Comprehension):
pass pass
class SequenceLiteralContext(ArrayMixin, AbstractSequence): class SequenceLiteralContext(ArrayMixin, AbstractIterable):
mapping = {'(': 'tuple', mapping = {'(': 'tuple',
'[': 'list', '[': 'list',
'{': 'set'} '{': 'set'}

View File

@@ -390,7 +390,7 @@ def _star_star_dict(context, array, input_node, funcdef):
# For now ignore this case. In the future add proper iterators and just # For now ignore this case. In the future add proper iterators and just
# make one call without crazy isinstance checks. # make one call without crazy isinstance checks.
return {} return {}
elif isinstance(array, iterable.AbstractSequence) and array.array_type == 'dict': elif isinstance(array, iterable.AbstractIterable) and array.array_type == 'dict':
return array.exact_key_items() return array.exact_key_items()
else: else:
if funcdef is not None: if funcdef is not None:

View File

@@ -268,7 +268,7 @@ def collections_namedtuple(evaluator, obj, arguments):
_fields = list(_follow_param(evaluator, arguments, 1))[0] _fields = list(_follow_param(evaluator, arguments, 1))[0]
if isinstance(_fields, compiled.CompiledObject): if isinstance(_fields, compiled.CompiledObject):
fields = _fields.obj.replace(',', ' ').split() fields = _fields.obj.replace(',', ' ').split()
elif isinstance(_fields, iterable.AbstractSequence): elif isinstance(_fields, iterable.AbstractIterable):
fields = [ fields = [
v.obj v.obj
for lazy_context in _fields.py__iter__() for lazy_context in _fields.py__iter__()

View File

@@ -367,11 +367,11 @@ def _eval_comparison(evaluator, context, left_contexts, operator, right_contexts
def _is_tuple(context): def _is_tuple(context):
return isinstance(context, iterable.AbstractSequence) and context.array_type == 'tuple' return isinstance(context, iterable.AbstractIterable) and context.array_type == 'tuple'
def _is_list(context): def _is_list(context):
return isinstance(context, iterable.AbstractSequence) and context.array_type == 'list' return isinstance(context, iterable.AbstractIterable) and context.array_type == 'list'
def _eval_comparison_part(evaluator, context, left, operator, right): def _eval_comparison_part(evaluator, context, left, operator, right):
@@ -379,9 +379,9 @@ def _eval_comparison_part(evaluator, context, left, operator, right):
r_is_num = is_number(right) r_is_num = is_number(right)
if operator == '*': if operator == '*':
# for iterables, ignore * operations # for iterables, ignore * operations
if isinstance(left, iterable.AbstractSequence) or is_string(left): if isinstance(left, iterable.AbstractIterable) or is_string(left):
return ContextSet(left) return ContextSet(left)
elif isinstance(right, iterable.AbstractSequence) or is_string(right): elif isinstance(right, iterable.AbstractIterable) or is_string(right):
return ContextSet(right) return ContextSet(right)
elif operator == '+': elif operator == '+':
if l_is_num and r_is_num or is_string(left) and is_string(right): if l_is_num and r_is_num or is_string(left) and is_string(right):