Skip to content

Commit c85b294

Browse files
authored
🏷️ sparse: stub the remaining private modules (#724)
2 parents 6cf6f34 + bdad6f3 commit c85b294

File tree

4 files changed

+296
-0
lines changed

4 files changed

+296
-0
lines changed

scipy-stubs/sparse/_csparsetools.pyi

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
from collections.abc import Iterable
2+
from typing import TypeAlias, TypeVar
3+
4+
import numpy as np
5+
import optype.numpy as onp
6+
import optype.numpy.compat as npc
7+
8+
_Index: TypeAlias = int | np.intp
9+
_Scalar: TypeAlias = npc.number | np.bool_
10+
11+
_FusedScalarT = TypeVar(
12+
"_FusedScalarT",
13+
np.bool_,
14+
np.uint8,
15+
np.int8,
16+
np.uint16,
17+
np.int16,
18+
np.uint32,
19+
np.int32,
20+
np.uint64,
21+
np.int64,
22+
np.float32,
23+
np.float64,
24+
np.longdouble,
25+
np.complex64,
26+
np.complex128,
27+
np.clongdouble,
28+
)
29+
30+
###
31+
32+
#
33+
def lil_get1(
34+
M: _Index, N: _Index, rows: list[list[_FusedScalarT]], datas: list[list[_FusedScalarT]], i: int, j: int
35+
) -> _FusedScalarT: ...
36+
def lil_insert(
37+
M: _Index, N: _Index, rows: list[list[_FusedScalarT]], datas: list[list[_FusedScalarT]], i: int, j: int, x: _FusedScalarT
38+
) -> None: ...
39+
def lil_get_lengths(input: list[list[_FusedScalarT]], output: onp.Array1D[npc.integer]) -> None: ...
40+
def lil_flatten_to_array(input: onp.Array1D[np.object_ | np.float64], output: onp.Array1D[_Scalar]) -> None: ...
41+
def lil_fancy_get(
42+
M: _Index,
43+
N: _Index,
44+
rows: list[list[_FusedScalarT]],
45+
datas: list[list[_FusedScalarT]],
46+
new_rows: list[list[_FusedScalarT]],
47+
new_datas: list[list[_FusedScalarT]],
48+
i_idx: onp.Array1D[np.intp],
49+
j_idx: onp.Array1D[np.intp],
50+
) -> None: ...
51+
def lil_fancy_set(
52+
M: _Index,
53+
N: _Index,
54+
rows: list[list[_FusedScalarT]],
55+
data: list[list[_FusedScalarT]],
56+
i_idx: onp.Array1D[np.intp],
57+
j_idx: onp.Array1D[np.intp],
58+
values: onp.Array2D[_Scalar],
59+
) -> None: ...
60+
def lil_get_row_ranges(
61+
M: _Index,
62+
N: _Index,
63+
rows: list[list[_FusedScalarT]],
64+
datas: list[list[_FusedScalarT]],
65+
new_rows: list[list[_FusedScalarT]],
66+
new_datas: list[list[_FusedScalarT]],
67+
irows: Iterable[_Index],
68+
j_start: _Index,
69+
j_stop: _Index,
70+
j_stride: _Index,
71+
nj: _Index,
72+
) -> None: ...

scipy-stubs/sparse/_sparsetools.pyi

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# NOTE: The scipy source is generated in `scipy/sparse/_generate_sparsetools.py`
2+
3+
# Type codes used:
4+
#
5+
# - i: integer scalar
6+
# - I: integer array
7+
# - T: data array
8+
# - V: std::vector<integer>*
9+
# - W: std::vector<data>*
10+
# - *: indicates that the next argument is an output argument
11+
# - v: void
12+
# - l: 64-bit integer scalar
13+
#
14+
# See `scipy/sparse/sparsetools/sparsetools.cxx` for more details.
15+
16+
from collections.abc import Sequence
17+
from typing import Never, TypeAlias
18+
19+
import numpy as np
20+
import optype.numpy as onp
21+
import optype.numpy.compat as npc
22+
23+
_i: TypeAlias = int | np.int32 | np.int64 # noqa: PYI042
24+
_l: TypeAlias = int | np.int64 # noqa: PYI042
25+
_I: TypeAlias = onp.ArrayND[np.int32 | np.int64]
26+
_T: TypeAlias = onp.ArrayND[npc.number | np.bool_]
27+
_V: TypeAlias = Sequence[_i]
28+
_W: TypeAlias = Sequence[complex | npc.number | np.bool_]
29+
30+
###
31+
32+
# bsr.h
33+
def bsr_diagonal(a0: _i, a1: _i, a2: _i, a3: _i, a4: _i, a5: _I, a6: _I, a7: _T, a8: _T, /) -> None: ... # v iiiiiIIT*T
34+
def bsr_tocsr(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, /) -> None: ... # v iiiiIIT*I*I*T
35+
def bsr_scale_columns(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _T, /) -> None: ... # v iiiiII*TT
36+
def bsr_scale_rows(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _T, /) -> None: ... # v iiiiII*TT
37+
def bsr_sort_indices(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, /) -> None: ... # v iiii*I*I*T
38+
def bsr_transpose(
39+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, /
40+
) -> None: ... # v iiiiIIT*I*I*T
41+
def bsr_matmat(
42+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _i, a5: _i, a6: _I, a7: _I, a8: _T, a9: _I, a10: _I, a11: _T, a12: _I, a13: _I, a14: _T, /
43+
) -> None: ... # v iiiiiiIITIIT*I*I*T
44+
def bsr_matvec(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _T, a8: _T, /) -> None: ... # v iiiiIITT*T
45+
def bsr_matvecs(a0: _i, a1: _i, a2: _i, a3: _i, a4: _i, a5: _I, a6: _I, a7: _T, a8: _T, a9: _T, /) -> None: ... # v iiiiiIITT*T
46+
def bsr_elmul_bsr(
47+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
48+
) -> None: ... # v iiiiIITIIT*I*I*T
49+
def bsr_eldiv_bsr(
50+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
51+
) -> None: ... # v iiiiIITIIT*I*I*T
52+
def bsr_plus_bsr(
53+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
54+
) -> None: ... # v iiiiIITIIT*I*I*T
55+
def bsr_minus_bsr(
56+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
57+
) -> None: ... # v iiiiIITIIT*I*I*T
58+
def bsr_maximum_bsr(
59+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
60+
) -> None: ... # v iiiiIITIIT*I*I*T
61+
def bsr_minimum_bsr(
62+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
63+
) -> None: ... # v iiiiIITIIT*I*I*T
64+
def bsr_ne_bsr(
65+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
66+
) -> None: ... # v iiiiIITIIT*I*I*T
67+
def bsr_lt_bsr(
68+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
69+
) -> None: ... # v iiiiIITIIT*I*I*T
70+
def bsr_gt_bsr(
71+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
72+
) -> None: ... # v iiiiIITIIT*I*I*T
73+
def bsr_le_bsr(
74+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
75+
) -> None: ... # v iiiiIITIIT*I*I*T
76+
def bsr_ge_bsr(
77+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, a10: _I, a11: _I, a12: _T, /
78+
) -> None: ... # v iiiiIITIIT*I*I*T
79+
80+
# csc.h
81+
def csc_matvec(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _T, a6: _T, /) -> None: ... # v iiIITT*T
82+
def csc_matvecs(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _T, a7: _T, /) -> None: ... # v iiiIITT*T
83+
84+
# csr.h
85+
def csr_matmat_maxnnz(a0: _i, a1: _i, a2: _I, a3: _I, a4: _I, a5: _I, /) -> np.int64: ... # l iiIIII
86+
def csr_matmat(
87+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
88+
) -> None: ... # v iiIITIIT*I*I*T
89+
def csr_diagonal(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _T, /) -> None: ... # v iiiIIT*T
90+
def csr_tocsc(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, /) -> None: ... # v iiIIT*I*I*T
91+
def csr_tobsr(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, a6: _T, a7: _I, a8: _I, a9: _T, /) -> None: ... # v iiiiIIT*I*I*T
92+
def csr_todense(a0: _i, a1: _i, a2: _I, a3: _I, a4: _I, a5: _T, /) -> None: ... # v iiIIT*T
93+
def csr_matvec(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _T, a6: _T, /) -> None: ... # v iiIITT*T
94+
def csr_matvecs(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _T, a7: _T, /) -> None: ... # v iiiIITT*T
95+
def csr_elmul_csr(
96+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
97+
) -> None: ... # v iiIITIIT*I*I*T
98+
def csr_eldiv_csr(
99+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
100+
) -> None: ... # v iiIITIIT*I*I*T
101+
def csr_plus_csr(
102+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
103+
) -> None: ... # v iiIITIIT*I*I*T
104+
def csr_minus_csr(
105+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
106+
) -> None: ... # v iiIITIIT*I*I*T
107+
def csr_maximum_csr(
108+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
109+
) -> None: ... # v iiIITIIT*I*I*T
110+
def csr_minimum_csr(
111+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
112+
) -> None: ... # v iiIITIIT*I*I*T
113+
def csr_ne_csr(
114+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
115+
) -> None: ... # v iiIITIIT*I*I*T
116+
def csr_lt_csr(
117+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
118+
) -> None: ... # v iiIITIIT*I*I*T
119+
def csr_gt_csr(
120+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
121+
) -> None: ... # v iiIITIIT*I*I*T
122+
def csr_le_csr(
123+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
124+
) -> None: ... # v iiIITIIT*I*I*T
125+
def csr_ge_csr(
126+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _I, a6: _I, a7: _T, a8: _I, a9: _I, a10: _T, /
127+
) -> None: ... # v iiIITIIT*I*I*T
128+
def csr_scale_rows(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _T, /) -> None: ... # v iiII*TT
129+
def csr_scale_columns(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _T, /) -> None: ... # v iiII*TT
130+
def csr_sort_indices(a0: _i, a1: _I, a2: _I, a3: _T, /) -> None: ... # v iI*I*T
131+
def csr_eliminate_zeros(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, /) -> None: ... # v ii*I*I*T
132+
def csr_sum_duplicates(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, /) -> None: ... # v ii*I*I*T
133+
def get_csr_submatrix(
134+
a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _i, a6: _i, a7: _i, a8: _i, a9: _V, a10: _V, a11: _W, /
135+
) -> None: ... # v iiIITiiii*V*V*W
136+
def csr_row_index(a0: _i, a1: _I, a2: _I, a3: _I, a4: _T, a5: _I, a6: _T, /) -> None: ... # v iIIIT*I*T
137+
def csr_row_slice(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _I, a7: _T, /) -> None: ... # v iiiIIT*I*T
138+
def csr_column_index1(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _I, a7: _T, /) -> None: ... # v iiiIIT*I*T
139+
def csr_column_index2(a0: _I, a1: _I, a2: _i, a3: _I, a4: _T, a5: _I, a6: _T, /) -> None: ... # v IIiIT*I*T
140+
def csr_sample_values(a0: _i, a1: _i, a2: _I, a3: _I, a4: _T, a5: _i, a6: _I, a7: _I, a8: _T, /) -> None: ... # v iiIITiII*T
141+
def csr_count_blocks(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _I, /) -> int: ... # i iiiiII
142+
def csr_sample_offsets(a0: _i, a1: _i, a2: _I, a3: _I, a4: _i, a5: _I, a6: _I, a7: _I, /) -> int: ... # i iiIIiII*I
143+
def csr_hstack(a0: _i, a1: _i, a2: _I, a3: _I, a4: _I, a5: _T, a6: _I, a7: _I, a8: _T, /) -> None: ... # v iiIIIT*I*I*T
144+
def csr_has_sorted_indices(a0: _i, a1: _I, a2: _I, /) -> int: ... # i iII
145+
def csr_has_canonical_format(a0: _i, a1: _I, a2: _I, /) -> int: ... # i iII
146+
def expandptr(a0: _i, a1: _I, a2: _I, /) -> None: ... # v iI*I
147+
def test_throw_error() -> Never: ... # i # raises `MemoryError` if called
148+
149+
# coo.h
150+
def coo_tocsr(a0: _i, a1: _i, a2: _i, a3: _I, a4: _I, a5: _T, a6: _I, a7: _I, a8: _T, /) -> None: ... # v iiiIIT*I*I*T
151+
def coo_todense(a0: _i, a1: _i, a2: _l, a3: _I, a4: _I, a5: _T, a6: _T, a7: _i, /) -> None: ... # v iilIIT*Ti
152+
def coo_todense_nd(a0: _I, a1: _l, a2: _l, a3: _I, a4: _T, a5: _T, a6: _i, /) -> None: ... # v IllIT*Ti
153+
def coo_matvec(a0: _l, a1: _I, a2: _I, a3: _T, a4: _T, a5: _T, /) -> None: ... # v lIITT*T
154+
def coo_matvec_nd(a0: _l, a1: _l, a2: _I, a3: _I, a4: _T, a5: _T, a6: _T, /) -> None: ... # v llIITT*T
155+
def coo_matmat_dense(a0: _l, a1: _l, a2: _I, a3: _I, a4: _T, a5: _T, a6: _T, /) -> None: ... # v llIITT*T
156+
def coo_matmat_dense_nd(a0: _l, a1: _l, a2: _l, a3: _I, a4: _I, a5: _I, a6: _T, a7: _T, a8: _T, /) -> None: ... # v lllIIITT*T
157+
158+
# dia.h
159+
def dia_matmat(
160+
a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _T, a6: _i, a7: _i, a8: _i, a9: _I, a10: _T, a11: _V, a12: _W, /
161+
) -> None: ... # v iiiiITiiiIT*V*W
162+
def dia_matvec(a0: _i, a1: _i, a2: _i, a3: _i, a4: _T, a5: _T, a6: _T, a7: _T, /) -> None: ... # v iiiiITT*T
163+
def dia_matvecs(a0: _i, a1: _i, a2: _i, a3: _i, a4: _I, a5: _T, a6: _i, a7: _T, a8: _T, /) -> None: ... # v iiiiITiT*T
164+
165+
# csgraph.h
166+
def cs_graph_components(a0: _i, a1: _I, a2: _I, a3: _I, /) -> int: ... # i iII*I
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# nothing to see here

scipy-stubs/sparse/linalg/_svdp.pyi

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
from _typeshed import Incomplete
2+
from typing import Any, Generic, Literal
3+
from typing_extensions import TypeVar
4+
5+
import numpy as np
6+
import optype.numpy as onp
7+
import optype.numpy.compat as npc
8+
9+
from ._interface import LinearOperator
10+
from scipy.sparse._base import _spbase
11+
12+
__all__ = ["_svdp"]
13+
14+
_NumberT = TypeVar("_NumberT", bound=npc.number)
15+
_NumberT_co = TypeVar("_NumberT_co", bound=npc.number, default=np.float64 | Any, covariant=True)
16+
17+
class _AProd(Generic[_NumberT_co]):
18+
A: LinearOperator[_NumberT_co]
19+
20+
def __init__(self, /, A: onp.ToArray2D[_NumberT_co] | _spbase[_NumberT_co, tuple[int, int]]) -> None: ...
21+
def __call__(
22+
self,
23+
/,
24+
transa: str,
25+
m: int,
26+
n: int,
27+
x: onp.Array1D[npc.number],
28+
y: onp.Array1D[npc.number],
29+
sparm: object, # unused
30+
iparm: object, # unused
31+
) -> None: ...
32+
@property
33+
def shape(self) -> tuple[int, int]: ...
34+
@property
35+
def dtype(self) -> np.dtype[_NumberT_co]: ...
36+
37+
def _svdp(
38+
A: onp.ToArray2D[_NumberT] | _spbase[_NumberT, tuple[int, int]] | LinearOperator[_NumberT],
39+
k: int,
40+
which: Literal["LM", "SM"] = "LM",
41+
irl_mode: bool = True,
42+
kmax: int | None = None,
43+
compute_u: bool = True,
44+
compute_v: bool = True,
45+
v0: onp.ToFloatND | None = None,
46+
full_output: bool = False,
47+
tol: int = 0,
48+
delta: float | None = None,
49+
eta: float | None = None,
50+
anorm: int = 0,
51+
cgs: bool = False,
52+
elr: bool = True,
53+
min_relgap: float = 0.002,
54+
shifts: int | None = None,
55+
maxiter: int | None = None,
56+
rng: onp.random.ToRNG | None = None,
57+
) -> Incomplete: ... # complicated -- 8 different return types depending on parameters

0 commit comments

Comments
 (0)