Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
polyutils.pyi308 linesDownload Raw Back to polynomial
1from collections.abc import Callable, Iterable, Sequence
2from typing import (
3    Final,
4    Literal,
5    Protocol,
6    SupportsIndex,
7    TypeAlias,
8    TypeVar,
9    overload,
10    type_check_only,
11)
12
13import numpy as np
14import numpy.typing as npt
15from numpy._typing import (
16    _ArrayLikeComplex_co,
17    _ArrayLikeFloat_co,
18    _ArrayLikeObject_co,
19    _FloatLike_co,
20    _NumberLike_co,
21)
22
23from ._polytypes import (
24    _AnyInt,
25    _Array2,
26    _ArrayLikeCoef_co,
27    _CoefArray,
28    _CoefLike_co,
29    _CoefSeries,
30    _ComplexArray,
31    _ComplexSeries,
32    _FloatArray,
33    _FloatSeries,
34    _FuncBinOp,
35    _ObjectArray,
36    _ObjectSeries,
37    _SeriesLikeCoef_co,
38    _SeriesLikeComplex_co,
39    _SeriesLikeFloat_co,
40    _SeriesLikeInt_co,
41    _SeriesLikeObject_co,
42    _Tuple2,
43)
44
45__all__ = ["as_series", "format_float", "getdomain", "mapdomain", "mapparms", "trimcoef", "trimseq"]
46
47_T = TypeVar("_T")
48_SeqT = TypeVar("_SeqT", bound=_CoefArray | Sequence[_CoefLike_co])
49
50_AnyLineF: TypeAlias = Callable[[float, float], _CoefArray]
51_AnyMulF: TypeAlias = Callable[[np.ndarray | list[int], np.ndarray], _CoefArray]
52_AnyVanderF: TypeAlias = Callable[[np.ndarray, int], _CoefArray]
53
54@type_check_only
55class _ValFunc(Protocol[_T]):
56    def __call__(self, x: np.ndarray, c: _T, /, *, tensor: bool = True) -> _T: ...
57
58###
59
60@overload
61def as_series(alist: npt.NDArray[np.integer] | _FloatArray, trim: bool = True) -> list[_FloatSeries]: ...
62@overload
63def as_series(alist: _ComplexArray, trim: bool = True) -> list[_ComplexSeries]: ...
64@overload
65def as_series(alist: _ObjectArray, trim: bool = True) -> list[_ObjectSeries]: ...
66@overload
67def as_series(alist: Iterable[_FloatArray | npt.NDArray[np.integer]], trim: bool = True) -> list[_FloatSeries]: ...
68@overload
69def as_series(alist: Iterable[_ComplexArray], trim: bool = True) -> list[_ComplexSeries]: ...
70@overload
71def as_series(alist: Iterable[_ObjectArray], trim: bool = True) -> list[_ObjectSeries]: ...
72@overload
73def as_series(alist: Iterable[_SeriesLikeFloat_co | float], trim: bool = True) -> list[_FloatSeries]: ...
74@overload
75def as_series(alist: Iterable[_SeriesLikeComplex_co | complex], trim: bool = True) -> list[_ComplexSeries]: ...
76@overload
77def as_series(alist: Iterable[_SeriesLikeCoef_co | object], trim: bool = True) -> list[_ObjectSeries]: ...
78
79#
80def trimseq(seq: _SeqT) -> _SeqT: ...
81
82#
83@overload
84def trimcoef(c: npt.NDArray[np.integer] | _FloatArray, tol: _FloatLike_co = 0) -> _FloatSeries: ...
85@overload
86def trimcoef(c: _ComplexArray, tol: _FloatLike_co = 0) -> _ComplexSeries: ...
87@overload
88def trimcoef(c: _ObjectArray, tol: _FloatLike_co = 0) -> _ObjectSeries: ...
89@overload
90def trimcoef(c: _SeriesLikeFloat_co | float, tol: _FloatLike_co = 0) -> _FloatSeries: ...
91@overload
92def trimcoef(c: _SeriesLikeComplex_co | complex, tol: _FloatLike_co = 0) -> _ComplexSeries: ...
93@overload
94def trimcoef(c: _SeriesLikeCoef_co | object, tol: _FloatLike_co = 0) -> _ObjectSeries: ...
95
96#
97@overload
98def getdomain(x: _FloatArray | npt.NDArray[np.integer]) -> _Array2[np.float64]: ...
99@overload
100def getdomain(x: _ComplexArray) -> _Array2[np.complex128]: ...
101@overload
102def getdomain(x: _ObjectArray) -> _Array2[np.object_]: ...
103@overload
104def getdomain(x: _SeriesLikeFloat_co | float) -> _Array2[np.float64]: ...
105@overload
106def getdomain(x: _SeriesLikeComplex_co | complex) -> _Array2[np.complex128]: ...
107@overload
108def getdomain(x: _SeriesLikeCoef_co | object) -> _Array2[np.object_]: ...
109
110#
111@overload
112def mapparms(old: npt.NDArray[np.floating | np.integer], new: npt.NDArray[np.floating | np.integer]) -> _Tuple2[np.floating]: ...
113@overload
114def mapparms(old: npt.NDArray[np.number], new: npt.NDArray[np.number]) -> _Tuple2[np.complexfloating]: ...
115@overload
116def mapparms(old: npt.NDArray[np.object_ | np.number], new: npt.NDArray[np.object_ | np.number]) -> _Tuple2[object]: ...
117@overload
118def mapparms(old: Sequence[float], new: Sequence[float]) -> _Tuple2[float]: ...
119@overload
120def mapparms(old: Sequence[complex], new: Sequence[complex]) -> _Tuple2[complex]: ...
121@overload
122def mapparms(old: _SeriesLikeFloat_co, new: _SeriesLikeFloat_co) -> _Tuple2[np.floating]: ...
123@overload
124def mapparms(old: _SeriesLikeComplex_co, new: _SeriesLikeComplex_co) -> _Tuple2[np.complexfloating]: ...
125@overload
126def mapparms(old: _SeriesLikeCoef_co, new: _SeriesLikeCoef_co) -> _Tuple2[object]: ...
127
128#
129@overload
130def mapdomain(x: _FloatLike_co, old: _SeriesLikeFloat_co, new: _SeriesLikeFloat_co) -> np.floating: ...
131@overload
132def mapdomain(x: _NumberLike_co, old: _SeriesLikeComplex_co, new: _SeriesLikeComplex_co) -> np.complexfloating: ...
133@overload
134def mapdomain(
135    x: npt.NDArray[np.floating | np.integer],
136    old: npt.NDArray[np.floating | np.integer],
137    new: npt.NDArray[np.floating | np.integer],
138) -> _FloatSeries: ...
139@overload
140def mapdomain(x: npt.NDArray[np.number], old: npt.NDArray[np.number], new: npt.NDArray[np.number]) -> _ComplexSeries: ...
141@overload
142def mapdomain(
143    x: npt.NDArray[np.object_ | np.number],
144    old: npt.NDArray[np.object_ | np.number],
145    new: npt.NDArray[np.object_ | np.number],
146) -> _ObjectSeries: ...
147@overload
148def mapdomain(x: _SeriesLikeFloat_co, old: _SeriesLikeFloat_co, new: _SeriesLikeFloat_co) -> _FloatSeries: ...
149@overload
150def mapdomain(x: _SeriesLikeComplex_co, old: _SeriesLikeComplex_co, new: _SeriesLikeComplex_co) -> _ComplexSeries: ...
151@overload
152def mapdomain(x: _SeriesLikeCoef_co, old: _SeriesLikeCoef_co, new: _SeriesLikeCoef_co) -> _ObjectSeries: ...
153@overload
154def mapdomain(x: _CoefLike_co, old: _SeriesLikeCoef_co, new: _SeriesLikeCoef_co) -> object: ...
155
156#
157def _nth_slice(i: SupportsIndex, ndim: SupportsIndex) -> tuple[slice | None, ...]: ...
158
159# keep in sync with `vander_nd_flat`
160@overload
161def _vander_nd(
162    vander_fs: Sequence[_AnyVanderF],
163    points: Sequence[_ArrayLikeFloat_co],
164    degrees: Sequence[SupportsIndex],
165) -> _FloatArray: ...
166@overload
167def _vander_nd(
168    vander_fs: Sequence[_AnyVanderF],
169    points: Sequence[_ArrayLikeComplex_co],
170    degrees: Sequence[SupportsIndex],
171) -> _ComplexArray: ...
172@overload
173def _vander_nd(
174    vander_fs: Sequence[_AnyVanderF],
175    points: Sequence[_ArrayLikeObject_co | _ArrayLikeComplex_co],
176    degrees: Sequence[SupportsIndex],
177) -> _ObjectArray: ...
178@overload
179def _vander_nd(
180    vander_fs: Sequence[_AnyVanderF],
181    points: Sequence[npt.ArrayLike],
182    degrees: Sequence[SupportsIndex],
183) -> _CoefArray: ...
184
185# keep in sync with `vander_nd`
186@overload
187def _vander_nd_flat(
188    vander_fs: Sequence[_AnyVanderF],
189    points: Sequence[_ArrayLikeFloat_co],
190    degrees: Sequence[SupportsIndex],
191) -> _FloatArray: ...
192@overload
193def _vander_nd_flat(
194    vander_fs: Sequence[_AnyVanderF],
195    points: Sequence[_ArrayLikeComplex_co],
196    degrees: Sequence[SupportsIndex],
197) -> _ComplexArray: ...
198@overload
199def _vander_nd_flat(
200    vander_fs: Sequence[_AnyVanderF],
201    points: Sequence[_ArrayLikeObject_co | _ArrayLikeComplex_co],
202    degrees: Sequence[SupportsIndex],
203) -> _ObjectArray: ...
204@overload
205def _vander_nd_flat(
206    vander_fs: Sequence[_AnyVanderF],
207    points: Sequence[npt.ArrayLike],
208    degrees: Sequence[SupportsIndex],
209) -> _CoefArray: ...
210
211# keep in sync with `._polytypes._FuncFromRoots`
212@overload
213def _fromroots(line_f: _AnyLineF, mul_f: _AnyMulF, roots: _SeriesLikeFloat_co) -> _FloatSeries: ...
214@overload
215def _fromroots(line_f: _AnyLineF, mul_f: _AnyMulF, roots: _SeriesLikeComplex_co) -> _ComplexSeries: ...
216@overload
217def _fromroots(line_f: _AnyLineF, mul_f: _AnyMulF, roots: _SeriesLikeObject_co) -> _ObjectSeries: ...
218@overload
219def _fromroots(line_f: _AnyLineF, mul_f: _AnyMulF, roots: _SeriesLikeCoef_co) -> _CoefSeries: ...
220
221# keep in sync with `_gridnd`
222def _valnd(val_f: _ValFunc[_T], c: _T, *args: npt.ArrayLike) -> _T: ...
223
224# keep in sync with `_valnd`
225def _gridnd(val_f: _ValFunc[_T], c: _T, *args: npt.ArrayLike) -> _T: ...
226
227# keep in sync with `_polytypes._FuncBinOp`
228@overload
229def _div(mul_f: _AnyMulF, c1: _SeriesLikeFloat_co, c2: _SeriesLikeFloat_co) -> _Tuple2[_FloatSeries]: ...
230@overload
231def _div(mul_f: _AnyMulF, c1: _SeriesLikeComplex_co, c2: _SeriesLikeComplex_co) -> _Tuple2[_ComplexSeries]: ...
232@overload
233def _div(mul_f: _AnyMulF, c1: _SeriesLikeObject_co, c2: _SeriesLikeObject_co) -> _Tuple2[_ObjectSeries]: ...
234@overload
235def _div(mul_f: _AnyMulF, c1: _SeriesLikeCoef_co, c2: _SeriesLikeCoef_co) -> _Tuple2[_CoefSeries]: ...
236
237_add: Final[_FuncBinOp] = ...
238_sub: Final[_FuncBinOp] = ...
239
240# keep in sync with `_polytypes._FuncPow`
241@overload
242def _pow(mul_f: _AnyMulF, c: _SeriesLikeFloat_co, pow: _AnyInt, maxpower: _AnyInt | None) -> _FloatSeries: ...
243@overload
244def _pow(mul_f: _AnyMulF, c: _SeriesLikeComplex_co, pow: _AnyInt, maxpower: _AnyInt | None) -> _ComplexSeries: ...
245@overload
246def _pow(mul_f: _AnyMulF, c: _SeriesLikeObject_co, pow: _AnyInt, maxpower: _AnyInt | None) -> _ObjectSeries: ...
247@overload
248def _pow(mul_f: _AnyMulF, c: _SeriesLikeCoef_co, pow: _AnyInt, maxpower: _AnyInt | None) -> _CoefSeries: ...
249
250# keep in sync with `_polytypes._FuncFit`
251@overload
252def _fit(
253    vander_f: _AnyVanderF,
254    x: _SeriesLikeFloat_co,
255    y: _ArrayLikeFloat_co,
256    deg: _SeriesLikeInt_co,
257    rcond: _FloatLike_co | None = None,
258    full: Literal[False] = False,
259    w: _SeriesLikeFloat_co | None = None,
260) -> _FloatArray: ...
261@overload
262def _fit(
263    vander_f: _AnyVanderF,
264    x: _SeriesLikeComplex_co,
265    y: _ArrayLikeComplex_co,
266    deg: _SeriesLikeInt_co,
267    rcond: _FloatLike_co | None = None,
268    full: Literal[False] = False,
269    w: _SeriesLikeComplex_co | None = None,
270) -> _ComplexArray: ...
271@overload
272def _fit(
273    vander_f: _AnyVanderF,
274    x: _SeriesLikeCoef_co,
275    y: _ArrayLikeCoef_co,
276    deg: _SeriesLikeInt_co,
277    rcond: _FloatLike_co | None = None,
278    full: Literal[False] = False,
279    w: _SeriesLikeCoef_co | None = None,
280) -> _CoefArray: ...
281@overload
282def _fit(
283    vander_f: _AnyVanderF,
284    x: _SeriesLikeCoef_co,
285    y: _SeriesLikeCoef_co,
286    deg: _SeriesLikeInt_co,
287    rcond: _FloatLike_co | None,
288    full: Literal[True],
289    w: _SeriesLikeCoef_co | None = None,
290) -> tuple[_CoefSeries, Sequence[np.inexact | np.int32]]: ...
291@overload
292def _fit(
293    vander_f: _AnyVanderF,
294    x: _SeriesLikeCoef_co,
295    y: _SeriesLikeCoef_co,
296    deg: _SeriesLikeInt_co,
297    rcond: _FloatLike_co | None = None,
298    *,
299    full: Literal[True],
300    w: _SeriesLikeCoef_co | None = None,
301) -> tuple[_CoefSeries, Sequence[np.inexact | np.int32]]: ...
302
303#
304def _as_int(x: SupportsIndex, desc: str) -> int: ...
305
306#
307def format_float(x: _FloatLike_co, parens: bool = False) -> str: ...
308 
codekingpro/portable-devtools · Team Ai