Skip to content

Commit ae75907

Browse files
committed
🩹 signal: fix and improve czt and zoom_fft
1 parent e8e6bb0 commit ae75907

File tree

1 file changed

+44
-23
lines changed

1 file changed

+44
-23
lines changed

‎scipy-stubs/signal/_czt.pyi

+44-23
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,76 @@
1-
from typing import TypeAlias
1+
from typing import Any, Final, TypeAlias
22

33
import numpy as np
4+
import optype as op
45
import optype.numpy as onp
56

67
__all__ = ["CZT", "ZoomFFT", "czt", "czt_points", "zoom_fft"]
78

8-
_Float: TypeAlias = np.float64 | np.float32
9-
_Complex: TypeAlias = np.complex128 | np.complex64
9+
_Complex: TypeAlias = np.complex128 | np.clongdouble
1010

11+
###
12+
13+
# TODO: make generic on `_Complex`
1114
class CZT:
12-
def __init__(self, /, n: int, m: int | None = None, w: onp.ToComplex | None = None, a: onp.ToComplex = 1 + 0j) -> None: ...
15+
w: Final[onp.ToComplex]
16+
a: Final[onp.ToComplex]
17+
m: Final[int | np.integer[Any]]
18+
n: Final[int | np.integer[Any]]
19+
20+
def __init__(
21+
self,
22+
/,
23+
n: onp.ToJustInt,
24+
m: onp.ToJustInt | None = None,
25+
w: onp.ToComplex | None = None,
26+
a: onp.ToComplex = 1 + 0j,
27+
) -> None: ...
1328
def __call__(self, /, x: onp.ToComplexND, *, axis: int = -1) -> onp.ArrayND[_Complex]: ...
14-
def points(self, /) -> onp.ArrayND[_Complex]: ...
29+
def points(self, /) -> onp.Array1D[_Complex]: ...
1530

1631
class ZoomFFT(CZT):
17-
w: complex
18-
a: complex
19-
20-
m: int
21-
n: int
22-
2332
f1: onp.ToFloat
2433
f2: onp.ToFloat
2534
fs: onp.ToFloat
2635

2736
def __init__(
2837
self,
2938
/,
30-
n: int,
31-
fn: onp.ToFloat | onp.ToFloatND,
32-
m: int | None = None,
39+
n: onp.ToJustInt,
40+
fn: onp.ToFloat | onp.ToFloat1D,
41+
m: onp.ToJustInt | None = None,
3342
*,
3443
fs: onp.ToFloat = 2,
35-
endpoint: bool = False,
44+
endpoint: onp.ToBool = False,
3645
) -> None: ...
3746

38-
def czt_points(m: int, w: onp.ToComplex | None = None, a: onp.ToComplex = ...) -> onp.ArrayND[_Complex]: ...
47+
#
48+
def _validate_sizes(n: onp.ToJustInt, m: onp.ToJustInt | None) -> int | np.integer[Any]: ...
49+
50+
#
51+
def czt_points(
52+
m: onp.ToJustInt,
53+
w: onp.ToComplex | None = None,
54+
a: onp.ToComplex = 1 + 0j,
55+
) -> onp.Array1D[_Complex]: ...
56+
57+
#
3958
def czt(
4059
x: onp.ToComplexND,
41-
m: int | None = None,
60+
m: onp.ToJustInt | None = None,
4261
w: onp.ToComplex | None = None,
4362
a: onp.ToComplex = 1 + 0j,
4463
*,
45-
axis: int = -1,
64+
axis: op.CanIndex = -1,
4665
) -> onp.ArrayND[_Complex]: ...
66+
67+
#
4768
def zoom_fft(
4869
x: onp.ToComplexND,
4970
fn: onp.ToFloatND | onp.ToFloat,
50-
m: int | None = None,
71+
m: onp.ToJustInt | None = None,
5172
*,
52-
fs: int = 2,
53-
endpoint: bool = False,
54-
axis: int = -1,
55-
) -> onp.ArrayND[_Float | _Complex]: ...
73+
fs: onp.ToFloat = 2,
74+
endpoint: onp.ToBool = False,
75+
axis: op.CanIndex = -1,
76+
) -> onp.ArrayND[_Complex]: ...

0 commit comments

Comments
 (0)