Skip to content

Commit f07217f

Browse files
committed
type: annotations for nmod_poly
1 parent e1036a0 commit f07217f

File tree

3 files changed

+94
-35
lines changed

3 files changed

+94
-35
lines changed

src/flint/test/test_all.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -768,7 +768,7 @@ def set_bad():
768768
assert raises(lambda: Z([0,2,1]).reversion(), ValueError)
769769

770770

771-
def test_fmpq():
771+
def test_fmpq() -> None:
772772
Q = flint.fmpq
773773
assert Q() == Q(0)
774774
assert Q(0) != Q(1)
@@ -940,8 +940,8 @@ def test_fmpq():
940940
]
941941
is_exception = lambda v: isinstance(v, type) and issubclass(v, Exception)
942942

943-
for func2, values in cases2:
944-
for n, val in enumerate(values, -1):
943+
for func2, values2 in cases2:
944+
for n, val in enumerate(values2, -1):
945945
if is_exception(val):
946946
assert raises(lambda: func2(n), val)
947947
else:
@@ -1409,15 +1409,15 @@ def test_nmod_poly():
14091409
assert P([1,2,3],17) != P([1,2,4],15)
14101410
assert P([1,2,3],17) != 1
14111411
assert P([1,2,3],17) != Z([1,2,3])
1412-
assert raises(lambda: P([1,2],3) < P([1,2],3), TypeError)
1412+
assert raises(lambda: P([1,2],3) < P([1,2],3), TypeError) # type: ignore
14131413
assert P(Z([1,2,3]),17) == P([1,2,3],17)
14141414
assert P([1,2,N(3,17)],17) == P([1,2,3],17)
14151415
assert P(P([1,2],17),17) == P([1,2],17)
14161416
assert raises(lambda: P(P([1,2],17),13), ValueError)
1417-
assert raises(lambda: P([1,2,[]],17), TypeError)
1417+
assert raises(lambda: P([1,2,[]],17), TypeError) # type: ignore
14181418
assert raises(lambda: P([1,2,flint.nmod(3,15)],17), ValueError)
14191419
assert raises(lambda: P([1,2],0), ValueError)
1420-
assert raises(lambda: P({},3), TypeError)
1420+
assert raises(lambda: P({},3), TypeError) # type: ignore
14211421
assert P([1,2,3],17).degree() == 2
14221422
assert P([1,2,3],17).length() == 3
14231423
assert len(P([1,2,3],17)) == 3
@@ -1454,31 +1454,31 @@ def test_nmod_poly():
14541454
assert raises(lambda: s2 * s, ValueError)
14551455
assert raises(lambda: s2 // s, ValueError)
14561456
assert raises(lambda: s2 % s, ValueError)
1457-
assert raises(lambda: s + [], TypeError)
1458-
assert raises(lambda: s - [], TypeError)
1459-
assert raises(lambda: s * [], TypeError)
1460-
assert raises(lambda: s // [], TypeError)
1461-
assert raises(lambda: s % [], TypeError)
1462-
assert raises(lambda: [] + s, TypeError)
1463-
assert raises(lambda: [] - s, TypeError)
1464-
assert raises(lambda: [] * s, TypeError)
1465-
assert raises(lambda: [] // s, TypeError)
1466-
assert raises(lambda: [] % s, TypeError)
1467-
assert raises(lambda: [] % s, TypeError)
1457+
assert raises(lambda: s + [], TypeError) # type: ignore
1458+
assert raises(lambda: s - [], TypeError) # type: ignore
1459+
assert raises(lambda: s * [], TypeError) # type: ignore
1460+
assert raises(lambda: s // [], TypeError) # type: ignore
1461+
assert raises(lambda: s % [], TypeError) # type: ignore
1462+
assert raises(lambda: [] + s, TypeError) # type: ignore
1463+
assert raises(lambda: [] - s, TypeError) # type: ignore
1464+
assert raises(lambda: [] * s, TypeError) # type: ignore
1465+
assert raises(lambda: [] // s, TypeError) # type: ignore
1466+
assert raises(lambda: [] % s, TypeError) # type: ignore
1467+
assert raises(lambda: [] % s, TypeError) # type: ignore
14681468
assert raises(lambda: s.reverse(-1), ValueError)
1469-
assert raises(lambda: s.compose("A"), TypeError)
1470-
assert raises(lambda: s.compose_mod(s, "A"), TypeError)
1471-
assert raises(lambda: s.compose_mod("A", P([3,6,9],17)), TypeError)
1469+
assert raises(lambda: s.compose("A"), TypeError) # type: ignore
1470+
assert raises(lambda: s.compose_mod(s, "A"), TypeError) # type: ignore
1471+
assert raises(lambda: s.compose_mod("A", P([3,6,9],17)), TypeError) # type: ignore
14721472
assert raises(lambda: s.compose_mod(s, P([0], 17)), ZeroDivisionError)
14731473
assert raises(lambda: pow(s, -1, P([3,6,9],17)), ValueError)
1474-
assert raises(lambda: pow(s, 1, "A"), TypeError)
1475-
assert raises(lambda: pow(s, "A", P([3,6,9],17)), TypeError)
1474+
assert raises(lambda: pow(s, 1, "A"), TypeError) # type: ignore
1475+
assert raises(lambda: pow(s, "A", P([3,6,9],17)), TypeError) # type: ignore
14761476
assert str(P([1,2,3],17)) == "3*x^2 + 2*x + 1"
14771477
assert P([1,2,3],17).repr() == "nmod_poly([1, 2, 3], 17)"
14781478
p = P([3,4,5],17)
14791479
assert p(14) == N(2,17)
14801480
assert p(P([1,2,3],17)) == P([12,11,11,9,11],17)
1481-
assert raises(lambda: p({}), TypeError)
1481+
assert raises(lambda: p({}), TypeError) # type: ignore
14821482
p2 = P([3,4,5],17)
14831483
assert p2[1] == N(4,17)
14841484
assert p2[-1] == N(0,17)
@@ -1491,14 +1491,14 @@ def set_bad1():
14911491
p2[-1] = 3
14921492

14931493
def set_bad2():
1494-
p2[2] = []
1494+
p2[2] = [] # type: ignore
14951495

14961496
assert raises(set_bad1, ValueError)
14971497
assert raises(set_bad2, TypeError)
14981498
assert bool(P([], 5)) is False
14991499
assert bool(P([1], 5)) is True
15001500
assert P([1,2,1],3).gcd(P([1,1],3)) == P([1,1],3)
1501-
raises(lambda: P([1,2],3).gcd([]), TypeError)
1501+
raises(lambda: P([1,2],3).gcd([]), TypeError) # type: ignore
15021502
raises(lambda: P([1,2],3).gcd(P([1,2],5)), ValueError)
15031503
p3 = P([1,2,3,4,5,6],7)
15041504
f3 = (N(6,7), [(P([6, 1],7), 5)])

src/flint/types/fq_default_poly.pyi

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,6 @@ class fq_default_poly_ctx:
2727
check_prime: bool = True,
2828
check_modulus: bool = True,
2929
): ...
30-
def __init__(
31-
self,
32-
p: fq_default_ctx | ifmpz | None = None,
33-
degree: int | None = None,
34-
var: str | None = None,
35-
modulus: fmpz_mod_poly | fmpz_poly | None = None,
36-
fq_type: str | int | fq_default_type = fq_default_type.DEFAULT,
37-
check_prime: bool = True,
38-
check_modulus: bool = True,
39-
): ...
4030
def base_field(self) -> fq_default_ctx: ...
4131
def characteristic(self) -> fmpz: ...
4232
def prime(self) -> fmpz: ...

src/flint/types/nmod_poly.pyi

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from typing import overload, Iterator
2+
from flint.flint_base.flint_base import flint_poly
3+
from flint.types.nmod import inmod, nmod
4+
from flint.types.fmpz_poly import fmpz_poly
5+
6+
inmod_poly = nmod_poly | fmpz_poly | inmod
7+
8+
class nmod_poly(flint_poly):
9+
"""Dense univariate polynomials over Z/nZ for word-size n."""
10+
11+
@overload
12+
def __init__(self, val: nmod_poly) -> None: ...
13+
@overload
14+
def __init__(self, val: inmod_poly | list[inmod], mod: int) -> None: ...
15+
def __len__(self) -> int: ...
16+
def length(self) -> int: ...
17+
def degree(self) -> int: ...
18+
def modulus(self) -> int: ...
19+
def __iter__(self) -> Iterator[nmod]: ...
20+
def coeffs(self) -> list[nmod]: ...
21+
def repr(self) -> str: ...
22+
def __getitem__(self, i: int) -> nmod: ...
23+
def __setitem__(self, i: int, x: inmod) -> None: ...
24+
def __bool__(self) -> bool: ...
25+
def is_zero(self) -> bool: ...
26+
def is_one(self) -> bool: ...
27+
def is_constant(self) -> bool: ...
28+
def is_gen(self) -> bool: ...
29+
def reverse(self, degree: int | None = None) -> nmod_poly: ...
30+
def leading_coefficient(self) -> nmod: ...
31+
def inverse_series_trunc(self, n: int) -> nmod_poly: ...
32+
def compose(self, other: inmod_poly) -> nmod_poly: ...
33+
def compose_mod(self, other: inmod_poly, modulus: inmod_poly) -> nmod_poly: ...
34+
@overload
35+
def __call__(self, other: inmod) -> nmod: ...
36+
@overload
37+
def __call__(self, other: nmod_poly | fmpz_poly) -> nmod_poly: ...
38+
def derivative(self) -> nmod_poly: ...
39+
def integral(self) -> nmod_poly: ...
40+
def __pos__(self) -> nmod_poly: ...
41+
def __neg__(self) -> nmod_poly: ...
42+
def __add__(self, other: inmod_poly) -> nmod_poly: ...
43+
def __radd__(self, other: inmod_poly) -> nmod_poly: ...
44+
def __sub__(self, other: inmod_poly) -> nmod_poly: ...
45+
def __rsub__(self, other: inmod_poly) -> nmod_poly: ...
46+
def __mul__(self, other: inmod_poly) -> nmod_poly: ...
47+
def __rmul__(self, other: inmod_poly) -> nmod_poly: ...
48+
def __truediv__(self, other: inmod_poly) -> nmod_poly: ...
49+
def __rtruediv__(self, other: inmod_poly) -> nmod_poly: ...
50+
def __floordiv__(self, other: inmod_poly) -> nmod_poly: ...
51+
def __rfloordiv__(self, other: inmod_poly) -> nmod_poly: ...
52+
def __mod__(self, other: inmod_poly) -> nmod_poly: ...
53+
def __rmod__(self, other: inmod_poly) -> nmod_poly: ...
54+
def __divmod__(self, other: inmod_poly) -> tuple[nmod_poly, nmod_poly]: ...
55+
def __rdivmod__(self, other: inmod_poly) -> tuple[nmod_poly, nmod_poly]: ...
56+
def __pow__(self, other: int, mod: inmod_poly | None = None) -> nmod_poly: ...
57+
def pow_mod(
58+
self, e: int, modulus: inmod_poly, mod_rev_inv: inmod_poly | None = None
59+
) -> nmod_poly: ...
60+
def gcd(self, other: inmod_poly) -> nmod_poly: ...
61+
def resultant(self, other: inmod_poly) -> int: ...
62+
def xgcd(self, other: inmod_poly) -> tuple[nmod_poly, nmod_poly, nmod_poly]: ...
63+
def factor(
64+
self, algorithm: str | None = None
65+
) -> tuple[nmod, list[tuple[nmod_poly, int]]]: ...
66+
def factor_squarefree(self) -> tuple[nmod, list[tuple[nmod_poly, int]]]: ...
67+
def sqrt(self) -> nmod_poly: ...
68+
def deflation(self) -> tuple[nmod_poly, int]: ...
69+
def roots(self) -> list[tuple[nmod, int]]: ...

0 commit comments

Comments
 (0)