Skip to content

Commit bc8a404

Browse files
committed
some changes in posets (ruff UP and PERF)
1 parent 3dd953c commit bc8a404

File tree

7 files changed

+80
-81
lines changed

7 files changed

+80
-81
lines changed

src/sage/combinat/posets/cartesian_product.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def __init__(self, sets, category, order=None, **kwargs):
102102
try:
103103
self._le_ = getattr(self, 'le_' + order)
104104
except AttributeError:
105-
raise ValueError("no order '%s' known" % (order,))
105+
raise ValueError(f"no order '{order}' known")
106106
else:
107107
self._le_ = order
108108

src/sage/combinat/posets/hasse_diagram.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def __str__(self):
6767
sage: error.__str__()
6868
'no meet for 15 and 18'
6969
"""
70-
return "no {} for {} and {}".format(self.fail, self.x, self.y)
70+
return f"no {self.fail} for {self.x} and {self.y}"
7171

7272

7373
class HasseDiagram(DiGraph):
@@ -792,8 +792,8 @@ def _rank(self):
792792
while not_found:
793793
y = not_found.pop()
794794
rank[y] = 0 # We set some vertex to have rank 0
795-
component = set([y])
796-
queue = set([y])
795+
component = {y}
796+
queue = {y}
797797
while queue:
798798
# look at the neighbors of y and set the ranks;
799799
# then look at the neighbors of the neighbors ...
@@ -1286,7 +1286,7 @@ def _leq_storage(self):
12861286
[{0, 1, 2, 3, 4, 5, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}, {6}]
12871287
"""
12881288
n = self.order()
1289-
greater_than = [set([i]) for i in range(n)]
1289+
greater_than = [{i} for i in range(n)]
12901290
for i in range(n - 1, -1, -1):
12911291
gt = greater_than[i]
12921292
for j in self.neighbor_out_iterator(i):
@@ -2481,7 +2481,7 @@ def is_linear_interval(self, t_min, t_max) -> bool:
24812481
return True
24822482
return False
24832483

2484-
def diamonds(self):
2484+
def diamonds(self) -> tuple:
24852485
r"""
24862486
Return the list of diamonds of ``self``.
24872487
@@ -2525,8 +2525,7 @@ def diamonds(self):
25252525
zs = self.common_upper_covers([x, y])
25262526
if len(zs) != 1:
25272527
all_diamonds_completed = False
2528-
for z in zs:
2529-
diamonds.append((w, x, y, z))
2528+
diamonds.extend((w, x, y, z) for z in zs)
25302529
return (diamonds, all_diamonds_completed)
25312530

25322531
def common_upper_covers(self, vertices):
@@ -2651,7 +2650,7 @@ def sublattices_iterator(self, elms, min_e):
26512650
if e in elms:
26522651
continue
26532652
current_set = set(elms)
2654-
gens = set([e])
2653+
gens = {e}
26552654
while gens:
26562655
g = gens.pop()
26572656
if g < e and g not in elms:
@@ -2684,7 +2683,7 @@ def sublattice(elms, e):
26842683
Helper function to get sublattice generated by list
26852684
of elements.
26862685
"""
2687-
gens_remaining = set([e])
2686+
gens_remaining = {e}
26882687
current_set = set(elms)
26892688

26902689
while gens_remaining:
@@ -2700,7 +2699,7 @@ def sublattice(elms, e):
27002699

27012700
N = self.cardinality()
27022701
elms = [0]
2703-
sublats = [set([0])]
2702+
sublats = [{0}]
27042703
result = []
27052704
skip = -1
27062705

@@ -2981,7 +2980,7 @@ def neutral_elements(self):
29812980
return set(range(n))
29822981

29832982
todo = set(range(1, n - 1))
2984-
neutrals = set([0, n - 1])
2983+
neutrals = {0, n - 1}
29852984
notneutrals = set()
29862985
all_elements = set(range(n))
29872986

@@ -3242,7 +3241,7 @@ def fill_to_interval(S):
32423241
for v in fill_to_interval(c):
32433242
cong.union(r, v)
32443243

3245-
todo = set(cong.find(e) for part in parts for e in part)
3244+
todo = {cong.find(e) for part in parts for e in part}
32463245

32473246
while todo:
32483247

