codekingpro/portable-devtools
114k
1from collections.abc import Iterator
2from typing import Any, NoReturn, assert_type
3
4import numpy as np
5import numpy.typing as npt
6
7AR_b: npt.NDArray[np.bool]
8AR_u4: npt.NDArray[np.uint32]
9AR_i8: npt.NDArray[np.int64]
10AR_f8: npt.NDArray[np.float64]
11AR_c16: npt.NDArray[np.complex128]
12AR_O: npt.NDArray[np.object_]
13
14poly_obj: np.poly1d
15
16assert_type(poly_obj.variable, str)
17assert_type(poly_obj.order, int)
18assert_type(poly_obj.o, int)
19assert_type(poly_obj.roots, npt.NDArray[Any])
20assert_type(poly_obj.r, npt.NDArray[Any])
21assert_type(poly_obj.coeffs, npt.NDArray[Any])
22assert_type(poly_obj.c, npt.NDArray[Any])
23assert_type(poly_obj.coef, npt.NDArray[Any])
24assert_type(poly_obj.coefficients, npt.NDArray[Any])
25assert_type(poly_obj.__hash__, None)
26
27assert_type(poly_obj(1), Any)
28assert_type(poly_obj([1]), npt.NDArray[Any])
29assert_type(poly_obj(poly_obj), np.poly1d)
30
31assert_type(len(poly_obj), int)
32assert_type(-poly_obj, np.poly1d)
33assert_type(+poly_obj, np.poly1d)
34
35assert_type(poly_obj * 5, np.poly1d)
36assert_type(5 * poly_obj, np.poly1d)
37assert_type(poly_obj + 5, np.poly1d)
38assert_type(5 + poly_obj, np.poly1d)
39assert_type(poly_obj - 5, np.poly1d)
40assert_type(5 - poly_obj, np.poly1d)
41assert_type(poly_obj**1, np.poly1d)
42assert_type(poly_obj**1.0, np.poly1d)
43assert_type(poly_obj / 5, np.poly1d)
44assert_type(5 / poly_obj, np.poly1d)
45
46assert_type(poly_obj[0], Any)
47poly_obj[0] = 5
48assert_type(iter(poly_obj), Iterator[Any])
49assert_type(poly_obj.deriv(), np.poly1d)
50assert_type(poly_obj.integ(), np.poly1d)
51
52assert_type(np.poly(poly_obj), npt.NDArray[np.floating])
53assert_type(np.poly(AR_f8), npt.NDArray[np.floating])
54assert_type(np.poly(AR_c16), npt.NDArray[np.floating])
55
56assert_type(np.polyint(poly_obj), np.poly1d)
57assert_type(np.polyint(AR_f8), npt.NDArray[np.floating])
58assert_type(np.polyint(AR_f8, k=AR_c16), npt.NDArray[np.complexfloating])
59assert_type(np.polyint(AR_O, m=2), npt.NDArray[np.object_])
60
61assert_type(np.polyder(poly_obj), np.poly1d)
62assert_type(np.polyder(AR_f8), npt.NDArray[np.floating])
63assert_type(np.polyder(AR_c16), npt.NDArray[np.complexfloating])
64assert_type(np.polyder(AR_O, m=2), npt.NDArray[np.object_])
65
66assert_type(np.polyfit(AR_f8, AR_f8, 2), npt.NDArray[np.float64])
67assert_type(
68 np.polyfit(AR_f8, AR_i8, 1, full=True),
69 tuple[
70 npt.NDArray[np.float64],
71 npt.NDArray[np.float64],
72 npt.NDArray[np.int32],
73 npt.NDArray[np.float64],
74 npt.NDArray[np.float64],
75 ],
76)
77assert_type(
78 np.polyfit(AR_u4, AR_f8, 1.0, cov="unscaled"),
79 tuple[
80 npt.NDArray[np.float64],
81 npt.NDArray[np.float64],
82 ],
83)
84assert_type(np.polyfit(AR_c16, AR_f8, 2), npt.NDArray[np.complex128])
85assert_type(
86 np.polyfit(AR_f8, AR_c16, 1, full=True),
87 tuple[
88 npt.NDArray[np.complex128],
89 npt.NDArray[np.float64],
90 npt.NDArray[np.int32],
91 npt.NDArray[np.float64],
92 npt.NDArray[np.float64],
93 ],
94)
95assert_type(
96 np.polyfit(AR_u4, AR_c16, 1.0, cov=True),
97 tuple[
98 npt.NDArray[np.complex128],
99 npt.NDArray[np.complex128],
100 ],
101)
102
103assert_type(np.polyval(AR_b, AR_b), npt.NDArray[np.int64])
104assert_type(np.polyval(AR_u4, AR_b), npt.NDArray[np.unsignedinteger])
105assert_type(np.polyval(AR_i8, AR_i8), npt.NDArray[np.signedinteger])
106assert_type(np.polyval(AR_f8, AR_i8), npt.NDArray[np.floating])
107assert_type(np.polyval(AR_i8, AR_c16), npt.NDArray[np.complexfloating])
108assert_type(np.polyval(AR_O, AR_O), npt.NDArray[np.object_])
109
110assert_type(np.polyadd(poly_obj, AR_i8), np.poly1d)
111assert_type(np.polyadd(AR_f8, poly_obj), np.poly1d)
112assert_type(np.polyadd(AR_b, AR_b), npt.NDArray[np.bool])
113assert_type(np.polyadd(AR_u4, AR_b), npt.NDArray[np.unsignedinteger])
114assert_type(np.polyadd(AR_i8, AR_i8), npt.NDArray[np.signedinteger])
115assert_type(np.polyadd(AR_f8, AR_i8), npt.NDArray[np.floating])
116assert_type(np.polyadd(AR_i8, AR_c16), npt.NDArray[np.complexfloating])
117assert_type(np.polyadd(AR_O, AR_O), npt.NDArray[np.object_])
118
119assert_type(np.polysub(poly_obj, AR_i8), np.poly1d)
120assert_type(np.polysub(AR_f8, poly_obj), np.poly1d)
121
122def test_invalid_polysub() -> None:
123 assert_type(np.polysub(AR_b, AR_b), NoReturn)
124
125assert_type(np.polysub(AR_u4, AR_b), npt.NDArray[np.unsignedinteger])
126assert_type(np.polysub(AR_i8, AR_i8), npt.NDArray[np.signedinteger])
127assert_type(np.polysub(AR_f8, AR_i8), npt.NDArray[np.floating])
128assert_type(np.polysub(AR_i8, AR_c16), npt.NDArray[np.complexfloating])
129assert_type(np.polysub(AR_O, AR_O), npt.NDArray[np.object_])
130
131assert_type(np.polymul(poly_obj, AR_i8), np.poly1d)
132assert_type(np.polymul(AR_f8, poly_obj), np.poly1d)
133assert_type(np.polymul(AR_b, AR_b), npt.NDArray[np.bool])
134assert_type(np.polymul(AR_u4, AR_b), npt.NDArray[np.unsignedinteger])
135assert_type(np.polymul(AR_i8, AR_i8), npt.NDArray[np.signedinteger])
136assert_type(np.polymul(AR_f8, AR_i8), npt.NDArray[np.floating])
137assert_type(np.polymul(AR_i8, AR_c16), npt.NDArray[np.complexfloating])
138assert_type(np.polymul(AR_O, AR_O), npt.NDArray[np.object_])
139
140assert_type(np.polydiv(poly_obj, AR_i8), tuple[np.poly1d, np.poly1d])
141assert_type(np.polydiv(AR_f8, poly_obj), tuple[np.poly1d, np.poly1d])
142assert_type(np.polydiv(AR_b, AR_b), tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]])
143assert_type(np.polydiv(AR_u4, AR_b), tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]])
144assert_type(np.polydiv(AR_i8, AR_i8), tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]])
145assert_type(np.polydiv(AR_f8, AR_i8), tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]])
146assert_type(np.polydiv(AR_i8, AR_c16), tuple[npt.NDArray[np.complexfloating], npt.NDArray[np.complexfloating]])
147assert_type(np.polydiv(AR_O, AR_O), tuple[npt.NDArray[Any], npt.NDArray[Any]])
148 