Skip to content

Commit 5333fd7

Browse files
add stub files for Cython modules in pywt._extensions
1 parent 45f51e3 commit 5333fd7

5 files changed

Lines changed: 234 additions & 19 deletions

File tree

pywt/__init__.py

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,33 @@
1010
wavelet packets signal decomposition and reconstruction module.
1111
"""
1212

13-
from ._extensions._pywt import *
14-
from ._functions import *
15-
from ._multilevel import *
16-
from ._multidim import *
17-
from ._thresholding import *
18-
from ._wavelet_packets import *
19-
from ._dwt import *
20-
from ._swt import *
21-
from ._cwt import *
22-
from ._mra import *
13+
from ._extensions._pywt import Modes, ContinuousWavelet, families, Wavelet, wavelist, DiscreteContinuousWavelet
14+
from ._functions import integrate_wavelet, central_frequency, scale2frequency, frequency2scale, qmf, orthogonal_filter_bank, intwave, centrfrq, scal2frq, orthfilt
15+
from ._multilevel import wavedec, waverec, wavedec2, waverec2, wavedecn, waverecn, coeffs_to_array, array_to_coeffs, ravel_coeffs, unravel_coeffs, dwtn_max_level, wavedecn_size, wavedecn_shapes, fswavedecn, fswaverecn, FswavedecnResult
16+
from ._multidim import dwt2, idwt2, dwtn, idwtn
17+
from ._thresholding import threshold, threshold_firm
18+
from ._wavelet_packets import BaseNode, Node, WaveletPacket, Node2D, WaveletPacket2D, NodeND, WaveletPacketND
19+
from ._dwt import dwt, idwt, downcoef, upcoef, dwt_max_level, dwt_coeff_len, pad
20+
from ._swt import swt, swt_max_level, iswt, swt2, iswt2, swtn, iswtn
21+
from ._cwt import cwt
22+
from ._mra import mra, mra2, mran, imra, imra2, imran
23+
from .data import aero, ascent, camera, ecg, nino, demo_signal
2324

24-
from . import data
25-
26-
__all__ = [s for s in dir() if not s.startswith('_')]
27-
try:
28-
# In Python 2.x the name of the tempvar leaks out of the list
29-
# comprehension. Delete it to not make it show up in the main namespace.
30-
del s
31-
except NameError:
32-
pass
25+
__all__ = ["ContinuousWavelet", "families", "Modes", "Wavelet", "wavelist",
26+
"DiscreteContinuousWavelet", "integrate_wavelet",
27+
"central_frequency", "scale2frequency", "frequency2scale", "qmf",
28+
"orthogonal_filter_bank", "intwave", "centrfrq", "scal2frq",
29+
"orthfilt", "wavedec", "waverec", "wavedec2", "waverec2",
30+
"wavedecn", "waverecn", "coeffs_to_array", "array_to_coeffs",
31+
"ravel_coeffs", "unravel_coeffs", "dwtn_max_level",
32+
"wavedecn_size", "wavedecn_shapes", "fswavedecn", "fswaverecn",
33+
"FswavedecnResult", "dwt2", "idwt2", "dwtn", "idwtn", "threshold",
34+
"threshold_firm", "BaseNode", "Node", "WaveletPacket", "Node2D",
35+
"WaveletPacket2D", "NodeND", "WaveletPacketND", "dwt", "idwt",
36+
"downcoef", "upcoef", "dwt_max_level", "dwt_coeff_len", "pad",
37+
"swt", "swt_max_level", "iswt", "swt2", "iswt2", "swtn", "iswtn",
38+
"cwt", "mra", "mra2", "mran", "imra", "imra2", "imran", "aero",
39+
"ascent", "camera", "ecg", "nino", "demo_signal"]
3340

3441
from pywt.version import version as __version__
3542

pywt/_extensions/_cwt.pyi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from _pywt import ContinuousWavelet, DataT
2+
from numpy.typing import NDArray
3+
4+
def cwt_psi_single(data: NDArray[DataT], wavelet: ContinuousWavelet, output_len: int) -> NDArray[DataT] | tuple[NDArray[DataT], NDArray[DataT]]: ...

pywt/_extensions/_dwt.pyi

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from numpy.typing import NDArray
2+
3+
from pywt import MODE, CDataT, Wavelet
4+
5+
def dwt_max_level(data_len: int, filter_len: int) -> int: ...
6+
def dwt_coeff_len(size_t: int, filter_len: int, mode: MODE) -> int: ...
7+
def dwt_single(data: NDArray[CDataT], wavelet: Wavelet, mode: MODE) -> tuple[NDArray[CDataT], NDArray[CDataT]]: ...
8+
def dwt_axis(data: NDArray[CDataT], wavelet: Wavelet, mode: MODE, axis: int = ...) -> tuple[NDArray[CDataT], NDArray[CDataT]]: ...
9+
def idwt_single(cA: NDArray[CDataT], cD: NDArray[CDataT], wavelet: Wavelet, mode: MODE) -> NDArray[CDataT]: ...
10+
def idwt_axis(coefs_a: NDArray[CDataT], coefs_d: NDArray[CDataT], wavelet: Wavelet, mode: MODE, axis: int = ...) -> NDArray[CDataT]: ...
11+
def upcoef(do_rec_a: bool, coeffs: NDArray[CDataT], wavelet: Wavelet, level: int, take: int) -> NDArray[CDataT]: ...
12+
def downcoef(do_dec_a: bool, data: NDArray[CDataT], wavelet: Wavelet, mode: MODE, level: int) -> NDArray[CDataT]: ...

pywt/_extensions/_pywt.pyi

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
from enum import IntEnum
2+
from typing import Any, Literal, Optional, TypeVar
3+
4+
import numpy as np
5+
6+
_WaveletFamily = Literal[
7+
"haar",
8+
"db",
9+
"sym",
10+
"coif",
11+
"bior",
12+
"rbio",
13+
"dmey",
14+
"gaus",
15+
"mexh",
16+
"morl",
17+
"cgau",
18+
"shan",
19+
"fbsp",
20+
"cmor",
21+
]
22+
23+
DataT = TypeVar("DataT", np.float32, np.float64)
24+
25+
CDataT = TypeVar(
26+
"CDataT",
27+
np.float32,
28+
np.float64,
29+
np.complex64,
30+
np.complex128,
31+
)
32+
33+
_Kind = Literal["all", "continuous", "discrete"]
34+
35+
_Symmetry = Literal[
36+
"asymmetric",
37+
"near symmetric",
38+
"symmetric",
39+
"anti-symmetric",
40+
"unknown",
41+
]
42+
43+
class MODE(IntEnum):
44+
MODE_INVALID = -1
45+
MODE_ZEROPAD = 0
46+
MODE_SYMMETRIC = 1
47+
MODE_CONSTANT_EDGE = 2
48+
MODE_SMOOTH = 3
49+
MODE_PERIODIC = 4
50+
MODE_PERIODIZATION = 5
51+
MODE_REFLECT = 6
52+
MODE_ANTISYMMETRIC = 7
53+
MODE_ANTIREFLECT = 8
54+
MODE_MAX = 9
55+
56+
ModeName = Literal[
57+
"zero",
58+
"constant",
59+
"symmetric",
60+
"reflect",
61+
"periodic",
62+
"smooth",
63+
"periodization",
64+
"antisymmetric",
65+
"antireflect",
66+
]
67+
68+
Mode = MODE | ModeName
69+
70+
class _Modes:
71+
zero: int
72+
constant: int
73+
symmetric: int
74+
reflect: int
75+
periodic: int
76+
smooth: int
77+
periodization: int
78+
antisymmetric: int
79+
antireflect: int
80+
81+
modes: list[ModeName]
82+
83+
def from_object(self, mode: Mode) -> int: ...
84+
85+
Modes = _Modes()
86+
87+
def wavelist(family: _WaveletFamily | None = ..., kind: _Kind = ...) -> list[str]: ...
88+
def families(short: bool = ...) -> list[str]: ...
89+
90+
class Wavelet:
91+
def __init__(self, name: str = ..., filter_bank: Any = ...) -> None: ...
92+
def __len__(self) -> int: ...
93+
@property
94+
def name(self) -> str: ...
95+
@property
96+
def dec_lo(self) -> list[float]: ...
97+
@property
98+
def dec_hi(self) -> list[float]: ...
99+
@property
100+
def rec_lo(self) -> list[float]: ...
101+
@property
102+
def rec_hi(self) -> list[float]: ...
103+
@property
104+
def rec_len(self) -> int: ...
105+
@property
106+
def dec_len(self) -> int: ...
107+
@property
108+
def family_number(self) -> int: ...
109+
@property
110+
def family_name(self) -> str: ...
111+
@property
112+
def short_family_name(self) -> str: ...
113+
@property
114+
def orthogonal(self) -> bool: ...
115+
@orthogonal.setter
116+
def orthogonal(self, value: bool) -> None: ...
117+
@property
118+
def biorthogonal(self) -> bool: ...
119+
@biorthogonal.setter
120+
def biorthogonal(self, value: bool) -> None: ...
121+
@property
122+
def symmetry(self) -> _Symmetry: ...
123+
@property
124+
def vanishing_moments_psi(self) -> int | None: ...
125+
@property
126+
def vanishing_moments_phi(self) -> int | None: ...
127+
@property
128+
def filter_bank(
129+
self,
130+
) -> tuple[list[float], list[float], list[float], list[float]]: ...
131+
def get_filters_coeffs(
132+
self,
133+
) -> tuple[list[float], list[float], list[float], list[float]]: ...
134+
@property
135+
def inverse_filter_bank(
136+
self,
137+
) -> tuple[list[float], list[float], list[float], list[float]]: ...
138+
def get_reverse_filters_coeffs(
139+
self,
140+
) -> tuple[list[float], list[float], list[float], list[float]]: ...
141+
142+
class ContinuousWavelet:
143+
def __init__(self, name: str = ..., dtype: DataT = ...) -> None: ...
144+
@property
145+
def family_number(self) -> int: ...
146+
@property
147+
def family_name(self) -> str: ...
148+
@property
149+
def short_family_name(self) -> str: ...
150+
@property
151+
def orthogonal(self) -> bool: ...
152+
@orthogonal.setter
153+
def orthogonal(self, value: bool) -> None: ...
154+
@property
155+
def biorthogonal(self) -> bool: ...
156+
@biorthogonal.setter
157+
def biorthogonal(self, value: bool) -> None: ...
158+
@property
159+
def complex_cwt(self) -> bool: ...
160+
@complex_cwt.setter
161+
def complex_cwt(self, value: bool) -> None: ...
162+
@property
163+
def lower_bound(self) -> float | None: ...
164+
@lower_bound.setter
165+
def lower_bound(self, value: float) -> None: ...
166+
@property
167+
def upper_bound(self) -> float | None: ...
168+
@upper_bound.setter
169+
def upper_bound(self, value: float) -> None: ...
170+
@property
171+
def center_frequency(self) -> float | None: ...
172+
@center_frequency.setter
173+
def center_frequency(self, value: float) -> None: ...
174+
@property
175+
def bandwidth_frequency(self) -> float | None: ...
176+
@bandwidth_frequency.setter
177+
def bandwidth_frequency(self, value: float) -> None: ...
178+
@property
179+
def fbsp_order(self) -> int | None: ...
180+
@fbsp_order.setter
181+
def fbsp_order(self, value: int) -> None: ...
182+
@property
183+
def symmetry(self) -> _Symmetry: ...
184+
185+
def DiscreteContinuousWavelet(name: str = ..., filter_bank: Any = ...) -> Wavelet | ContinuousWavelet : ...

pywt/_extensions/_swt.pyi

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from numpy.typing import NDArray
2+
3+
from pywt import CDataT, Wavelet
4+
5+
def swt_max_level(input_len: int) -> int: ...
6+
def swt(data: NDArray[CDataT], wavelet: Wavelet, level: int, start_level: int, trim_approx: bool = ...) -> NDArray[CDataT]: ...
7+
def swt_axis(data: NDArray[CDataT], wavelet: Wavelet, level: int, start_level: int, axis: int = ..., trim_approx: bool = ...) -> NDArray[CDataT]: ...

0 commit comments

Comments
 (0)