waveforms 1.9.4__tar.gz → 2.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {waveforms-1.9.4/waveforms.egg-info → waveforms-2.0.1}/PKG-INFO +3 -13
- {waveforms-1.9.4 → waveforms-2.0.1}/pyproject.toml +1 -11
- {waveforms-1.9.4 → waveforms-2.0.1}/setup.py +2 -2
- waveforms-2.0.1/waveforms/__main__.py +16 -0
- waveforms-2.0.1/waveforms/utils.py +84 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/version.py +1 -1
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/waveform.py +41 -11
- {waveforms-1.9.4 → waveforms-2.0.1/waveforms.egg-info}/PKG-INFO +3 -13
- waveforms-2.0.1/waveforms.egg-info/SOURCES.txt +24 -0
- waveforms-2.0.1/waveforms.egg-info/requires.txt +17 -0
- waveforms-1.9.4/src/ikcp.c +0 -1466
- waveforms-1.9.4/src/ikcp.h +0 -415
- waveforms-1.9.4/src/kcp.c +0 -184
- waveforms-1.9.4/tests/test_dicttree.py +0 -128
- waveforms-1.9.4/tests/test_kad.py +0 -341
- waveforms-1.9.4/tests/test_namespace.py +0 -137
- waveforms-1.9.4/tests/test_registry.py +0 -95
- waveforms-1.9.4/tests/test_scan_iter.py +0 -375
- waveforms-1.9.4/tests/test_serialize.py +0 -34
- waveforms-1.9.4/waveforms/__main__.py +0 -24
- waveforms-1.9.4/waveforms/autoreload.py +0 -26
- waveforms-1.9.4/waveforms/baseconfig.py +0 -268
- waveforms-1.9.4/waveforms/cache.py +0 -163
- waveforms-1.9.4/waveforms/dicttree.py +0 -511
- waveforms-1.9.4/waveforms/loader.py +0 -97
- waveforms-1.9.4/waveforms/namespace.py +0 -261
- waveforms-1.9.4/waveforms/registry.py +0 -672
- waveforms-1.9.4/waveforms/scan/__init__.py +0 -4
- waveforms-1.9.4/waveforms/scan/base.py +0 -544
- waveforms-1.9.4/waveforms/scan/dataset.py +0 -0
- waveforms-1.9.4/waveforms/scan/expression.py +0 -360
- waveforms-1.9.4/waveforms/scan/scanner.py +0 -223
- waveforms-1.9.4/waveforms/scan/transforms.py +0 -16
- waveforms-1.9.4/waveforms/scan_iter.py +0 -10
- waveforms-1.9.4/waveforms/security/__init__.py +0 -1
- waveforms-1.9.4/waveforms/security/verify.py +0 -43
- waveforms-1.9.4/waveforms/server/__init__.py +0 -21
- waveforms-1.9.4/waveforms/server/__main__.py +0 -41
- waveforms-1.9.4/waveforms/server/echo.py +0 -44
- waveforms-1.9.4/waveforms/storage/__init__.py +0 -0
- waveforms-1.9.4/waveforms/storage/backend/__init__.py +0 -0
- waveforms-1.9.4/waveforms/storage/backend/redis.py +0 -204
- waveforms-1.9.4/waveforms/storage/base_dataset.py +0 -352
- waveforms-1.9.4/waveforms/storage/chunk.py +0 -60
- waveforms-1.9.4/waveforms/storage/dataset.py +0 -127
- waveforms-1.9.4/waveforms/storage/file.py +0 -273
- waveforms-1.9.4/waveforms/storage/models/__init__.py +0 -22
- waveforms-1.9.4/waveforms/storage/models/base.py +0 -4
- waveforms-1.9.4/waveforms/storage/models/config.py +0 -28
- waveforms-1.9.4/waveforms/storage/models/file.py +0 -89
- waveforms-1.9.4/waveforms/storage/models/ipy.py +0 -58
- waveforms-1.9.4/waveforms/storage/models/record.py +0 -161
- waveforms-1.9.4/waveforms/storage/models/report.py +0 -22
- waveforms-1.9.4/waveforms/storage/models/tag.py +0 -93
- waveforms-1.9.4/waveforms/storage/storage.py +0 -44
- waveforms-1.9.4/waveforms/sys/__init__.py +0 -0
- waveforms-1.9.4/waveforms/sys/chat.py +0 -688
- waveforms-1.9.4/waveforms/sys/device/__init__.py +0 -3
- waveforms-1.9.4/waveforms/sys/device/basedevice.py +0 -221
- waveforms-1.9.4/waveforms/sys/device/loader.py +0 -86
- waveforms-1.9.4/waveforms/sys/device/utils.py +0 -46
- waveforms-1.9.4/waveforms/sys/drivers/FakeInstrument.py +0 -52
- waveforms-1.9.4/waveforms/sys/drivers/__init__.py +0 -0
- waveforms-1.9.4/waveforms/sys/ipy_events.py +0 -125
- waveforms-1.9.4/waveforms/sys/net/__init__.py +0 -0
- waveforms-1.9.4/waveforms/sys/net/bencoder.py +0 -205
- waveforms-1.9.4/waveforms/sys/net/cli.py +0 -169
- waveforms-1.9.4/waveforms/sys/net/dhcp.py +0 -543
- waveforms-1.9.4/waveforms/sys/net/dhcpd.py +0 -176
- waveforms-1.9.4/waveforms/sys/net/kad.py +0 -1142
- waveforms-1.9.4/waveforms/sys/net/kcp.py +0 -192
- waveforms-1.9.4/waveforms/sys/progress.py +0 -190
- waveforms-1.9.4/waveforms/sys/storage/__init__.py +0 -0
- waveforms-1.9.4/waveforms/sys/storage/crud.py +0 -205
- waveforms-1.9.4/waveforms/sys/storage/models.py +0 -642
- waveforms-1.9.4/waveforms/units/__init__.py +0 -119
- waveforms-1.9.4/waveforms/utils.py +0 -67
- waveforms-1.9.4/waveforms/visualization/__init__.py +0 -188
- waveforms-1.9.4/waveforms/visualization/__main__.py +0 -71
- waveforms-1.9.4/waveforms/visualization/_autoplot.py +0 -457
- waveforms-1.9.4/waveforms/visualization/plot_layout.py +0 -408
- waveforms-1.9.4/waveforms/visualization/plot_seq.py +0 -90
- waveforms-1.9.4/waveforms/visualization/qdat.py +0 -152
- waveforms-1.9.4/waveforms/visualization/widgets.py +0 -86
- waveforms-1.9.4/waveforms.egg-info/SOURCES.txt +0 -96
- waveforms-1.9.4/waveforms.egg-info/requires.txt +0 -28
- {waveforms-1.9.4 → waveforms-2.0.1}/LICENSE +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/MANIFEST.in +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/README.md +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/setup.cfg +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/src/waveform.h +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/tests/test_multi_drag.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/tests/test_waveform.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/tests/test_wavevstack.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/__init__.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/_waveform.pyi +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/_waveform.pyx +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/multy_drag.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms/waveform_parser.py +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms.egg-info/dependency_links.txt +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms.egg-info/entry_points.txt +0 -0
- {waveforms-1.9.4 → waveforms-2.0.1}/waveforms.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: waveforms
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Edit waveforms used in experiment
|
|
5
5
|
Author-email: feihoo87 <feihoo87@gmail.com>
|
|
6
6
|
Maintainer-email: feihoo87 <feihoo87@gmail.com>
|
|
@@ -20,27 +20,17 @@ Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Transla
|
|
|
20
20
|
Classifier: Programming Language :: Python
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
24
|
Requires-Python: >=3.10
|
|
24
25
|
Description-Content-Type: text/markdown
|
|
25
26
|
License-File: LICENSE
|
|
26
27
|
Requires-Dist: click>=7.1.2
|
|
27
28
|
Requires-Dist: dill>=0.3.6
|
|
28
|
-
Requires-Dist: GitPython>=3.1.14
|
|
29
|
-
Requires-Dist: matplotlib>=3.7.2
|
|
30
29
|
Requires-Dist: numpy>=1.13.3
|
|
31
30
|
Requires-Dist: ply>=3.11
|
|
32
31
|
Requires-Dist: scipy>=1.0.0
|
|
33
32
|
Provides-Extra: full
|
|
34
|
-
Requires-Dist: antlr4-python3-runtime==4.12.0; extra == "full"
|
|
35
|
-
Requires-Dist: blinker>=1.4; extra == "full"
|
|
36
|
-
Requires-Dist: cryptography>=3.4.7; extra == "full"
|
|
37
|
-
Requires-Dist: matplotlib>=3.4.1; extra == "full"
|
|
38
33
|
Requires-Dist: msgpack>=1.0.5; extra == "full"
|
|
39
|
-
Requires-Dist: portalocker>=1.4.0; extra == "full"
|
|
40
|
-
Requires-Dist: SQLAlchemy>=1.4.11; extra == "full"
|
|
41
|
-
Requires-Dist: scikit-learn>=0.24.1; extra == "full"
|
|
42
|
-
Requires-Dist: scikit-optimize>=0.8.1; extra == "full"
|
|
43
|
-
Requires-Dist: tenacity>=8.2.2; extra == "full"
|
|
44
34
|
Provides-Extra: test
|
|
45
35
|
Requires-Dist: pytest>=7.4.0; extra == "test"
|
|
46
36
|
Requires-Dist: pytest-asyncio>=0.21.1; extra == "test"
|
|
@@ -26,13 +26,12 @@ classifiers = [
|
|
|
26
26
|
"Programming Language :: Python",
|
|
27
27
|
"Programming Language :: Python :: 3.10",
|
|
28
28
|
"Programming Language :: Python :: 3.11",
|
|
29
|
+
"Programming Language :: Python :: 3.12",
|
|
29
30
|
]
|
|
30
31
|
requires-python = ">= 3.10"
|
|
31
32
|
dependencies = [
|
|
32
33
|
"click>=7.1.2",
|
|
33
34
|
"dill>=0.3.6",
|
|
34
|
-
"GitPython>=3.1.14",
|
|
35
|
-
"matplotlib>=3.7.2",
|
|
36
35
|
"numpy>=1.13.3",
|
|
37
36
|
"ply>=3.11",
|
|
38
37
|
"scipy>=1.0.0"
|
|
@@ -41,16 +40,7 @@ dynamic = ["version"]
|
|
|
41
40
|
|
|
42
41
|
[project.optional-dependencies]
|
|
43
42
|
full = [
|
|
44
|
-
"antlr4-python3-runtime==4.12.0",
|
|
45
|
-
"blinker>=1.4",
|
|
46
|
-
"cryptography>=3.4.7",
|
|
47
|
-
"matplotlib>=3.4.1",
|
|
48
43
|
"msgpack>=1.0.5",
|
|
49
|
-
"portalocker>=1.4.0",
|
|
50
|
-
"SQLAlchemy>=1.4.11",
|
|
51
|
-
"scikit-learn>=0.24.1",
|
|
52
|
-
"scikit-optimize>=0.8.1",
|
|
53
|
-
"tenacity>=8.2.2",
|
|
54
44
|
]
|
|
55
45
|
test = [
|
|
56
46
|
"pytest>=7.4.0",
|
|
@@ -20,8 +20,8 @@ def get_extensions():
|
|
|
20
20
|
#from pathlib import Path
|
|
21
21
|
|
|
22
22
|
extensions = [
|
|
23
|
-
Extension('waveforms.sys.net._kcp', ['src/kcp.c', 'src/ikcp.c'],
|
|
24
|
-
|
|
23
|
+
# Extension('waveforms.sys.net._kcp', ['src/kcp.c', 'src/ikcp.c'],
|
|
24
|
+
# include_dirs=['src']),
|
|
25
25
|
# Extension(
|
|
26
26
|
# 'waveforms.math.npufunc',
|
|
27
27
|
# ['src/multi_type_logit.c'],
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from itertools import repeat
|
|
2
|
+
from typing import Optional, Sequence
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def getFTMatrix(fList: Sequence[float],
|
|
8
|
+
numOfPoints: int,
|
|
9
|
+
phaseList: Optional[Sequence[float]] = None,
|
|
10
|
+
weight: Optional[np.ndarray] = None,
|
|
11
|
+
sampleRate: float = 1e9) -> np.ndarray:
|
|
12
|
+
"""
|
|
13
|
+
get a matrix for Fourier transform
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
fList (Sequence[float]): list of frequencies
|
|
17
|
+
numOfPoints (int): size of signal frame
|
|
18
|
+
phaseList (Optional[Sequence[float]], optional): list of phase. Defaults to None.
|
|
19
|
+
weight (Optional[np.ndarray], optional): weight or list of weight. Defaults to None.
|
|
20
|
+
sampleRate (float, optional): sample rate of signal. Defaults to 1e9.
|
|
21
|
+
|
|
22
|
+
Returns:
|
|
23
|
+
numpy.ndarray: exp matrix
|
|
24
|
+
|
|
25
|
+
>>> shots, numOfPoints, sampleRate = 100, 1000, 1e9
|
|
26
|
+
>>> f1, f2 = -12.7e6, 32.8e6
|
|
27
|
+
>>> signal = np.random.randn(shots, numOfPoints)
|
|
28
|
+
>>> e = getFTMatrix([f1, f2], numOfPoints, sampleRate=sampleRate)
|
|
29
|
+
>>> ret = signal @ e
|
|
30
|
+
>>> ret.shape
|
|
31
|
+
(100, 2)
|
|
32
|
+
>>> t = np.arange(numOfPoints) / sampleRate
|
|
33
|
+
>>> signal = 0.8 * np.sin(2 * np.pi * f1 * t) + 0.2 * np.cos(2 * np.pi * f2 * t)
|
|
34
|
+
>>> signal @ e
|
|
35
|
+
array([-0.00766509-0.79518987j, 0.19531432+0.00207068j])
|
|
36
|
+
>>> spec = 2 * np.fft.fft(signal) / numOfPoints
|
|
37
|
+
>>> freq = np.fft.fftfreq(numOfPoints)
|
|
38
|
+
>>> e = getFTMatrix(freq, numOfPoints, sampleRate=1)
|
|
39
|
+
>>> np.allclose(spec, signal @ e)
|
|
40
|
+
True
|
|
41
|
+
"""
|
|
42
|
+
e = []
|
|
43
|
+
t = np.linspace(0, numOfPoints / sampleRate, numOfPoints, endpoint=False)
|
|
44
|
+
if weight is None or len(weight) == 0:
|
|
45
|
+
weight = np.full(numOfPoints, 2 / numOfPoints)
|
|
46
|
+
if phaseList is None or len(phaseList) == 0:
|
|
47
|
+
phaseList = np.zeros_like(fList)
|
|
48
|
+
if weight.ndim == 1:
|
|
49
|
+
weightList = repeat(weight)
|
|
50
|
+
else:
|
|
51
|
+
weightList = weight
|
|
52
|
+
for f, phase, weight in zip(fList, phaseList, weightList):
|
|
53
|
+
e.append(weight * np.exp(-1j * (2 * np.pi * f * t + phase)))
|
|
54
|
+
return np.asarray(e).T
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def shift(signal: np.ndarray, delay: float, dt: float) -> np.ndarray:
|
|
58
|
+
"""
|
|
59
|
+
delay a signal
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
signal (np.ndarray): input signal
|
|
63
|
+
delay (float): delayed time
|
|
64
|
+
dt (float): time step of signal samples
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
np.ndarray: delayed signal
|
|
68
|
+
"""
|
|
69
|
+
points = int(delay // dt)
|
|
70
|
+
delta = delay / dt - points
|
|
71
|
+
|
|
72
|
+
if delta > 0:
|
|
73
|
+
ker = np.array([0, 1 - delta, delta])
|
|
74
|
+
signal = np.convolve(signal, ker, mode='same')
|
|
75
|
+
|
|
76
|
+
if points == 0:
|
|
77
|
+
return signal
|
|
78
|
+
|
|
79
|
+
ret = np.zeros_like(signal)
|
|
80
|
+
if points < 0:
|
|
81
|
+
ret[:points] = signal[-points:]
|
|
82
|
+
else:
|
|
83
|
+
ret[points:] = signal[:-points]
|
|
84
|
+
return ret
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""Define version number here and read it from setup.py automatically"""
|
|
2
|
-
__version__ = "
|
|
2
|
+
__version__ = "2.0.1"
|
|
@@ -127,36 +127,38 @@ class Waveform:
|
|
|
127
127
|
self.filters = None
|
|
128
128
|
self.label = None
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
@staticmethod
|
|
131
|
+
def _begin(bounds, seq):
|
|
132
|
+
for i, s in enumerate(seq):
|
|
132
133
|
if s is not _zero:
|
|
133
134
|
if i == 0:
|
|
134
135
|
return -inf
|
|
135
|
-
return
|
|
136
|
+
return bounds[i - 1]
|
|
136
137
|
return inf
|
|
137
138
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
@staticmethod
|
|
140
|
+
def _end(bounds, seq):
|
|
141
|
+
N = len(bounds)
|
|
142
|
+
for i, s in enumerate(seq[::-1]):
|
|
141
143
|
if s is not _zero:
|
|
142
144
|
if i == 0:
|
|
143
145
|
return inf
|
|
144
|
-
return
|
|
146
|
+
return bounds[N - i - 1]
|
|
145
147
|
return -inf
|
|
146
148
|
|
|
147
149
|
@property
|
|
148
150
|
def begin(self):
|
|
149
151
|
if self.start is None:
|
|
150
|
-
return self._begin()
|
|
152
|
+
return self._begin(self.bounds, self.seq)
|
|
151
153
|
else:
|
|
152
|
-
return max(self.start, self._begin())
|
|
154
|
+
return max(self.start, self._begin(self.bounds, self.seq))
|
|
153
155
|
|
|
154
156
|
@property
|
|
155
157
|
def end(self):
|
|
156
158
|
if self.stop is None:
|
|
157
|
-
return self._end()
|
|
159
|
+
return self._end(self.bounds, self.seq)
|
|
158
160
|
else:
|
|
159
|
-
return min(self.stop, self._end())
|
|
161
|
+
return min(self.stop, self._end(self.bounds, self.seq))
|
|
160
162
|
|
|
161
163
|
def sample(self,
|
|
162
164
|
sample_rate=None,
|
|
@@ -611,6 +613,34 @@ class WaveVStack(Waveform):
|
|
|
611
613
|
self.label = None
|
|
612
614
|
self.function_lib = None
|
|
613
615
|
|
|
616
|
+
def __begin(self):
|
|
617
|
+
if self.wlist:
|
|
618
|
+
v = [self._begin(bounds, seq) for bounds, seq in self.wlist]
|
|
619
|
+
return min(v)
|
|
620
|
+
else:
|
|
621
|
+
return -inf
|
|
622
|
+
|
|
623
|
+
def __end(self):
|
|
624
|
+
if self.wlist:
|
|
625
|
+
v = [self._end(bounds, seq) for bounds, seq in self.wlist]
|
|
626
|
+
return max(v)
|
|
627
|
+
else:
|
|
628
|
+
return inf
|
|
629
|
+
|
|
630
|
+
@property
|
|
631
|
+
def begin(self):
|
|
632
|
+
if self.start is None:
|
|
633
|
+
return self.__begin()
|
|
634
|
+
else:
|
|
635
|
+
return max(self.start, self.__begin())
|
|
636
|
+
|
|
637
|
+
@property
|
|
638
|
+
def end(self):
|
|
639
|
+
if self.stop is None:
|
|
640
|
+
return self.__end()
|
|
641
|
+
else:
|
|
642
|
+
return min(self.stop, self.__end())
|
|
643
|
+
|
|
614
644
|
def __call__(self, x, frag=False, out=None, function_lib=None):
|
|
615
645
|
assert frag is False, 'WaveVStack does not support frag mode'
|
|
616
646
|
out = np.full_like(x, self.offset, dtype=complex)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: waveforms
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Edit waveforms used in experiment
|
|
5
5
|
Author-email: feihoo87 <feihoo87@gmail.com>
|
|
6
6
|
Maintainer-email: feihoo87 <feihoo87@gmail.com>
|
|
@@ -20,27 +20,17 @@ Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Transla
|
|
|
20
20
|
Classifier: Programming Language :: Python
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
24
|
Requires-Python: >=3.10
|
|
24
25
|
Description-Content-Type: text/markdown
|
|
25
26
|
License-File: LICENSE
|
|
26
27
|
Requires-Dist: click>=7.1.2
|
|
27
28
|
Requires-Dist: dill>=0.3.6
|
|
28
|
-
Requires-Dist: GitPython>=3.1.14
|
|
29
|
-
Requires-Dist: matplotlib>=3.7.2
|
|
30
29
|
Requires-Dist: numpy>=1.13.3
|
|
31
30
|
Requires-Dist: ply>=3.11
|
|
32
31
|
Requires-Dist: scipy>=1.0.0
|
|
33
32
|
Provides-Extra: full
|
|
34
|
-
Requires-Dist: antlr4-python3-runtime==4.12.0; extra == "full"
|
|
35
|
-
Requires-Dist: blinker>=1.4; extra == "full"
|
|
36
|
-
Requires-Dist: cryptography>=3.4.7; extra == "full"
|
|
37
|
-
Requires-Dist: matplotlib>=3.4.1; extra == "full"
|
|
38
33
|
Requires-Dist: msgpack>=1.0.5; extra == "full"
|
|
39
|
-
Requires-Dist: portalocker>=1.4.0; extra == "full"
|
|
40
|
-
Requires-Dist: SQLAlchemy>=1.4.11; extra == "full"
|
|
41
|
-
Requires-Dist: scikit-learn>=0.24.1; extra == "full"
|
|
42
|
-
Requires-Dist: scikit-optimize>=0.8.1; extra == "full"
|
|
43
|
-
Requires-Dist: tenacity>=8.2.2; extra == "full"
|
|
44
34
|
Provides-Extra: test
|
|
45
35
|
Requires-Dist: pytest>=7.4.0; extra == "test"
|
|
46
36
|
Requires-Dist: pytest-asyncio>=0.21.1; extra == "test"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
pyproject.toml
|
|
5
|
+
setup.py
|
|
6
|
+
src/waveform.h
|
|
7
|
+
tests/test_multi_drag.py
|
|
8
|
+
tests/test_waveform.py
|
|
9
|
+
tests/test_wavevstack.py
|
|
10
|
+
waveforms/__init__.py
|
|
11
|
+
waveforms/__main__.py
|
|
12
|
+
waveforms/_waveform.pyi
|
|
13
|
+
waveforms/_waveform.pyx
|
|
14
|
+
waveforms/multy_drag.py
|
|
15
|
+
waveforms/utils.py
|
|
16
|
+
waveforms/version.py
|
|
17
|
+
waveforms/waveform.py
|
|
18
|
+
waveforms/waveform_parser.py
|
|
19
|
+
waveforms.egg-info/PKG-INFO
|
|
20
|
+
waveforms.egg-info/SOURCES.txt
|
|
21
|
+
waveforms.egg-info/dependency_links.txt
|
|
22
|
+
waveforms.egg-info/entry_points.txt
|
|
23
|
+
waveforms.egg-info/requires.txt
|
|
24
|
+
waveforms.egg-info/top_level.txt
|