summaryrefslogtreecommitdiff
path: root/numpy/fft
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/fft')
-rw-r--r--numpy/fft/__init__.pyi43
-rw-r--r--numpy/fft/_pocketfft.pyi111
-rw-r--r--numpy/fft/helper.pyi50
3 files changed, 185 insertions, 19 deletions
diff --git a/numpy/fft/__init__.pyi b/numpy/fft/__init__.pyi
index 648b0bf79..510e576d3 100644
--- a/numpy/fft/__init__.pyi
+++ b/numpy/fft/__init__.pyi
@@ -2,25 +2,30 @@ from typing import Any, List
from numpy._pytesttester import PytestTester
+from numpy.fft._pocketfft import (
+ fft as fft,
+ ifft as ifft,
+ rfft as rfft,
+ irfft as irfft,
+ hfft as hfft,
+ ihfft as ihfft,
+ rfftn as rfftn,
+ irfftn as irfftn,
+ rfft2 as rfft2,
+ irfft2 as irfft2,
+ fft2 as fft2,
+ ifft2 as ifft2,
+ fftn as fftn,
+ ifftn as ifftn,
+)
+
+from numpy.fft.helper import (
+ fftshift as fftshift,
+ ifftshift as ifftshift,
+ fftfreq as fftfreq,
+ rfftfreq as rfftfreq,
+)
+
__all__: List[str]
__path__: List[str]
test: PytestTester
-
-def fft(a, n=..., axis=..., norm=...): ...
-def ifft(a, n=..., axis=..., norm=...): ...
-def rfft(a, n=..., axis=..., norm=...): ...
-def irfft(a, n=..., axis=..., norm=...): ...
-def hfft(a, n=..., axis=..., norm=...): ...
-def ihfft(a, n=..., axis=..., norm=...): ...
-def fftn(a, s=..., axes=..., norm=...): ...
-def ifftn(a, s=..., axes=..., norm=...): ...
-def rfftn(a, s=..., axes=..., norm=...): ...
-def irfftn(a, s=..., axes=..., norm=...): ...
-def fft2(a, s=..., axes=..., norm=...): ...
-def ifft2(a, s=..., axes=..., norm=...): ...
-def rfft2(a, s=..., axes=..., norm=...): ...
-def irfft2(a, s=..., axes=..., norm=...): ...
-def fftshift(x, axes=...): ...
-def ifftshift(x, axes=...): ...
-def fftfreq(n, d=...): ...
-def rfftfreq(n, d=...): ...
diff --git a/numpy/fft/_pocketfft.pyi b/numpy/fft/_pocketfft.pyi
new file mode 100644
index 000000000..86cf6a60d
--- /dev/null
+++ b/numpy/fft/_pocketfft.pyi
@@ -0,0 +1,111 @@
+from typing import (
+ Literal as L,
+ List,
+ Sequence,
+)
+
+from numpy import complex128, float64
+from numpy.typing import ArrayLike, NDArray, _ArrayLikeNumber_co
+
+_NormKind = L[None, "backward", "ortho", "forward"]
+
+__all__: List[str]
+
+def fft(
+ a: ArrayLike,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def ifft(
+ a: ArrayLike,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def rfft(
+ a: ArrayLike,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def irfft(
+ a: ArrayLike,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[float64]: ...
+
+# Input array must be compatible with `np.conjugate`
+def hfft(
+ a: _ArrayLikeNumber_co,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[float64]: ...
+
+def ihfft(
+ a: ArrayLike,
+ n: None | int = ...,
+ axis: int = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def fftn(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def ifftn(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def rfftn(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def irfftn(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[float64]: ...
+
+def fft2(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def ifft2(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def rfft2(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[complex128]: ...
+
+def irfft2(
+ a: ArrayLike,
+ s: None | Sequence[int] = ...,
+ axes: None | Sequence[int] = ...,
+ norm: _NormKind = ...,
+) -> NDArray[float64]: ...
diff --git a/numpy/fft/helper.pyi b/numpy/fft/helper.pyi
new file mode 100644
index 000000000..d75826f4e
--- /dev/null
+++ b/numpy/fft/helper.pyi
@@ -0,0 +1,50 @@
+from typing import List, Any, TypeVar, overload
+
+from numpy import generic, dtype, integer, floating, complexfloating
+from numpy.typing import (
+ NDArray,
+ ArrayLike,
+ _ShapeLike,
+ _SupportsArray,
+ _FiniteNestedSequence,
+ _ArrayLikeFloat_co,
+ _ArrayLikeComplex_co,
+)
+
+_SCT = TypeVar("_SCT", bound=generic)
+
+_ArrayLike = _FiniteNestedSequence[_SupportsArray[dtype[_SCT]]]
+
+__all__: List[str]
+
+@overload
+def fftshift(x: _ArrayLike[_SCT], axes: None | _ShapeLike = ...) -> NDArray[_SCT]: ...
+@overload
+def fftshift(x: ArrayLike, axes: None | _ShapeLike = ...) -> NDArray[Any]: ...
+
+@overload
+def ifftshift(x: _ArrayLike[_SCT], axes: None | _ShapeLike = ...) -> NDArray[_SCT]: ...
+@overload
+def ifftshift(x: ArrayLike, axes: None | _ShapeLike = ...) -> NDArray[Any]: ...
+
+@overload
+def fftfreq(
+ n: int | integer[Any],
+ d: _ArrayLikeFloat_co,
+) -> NDArray[floating[Any]]: ...
+@overload
+def fftfreq(
+ n: int | integer[Any],
+ d: _ArrayLikeComplex_co,
+) -> NDArray[complexfloating[Any, Any]]: ...
+
+@overload
+def rfftfreq(
+ n: int | integer[Any],
+ d: _ArrayLikeFloat_co,
+) -> NDArray[floating[Any]]: ...
+@overload
+def rfftfreq(
+ n: int | integer[Any],
+ d: _ArrayLikeComplex_co,
+) -> NDArray[complexfloating[Any, Any]]: ...