mirror of
https://github.com/davidhalter/jedi.git
synced 2026-05-26 02:08:37 +08:00
unite returns a set now, this simplifies all the set(unite( calls.
This commit is contained in:
+1
-1
@@ -157,4 +157,4 @@ def splitlines(string):
|
|||||||
|
|
||||||
def unite(iterable):
|
def unite(iterable):
|
||||||
"""Turns a two dimensional array into a one dimensional."""
|
"""Turns a two dimensional array into a one dimensional."""
|
||||||
return list(chain.from_iterable(iterable))
|
return set(chain.from_iterable(iterable))
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ class Evaluator(object):
|
|||||||
if isinstance(element, iterable.AlreadyEvaluated):
|
if isinstance(element, iterable.AlreadyEvaluated):
|
||||||
return set(element)
|
return set(element)
|
||||||
elif isinstance(element, iterable.MergedNodes):
|
elif isinstance(element, iterable.MergedNodes):
|
||||||
return set(iterable.unite(self.eval_element(e) for e in element))
|
return iterable.unite(self.eval_element(e) for e in element)
|
||||||
|
|
||||||
if_stmt = element.get_parent_until((tree.IfStmt, tree.ForStmt, tree.IsScope))
|
if_stmt = element.get_parent_until((tree.IfStmt, tree.ForStmt, tree.IsScope))
|
||||||
predefined_if_name_dict = self.predefined_if_name_dict_dict.get(if_stmt)
|
predefined_if_name_dict = self.predefined_if_name_dict_dict.get(if_stmt)
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import copy
|
|||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
||||||
from jedi.parser import tree
|
from jedi.parser import tree
|
||||||
from jedi import common
|
|
||||||
|
|
||||||
|
|
||||||
def deep_ast_copy(obj, parent=None, new_elements=None):
|
def deep_ast_copy(obj, parent=None, new_elements=None):
|
||||||
@@ -121,7 +120,7 @@ def get_names_of_node(node):
|
|||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
else:
|
else:
|
||||||
return common.unite(get_names_of_node(c) for c in children)
|
return list(chain.from_iterable(get_names_of_node(c) for c in children))
|
||||||
|
|
||||||
|
|
||||||
def get_module_names(module, all_scopes):
|
def get_module_names(module, all_scopes):
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ class Array(IterableWrapper, ArrayMixin):
|
|||||||
|
|
||||||
@memoize_default()
|
@memoize_default()
|
||||||
def values(self):
|
def values(self):
|
||||||
result = set(unite(self._evaluator.eval_element(v) for v in self._values()))
|
result = unite(self._evaluator.eval_element(v) for v in self._values())
|
||||||
result |= check_array_additions(self._evaluator, self)
|
result |= check_array_additions(self._evaluator, self)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@ class FakeDict(_FakeArray):
|
|||||||
self._dct = dct
|
self._dct = dct
|
||||||
|
|
||||||
def get_exact_index_types(self, index):
|
def get_exact_index_types(self, index):
|
||||||
return set(unite(self._evaluator.eval_element(v) for v in self._dct[index]))
|
return unite(self._evaluator.eval_element(v) for v in self._dct[index])
|
||||||
|
|
||||||
def _items(self):
|
def _items(self):
|
||||||
return self._dct.items()
|
return self._dct.items()
|
||||||
@@ -415,7 +415,7 @@ class MergedArray(_FakeArray):
|
|||||||
raise IndexError
|
raise IndexError
|
||||||
|
|
||||||
def values(self):
|
def values(self):
|
||||||
return set(unite((a.values() for a in self._arrays)))
|
return unite((a.values() for a in self._arrays))
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
for array in self._arrays:
|
for array in self._arrays:
|
||||||
@@ -562,10 +562,10 @@ def _check_array_additions(evaluator, compare_array, module, is_list):
|
|||||||
params = params[1:]
|
params = params[1:]
|
||||||
if add_name in ['append', 'add', 'insert']:
|
if add_name in ['append', 'add', 'insert']:
|
||||||
for key, nodes in params:
|
for key, nodes in params:
|
||||||
result |= set(unite(evaluator.eval_element(node) for node in nodes))
|
result |= unite(evaluator.eval_element(node) for node in nodes)
|
||||||
elif add_name in ['extend', 'update']:
|
elif add_name in ['extend', 'update']:
|
||||||
for key, nodes in params:
|
for key, nodes in params:
|
||||||
result |= set(unite(get_iterator_types(evaluator, node) for node in nodes))
|
result |= unite(get_iterator_types(evaluator, node) for node in nodes)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
from jedi.evaluate import representation as er, param
|
from jedi.evaluate import representation as er, param
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import collections
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from jedi._compatibility import unicode
|
from jedi._compatibility import unicode
|
||||||
|
from jedi.common import unite
|
||||||
from jedi.evaluate import compiled
|
from jedi.evaluate import compiled
|
||||||
from jedi.evaluate import representation as er
|
from jedi.evaluate import representation as er
|
||||||
from jedi.evaluate import iterable
|
from jedi.evaluate import iterable
|
||||||
@@ -49,9 +50,9 @@ def _follow_param(evaluator, arguments, index):
|
|||||||
try:
|
try:
|
||||||
key, values = list(arguments.unpack())[index]
|
key, values = list(arguments.unpack())[index]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
return []
|
return set()
|
||||||
else:
|
else:
|
||||||
return iterable.unite(evaluator.eval_element(v) for v in values)
|
return unite(evaluator.eval_element(v) for v in values)
|
||||||
|
|
||||||
|
|
||||||
def argument_clinic(string, want_obj=False, want_scope=False, want_arguments=False):
|
def argument_clinic(string, want_obj=False, want_scope=False, want_arguments=False):
|
||||||
@@ -152,8 +153,7 @@ def builtins_super(evaluator, types, objects, scope):
|
|||||||
|
|
||||||
def get_iterable_content(evaluator, arguments, argument_index):
|
def get_iterable_content(evaluator, arguments, argument_index):
|
||||||
nodes = list(arguments.unpack())[argument_index][1]
|
nodes = list(arguments.unpack())[argument_index][1]
|
||||||
return set(iterable.unite(iterable.get_iterator_types(evaluator, node)
|
return unite(iterable.get_iterator_types(evaluator, node) for node in nodes)
|
||||||
for node in nodes))
|
|
||||||
|
|
||||||
|
|
||||||
@argument_clinic('sequence, /', want_obj=True, want_arguments=True)
|
@argument_clinic('sequence, /', want_obj=True, want_arguments=True)
|
||||||
@@ -216,8 +216,9 @@ def collections_namedtuple(evaluator, obj, arguments):
|
|||||||
return set()
|
return set()
|
||||||
|
|
||||||
# Process arguments
|
# Process arguments
|
||||||
name = _follow_param(evaluator, arguments, 0)[0].obj
|
# TODO here we only use one of the types, we should use all.
|
||||||
_fields = _follow_param(evaluator, arguments, 1)[0]
|
name = list(_follow_param(evaluator, arguments, 0))[0].obj
|
||||||
|
_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.Array):
|
elif isinstance(_fields, iterable.Array):
|
||||||
|
|||||||
Reference in New Issue
Block a user