@@ -3307,7 +3306,7 @@ def fill_to_interval(S):
33073306
d = jn[d, m]
33083307

33093308
# This removes duplicates from todo.
3310-
todo = set(cong.find(x) for x in todo)
3309+
todo = {cong.find(x) for x in todo}
33113310

33123311
return cong
33133312

src/sage/combinat/posets/lattices.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3089,11 +3089,10 @@ def vertical_decomposition(self, elements_only=False):
30893089
self._hasse_diagram.vertical_decomposition(return_list=True) +
30903090
[self.cardinality() - 1])
30913091
n = len(elms)
3092-
result = []
3093-
for i in range(n - 1):
3094-
result.append(LatticePoset(
3095-
self.subposet([self[e] for e in range(elms[i], elms[i + 1] + 1)])))
3096-
return result
3092+
return [LatticePoset(self.subposet([self[e]
3093+
for e in range(elms[i],
3094+
elms[i + 1] + 1)]))
3095+
for i in range(n - 1)]
30973096

30983097
def is_vertically_decomposable(self, certificate=False):
30993098
r"""
@@ -3461,8 +3460,8 @@ def frattini_sublattice(self):
34613460
sage: sorted(L.frattini_sublattice().list())
34623461
[1, 2, 4, 10, 19, 22, 33]
34633462
"""
3464-
return LatticePoset(self.subposet([self[x] for x in
3465-
self._hasse_diagram.frattini_sublattice()]))
3463+
return LatticePoset(self.subposet([self[x]
3464+
for x in self._hasse_diagram.frattini_sublattice()]))
34663465

34673466
def moebius_algebra(self, R):
34683467
"""
@@ -3634,9 +3633,9 @@ def adjunct(self, other, a, b):
36343633
if not isinstance(other, FiniteLatticePoset):
36353634
raise ValueError("other is not a finite lattice")
36363635
if not self.is_greater_than(b, a):
3637-
raise ValueError("element %s is not greater than %s in the lattice" % (b, a))
3636+
raise ValueError(f"element {b} is not greater than {a} in the lattice")
36383637
if self.covers(a, b):
3639-
raise ValueError("element %s covers element %s in the lattice" % (b, a))
3638+
raise ValueError(f"element {b} covers element {a} in the lattice")
36403639

36413640
if other.cardinality() == 0:
36423641
return self.relabel(lambda e: (0, e))

src/sage/combinat/posets/linear_extensions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ def check(self):
141141
"""
142142
P = self.parent().poset()
143143
if not P.is_linear_extension(self):
144-
raise ValueError("%s is not a linear extension of %s" % (self, P))
144+
raise ValueError(f"{self} is not a linear extension of {P}")
145145

146146
def poset(self):
147147
r"""
@@ -625,7 +625,7 @@ def cardinality(self):
625625
while K[j]:
626626
K.append([b for a in K[j] for b in Jup[a]])
627627
j += 1
628-
K = sorted(set(item for sublist in K for item in sublist))
628+
K = sorted({item for sublist in K for item in sublist})
629629
for j in range(len(K)):
630630
i = m + j + 1
631631
Jup[i] = [m + K.index(a) + 1 for a in Jup[K[j]]]

src/sage/combinat/posets/moebius_algebra.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def _repr_(self):
123123
sage: L.moebius_algebra(QQ)
124124
Moebius algebra of Finite lattice containing 16 elements over Rational Field
125125
"""
126-
return "Moebius algebra of {} over {}".format(self._lattice, self.base_ring())
126+
return f"Moebius algebra of {self._lattice} over {self.base_ring()}"
127127

128128
def a_realization(self):
129129
r"""
@@ -705,7 +705,7 @@ def _repr_(self):
705705
Category of bases of Moebius algebra of Finite lattice
706706
containing 16 elements over Rational Field
707707
"""
708-
return "Category of bases of {}".format(self.base())
708+
return f"Category of bases of {self.base()}"
709709

710710
def super_categories(self):
711711
r"""
@@ -738,7 +738,7 @@ def _repr_(self):
738738
Moebius algebra of Finite lattice containing 16 elements
739739
over Rational Field in the idempotent basis
740740
"""
741-
return "{} in the {} basis".format(self.realization_of(), self._basis_name)
741+
return f"{self.realization_of()} in the {self._basis_name} basis"
742742

