Skip to content

Commit e009780

Browse files
Release Managervbraun
authored andcommitted
Trac #21310: py3: remove itervalues in combinat folder
as a step towards py3, use six to get rid of itervalues in this ticket, only for the combinat folder URL: https://trac.sagemath.org/21310 Reported by: chapoton Ticket author(s): Frédéric Chapoton Reviewer(s): Jori Mäntysalo
2 parents 7eadd9b + 85cb0a9 commit e009780

10 files changed

+46
-26
lines changed

src/sage/combinat/alternating_sign_matrix.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
# python3
3131
from __future__ import division
3232

33+
from six import itervalues
34+
3335
import itertools
3436
import copy
3537
from sage.misc.classcall_metaclass import ClasscallMetaclass
@@ -1416,10 +1418,9 @@ def _lattice_initializer(self):
14161418
sage: P.is_lattice()
14171419
True
14181420
"""
1419-
(mts, rels) = MonotoneTriangles(self._n)._lattice_initializer()
1420-
bij = dict((t, self.from_monotone_triangle(t)) for t in mts)
1421-
asms, rels = bij.itervalues(), [(bij[a], bij[b]) for (a,b) in rels]
1422-
return (asms, rels)
1421+
mts, rels = MonotoneTriangles(self._n)._lattice_initializer()
1422+
bij = {t: self.from_monotone_triangle(t) for t in mts}
1423+
return (itervalues(bij), [(bij[a], bij[b]) for (a, b) in rels])
14231424

14241425
def cover_relations(self):
14251426
r"""

src/sage/combinat/designs/difference_family.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151
from __future__ import division, print_function
5252
from __future__ import absolute_import
5353

54+
from six import itervalues
55+
5456
from sage.misc.cachefunc import cached_method
5557

5658
from sage.categories.sets_cat import EmptySetError
@@ -285,7 +287,7 @@ def is_difference_family(G, D, v=None, k=None, l=None, verbose=False):
285287
where[gg].add(i)
286288
tmp_counter[gg] += 1
287289

288-
if sum(tmp_counter.itervalues()) != k*(k-1):
290+
if sum(itervalues(tmp_counter)) != k * (k - 1):
289291
if verbose:
290292
print("repeated element in the {}-th block {}".format(i,d))
291293
return False

src/sage/combinat/designs/incidence_structures.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
#***************************************************************************
4141
from __future__ import print_function
4242

43+
from six import itervalues
44+
4345
from sage.misc.cachefunc import cached_method
4446

4547
from sage.rings.all import ZZ
@@ -879,7 +881,7 @@ def degrees(self, size=None):
879881
In a Steiner triple system, all pairs have degree 1::
880882
881883
sage: S13 = designs.steiner_triple_system(13)
882-
sage: all(v == 1 for v in S13.degrees(2).itervalues())
884+
sage: all(v == 1 for v in S13.degrees(2).values())
883885
True
884886
"""
885887
if size is None:
@@ -1899,7 +1901,7 @@ def is_resolvable(self, certificate=False, solver=None, verbose=0, check=True):
18991901
False
19001902
"""
19011903
if self._classes is None:
1902-
degrees = set(self.degrees().itervalues())
1904+
degrees = set(itervalues(self.degrees()))
19031905
if len(degrees) != 1:
19041906
self._classes = False
19051907
else:

src/sage/combinat/designs/orthogonal_arrays.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
from __future__ import print_function
5959
from __future__ import absolute_import
6060

61+
from six import itervalues
62+
6163
from sage.misc.cachefunc import cached_function
6264
from sage.categories.sets_cat import EmptySetError
6365
from sage.misc.unknown import Unknown
@@ -1705,7 +1707,7 @@ def OA_n_times_2_pow_c_from_matrix(k,c,G,A,Y,check=True):
17051707
Hij = set([(Y[i] - Y[j]) * v for v in H])
17061708
for s in range(2 * G_card):
17071709
g_to_col_indices[B[i][s] - B[j][s]].append(s)
1708-
for s1,s2 in g_to_col_indices.itervalues():
1710+
for s1, s2 in itervalues(g_to_col_indices):
17091711
v1 = A[i][s1][1] - A[j][s1][1]
17101712
v2 = A[i][s2][1] - A[j][s2][1]
17111713

