Skip to content

Commit 1dfd308

Browse files
committed
add type checks for parameters
1 parent ccb497e commit 1dfd308

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/sage/rings/function_field/drinfeld_modules/drinfeld_module.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1809,6 +1809,7 @@ def j_invariant(self, parameter=None, check=True):
18091809
"if the rank is greater than 2")
18101810
return self._gen[1]**(q+1)/self._gen[2]
18111811
if parameter in ZZ:
1812+
parameter = ZZ(parameter)
18121813
if parameter <= 0 or parameter >= r:
18131814
raise ValueError("integer parameter must be >= 1 and < the "
18141815
f"rank (={r})")
@@ -1826,26 +1827,28 @@ def j_invariant(self, parameter=None, check=True):
18261827
not len(parameter[1]) == len(parameter[0]) + 1:
18271828
raise ValueError("components of tuple or list parameter have "
18281829
"incorrect length")
1829-
if not all(p in ZZ for p in parameter[0])\
1830-
or not all(p in ZZ for p in parameter[1]):
1830+
try: # Check parameter's type
1831+
parameter_0 = [ZZ(p) for p in parameter[0]]
1832+
parameter_1 = [ZZ(p) for p in parameter[1]]
1833+
except TypeError:
18311834
raise TypeError("components of tuple or list parameter must "
18321835
"contain only integers")
18331836
# Check that the weight-0 condition is satisfied:
18341837
# d_1 (q - 1) + ... + d_{r-1} (q^{r-1} - 1)
18351838
# = d_r (q^r - 1)
18361839
if check:
1837-
right = parameter[1][-1]*(q**r - 1)
1838-
left = sum(parameter[1][i]*(q**(parameter[0][i]) - 1) for i in
1839-
range(len(parameter[0])))
1840+
right = parameter_1[-1]*(q**r - 1)
1841+
left = sum(parameter_1[i]*(q**(parameter_0[i]) - 1) for i in
1842+
range(len(parameter_0)))
18401843
if left != right:
18411844
raise ValueError("parameter does not satisfy the "
18421845
"weight-0 condition")
18431846
else:
18441847
raise TypeError("parameter must be a tuple or a list of "
18451848
"length 2 or an integer")
18461849
num = prod(self._gen[k]**d
1847-
for k, d in zip(parameter[0], parameter[1][:-1]))
1848-
return num / (self._gen[-1]**parameter[1][-1])
1850+
for k, d in zip(parameter_0, parameter_1[:-1]))
1851+
return num / (self._gen[-1]**parameter_1[-1])
18491852

18501853
def jk_invariants(self):
18511854
r"""

0 commit comments

Comments
 (0)