743743
def product_on_basis(self, x, y):
744744
"""

src/sage/combinat/posets/poset_examples.py

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ def DiamondPoset(n, facade=None):
426426
"""
427427
n = check_int(n, 3)
428428
c = [[n - 1] for x in range(n)]
429-
c[0] = [x for x in range(1, n - 1)]
429+
c[0] = list(range(1, n - 1))
430430
c[n - 1] = []
431431
D = DiGraph({v: c[v] for v in range(n)}, format='dict_of_lists')
432432
return FiniteLatticePoset(hasse_diagram=D,
@@ -719,9 +719,9 @@ def ProductOfChains(chain_lengths, facade=None):
719719
try:
720720
l = [Integer(x) for x in chain_lengths]
721721
except TypeError:
722-
raise TypeError("parameter chain_lengths must be a list of integers, not {0}".format(chain_lengths))
722+
raise TypeError("parameter chain_lengths must be a list of integers, not {}".format(chain_lengths))
723723
if any(x < 0 for x in l):
724-
raise TypeError("parameter chain_lengths must be a list of nonnegative integers, not {0}".format(l))
724+
raise TypeError("parameter chain_lengths must be a list of nonnegative integers, not {}".format(l))
725725

726726
# given the empty list, we expect the empty poset.
727727
if not chain_lengths:
@@ -781,9 +781,9 @@ def RandomPoset(n, p):
781781
try:
782782
p = float(p)
783783
except (TypeError, ValueError):
784-
raise TypeError("probability must be a real number, not {0}".format(p))
784+
raise TypeError(f"probability must be a real number, not {p}")
785785
if p < 0 or p > 1:
786-
raise ValueError("probability must be between 0 and 1, not {0}".format(p))
786+
raise ValueError(f"probability must be between 0 and 1, not {p}")
787787

788788
D = DiGraph(loops=False, multiedges=False)
789789
D.add_vertices(range(n))
@@ -867,9 +867,9 @@ def RandomLattice(n, p, properties=None):
867867
try:
868868
p = float(p)
869869
except Exception:
870-
raise TypeError("probability must be a real number, not {0}".format(p))
870+
raise TypeError(f"probability must be a real number, not {p}")
871871
if p < 0 or p >= 1:
872-
raise ValueError("probability must be a positive real number and below 1, not {0}".format(p))
872+
raise ValueError("probability must be a positive real number and below 1, not {}".format(p))
873873

874874
if properties is None:
875875
# Basic case, no special properties for lattice asked.
@@ -882,11 +882,11 @@ def RandomLattice(n, p, properties=None):
882882
return LatticePoset(D, cover_relations=True)
883883

884884
if isinstance(properties, str):
885-
properties = set([properties])
885+
properties = {properties}
886886
else:
887887
properties = set(properties)
888888

889-
known_properties = set(['planar', 'dismantlable', 'distributive', 'stone'])
889+
known_properties = {'planar', 'dismantlable', 'distributive', 'stone'}
890890
errors = properties.difference(known_properties)
891891
if errors:
892892
raise ValueError("unknown value %s for 'properties'" % errors.pop())
@@ -907,22 +907,22 @@ def RandomLattice(n, p, properties=None):
907907
if 'stone' in properties and len(properties) > 1:
908908
raise NotImplementedError("combining 'stone' with other properties is not implemented")
909909

910-
if properties == set(['planar']):
910+
if properties == {'planar'}:
911911
D = _random_planar_lattice(n)
912912
D.relabel([i - 1 for i in Permutations(n).random_element()])
913913
return LatticePoset(D)
914914

915-
if properties == set(['dismantlable']):
915+
if properties == {'dismantlable'}:
916916
D = _random_dismantlable_lattice(n)
917917
D.relabel([i - 1 for i in Permutations(n).random_element()])
918918
return LatticePoset(D)
919919

920-
if properties == set(['stone']):
920+
if properties == {'stone'}:
921921
D = _random_stone_lattice(n)
922922
D.relabel([i - 1 for i in Permutations(n).random_element()])
923923
return LatticePoset(D)
924924

925-
if properties == set(['distributive']):
925+
if properties == {'distributive'}:
926926
tmp = Poset(_random_distributive_lattice(n)).order_ideals_lattice(as_ideals=False)
927927
D = copy(tmp._hasse_diagram)
928928
D.relabel([i - 1 for i in Permutations(n).random_element()])
@@ -1106,18 +1106,17 @@ def SymmetricGroupBruhatIntervalPoset(start, end):
11061106
start = Permutation(start)
11071107
end = Permutation(end)
11081108
if len(start) != len(end):
1109-
raise TypeError("start (%s) and end (%s) must have same length" % (start, end))
1109+
raise TypeError(f"start ({start}) and end ({end}) must have same length")
11101110
if not start.bruhat_lequal(end):
1111-
raise TypeError("must have start (%s) <= end (%s) in Bruhat order" % (start, end))
1111+
raise TypeError(f"must have start ({start}) <= end ({end}) in Bruhat order")
11121112
unseen = [start]
11131113
nodes = {}
11141114
while unseen:
11151115
perm = unseen.pop(0)
11161116
nodes[perm] = [succ_perm for succ_perm in perm.bruhat_succ()
11171117
if succ_perm.bruhat_lequal(end)]
1118-
for succ_perm in nodes[perm]:
1119-
if succ_perm not in nodes:
1120-
unseen.append(succ_perm)
1118+
unseen.extend(succ_perm for succ_perm in nodes[perm]
1119+
if succ_perm not in nodes)
11211120
return Poset(nodes)
11221121

11231122
@staticmethod
@@ -1393,9 +1392,9 @@ def UpDownPoset(n, m=1):
13931392
try:
13941393
m = Integer(m)
13951394
except TypeError:
1396-
raise TypeError("parameter m must be an integer, not {0}".format(m))
1395+
raise TypeError(f"parameter m must be an integer, not {m}")
13971396
if m < 1:
1398-
raise ValueError("parameter m must be positive, not {0}".format(m))
1397+
raise ValueError(f"parameter m must be positive, not {m}")
13991398

14001399
covers = [[i, i + 1] if (i + 1) % (m + 1) else [i + 1, i]
14011400
for i in range(n - 1)]
@@ -1681,7 +1680,7 @@ def PermutationPatternInterval(bottom, top):
16811680
top = P(top)
16821681
bottom = P(bottom)
16831682
if not top.has_pattern(bottom):
1684-
raise ValueError("{} doesn't contain {} as a pattern".format(top, bottom))
1683+
raise ValueError(f"{top} doesn't contain {bottom} as a pattern")
16851684
# Make a list of lists of elements in the interval divided by rank.
16861685
# List will be flattened at the end
16871686
elem = [[top]]
@@ -1833,19 +1832,17 @@ def MobilePoset(ribbon, hangers, anchor=None):
18331832
elements.extend(ribbon._elements)
18341833

18351834
if anchor:
1836-
for cr in anchor[2].cover_relations():
1837-
cover_relations.append(((anchor[0], cr[0]), (anchor[0], cr[1])))
1835+
cover_relations.extend(((anchor[0], cr[0]), (anchor[0], cr[1]))
1836+
for cr in anchor[2].cover_relations())
18381837
cover_relations.append((anchor[0], (anchor[0], anchor[1])))
18391838

1840-
for elmt in anchor[2]._elements:
1841-
elements.append((anchor[0], elmt))
1839+
elements.extend((anchor[0], elmt) for elmt in anchor[2]._elements)
18421840

18431841
for r, hangs in hangers.items():
18441842
for i, h in enumerate(hangs):
1845-
for v in h._elements:
1846-
elements.append((r, i, v))
1847-
for cr in h.cover_relations():
1848-
cover_relations.append(((r, i, cr[0]), (r, i, cr[1])))
1843+
elements.extend((r, i, v) for v in h._elements)
1844+
cover_relations.extend(((r, i, cr[0]), (r, i, cr[1]))
1845+
for cr in h.cover_relations())
18491846
cover_relations.append(((r, i, h.top()), r))
18501847

18511848
return Mobile(DiGraph([elements, cover_relations]))
@@ -1896,7 +1893,7 @@ def _random_lattice(n, p):
18961893
n = n - 1
18971894
meets = [[None] * n for _ in range(n)]
18981895
meets[0][0] = 0
1899-
maxs = set([0])
1896+
maxs = {0}
19001897
lc_all = [[]] # No lower covers for the bottom element.
19011898

19021899
for i in range(1, n):

0 commit comments

Comments
 (0)