unite returns a set now, this simplifies all the set(unite( calls.

This commit is contained in:
Dave Halter
2015-11-28 17:52:39 +01:00
parent 9259a432b7
commit 55615fb3c1
5 changed files with 15 additions and 15 deletions

View File

@@ -157,4 +157,4 @@ def splitlines(string):
def unite(iterable):
"""Turns a two dimensional array into a one dimensional."""
return list(chain.from_iterable(iterable))
return set(chain.from_iterable(iterable))

View File

@@ -187,7 +187,7 @@ class Evaluator(object):
if isinstance(element, iterable.AlreadyEvaluated):
return set(element)
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))
predefined_if_name_dict = self.predefined_if_name_dict_dict.get(if_stmt)

View File

@@ -2,7 +2,6 @@ import copy
from itertools import chain
from jedi.parser import tree
from jedi import common
def deep_ast_copy(obj, parent=None, new_elements=None):
@@ -121,7 +120,7 @@ def get_names_of_node(node):
else:
return []
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):

View File

@@ -265,7 +265,7 @@ class Array(IterableWrapper, ArrayMixin):
@memoize_default()
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)
return result
@@ -400,7 +400,7 @@ class FakeDict(_FakeArray):
self._dct = dct
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):
return self._dct.items()
@@ -415,7 +415,7 @@ class MergedArray(_FakeArray):
raise IndexError
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):
for array in self._arrays:
@@ -562,10 +562,10 @@ def _check_array_additions(evaluator, compare_array, module, is_list):
params = params[1:]
if add_name in ['append', 'add', 'insert']:
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']:
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
from jedi.evaluate import representation as er, param

View File

@@ -10,6 +10,7 @@ import collections
import re
from jedi._compatibility import unicode
from jedi.common import unite
from jedi.evaluate import compiled
from jedi.evaluate import representation as er
from jedi.evaluate import iterable
@@ -49,9 +50,9 @@ def _follow_param(evaluator, arguments, index):
try:
key, values = list(arguments.unpack())[index]
except IndexError:
return []
return set()
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):
@@ -152,8 +153,7 @@ def builtins_super(evaluator, types, objects, scope):
def get_iterable_content(evaluator, arguments, argument_index):
nodes = list(arguments.unpack())[argument_index][1]
return set(iterable.unite(iterable.get_iterator_types(evaluator, node)
for node in nodes))
return unite(iterable.get_iterator_types(evaluator, node) for node in nodes)
@argument_clinic('sequence, /', want_obj=True, want_arguments=True)
@@ -216,8 +216,9 @@ def collections_namedtuple(evaluator, obj, arguments):
return set()
# Process arguments
name = _follow_param(evaluator, arguments, 0)[0].obj
_fields = _follow_param(evaluator, arguments, 1)[0]
# TODO here we only use one of the types, we should use all.
name = list(_follow_param(evaluator, arguments, 0))[0].obj
_fields = list(_follow_param(evaluator, arguments, 1))[0]
if isinstance(_fields, compiled.CompiledObject):
fields = _fields.obj.replace(',', ' ').split()
elif isinstance(_fields, iterable.Array):