src/sage/combinat/designs/orthogonal_arrays_find_recursive.pyx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ Functions
4646
"""
4747
from __future__ import print_function, absolute_import
4848

49+
from six import itervalues
50+
4951
from sage.misc.cachefunc import cached_function
5052
from .orthogonal_arrays import orthogonal_array
5153
from sage.rings.integer cimport Integer, smallInteger
@@ -798,7 +800,7 @@ cpdef find_brouwer_separable_design(int k,int n):
798800
# OA(k,n+x)-OA(k,x). Useful in find_brouwer_separable_design
799801
from sage.combinat.designs.database import QDM as _QDM
800802
cdef dict ioa_indexed_by_n_minus_x = {}
801-
for x in _QDM.itervalues():
803+
for x in itervalues(_QDM):
802804
for (n,_,_,u),(k,_) in x.items():
803805
if u>1:
804806
if not n in ioa_indexed_by_n_minus_x:

src/sage/combinat/finite_state_machine.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,8 @@
930930
#*****************************************************************************
931931
from __future__ import print_function
932932

933+
from six import itervalues
934+
933935
import collections
934936
import itertools
935937
from six.moves import zip_longest
@@ -6729,7 +6731,7 @@ def add_transition(self, *args, **kwargs):
67296731
if is_FSMTransition(d):
67306732
return self._add_fsm_transition_(d)
67316733
else:
6732-
d = next(kwargs.itervalues())
6734+
d = next(itervalues(kwargs))
67336735
if hasattr(d, 'iteritems'):
67346736
args = []
67356737
kwargs = d

src/sage/combinat/matrices/hadamard_matrix.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@
5555
#*****************************************************************************
5656
from __future__ import print_function
5757

58+
from six import itervalues
59+
5860
from sage.rings.integer_ring import ZZ
5961
from sage.rings.integer import Integer
6062
from sage.matrix.constructor import matrix, block_matrix, block_diagonal_matrix, diagonal_matrix
@@ -296,8 +298,8 @@ def is_hadamard_matrix(M, normalized=False, skew=False, verbose=False):
296298

297299
prod = (M*M.transpose()).dict()
298300
if (len(prod) != n or
299-
set(prod.itervalues()) != {n} or
300-
any( (i,i) not in prod for i in range(n) )):
301+
set(itervalues(prod)) != {n} or
302+
any((i, i) not in prod for i in range(n))):
301303
if verbose:
302304
print("The product M*M.transpose() is not equal to nI")
303305
return False

src/sage/combinat/permutation.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@
228228
#*****************************************************************************
229229
from __future__ import print_function, absolute_import
230230

231+
from six import itervalues
232+
231233
from sage.structure.parent import Parent
232234
from sage.structure.unique_representation import UniqueRepresentation
233235
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
@@ -5480,7 +5482,7 @@ def cardinality(self):
54805482
d[i] = d.get(i, 0) + 1
54815483

54825484
c = factorial(len(lmset))
5483-
for i in d.itervalues():
5485+
for i in itervalues(d):
54845486
if i != 1:
54855487
c //= factorial(i)
54865488
return ZZ(c)

src/sage/combinat/posets/posets.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@
244244
# python3
245245
from __future__ import division, print_function, absolute_import
246246

247+
from six import itervalues
248+
247249
import copy
248250
from sage.misc.cachefunc import cached_method
249251
from sage.misc.lazy_attribute import lazy_attribute
@@ -6003,8 +6005,8 @@ def is_slender(self):
60036005
d = {}
60046006
for y in self.upper_covers(x):
60056007
for c in self.upper_covers(y):
6006-
d[c] = d.get(c,0) + 1
6007-
if not all( y < 3 for y in d.itervalues() ):
6008+
d[c] = d.get(c, 0) + 1
6009+
if not all(y < 3 for y in itervalues(d)):
60086010
return False
60096011
return True
60106012

src/sage/combinat/words/suffix_trees.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
# (at your option) any later version.
1111
# http://www.gnu.org/licenses/
1212
#*****************************************************************************
13+
14+
from six import iteritems
15+
1316
from sage.structure.sage_object import SageObject
1417
from sage.graphs.digraph import DiGraph
1518
from sage.sets.set import Set
@@ -204,8 +207,8 @@ def node_to_word(self, state=0):
204207
if state == 0:
205208
return Words(self._alphabet)()
206209
# We first invert the transition function
207-
tf_inv = dict(izip(self._transition_function.itervalues(),
208-
self._transition_function))
210+
tf_inv = {b: a for a, b in iteritems(self._transition_function)}
211+
209212
# Starting from the active state,
210213
# read labels along the unique path to the root.
211214
(u,letter) = tf_inv[state]
@@ -448,7 +451,7 @@ def to_digraph(self):
448451
[0 0 0 0 0 0]
449452
"""
450453
dag = {}
451-
for ((u,letter),v) in self._transition_function.iteritems():
454+
for ((u, letter), v) in iteritems(self._transition_function):
452455
dag.setdefault(u, {})[v] = letter
453456
return DiGraph(dag)
454457

