Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f639af5

Browse files
authoredJun 11, 2025··
Merge pull request #6395 from fchapoton/avoid_hidden_first_ngens
avoid using hidden method _first_ngens of sagemath
2 parents 53ef835 + b191fed commit f639af5

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed
 

‎lmfdb/groups/abstract/web_groups.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
fix_exponent_re = re.compile(r"\^(-\d+|\d\d+)")
4747
perm_re = re.compile(r"^\(\d+(,\d+)*\)(,?\(\d+(,\d+)*\))*$")
4848

49+
4950
def label_sortkey(label):
5051
L = []
5152
for piece in label.split("."):
@@ -58,12 +59,15 @@ def label_sortkey(label):
5859
L.append(x)
5960
return L
6061

62+
6163
def is_atomic(s):
6264
return not any(sym in s for sym in [".", ":", r"\times", r"\rtimes", r"\wr"])
6365

66+
6467
def sub_paren(s):
6568
return s if is_atomic(s) else "(%s)" % s
6669

70+
6771
def group_names_pretty(label):
6872
# Avoid using this function if you have the tex_name available without a database lookup
6973
if isinstance(label, str):
@@ -85,6 +89,7 @@ def group_names_pretty(label):
8589
else:
8690
return label
8791

92+
8893
def group_pretty_image(label):
8994
# Avoid using this function if you have the tex_name available without a database lookup
9095
pretty = group_names_pretty(label)
@@ -97,15 +102,18 @@ def group_pretty_image(label):
97102
return str(img)
98103
# we should not get here
99104

105+
100106
def create_gens_list(genslist):
101107
# For Magma
102108
gens_list = [f"G.{i}" for i in genslist]
103109
return str(gens_list).replace("'", "")
104110

111+
105112
def create_gap_assignment(genslist):
106113
# For GAP
107114
return " ".join(f"{var_name(j)} := G.{i};" for j, i in enumerate(genslist))
108115

116+
109117
def create_magma_assignment(G):
110118
used = [u - 1 for u in sorted(G.gens_used)]
111119
rel_ords = [ZZ(p) for p in G.PCG.FamilyPcgs().RelativeOrders()]
@@ -126,36 +134,38 @@ def create_magma_assignment(G):
126134
power *= rel_ords[i0]
127135
return str(names).replace("'", '"')
128136

129-
def split_matrix_list(longList,d):
137+
138+
def split_matrix_list(longList, d):
130139
# for code snippets, turns d^2 list into d lists of length d for Gap matrices
131-
return [longList[i:i+d] for i in range(0,d**2,d)]
140+
return [longList[i:i+d] for i in range(0, d**2, d)]
141+
132142

133-
def split_matrix_list_ZN(longList,d, Znfld):
143+
def split_matrix_list_ZN(longList, d, Znfld):
134144
longList = [f"ZmodnZObj({x},{Znfld})" for x in longList]
135-
return str([longList[i:i+d] for i in range(0,d**2,d)]).replace("'", "")
145+
return str([longList[i:i+d] for i in range(0, d**2, d)]).replace("'", "")
136146

137147

138-
def split_matrix_list_Fp(longList,d,e):
139-
return [longList[i:i+d]*e for i in range(0,d**2,d)]
148+
def split_matrix_list_Fp(longList, d, e):
149+
return [longList[i:i+d]*e for i in range(0, d**2, d)]
140150

141151

142-
def split_matrix_list_Fq(longList,d, Fqfld):
152+
def split_matrix_list_Fq(longList, d, Fqfld):
143153
# for gap definition of Fq
144154
longList = [f"0*Z({Fqfld})" if x == -1 else f"Z({Fqfld})^{x}" for x in longList] #-1 distinguishes 0 from z^0
145-
return str([longList[i:i+d] for i in range(0,d**2,d)]).replace("'", "")
155+
return str([longList[i:i+d] for i in range(0, d**2, d)]).replace("'", "")
146156

147157

148-
def split_matrix_Fq_add_al(longList,d):
158+
def split_matrix_Fq_add_al(longList, d):
149159
# for magma definition of Fq
150160
longList = [0 if x == -1 else 1 if x == 0 else f"al^{x}" for x in longList]
151-
return str([longList[i:i+d] for i in range(0,d**2,d)]).replace("'", "")
161+
return str([longList[i:i+d] for i in range(0, d**2, d)]).replace("'", "")
152162

153163

154164
# Functions below are for conjugacy class searches
155165
def gp_label_to_cc_data(gp):
156166
gp_ord, gp_counter = gp.split(".")
157167
gp_order = int(gp_ord)
158-
if re.fullmatch(r'\d+',gp_counter):
168+
if re.fullmatch(r'\d+', gp_counter):
159169
return gp_order, int(gp_counter)
160170
return gp_order, class_to_int(gp_counter) + 1
161171

@@ -1918,7 +1928,6 @@ def _matrix_coefficient_data(self, rep_type, as_str=False):
19181928
R = rf"\F_{{{q}}}"
19191929
else:
19201930
R = GF(q, modulus="primitive", names=('a',))
1921-
(a,) = R._first_ngens(1)
19221931
N, k = q.is_prime_power(get_data=True)
19231932
if k == 1:
19241933
# Might happen for Lie
@@ -1942,7 +1951,7 @@ def decode_as_matrix(self, code, rep_type, as_str=False, LieType=False, ListForm
19421951
if rep_type == "GLFq":
19431952
q = N**k
19441953
R = GF(q, modulus="primitive", names=('a',))
1945-
(a,) = R._first_ngens(1) #need a for powers
1954+
a = R.gen() # need a for powers
19461955
L = ZZ(code).digits(N)
19471956

19481957
def pad(X, m):

‎lmfdb/lfunctions/Lfunction.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -917,14 +917,14 @@ def __init__(self, **args):
917917
self.numcoeff = PP # The number of coefficients is given by the
918918
# norm of the last prime
919919

920-
Fhmfprimes = [st.replace(' ','') for st in F_hmf['primes']]
920+
Fhmfprimes = [st.replace(' ', '') for st in F_hmf['primes']]
921921

922-
ppmidNN = [c[0].replace(' ','') for c in f['AL_eigenvalues']]
922+
ppmidNN = [c[0].replace(' ', '') for c in f['AL_eigenvalues']]
923923

924924
ratl_primes = [p for p in range(primes[-1][0] + 1) if is_prime(p)]
925925
RCC = CC['T']
926-
(T,) = RCC._first_ngens(1)
927-
heckepols = [RCC(1) for p in ratl_primes]
926+
T = RCC.gen()
927+
heckepols = [RCC.one() for p in ratl_primes]
928928
for l in range(len(hecke_eigenvalues)):
929929
if Fhmfprimes[l] in ppmidNN:
930930
heckepols[ratl_primes.index(primes[l][1])] *= (

0 commit comments

Comments
 (0)
Please sign in to comment.