Skip to content

Commit b1035c2

Browse files
committed
linalg: support sparse arrays in clarkson_woodruff_transform
1 parent baebb5a commit b1035c2

File tree

1 file changed

+75
-15
lines changed

1 file changed

+75
-15
lines changed

scipy-stubs/linalg/_sketches.pyi

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,114 @@
1-
from typing import overload
1+
from typing import Any, Never, TypeAlias, TypeVar, overload
22

33
import numpy as np
4+
import optype as op
45
import optype.numpy as onp
6+
import optype.numpy.compat as npc
57

6-
from scipy.sparse import csc_matrix
8+
from scipy.sparse import csc_matrix, sparray, spmatrix
9+
from scipy.sparse._base import _spbase
710

811
__all__ = ["clarkson_woodruff_transform"]
912

13+
_ScalarT = TypeVar("_ScalarT", bound=npc.number | np.bool_)
14+
15+
_ToInt: TypeAlias = int | npc.integer
16+
_ToSparse: TypeAlias = _spbase[_ScalarT] | sparray[_ScalarT] | spmatrix[_ScalarT]
17+
1018
###
1119

12-
def cwt_matrix(n_rows: onp.ToInt, n_columns: onp.ToInt, rng: onp.random.ToRNG | None = None) -> csc_matrix[np.int_]: ...
20+
def cwt_matrix(n_rows: _ToInt, n_columns: _ToInt, rng: onp.random.ToRNG | None = None) -> csc_matrix[np.int_]: ...
1321

1422
#
1523
@overload
1624
def clarkson_woodruff_transform(
17-
input_matrix: onp.ToIntND,
18-
sketch_size: onp.ToInt,
25+
input_matrix: _ToSparse[Never],
26+
sketch_size: _ToInt,
27+
rng: onp.random.ToRNG | None = None,
28+
*,
29+
seed: onp.random.ToRNG | None = None,
30+
) -> csc_matrix[Any]: ...
31+
@overload
32+
def clarkson_woodruff_transform(
33+
input_matrix: _ToSparse[npc.integer | np.bool_],
34+
sketch_size: _ToInt,
35+
rng: onp.random.ToRNG | None = None,
36+
*,
37+
seed: onp.random.ToRNG | None = None,
38+
) -> csc_matrix[np.int_]: ...
39+
@overload
40+
def clarkson_woodruff_transform(
41+
input_matrix: _ToSparse[np.float32 | np.float64],
42+
sketch_size: _ToInt,
43+
rng: onp.random.ToRNG | None = None,
44+
*,
45+
seed: onp.random.ToRNG | None = None,
46+
) -> csc_matrix[np.float64]: ...
47+
@overload
48+
def clarkson_woodruff_transform(
49+
input_matrix: _ToSparse[np.longdouble],
50+
sketch_size: _ToInt,
1951
rng: onp.random.ToRNG | None = None,
2052
*,
2153
seed: onp.random.ToRNG | None = None,
54+
) -> csc_matrix[np.longdouble]: ...
55+
@overload
56+
def clarkson_woodruff_transform(
57+
input_matrix: _ToSparse[np.complex64 | np.complex128],
58+
sketch_size: _ToInt,
59+
rng: onp.random.ToRNG | None = None,
60+
*,
61+
seed: onp.random.ToRNG | None = None,
62+
) -> csc_matrix[np.complex128]: ...
63+
@overload
64+
def clarkson_woodruff_transform(
65+
input_matrix: _ToSparse[np.clongdouble],
66+
sketch_size: _ToInt,
67+
rng: onp.random.ToRNG | None = None,
68+
*,
69+
seed: onp.random.ToRNG | None = None,
70+
) -> csc_matrix[np.clongdouble]: ...
71+
@overload
72+
def clarkson_woodruff_transform(
73+
input_matrix: onp.CanArrayND[Never],
74+
sketch_size: _ToInt,
75+
rng: onp.random.ToRNG | None = None,
76+
*,
77+
seed: onp.random.ToRNG | None = None,
78+
) -> onp.ArrayND[Any]: ...
79+
@overload
80+
def clarkson_woodruff_transform(
81+
input_matrix: onp.ToIntND, sketch_size: _ToInt, rng: onp.random.ToRNG | None = None, *, seed: onp.random.ToRNG | None = None
2282
) -> onp.ArrayND[np.int_]: ...
2383
@overload
2484
def clarkson_woodruff_transform(
25-
input_matrix: onp.ToJustFloat64_ND,
26-
sketch_size: onp.ToInt,
85+
input_matrix: onp.ToArrayND[op.JustFloat, np.float16 | np.float32 | np.float64],
86+
sketch_size: _ToInt,
2787
rng: onp.random.ToRNG | None = None,
2888
*,
2989
seed: onp.random.ToRNG | None = None,
3090
) -> onp.ArrayND[np.float64]: ...
3191
@overload
3292
def clarkson_woodruff_transform(
33-
input_matrix: onp.ToJustFloatND,
34-
sketch_size: onp.ToInt,
93+
input_matrix: onp.ToArrayND[np.longdouble, np.longdouble],
94+
sketch_size: _ToInt,
3595
rng: onp.random.ToRNG | None = None,
3696
*,
3797
seed: onp.random.ToRNG | None = None,
38-
) -> onp.ArrayND[np.float64 | np.longdouble]: ...
98+
) -> onp.ArrayND[np.longdouble]: ...
3999
@overload
40100
def clarkson_woodruff_transform(
41-
input_matrix: onp.ToJustComplex128_ND,
42-
sketch_size: onp.ToInt,
101+
input_matrix: onp.ToArrayND[op.JustComplex, np.complex64 | np.complex128],
102+
sketch_size: _ToInt,
43103
rng: onp.random.ToRNG | None = None,
44104
*,
45105
seed: onp.random.ToRNG | None = None,
46106
) -> onp.ArrayND[np.complex128]: ...
47107
@overload
48108
def clarkson_woodruff_transform(
49-
input_matrix: onp.ToJustComplexND,
50-
sketch_size: onp.ToInt,
109+
input_matrix: onp.ToArrayND[np.clongdouble, np.clongdouble],
110+
sketch_size: _ToInt,
51111
rng: onp.random.ToRNG | None = None,
52112
*,
53113
seed: onp.random.ToRNG | None = None,
54-
) -> onp.ArrayND[np.complex128 | np.clongdouble]: ...
114+
) -> onp.ArrayND[np.clongdouble]: ...

0 commit comments

Comments
 (0)