Skip to content

Commit 9e76edb

Browse files
authored
Merge pull request LMFDB#6520 from fchapoton/details_hilbert_field
2 parents 74effbd + 9ea440a commit 9e76edb

1 file changed

Lines changed: 31 additions & 29 deletions

File tree

lmfdb/hilbert_modular_forms/hilbert_field.py

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
Initial version (University of Warwick 2015) Aurel Page and John Cremona
44
55
"""
6-
76
from sage.all import ZZ
87
from lmfdb import db
98
from lmfdb.number_fields.web_number_field import WebNumberField
109

10+
1111
def findvar(L):
1212
"""
1313
Return the variable name from a collection of objects
@@ -18,7 +18,8 @@ def findvar(L):
1818
return c
1919
return None
2020

21-
def str2fieldelt(F,strg):
21+
22+
def str2fieldelt(F, strg: str):
2223
"""Given a string strg representing an element of the number field F
2324
as a polynomial in its generator, return the number field element.
2425
@@ -28,7 +29,8 @@ def str2fieldelt(F,strg):
2829
"""
2930
return F(strg)
3031

31-
def str2ideal(F,strg):
32+
33+
def str2ideal(F, strg: str):
3234
"""Given a string strg representing an ideal of the number field F,
3335
return (N,n,I,gen) where I is the ideal, N its norm, n the least
3436
positive integer in I and gen a second generator.
@@ -37,15 +39,16 @@ def str2ideal(F,strg):
3739
3840
strg is a string representing an ideal of F in the form '[N,n,gen]'
3941
"""
40-
idlstr = strg[1:-1].replace(' ','').split(',')
41-
N = ZZ(idlstr[0]) #norm
42-
n = ZZ(idlstr[1]) #smallest integer
43-
gen = str2fieldelt(F,idlstr[2]) #other generator
44-
idl = F.ideal(n,gen)
45-
return N,n,idl,gen
42+
idlstr = strg[1:-1].replace(' ', '').split(',')
43+
N = ZZ(idlstr[0]) # norm
44+
n = ZZ(idlstr[1]) # smallest integer
45+
gen = str2fieldelt(F, idlstr[2]) # other generator
46+
idl = F.ideal(n, gen)
47+
return N, n, idl, gen
48+
4649

47-
def niceideals(F, ideals): #HNF + sage ideal + label
48-
"""Convert a list of ideas from strongs to actual NumberField ideals
50+
def niceideals(F, ideals): # HNF + sage ideal + label
51+
"""Convert a list of ideas from strings to actual NumberField ideals
4952
5053
F is a Sage NumberField
5154
@@ -59,30 +62,31 @@ def niceideals(F, ideals): #HNF + sage ideal + label
5962
"""
6063
nideals = []
6164
ilabel = 1
62-
norm = ZZ(0)
65+
norm = ZZ.zero()
6366
for i in range(len(ideals)):
64-
N,n,idl,_ = str2ideal(F,ideals[i])
67+
N, n, idl, _ = str2ideal(F, ideals[i])
6568
assert idl.norm() == N and idl.smallest_integer() == n
6669
if N != norm:
67-
ilabel = ZZ(1)
70+
ilabel = ZZ.one()
6871
norm = N
6972
label = N.str() + '.' + ilabel.str()
7073
hnf = idl.pari_hnf().python()
7174
nideals.append([hnf, idl, label])
7275
ilabel += 1
7376
return nideals
7477

75-
def conjideals(ideals, auts): #(label,g) -> label
78+
79+
def conjideals(ideals, auts): # (label,g) -> label
7680
cideals = {}
7781
from copy import copy
7882
ideals = sorted(copy(ideals))
79-
for ig,g in enumerate(auts):
83+
for ig, g in enumerate(auts):
8084
gideals = copy(ideals)
8185
for I in gideals:
8286
I[0] = g(I[1]).pari_hnf().python()
8387
gideals.sort()
84-
for I,J in zip(ideals,gideals):
85-
cideals[(J[2],ig)] = I[2]
88+
for I, J in zip(ideals, gideals):
89+
cideals[(J[2], ig)] = I[2]
8690
return cideals
8791

8892

@@ -91,12 +95,12 @@ class HilbertNumberField(WebNumberField):
9195
Subclass of WebNumberField which also facilitates extraction of
9296
the number field data stored in the Hilbert modular forms database.
9397
"""
94-
def __init__(self, label):
98+
def __init__(self, label) -> None:
9599
self.Fdata = db.hmf_fields.lookup(label)
96100
self.ideals = self.Fdata['ideals']
97101
self.primes = self.Fdata['primes']
98102
self.var = findvar(self.ideals)
99-
WebNumberField.__init__(self,label,gen_name=self.var)
103+
WebNumberField.__init__(self, label, gen_name=self.var)
100104
self.ideal_dict = {}
101105
self.label_dict = {}
102106
for I in self.ideals_iter():
@@ -108,30 +112,28 @@ def _iter_ideals(self, primes=False, number=None):
108112
Iterator through all ideals of self. Delivers dicts with keys
109113
'label' and 'ideal'.
110114
"""
111-
count = 0
112115
ilabel = 1
113-
norm = ZZ(0)
116+
norm = ZZ.zero()
114117
ideals = self.ideals
115118
if primes:
116119
ideals = self.primes
117-
for idlstr in ideals:
118-
N,n,idl,_ = str2ideal(self.K(),idlstr)
120+
for count, idlstr in enumerate(ideals):
121+
N, n, idl, _ = str2ideal(self.K(), idlstr)
119122
assert idl.norm() == N and idl.smallest_integer() == n
120123
if N != norm:
121-
ilabel = ZZ(1)
124+
ilabel = ZZ.one()
122125
norm = N
123126
label = N.str() + '.' + ilabel.str()
124-
yield {'label':label, 'ideal':idl}
127+
yield {'label': label, 'ideal': idl}
125128
ilabel += 1
126-
count += 1
127129
if count == number:
128130
raise StopIteration
129131

130132
def primes_iter(self, number=None):
131-
return self._iter_ideals(True,number)
133+
return self._iter_ideals(True, number)
132134

133135
def ideals_iter(self, number=None):
134-
return self._iter_ideals(False,number)
136+
return self._iter_ideals(False, number)
135137

136138
def ideal_label(self, idl):
137139
try:

0 commit comments

Comments
 (0)