33Initial version (University of Warwick 2015) Aurel Page and John Cremona
44
55"""
6-
76from sage .all import ZZ
87from lmfdb import db
98from lmfdb .number_fields .web_number_field import WebNumberField
109
10+
1111def 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