@@ -752,7 +755,7 @@ def _find_transition(self, state, letter):
752755
return ((0, 0), 0)
753756
else:
754757
if state in self._transition_function:
755-
for ((k,p),s) in self._transition_function[state].iteritems():
758+
for ((k,p),s) in iteritems(self._transition_function[state]):
756759
if self._letters[k-1] == letter:
757760
return ((k,p), s)
758761
return None
@@ -836,7 +839,7 @@ def to_digraph(self, word_labels=False):
836839
return DiGraph(d)
837840
d = self.transition_function_dictionary()
838841
for u in d:
839-
for (v,(i,j)) in d[u].iteritems():
842+
for (v, (i, j)) in iteritems(d[u]):
840843
if word_labels:
841844
d[u][v] = self._word[i:j]
842845
elif j is None:
@@ -1122,7 +1125,7 @@ def edge_iterator(self):
11221125
queue = [0]
11231126
while queue:
11241127
v=queue.pop()
1125-
for ((i,j),u) in self._transition_function[v].iteritems():
1128+
for ((i,j),u) in iteritems(self._transition_function[v]):
11261129
yield (v,u,(i-1,j))
11271130
queue.append(u)
11281131

@@ -1202,7 +1205,7 @@ def number_of_factors(self,n=None):
12021205
num_factors += 1
12031206
if l < n:
12041207
if self._transition_function[v] != {}:
1205-
for ((i,j),u) in self._transition_function[v].iteritems():
1208+
for ((i,j),u) in iteritems(self._transition_function[v]):
12061209
if j is None:
12071210
j = self.word().length()
12081211
if j - i >= n - l:
@@ -1255,7 +1258,7 @@ def factor_iterator(self,n=None):
12551258
(v,w) = queue.pop()
12561259
yield w
12571260
if self._transition_function[v] != {}:
1258-
for ((i,j),u) in self._transition_function[v].iteritems():
1261+
for ((i,j),u) in iteritems(self._transition_function[v]):
12591262
if j is None:
12601263
j = self.word().length()
12611264
for k in range(i,j):
@@ -1270,7 +1273,7 @@ def factor_iterator(self,n=None):
12701273
yield w
12711274
if length_w < n:
12721275
if self._transition_function[v] != {}:
1273-
for ((i,j),u) in self._transition_function[v].iteritems():
1276+
for ((i,j),u) in iteritems(self._transition_function[v]):
12741277
if j is None:
12751278
j = self.word().length()
12761279
if j - i >= n - length_w:
@@ -1333,8 +1336,8 @@ def trie_type_dict(self):
13331336
"""
13341337
d = {}
13351338
new_node = len(self._transition_function)
1336-
for (u, dd) in self._transition_function.iteritems():
1337-
for (sl, v) in dd.iteritems():
1339+
for (u, dd) in iteritems(self._transition_function):
1340+
for (sl, v) in iteritems(dd):
13381341
w = self._word[sl[0]-1:sl[1]]
13391342
if w.length() == 1:
13401343
d[u,w] = v

0 commit comments

Comments
 (0)