dttlib 0.5.3__cp312-cp312-manylinux_2_31_x86_64.whl → 0.9.5__cp312-cp312-manylinux_2_31_x86_64.whl
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.
- dttlib/__init__.pyi +1014 -0
- dttlib/dttlib.cpython-312-x86_64-linux-gnu.so +0 -0
- {dttlib-0.5.3.dist-info → dttlib-0.9.5.dist-info}/METADATA +1 -1
- dttlib-0.9.5.dist-info/RECORD +15 -0
- {dttlib-0.5.3.dist-info → dttlib-0.9.5.dist-info}/WHEEL +1 -1
- dttlib-0.5.3.dist-info/RECORD +0 -18
- dttlib.libs/libcds-8ba34ad2.so.0.1.4 +0 -0
- dttlib.libs/libpcre-2092419b.so.3 +0 -0
- dttlib.libs/libpython3-25529256.12.so.1.0 +0 -0
- {dttlib-0.5.3.dist-info → dttlib-0.9.5.dist-info}/licenses/COPYING +0 -0
- {dttlib-0.5.3.dist-info → dttlib-0.9.5.dist-info}/licenses/COPYING-GPL-3 +0 -0
dttlib/__init__.pyi
CHANGED
|
@@ -5,6 +5,369 @@ import builtins
|
|
|
5
5
|
import typing
|
|
6
6
|
from enum import Enum
|
|
7
7
|
|
|
8
|
+
class AnalysisHeaderId:
|
|
9
|
+
r"""
|
|
10
|
+
This is the name of a result
|
|
11
|
+
Can be of the simple form "SomeChannelName"
|
|
12
|
+
Or the compound form "Name(OtherID1, OtherID2, ...)"
|
|
13
|
+
|
|
14
|
+
Structured to avoid unnecessary string parsing
|
|
15
|
+
"""
|
|
16
|
+
@staticmethod
|
|
17
|
+
def from_channel(channel: ChannelHeader) -> AnalysisHeaderId: ...
|
|
18
|
+
def __new__(
|
|
19
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisHeaderId]
|
|
20
|
+
) -> AnalysisHeaderId: ...
|
|
21
|
+
def first_channel(self) -> ChannelHeader:
|
|
22
|
+
r"""
|
|
23
|
+
get the first channel
|
|
24
|
+
"""
|
|
25
|
+
def add_to_set_recursive(
|
|
26
|
+
self, set: builtins.set[AnalysisHeaderId]
|
|
27
|
+
) -> builtins.set[AnalysisHeaderId]:
|
|
28
|
+
r"""
|
|
29
|
+
The set is pass-through ownership so that the function is usable from python
|
|
30
|
+
|
|
31
|
+
This function is needed to "flesh out" the collection of analyses request
|
|
32
|
+
by the user to include all intermediate analyses
|
|
33
|
+
"""
|
|
34
|
+
def add_trend(self, trend: TrendType) -> AnalysisHeaderId: ...
|
|
35
|
+
def to_analysis_name_id(self) -> AnalysisNameId: ...
|
|
36
|
+
def get_channels(self) -> builtins.set[ChannelHeader]: ...
|
|
37
|
+
class Simple(AnalysisHeaderId):
|
|
38
|
+
__match_args__ = ("channel",)
|
|
39
|
+
@property
|
|
40
|
+
def channel(self) -> ChannelHeader: ...
|
|
41
|
+
def __new__(cls, channel: ChannelHeader) -> AnalysisHeaderId.Simple: ...
|
|
42
|
+
|
|
43
|
+
class Compound(AnalysisHeaderId):
|
|
44
|
+
__match_args__ = (
|
|
45
|
+
"name",
|
|
46
|
+
"args",
|
|
47
|
+
)
|
|
48
|
+
@property
|
|
49
|
+
def name(self) -> builtins.str: ...
|
|
50
|
+
@property
|
|
51
|
+
def args(self) -> builtins.list[AnalysisHeaderId]: ...
|
|
52
|
+
def __new__(
|
|
53
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisHeaderId]
|
|
54
|
+
) -> AnalysisHeaderId.Compound: ...
|
|
55
|
+
|
|
56
|
+
class AnalysisId:
|
|
57
|
+
r"""
|
|
58
|
+
This is the name of a result
|
|
59
|
+
Can be of the simple form "SomeChannelName"
|
|
60
|
+
Or the compound form "Name(OtherID1, OtherID2, ...)"
|
|
61
|
+
|
|
62
|
+
Structured to avoid unnecessary string parsing
|
|
63
|
+
"""
|
|
64
|
+
@staticmethod
|
|
65
|
+
def from_channel(channel: Channel) -> AnalysisId: ...
|
|
66
|
+
def __new__(
|
|
67
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisId]
|
|
68
|
+
) -> AnalysisId: ...
|
|
69
|
+
def first_channel(self) -> Channel:
|
|
70
|
+
r"""
|
|
71
|
+
get the first channel
|
|
72
|
+
"""
|
|
73
|
+
def add_to_set_recursive(
|
|
74
|
+
self, set: builtins.set[AnalysisId]
|
|
75
|
+
) -> builtins.set[AnalysisId]:
|
|
76
|
+
r"""
|
|
77
|
+
The set is pass-through ownership so that the function is usable from python
|
|
78
|
+
|
|
79
|
+
This function is needed to "flesh out" the collection of analyses request
|
|
80
|
+
by the user to include all intermediate analyses
|
|
81
|
+
"""
|
|
82
|
+
def add_trend(self, trend: TrendType) -> AnalysisId: ...
|
|
83
|
+
def to_analysis_name_id(self) -> AnalysisNameId: ...
|
|
84
|
+
def get_channels(self) -> builtins.set[Channel]: ...
|
|
85
|
+
class Simple(AnalysisId):
|
|
86
|
+
__match_args__ = ("channel",)
|
|
87
|
+
@property
|
|
88
|
+
def channel(self) -> Channel: ...
|
|
89
|
+
def __new__(cls, channel: Channel) -> AnalysisId.Simple: ...
|
|
90
|
+
|
|
91
|
+
class Compound(AnalysisId):
|
|
92
|
+
__match_args__ = (
|
|
93
|
+
"name",
|
|
94
|
+
"args",
|
|
95
|
+
)
|
|
96
|
+
@property
|
|
97
|
+
def name(self) -> builtins.str: ...
|
|
98
|
+
@property
|
|
99
|
+
def args(self) -> builtins.list[AnalysisId]: ...
|
|
100
|
+
def __new__(
|
|
101
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisId]
|
|
102
|
+
) -> AnalysisId.Compound: ...
|
|
103
|
+
|
|
104
|
+
class AnalysisNameId:
|
|
105
|
+
r"""
|
|
106
|
+
This is the name of a result
|
|
107
|
+
Can be of the simple form "SomeChannelName"
|
|
108
|
+
Or the compound form "Name(OtherID1, OtherID2, ...)"
|
|
109
|
+
|
|
110
|
+
Structured to avoid unnecessary string parsing
|
|
111
|
+
"""
|
|
112
|
+
@staticmethod
|
|
113
|
+
def from_channel(channel: ChannelName) -> AnalysisNameId: ...
|
|
114
|
+
def __new__(
|
|
115
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisNameId]
|
|
116
|
+
) -> AnalysisNameId: ...
|
|
117
|
+
def first_channel(self) -> ChannelName:
|
|
118
|
+
r"""
|
|
119
|
+
get the first channel
|
|
120
|
+
"""
|
|
121
|
+
def add_to_set_recursive(
|
|
122
|
+
self, set: builtins.set[AnalysisNameId]
|
|
123
|
+
) -> builtins.set[AnalysisNameId]:
|
|
124
|
+
r"""
|
|
125
|
+
The set is pass-through ownership so that the function is usable from python
|
|
126
|
+
|
|
127
|
+
This function is needed to "flesh out" the collection of analyses request
|
|
128
|
+
by the user to include all intermediate analyses
|
|
129
|
+
"""
|
|
130
|
+
def add_trend(self, trend: TrendType) -> AnalysisRequestId: ...
|
|
131
|
+
def to_analysis_name_id(self) -> AnalysisNameId: ...
|
|
132
|
+
def get_channels(self) -> builtins.set[ChannelName]: ...
|
|
133
|
+
class Simple(AnalysisNameId):
|
|
134
|
+
__match_args__ = ("channel",)
|
|
135
|
+
@property
|
|
136
|
+
def channel(self) -> ChannelName: ...
|
|
137
|
+
def __new__(cls, channel: ChannelName) -> AnalysisNameId.Simple: ...
|
|
138
|
+
|
|
139
|
+
class Compound(AnalysisNameId):
|
|
140
|
+
__match_args__ = (
|
|
141
|
+
"name",
|
|
142
|
+
"args",
|
|
143
|
+
)
|
|
144
|
+
@property
|
|
145
|
+
def name(self) -> builtins.str: ...
|
|
146
|
+
@property
|
|
147
|
+
def args(self) -> builtins.list[AnalysisNameId]: ...
|
|
148
|
+
def __new__(
|
|
149
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisNameId]
|
|
150
|
+
) -> AnalysisNameId.Compound: ...
|
|
151
|
+
|
|
152
|
+
class AnalysisRequestId:
|
|
153
|
+
r"""
|
|
154
|
+
This is the name of a result
|
|
155
|
+
Can be of the simple form "SomeChannelName"
|
|
156
|
+
Or the compound form "Name(OtherID1, OtherID2, ...)"
|
|
157
|
+
|
|
158
|
+
Structured to avoid unnecessary string parsing
|
|
159
|
+
"""
|
|
160
|
+
@staticmethod
|
|
161
|
+
def from_channel(channel: ChannelId) -> AnalysisRequestId: ...
|
|
162
|
+
def __new__(
|
|
163
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisRequestId]
|
|
164
|
+
) -> AnalysisRequestId: ...
|
|
165
|
+
def first_channel(self) -> ChannelId:
|
|
166
|
+
r"""
|
|
167
|
+
get the first channel
|
|
168
|
+
"""
|
|
169
|
+
def add_to_set_recursive(
|
|
170
|
+
self, set: builtins.set[AnalysisRequestId]
|
|
171
|
+
) -> builtins.set[AnalysisRequestId]:
|
|
172
|
+
r"""
|
|
173
|
+
The set is pass-through ownership so that the function is usable from python
|
|
174
|
+
|
|
175
|
+
This function is needed to "flesh out" the collection of analyses request
|
|
176
|
+
by the user to include all intermediate analyses
|
|
177
|
+
"""
|
|
178
|
+
def add_trend(self, trend: TrendType) -> AnalysisRequestId: ...
|
|
179
|
+
def to_analysis_name_id(self) -> AnalysisNameId: ...
|
|
180
|
+
def get_channels(self) -> builtins.set[ChannelId]: ...
|
|
181
|
+
class Simple(AnalysisRequestId):
|
|
182
|
+
__match_args__ = ("channel",)
|
|
183
|
+
@property
|
|
184
|
+
def channel(self) -> ChannelId: ...
|
|
185
|
+
def __new__(cls, channel: ChannelId) -> AnalysisRequestId.Simple: ...
|
|
186
|
+
|
|
187
|
+
class Compound(AnalysisRequestId):
|
|
188
|
+
__match_args__ = (
|
|
189
|
+
"name",
|
|
190
|
+
"args",
|
|
191
|
+
)
|
|
192
|
+
@property
|
|
193
|
+
def name(self) -> builtins.str: ...
|
|
194
|
+
@property
|
|
195
|
+
def args(self) -> builtins.list[AnalysisRequestId]: ...
|
|
196
|
+
def __new__(
|
|
197
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisRequestId]
|
|
198
|
+
) -> AnalysisRequestId.Compound: ...
|
|
199
|
+
|
|
200
|
+
class AnalysisSettingsId:
|
|
201
|
+
r"""
|
|
202
|
+
This is the name of a result
|
|
203
|
+
Can be of the simple form "SomeChannelName"
|
|
204
|
+
Or the compound form "Name(OtherID1, OtherID2, ...)"
|
|
205
|
+
|
|
206
|
+
Structured to avoid unnecessary string parsing
|
|
207
|
+
"""
|
|
208
|
+
@staticmethod
|
|
209
|
+
def from_channel(channel: ChannelSettings) -> AnalysisSettingsId: ...
|
|
210
|
+
def __new__(
|
|
211
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisSettingsId]
|
|
212
|
+
) -> AnalysisSettingsId: ...
|
|
213
|
+
def first_channel(self) -> ChannelSettings:
|
|
214
|
+
r"""
|
|
215
|
+
get the first channel
|
|
216
|
+
"""
|
|
217
|
+
def add_to_set_recursive(
|
|
218
|
+
self, set: builtins.set[AnalysisSettingsId]
|
|
219
|
+
) -> builtins.set[AnalysisSettingsId]:
|
|
220
|
+
r"""
|
|
221
|
+
The set is pass-through ownership so that the function is usable from python
|
|
222
|
+
|
|
223
|
+
This function is needed to "flesh out" the collection of analyses request
|
|
224
|
+
by the user to include all intermediate analyses
|
|
225
|
+
"""
|
|
226
|
+
def add_trend(self, trend: TrendType) -> AnalysisSettingsId: ...
|
|
227
|
+
def to_analysis_name_id(self) -> AnalysisNameId: ...
|
|
228
|
+
def get_channels(self) -> builtins.set[ChannelSettings]: ...
|
|
229
|
+
class Simple(AnalysisSettingsId):
|
|
230
|
+
__match_args__ = ("channel",)
|
|
231
|
+
@property
|
|
232
|
+
def channel(self) -> ChannelSettings: ...
|
|
233
|
+
def __new__(cls, channel: ChannelSettings) -> AnalysisSettingsId.Simple: ...
|
|
234
|
+
|
|
235
|
+
class Compound(AnalysisSettingsId):
|
|
236
|
+
__match_args__ = (
|
|
237
|
+
"name",
|
|
238
|
+
"args",
|
|
239
|
+
)
|
|
240
|
+
@property
|
|
241
|
+
def name(self) -> builtins.str: ...
|
|
242
|
+
@property
|
|
243
|
+
def args(self) -> builtins.list[AnalysisSettingsId]: ...
|
|
244
|
+
def __new__(
|
|
245
|
+
cls, name: builtins.str, args: typing.Sequence[AnalysisSettingsId]
|
|
246
|
+
) -> AnalysisSettingsId.Compound: ...
|
|
247
|
+
|
|
248
|
+
class Channel:
|
|
249
|
+
@property
|
|
250
|
+
def name(self) -> builtins.str: ...
|
|
251
|
+
@property
|
|
252
|
+
def data_type(self) -> NDSDataType: ...
|
|
253
|
+
@property
|
|
254
|
+
def channel_type(self) -> ChannelType: ...
|
|
255
|
+
@property
|
|
256
|
+
def period(self) -> PipDuration: ...
|
|
257
|
+
@property
|
|
258
|
+
def dcu_id(self) -> typing.Optional[builtins.int]: ...
|
|
259
|
+
@property
|
|
260
|
+
def channel_number(self) -> typing.Optional[builtins.int]: ...
|
|
261
|
+
@property
|
|
262
|
+
def calibration(self) -> typing.Optional[builtins.int]: ...
|
|
263
|
+
@property
|
|
264
|
+
def heterodyne_freq_hz(self) -> typing.Optional[builtins.float]: ...
|
|
265
|
+
@property
|
|
266
|
+
def gain(self) -> typing.Optional[builtins.float]: ...
|
|
267
|
+
@property
|
|
268
|
+
def slope(self) -> typing.Optional[builtins.float]: ...
|
|
269
|
+
@property
|
|
270
|
+
def offset(self) -> typing.Optional[builtins.float]: ...
|
|
271
|
+
@property
|
|
272
|
+
def use_active_time(self) -> builtins.bool: ...
|
|
273
|
+
@property
|
|
274
|
+
def units(self) -> Unit: ...
|
|
275
|
+
@property
|
|
276
|
+
def trend_stat(self) -> TrendStat: ...
|
|
277
|
+
@property
|
|
278
|
+
def trend_type(self) -> TrendType: ...
|
|
279
|
+
@property
|
|
280
|
+
def online(self) -> builtins.bool: ...
|
|
281
|
+
@property
|
|
282
|
+
def testpoint(self) -> builtins.bool: ...
|
|
283
|
+
@property
|
|
284
|
+
def rate_hz(self) -> builtins.float: ...
|
|
285
|
+
def __new__(
|
|
286
|
+
cls, name: builtins.str, data_type: NDSDataType, period: PipDuration
|
|
287
|
+
) -> Channel: ...
|
|
288
|
+
|
|
289
|
+
class ChannelHeader:
|
|
290
|
+
r"""
|
|
291
|
+
Used internally to map full name and trend info
|
|
292
|
+
this is the minimum needed information
|
|
293
|
+
to generate a request to the cache or other data source
|
|
294
|
+
"""
|
|
295
|
+
@property
|
|
296
|
+
def name(self) -> builtins.str: ...
|
|
297
|
+
@property
|
|
298
|
+
def trend_type(self) -> TrendType: ...
|
|
299
|
+
@property
|
|
300
|
+
def trend_stat(self) -> TrendStat: ...
|
|
301
|
+
|
|
302
|
+
class ChannelId:
|
|
303
|
+
r"""
|
|
304
|
+
Provides enough info to query a channel from an NDS server by name.
|
|
305
|
+
"""
|
|
306
|
+
@property
|
|
307
|
+
def name(self) -> builtins.str: ...
|
|
308
|
+
@property
|
|
309
|
+
def trend_type(self) -> TrendType: ...
|
|
310
|
+
def __new__(cls, name: builtins.str, trend_type: TrendType) -> ChannelId: ...
|
|
311
|
+
def expected_stats(self) -> builtins.list[TrendStat]:
|
|
312
|
+
r"""
|
|
313
|
+
These are the stats we expect to get for a single trend request.
|
|
314
|
+
One ChannelID will return into a channel for each.
|
|
315
|
+
"""
|
|
316
|
+
|
|
317
|
+
class ChannelName:
|
|
318
|
+
r"""
|
|
319
|
+
Provides enough info to query a channel from an NDS server by name.
|
|
320
|
+
"""
|
|
321
|
+
@property
|
|
322
|
+
def name(self) -> builtins.str: ...
|
|
323
|
+
def __new__(cls, name: builtins.str) -> ChannelName: ...
|
|
324
|
+
|
|
325
|
+
class ChannelParams:
|
|
326
|
+
@property
|
|
327
|
+
def active(self) -> builtins.bool: ...
|
|
328
|
+
@property
|
|
329
|
+
def channel(self) -> Channel: ...
|
|
330
|
+
|
|
331
|
+
class ChannelQuery:
|
|
332
|
+
r"""
|
|
333
|
+
Constraints on a channel query
|
|
334
|
+
to a data source
|
|
335
|
+
"""
|
|
336
|
+
def __new__(
|
|
337
|
+
cls,
|
|
338
|
+
pattern: typing.Optional[builtins.str] = None,
|
|
339
|
+
channel_types: typing.Optional[typing.Sequence[ChannelType]] = None,
|
|
340
|
+
data_types: typing.Optional[typing.Sequence[NDSDataType]] = None,
|
|
341
|
+
min_sample_rate: typing.Optional[builtins.float] = None,
|
|
342
|
+
max_sample_rate: typing.Optional[builtins.float] = None,
|
|
343
|
+
gps_start: typing.Optional[builtins.int] = None,
|
|
344
|
+
gps_end: typing.Optional[builtins.int] = None,
|
|
345
|
+
) -> ChannelQuery: ...
|
|
346
|
+
|
|
347
|
+
class ChannelSettings:
|
|
348
|
+
r"""
|
|
349
|
+
full record of a channel including some pre-calculated timeline info used
|
|
350
|
+
in DTT tests.
|
|
351
|
+
"""
|
|
352
|
+
@property
|
|
353
|
+
def channel(self) -> Channel: ...
|
|
354
|
+
@property
|
|
355
|
+
def raw_decimation_params(self) -> DecimationParameters: ...
|
|
356
|
+
@property
|
|
357
|
+
def heterodyned_decimation_params(self) -> DecimationParameters: ...
|
|
358
|
+
@property
|
|
359
|
+
def do_heterodyne(self) -> builtins.bool: ...
|
|
360
|
+
@property
|
|
361
|
+
def decimation_delays(self) -> DecimationDelays: ...
|
|
362
|
+
|
|
363
|
+
class ChannelSettingsParams:
|
|
364
|
+
@property
|
|
365
|
+
def active(self) -> builtins.bool: ...
|
|
366
|
+
@property
|
|
367
|
+
def channel(self) -> ChannelSettings: ...
|
|
368
|
+
|
|
369
|
+
class CustomPipeline: ...
|
|
370
|
+
|
|
8
371
|
class DTT:
|
|
9
372
|
r"""
|
|
10
373
|
## immutable "global" values
|
|
@@ -15,9 +378,157 @@ class DTT:
|
|
|
15
378
|
|
|
16
379
|
Applications should use the init_...() functions to create this structure.
|
|
17
380
|
"""
|
|
381
|
+
def set_data_source(self, data_source: DataSource) -> None:
|
|
382
|
+
r"""
|
|
383
|
+
set the desired data source
|
|
384
|
+
"""
|
|
385
|
+
def set_test_params(self, params: TestParams) -> None:
|
|
386
|
+
r"""
|
|
387
|
+
Set up a test. Eventually, the library will send an updated Timeline object
|
|
388
|
+
on the associated output receiver.
|
|
389
|
+
Start the test with run_test().
|
|
390
|
+
An error means the DTT management process has died.
|
|
391
|
+
"""
|
|
392
|
+
def run_test(self) -> None:
|
|
393
|
+
r"""
|
|
394
|
+
Start a test.
|
|
395
|
+
The test must already be configured with set_test_params.
|
|
396
|
+
As the test is run, status messages and results will appear on
|
|
397
|
+
the associated output receiver.
|
|
398
|
+
An error means the DTT management process has died.
|
|
399
|
+
"""
|
|
400
|
+
def no_op(self) -> None:
|
|
401
|
+
r"""
|
|
402
|
+
Send a no-op message.
|
|
403
|
+
"""
|
|
404
|
+
def new_online_scope_view(
|
|
405
|
+
self, set: ViewSet, span_pip: PipDuration
|
|
406
|
+
) -> ScopeViewHandle:
|
|
407
|
+
r"""
|
|
408
|
+
Create a new online scope view and return a handle to it.
|
|
409
|
+
Drop all clones of the handle to close the view.
|
|
410
|
+
"""
|
|
411
|
+
def new_fixed_scope_view(
|
|
412
|
+
self, set: ViewSet, start_pip: PipInstant, end_pip: PipInstant
|
|
413
|
+
) -> ScopeViewHandle:
|
|
414
|
+
r"""
|
|
415
|
+
Create a new fixed scope view and return a handle to it.
|
|
416
|
+
Drop all clones of the handle to close the view
|
|
417
|
+
"""
|
|
418
|
+
def find_channels(self, query: ChannelQuery) -> None: ...
|
|
419
|
+
def __new__(cls, callback: typing.Any) -> DTT:
|
|
420
|
+
r"""
|
|
421
|
+
Creation of a DTT object from Python requires a callback function as an argument.
|
|
422
|
+
The call back will receive [ResponseToUser] messages from the [DTT] object
|
|
423
|
+
Since the [DTT] object is asynchronous under the hood, most methods
|
|
424
|
+
return immediately without any result. [ResponseToUser] messages
|
|
425
|
+
are the primary way to get feedback from the DTT object.
|
|
426
|
+
"""
|
|
427
|
+
|
|
428
|
+
class DataSource:
|
|
429
|
+
r"""
|
|
430
|
+
wrappers needed for python
|
|
431
|
+
"""
|
|
432
|
+
def now(self) -> PipInstant: ...
|
|
433
|
+
|
|
434
|
+
class DecimationDelays:
|
|
435
|
+
r"""
|
|
436
|
+
collects the delays associated with the total decimation on the channel
|
|
437
|
+
"""
|
|
18
438
|
|
|
19
439
|
...
|
|
20
440
|
|
|
441
|
+
class DecimationParameters:
|
|
442
|
+
r"""
|
|
443
|
+
Values used to generate a decimation pipeline for a single stage of decimation
|
|
444
|
+
"""
|
|
445
|
+
@property
|
|
446
|
+
def filter(self) -> DecimationFilter:
|
|
447
|
+
r"""
|
|
448
|
+
anti-aliasing filter
|
|
449
|
+
"""
|
|
450
|
+
@property
|
|
451
|
+
def num_decs(self) -> builtins.int:
|
|
452
|
+
r"""
|
|
453
|
+
number of x2 decimations
|
|
454
|
+
"""
|
|
455
|
+
|
|
456
|
+
class Excitation:
|
|
457
|
+
@property
|
|
458
|
+
def channel(self) -> Channel: ...
|
|
459
|
+
@property
|
|
460
|
+
def read_back_channel(self) -> typing.Optional[Channel]: ...
|
|
461
|
+
|
|
462
|
+
class ExcitationParams:
|
|
463
|
+
@property
|
|
464
|
+
def active(self) -> builtins.bool: ...
|
|
465
|
+
@property
|
|
466
|
+
def excitation(self) -> Excitation: ...
|
|
467
|
+
|
|
468
|
+
class ExcitationSettings:
|
|
469
|
+
@property
|
|
470
|
+
def channel(self) -> ChannelSettings: ...
|
|
471
|
+
@property
|
|
472
|
+
def read_back_channel(self) -> typing.Optional[ChannelSettings]: ...
|
|
473
|
+
|
|
474
|
+
class ExcitationSettingsParams:
|
|
475
|
+
@property
|
|
476
|
+
def active(self) -> builtins.bool: ...
|
|
477
|
+
@property
|
|
478
|
+
def excitation(self) -> ExcitationSettings: ...
|
|
479
|
+
|
|
480
|
+
class FreqDomainArray:
|
|
481
|
+
@property
|
|
482
|
+
def start_gps_pip(self) -> PipInstant: ...
|
|
483
|
+
@property
|
|
484
|
+
def start_hz(self) -> builtins.float: ...
|
|
485
|
+
@property
|
|
486
|
+
def bucket_width_hz(self) -> builtins.float: ...
|
|
487
|
+
@property
|
|
488
|
+
def overlap(self) -> builtins.float: ...
|
|
489
|
+
@property
|
|
490
|
+
def sequence_index(self) -> builtins.int: ...
|
|
491
|
+
@property
|
|
492
|
+
def sequence_size(self) -> builtins.int: ...
|
|
493
|
+
@property
|
|
494
|
+
def n(self) -> builtins.float: ...
|
|
495
|
+
@property
|
|
496
|
+
def data(self) -> typing.Any: ...
|
|
497
|
+
@property
|
|
498
|
+
def id(self) -> AnalysisId: ...
|
|
499
|
+
@property
|
|
500
|
+
def unit(self) -> Unit: ...
|
|
501
|
+
def clone_metadata(
|
|
502
|
+
self, id: AnalysisId, unit: Unit, new_data: typing.Any
|
|
503
|
+
) -> FreqDomainArray:
|
|
504
|
+
r"""
|
|
505
|
+
Copy everything from another object except replace the data
|
|
506
|
+
with a new python list of data
|
|
507
|
+
"""
|
|
508
|
+
|
|
509
|
+
class InlineFFTParams:
|
|
510
|
+
@property
|
|
511
|
+
def bandwidth_hz(self) -> builtins.float: ...
|
|
512
|
+
@property
|
|
513
|
+
def overlap(self) -> builtins.float: ...
|
|
514
|
+
@property
|
|
515
|
+
def start_pip(self) -> PipInstant: ...
|
|
516
|
+
@property
|
|
517
|
+
def end_pip(self) -> PipInstant: ...
|
|
518
|
+
@property
|
|
519
|
+
def window(self) -> FFTWindow: ...
|
|
520
|
+
@bandwidth_hz.setter
|
|
521
|
+
def bandwidth_hz(self, value: builtins.float) -> None: ...
|
|
522
|
+
@overlap.setter
|
|
523
|
+
def overlap(self, value: builtins.float) -> None: ...
|
|
524
|
+
@start_pip.setter
|
|
525
|
+
def start_pip(self, value: PipInstant) -> None: ...
|
|
526
|
+
@end_pip.setter
|
|
527
|
+
def end_pip(self, value: PipInstant) -> None: ...
|
|
528
|
+
@window.setter
|
|
529
|
+
def window(self, value: FFTWindow) -> None: ...
|
|
530
|
+
def __new__(cls) -> InlineFFTParams: ...
|
|
531
|
+
|
|
21
532
|
class MessageJob:
|
|
22
533
|
def get_tag(self) -> builtins.str:
|
|
23
534
|
r"""
|
|
@@ -42,6 +553,15 @@ class MessageJob:
|
|
|
42
553
|
def tag(self) -> builtins.str: ...
|
|
43
554
|
def __new__(cls, tag: builtins.str) -> MessageJob.ClearMessage: ...
|
|
44
555
|
|
|
556
|
+
class NDS2Cache:
|
|
557
|
+
r"""
|
|
558
|
+
Data source that gets all its data directly from an NDS2 server (no local caching).
|
|
559
|
+
"""
|
|
560
|
+
def __new__(
|
|
561
|
+
cls, size_bytes: builtins.int, default_file_path: builtins.str
|
|
562
|
+
) -> NDS2Cache: ...
|
|
563
|
+
def as_ref(self) -> DataSource: ...
|
|
564
|
+
|
|
45
565
|
class PipDuration:
|
|
46
566
|
def __sub__(self, other: PipDuration) -> PipDuration: ...
|
|
47
567
|
def __add__(self, other: typing.Any) -> typing.Any:
|
|
@@ -167,6 +687,11 @@ class PipInstant:
|
|
|
167
687
|
Subtract a duration to get an instant,
|
|
168
688
|
or subtract a instant to get the difference as a duration.
|
|
169
689
|
"""
|
|
690
|
+
@staticmethod
|
|
691
|
+
def now() -> PipInstant:
|
|
692
|
+
r"""
|
|
693
|
+
return the current time
|
|
694
|
+
"""
|
|
170
695
|
def to_gpst_pips(self) -> builtins.int:
|
|
171
696
|
r"""
|
|
172
697
|
Return the number of steps since the GPS epoch.
|
|
@@ -245,6 +770,283 @@ class PipInstant:
|
|
|
245
770
|
Return the rate of the units in Hz
|
|
246
771
|
"""
|
|
247
772
|
|
|
773
|
+
class ResponseToUser:
|
|
774
|
+
r"""
|
|
775
|
+
Any data sent to the user from a [DTT] struct
|
|
776
|
+
In python, these will be passed to the callback function
|
|
777
|
+
passed to the [dttlib.init](crate::python::dttlib::init) function
|
|
778
|
+
"""
|
|
779
|
+
class AllMessages(ResponseToUser):
|
|
780
|
+
__match_args__ = ("_0",)
|
|
781
|
+
@property
|
|
782
|
+
def _0(self) -> builtins.dict[builtins.str, UserMessage]: ...
|
|
783
|
+
def __new__(
|
|
784
|
+
cls, _0: typing.Mapping[builtins.str, UserMessage]
|
|
785
|
+
) -> ResponseToUser.AllMessages: ...
|
|
786
|
+
def __len__(self) -> builtins.int: ...
|
|
787
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
788
|
+
|
|
789
|
+
class UpdateMessages(ResponseToUser):
|
|
790
|
+
__match_args__ = ("message_job",)
|
|
791
|
+
@property
|
|
792
|
+
def message_job(self) -> MessageJob: ...
|
|
793
|
+
def __new__(cls, message_job: MessageJob) -> ResponseToUser.UpdateMessages: ...
|
|
794
|
+
|
|
795
|
+
class NewTimeline(ResponseToUser):
|
|
796
|
+
__match_args__ = ("_0",)
|
|
797
|
+
@property
|
|
798
|
+
def _0(self) -> Timeline: ...
|
|
799
|
+
def __new__(cls, _0: Timeline) -> ResponseToUser.NewTimeline: ...
|
|
800
|
+
def __len__(self) -> builtins.int: ...
|
|
801
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
802
|
+
|
|
803
|
+
class NewResult(ResponseToUser):
|
|
804
|
+
__match_args__ = ("_0",)
|
|
805
|
+
@property
|
|
806
|
+
def _0(self) -> typing.Any: ...
|
|
807
|
+
def __new__(cls, _0: typing.Any) -> ResponseToUser.NewResult: ...
|
|
808
|
+
def __len__(self) -> builtins.int: ...
|
|
809
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
810
|
+
|
|
811
|
+
class FinalResults(ResponseToUser):
|
|
812
|
+
__match_args__ = ("_0",)
|
|
813
|
+
@property
|
|
814
|
+
def _0(self) -> ResultsRecord: ...
|
|
815
|
+
def __new__(cls, _0: ResultsRecord) -> ResponseToUser.FinalResults: ...
|
|
816
|
+
def __len__(self) -> builtins.int: ...
|
|
817
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
818
|
+
|
|
819
|
+
class ScopeViewResult(ResponseToUser):
|
|
820
|
+
__match_args__ = (
|
|
821
|
+
"id",
|
|
822
|
+
"result",
|
|
823
|
+
)
|
|
824
|
+
@property
|
|
825
|
+
def id(self) -> builtins.int: ...
|
|
826
|
+
@property
|
|
827
|
+
def result(self) -> typing.Any: ...
|
|
828
|
+
def __new__(
|
|
829
|
+
cls, id: builtins.int, result: typing.Any
|
|
830
|
+
) -> ResponseToUser.ScopeViewResult: ...
|
|
831
|
+
|
|
832
|
+
class ScopeViewDone(ResponseToUser):
|
|
833
|
+
__match_args__ = ("id",)
|
|
834
|
+
@property
|
|
835
|
+
def id(self) -> builtins.int: ...
|
|
836
|
+
def __new__(cls, id: builtins.int) -> ResponseToUser.ScopeViewDone: ...
|
|
837
|
+
|
|
838
|
+
class ChannelQueryResult(ResponseToUser):
|
|
839
|
+
__match_args__ = ("channels",)
|
|
840
|
+
@property
|
|
841
|
+
def channels(self) -> builtins.list[Channel]: ...
|
|
842
|
+
def __new__(
|
|
843
|
+
cls, channels: typing.Sequence[Channel]
|
|
844
|
+
) -> ResponseToUser.ChannelQueryResult: ...
|
|
845
|
+
|
|
846
|
+
...
|
|
847
|
+
|
|
848
|
+
class ResultsRecord:
|
|
849
|
+
r"""
|
|
850
|
+
Store analysis results for a given test.
|
|
851
|
+
"""
|
|
852
|
+
|
|
853
|
+
...
|
|
854
|
+
|
|
855
|
+
class ScopeViewHandle:
|
|
856
|
+
r"""
|
|
857
|
+
Clonable handle used to update a view
|
|
858
|
+
"""
|
|
859
|
+
@property
|
|
860
|
+
def id(self) -> builtins.int: ...
|
|
861
|
+
def set_fft_params(self, params: InlineFFTParams) -> None: ...
|
|
862
|
+
def update(
|
|
863
|
+
self,
|
|
864
|
+
span_pip: typing.Optional[PipDuration] = None,
|
|
865
|
+
start_pip: typing.Optional[PipInstant] = None,
|
|
866
|
+
end_pip: typing.Optional[PipInstant] = None,
|
|
867
|
+
) -> None:
|
|
868
|
+
r"""
|
|
869
|
+
Update the span of a view. This is a pythonic wrapper. Rust code should call update_online() or update_fixed().
|
|
870
|
+
"""
|
|
871
|
+
def close(self) -> None: ...
|
|
872
|
+
def get_result_store(self) -> builtins.dict[AnalysisId, typing.Any]: ...
|
|
873
|
+
|
|
874
|
+
class SimpleUnit:
|
|
875
|
+
r"""
|
|
876
|
+
allow some standard units
|
|
877
|
+
to take care of custom string generation
|
|
878
|
+
and handling of slightly different unit names for the same units
|
|
879
|
+
and, potentially for some automatic conversion.
|
|
880
|
+
"""
|
|
881
|
+
class Counts(SimpleUnit):
|
|
882
|
+
__match_args__ = ((),)
|
|
883
|
+
def __new__(cls) -> SimpleUnit.Counts: ...
|
|
884
|
+
def __len__(self) -> builtins.int: ...
|
|
885
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
886
|
+
|
|
887
|
+
class Custom(SimpleUnit):
|
|
888
|
+
__match_args__ = ("_0",)
|
|
889
|
+
@property
|
|
890
|
+
def _0(self) -> builtins.str: ...
|
|
891
|
+
def __new__(cls, _0: builtins.str) -> SimpleUnit.Custom: ...
|
|
892
|
+
def __len__(self) -> builtins.int: ...
|
|
893
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
894
|
+
|
|
895
|
+
...
|
|
896
|
+
|
|
897
|
+
class StartTime:
|
|
898
|
+
r"""
|
|
899
|
+
An unbound StartTime will be bound when the run starts.
|
|
900
|
+
"""
|
|
901
|
+
@staticmethod
|
|
902
|
+
def new(start_pip: typing.Optional[PipInstant]) -> StartTime: ...
|
|
903
|
+
class Unbound(StartTime):
|
|
904
|
+
r"""
|
|
905
|
+
An unbound start time means the start of the test is not yet determined.
|
|
906
|
+
"""
|
|
907
|
+
|
|
908
|
+
__match_args__ = ((),)
|
|
909
|
+
def __new__(cls) -> StartTime.Unbound: ...
|
|
910
|
+
def __len__(self) -> builtins.int: ...
|
|
911
|
+
def __getitem__(self, key: builtins.int) -> typing.Any: ...
|
|
912
|
+
|
|
913
|
+
class Bound(StartTime):
|
|
914
|
+
r"""
|
|
915
|
+
A bound start time holds the start time of the test
|
|
916
|
+
"""
|
|
917
|
+
|
|
918
|
+
__match_args__ = ("start_pip",)
|
|
919
|
+
@property
|
|
920
|
+
def start_pip(self) -> PipInstant:
|
|
921
|
+
r"""
|
|
922
|
+
The start time of the test.
|
|
923
|
+
"""
|
|
924
|
+
def __new__(cls, start_pip: PipInstant) -> StartTime.Bound: ...
|
|
925
|
+
|
|
926
|
+
class TestParams:
|
|
927
|
+
@property
|
|
928
|
+
def version(self) -> builtins.int:
|
|
929
|
+
r"""
|
|
930
|
+
# Version
|
|
931
|
+
increment this number if releasing a new version of the struct
|
|
932
|
+
"""
|
|
933
|
+
@property
|
|
934
|
+
def test_type(self) -> TestType:
|
|
935
|
+
r"""
|
|
936
|
+
# Test Type
|
|
937
|
+
"""
|
|
938
|
+
@property
|
|
939
|
+
def start_time_pip(self) -> StartTime:
|
|
940
|
+
r"""
|
|
941
|
+
# Start Time
|
|
942
|
+
"""
|
|
943
|
+
@property
|
|
944
|
+
def measurement_time_pip(self) -> PipDuration:
|
|
945
|
+
r"""
|
|
946
|
+
# time constraints
|
|
947
|
+
if both time and cycles are set to true,
|
|
948
|
+
then the measurement span will be
|
|
949
|
+
the least time that satisfies both.
|
|
950
|
+
minimum time span of a single segment
|
|
951
|
+
"""
|
|
952
|
+
@property
|
|
953
|
+
def use_measurement_time(self) -> builtins.bool: ...
|
|
954
|
+
@property
|
|
955
|
+
def measurement_cycles(self) -> builtins.int:
|
|
956
|
+
r"""
|
|
957
|
+
minimum number of cycles
|
|
958
|
+
"""
|
|
959
|
+
@property
|
|
960
|
+
def use_measurement_cycles(self) -> builtins.bool: ...
|
|
961
|
+
@property
|
|
962
|
+
def settling_time_frac(self) -> builtins.float:
|
|
963
|
+
r"""
|
|
964
|
+
# ramps and settling
|
|
965
|
+
fraction of measurement time needed to "settle" the system
|
|
966
|
+
"""
|
|
967
|
+
@property
|
|
968
|
+
def ramp_down_pip(self) -> PipDuration:
|
|
969
|
+
r"""
|
|
970
|
+
time to ramp down excitations
|
|
971
|
+
"""
|
|
972
|
+
@property
|
|
973
|
+
def ramp_up_pip(self) -> PipDuration:
|
|
974
|
+
r"""
|
|
975
|
+
time to ramp up excitations
|
|
976
|
+
"""
|
|
977
|
+
@property
|
|
978
|
+
def calc_power_spectrum(self) -> builtins.bool:
|
|
979
|
+
r"""
|
|
980
|
+
# sine_options config
|
|
981
|
+
Whether to calculate power spectrum
|
|
982
|
+
Needed for sine response and swept sine
|
|
983
|
+
"""
|
|
984
|
+
@property
|
|
985
|
+
def max_harmonic_order(self) -> builtins.int:
|
|
986
|
+
r"""
|
|
987
|
+
Maximum harmonic order to calculate
|
|
988
|
+
"""
|
|
989
|
+
@property
|
|
990
|
+
def average_size(self) -> builtins.int:
|
|
991
|
+
r"""
|
|
992
|
+
# Averaging
|
|
993
|
+
Total number of segments to average
|
|
994
|
+
"""
|
|
995
|
+
@property
|
|
996
|
+
def average_type(self) -> AverageType: ...
|
|
997
|
+
@property
|
|
998
|
+
def measurement_channels(self) -> builtins.list[ChannelSettingsParams]:
|
|
999
|
+
r"""
|
|
1000
|
+
## channel parameters
|
|
1001
|
+
"""
|
|
1002
|
+
@property
|
|
1003
|
+
def excitations(self) -> builtins.list[ExcitationSettingsParams]: ...
|
|
1004
|
+
@property
|
|
1005
|
+
def start_hz(self) -> builtins.float:
|
|
1006
|
+
r"""
|
|
1007
|
+
# FFT Tools params
|
|
1008
|
+
"""
|
|
1009
|
+
@property
|
|
1010
|
+
def stop_hz(self) -> builtins.float: ...
|
|
1011
|
+
@property
|
|
1012
|
+
def band_width_hz(self) -> builtins.float: ...
|
|
1013
|
+
@property
|
|
1014
|
+
def overlap(self) -> builtins.float:
|
|
1015
|
+
r"""
|
|
1016
|
+
as a fraction of the length of one segment
|
|
1017
|
+
"""
|
|
1018
|
+
@property
|
|
1019
|
+
def remove_mean(self) -> builtins.bool:
|
|
1020
|
+
r"""
|
|
1021
|
+
when true, subtract out the mean
|
|
1022
|
+
"""
|
|
1023
|
+
@property
|
|
1024
|
+
def quiet_time_pip(self) -> PipDuration:
|
|
1025
|
+
r"""
|
|
1026
|
+
time of from end of excitation to end of measurement
|
|
1027
|
+
purpose is to prevent correlation from one segment to the next
|
|
1028
|
+
due to time delay when using a random input
|
|
1029
|
+
"""
|
|
1030
|
+
@property
|
|
1031
|
+
def remove_decimation_delay(self) -> builtins.bool:
|
|
1032
|
+
r"""
|
|
1033
|
+
when false, don't remove the delay incurred by decimation filters
|
|
1034
|
+
this should maybe always be true!
|
|
1035
|
+
"""
|
|
1036
|
+
@property
|
|
1037
|
+
def fft_window(self) -> FFTWindow:
|
|
1038
|
+
r"""
|
|
1039
|
+
Attenuation window to use on FFT input
|
|
1040
|
+
"""
|
|
1041
|
+
@property
|
|
1042
|
+
def custom_pipelines(self) -> builtins.list[CustomPipeline]:
|
|
1043
|
+
r"""
|
|
1044
|
+
Custom pipelines
|
|
1045
|
+
User-provided pipelines written in python.
|
|
1046
|
+
"""
|
|
1047
|
+
@staticmethod
|
|
1048
|
+
def default_fft_params() -> TestParams: ...
|
|
1049
|
+
|
|
248
1050
|
class ThumpDuration:
|
|
249
1051
|
def __sub__(self, other: ThumpDuration) -> ThumpDuration: ...
|
|
250
1052
|
def __add__(self, other: typing.Any) -> typing.Any:
|
|
@@ -370,6 +1172,11 @@ class ThumpInstant:
|
|
|
370
1172
|
Subtract a duration to get an instant,
|
|
371
1173
|
or subtract a instant to get the difference as a duration.
|
|
372
1174
|
"""
|
|
1175
|
+
@staticmethod
|
|
1176
|
+
def now() -> ThumpInstant:
|
|
1177
|
+
r"""
|
|
1178
|
+
return the current time
|
|
1179
|
+
"""
|
|
373
1180
|
def to_gpst_thumps(self) -> builtins.int:
|
|
374
1181
|
r"""
|
|
375
1182
|
Return the number of steps since the GPS epoch.
|
|
@@ -448,6 +1255,61 @@ class ThumpInstant:
|
|
|
448
1255
|
Return the rate of the units in Hz
|
|
449
1256
|
"""
|
|
450
1257
|
|
|
1258
|
+
class TimeDomainArray:
|
|
1259
|
+
@property
|
|
1260
|
+
def start_gps_pip(self) -> PipInstant: ...
|
|
1261
|
+
@property
|
|
1262
|
+
def real_end_gps_pip(self) -> typing.Optional[PipInstant]: ...
|
|
1263
|
+
@property
|
|
1264
|
+
def period_pip(self) -> PipDuration: ...
|
|
1265
|
+
@property
|
|
1266
|
+
def n(self) -> builtins.float: ...
|
|
1267
|
+
@property
|
|
1268
|
+
def sequence_index(self) -> builtins.int: ...
|
|
1269
|
+
@property
|
|
1270
|
+
def sequence_size(self) -> builtins.int: ...
|
|
1271
|
+
@property
|
|
1272
|
+
def data(self) -> typing.Any: ...
|
|
1273
|
+
@property
|
|
1274
|
+
def total_gap_size(self) -> builtins.int: ...
|
|
1275
|
+
@property
|
|
1276
|
+
def id(self) -> AnalysisId: ...
|
|
1277
|
+
@property
|
|
1278
|
+
def unit(self) -> Unit: ...
|
|
1279
|
+
@property
|
|
1280
|
+
def rate_hz(self) -> builtins.float: ...
|
|
1281
|
+
def end_gps_pip(self) -> PipInstant:
|
|
1282
|
+
r"""
|
|
1283
|
+
return the time of the first timestamp after the end of the time series
|
|
1284
|
+
equal to the start time of the following series if it is contiguous.
|
|
1285
|
+
"""
|
|
1286
|
+
def len(self) -> builtins.int: ...
|
|
1287
|
+
def is_empty(self) -> builtins.bool: ...
|
|
1288
|
+
def index_to_gps_instant(self, index: builtins.int) -> PipInstant: ...
|
|
1289
|
+
def gps_instant_to_index(self, instant: PipInstant) -> builtins.int:
|
|
1290
|
+
r"""
|
|
1291
|
+
return the a non-negative index that's closes to the time given
|
|
1292
|
+
if the time given is before the start, the return value is zero
|
|
1293
|
+
but the return value can be greater or equal to the length of the array
|
|
1294
|
+
and therefore out of bounds
|
|
1295
|
+
"""
|
|
1296
|
+
def timestamps(self) -> builtins.list[PipInstant]: ...
|
|
1297
|
+
def delta_t_seconds(self, t0: PipInstant) -> builtins.list[builtins.float]:
|
|
1298
|
+
r"""
|
|
1299
|
+
Get the timestamps transformed into a delta time from some t0
|
|
1300
|
+
return values in seconds as floating point
|
|
1301
|
+
Useful for getting relative timestamps to a point of time on a graph
|
|
1302
|
+
"""
|
|
1303
|
+
|
|
1304
|
+
class Timeline: ...
|
|
1305
|
+
|
|
1306
|
+
class Unit:
|
|
1307
|
+
r"""
|
|
1308
|
+
map a simple unit to a rational power
|
|
1309
|
+
"""
|
|
1310
|
+
|
|
1311
|
+
...
|
|
1312
|
+
|
|
451
1313
|
class UserMessage:
|
|
452
1314
|
@property
|
|
453
1315
|
def severity(self) -> Severity: ...
|
|
@@ -455,6 +1317,113 @@ class UserMessage:
|
|
|
455
1317
|
def message(self) -> builtins.str: ...
|
|
456
1318
|
def __repr__(self) -> builtins.str: ...
|
|
457
1319
|
|
|
1320
|
+
class ViewSet:
|
|
1321
|
+
@staticmethod
|
|
1322
|
+
def from_channels(channels: typing.Sequence[Channel]) -> ViewSet:
|
|
1323
|
+
r"""
|
|
1324
|
+
convenience function
|
|
1325
|
+
for turning a simple list of channels into a ViewSet
|
|
1326
|
+
"""
|
|
1327
|
+
@staticmethod
|
|
1328
|
+
def from_channel_names(
|
|
1329
|
+
channel_names: typing.Sequence[builtins.str], trend: TrendType
|
|
1330
|
+
) -> ViewSet:
|
|
1331
|
+
r"""
|
|
1332
|
+
convenience function
|
|
1333
|
+
for turning a simple list of channel names into a ViewSet with
|
|
1334
|
+
unresolved channel names
|
|
1335
|
+
"""
|
|
1336
|
+
@staticmethod
|
|
1337
|
+
def from_analysis_request_ids(
|
|
1338
|
+
request_ids: builtins.set[AnalysisRequestId],
|
|
1339
|
+
) -> ViewSet: ...
|
|
1340
|
+
def has_unresolved_channels(self) -> builtins.bool: ...
|
|
1341
|
+
def to_resolved_channel_names(self) -> builtins.list[builtins.str]:
|
|
1342
|
+
r"""
|
|
1343
|
+
Return the resolved names of any channels in the set
|
|
1344
|
+
Including expected resolved names of unresolved channels.
|
|
1345
|
+
"""
|
|
1346
|
+
|
|
1347
|
+
class AverageType(Enum):
|
|
1348
|
+
Fixed = ...
|
|
1349
|
+
Exponential = ...
|
|
1350
|
+
Accumulative = ...
|
|
1351
|
+
ConvergingExponential = ...
|
|
1352
|
+
|
|
1353
|
+
class ChannelType(Enum):
|
|
1354
|
+
r"""
|
|
1355
|
+
channel type is used in NDS queries. I'm not sure how
|
|
1356
|
+
important these are, or how they map to NDS records.
|
|
1357
|
+
"""
|
|
1358
|
+
|
|
1359
|
+
Unknown = ...
|
|
1360
|
+
Online = ...
|
|
1361
|
+
Raw = ...
|
|
1362
|
+
RDS = ...
|
|
1363
|
+
STrend = ...
|
|
1364
|
+
MTrend = ...
|
|
1365
|
+
TestPoint = ...
|
|
1366
|
+
Static = ...
|
|
1367
|
+
|
|
1368
|
+
class DataFlow(Enum):
|
|
1369
|
+
Unordered = ...
|
|
1370
|
+
r"""
|
|
1371
|
+
Data is sent repeatedly as
|
|
1372
|
+
more of the request is filled in.
|
|
1373
|
+
|
|
1374
|
+
Each response gives all the data available.
|
|
1375
|
+
|
|
1376
|
+
This is how NDScope expects data.
|
|
1377
|
+
"""
|
|
1378
|
+
Ordered = ...
|
|
1379
|
+
r"""
|
|
1380
|
+
Data is returned from the earliest time stamp to the latest.
|
|
1381
|
+
Data is returned only once.
|
|
1382
|
+
This is how DTT expects data.
|
|
1383
|
+
"""
|
|
1384
|
+
|
|
1385
|
+
class DecimationFilter(Enum):
|
|
1386
|
+
FirLS1 = ...
|
|
1387
|
+
FirPM1 = ...
|
|
1388
|
+
FirLS2 = ...
|
|
1389
|
+
FirLS3 = ...
|
|
1390
|
+
|
|
1391
|
+
class FFTWindow(Enum):
|
|
1392
|
+
Uniform = ...
|
|
1393
|
+
Hann = ...
|
|
1394
|
+
FlatTop = ...
|
|
1395
|
+
Welch = ...
|
|
1396
|
+
Bartlett = ...
|
|
1397
|
+
BlackmanHarris = ...
|
|
1398
|
+
Hamming = ...
|
|
1399
|
+
|
|
1400
|
+
class NDSDataType(Enum):
|
|
1401
|
+
r"""
|
|
1402
|
+
These values are taken from the NDS2 client
|
|
1403
|
+
With a hoped-for extension for
|
|
1404
|
+
Complex128
|
|
1405
|
+
Note the names for complex take the total size of the number
|
|
1406
|
+
Not the size of real or imaginary components as the actual NDS2 client does.
|
|
1407
|
+
|
|
1408
|
+
So an NDS2 Client type Complex32 is an NDSDataType::Complex64
|
|
1409
|
+
"""
|
|
1410
|
+
|
|
1411
|
+
Int16 = ...
|
|
1412
|
+
Int32 = ...
|
|
1413
|
+
Int64 = ...
|
|
1414
|
+
Float32 = ...
|
|
1415
|
+
Float64 = ...
|
|
1416
|
+
Complex64 = ...
|
|
1417
|
+
UInt32 = ...
|
|
1418
|
+
Complex128 = ...
|
|
1419
|
+
r"""
|
|
1420
|
+
not yet implemented in NDS or Arrakis
|
|
1421
|
+
"""
|
|
1422
|
+
UInt64 = ...
|
|
1423
|
+
UInt16 = ...
|
|
1424
|
+
Int8 = ...
|
|
1425
|
+
UInt8 = ...
|
|
1426
|
+
|
|
458
1427
|
class Severity(Enum):
|
|
459
1428
|
Debug = ...
|
|
460
1429
|
Notice = ...
|
|
@@ -464,3 +1433,48 @@ class Severity(Enum):
|
|
|
464
1433
|
ConfigurationError = ...
|
|
465
1434
|
FatalError = ...
|
|
466
1435
|
SystemError = ...
|
|
1436
|
+
|
|
1437
|
+
class TestType(Enum):
|
|
1438
|
+
r"""
|
|
1439
|
+
Parameters unique to the test type
|
|
1440
|
+
"""
|
|
1441
|
+
|
|
1442
|
+
FFTTools = ...
|
|
1443
|
+
SweptSine = ...
|
|
1444
|
+
SineResponse = ...
|
|
1445
|
+
TimeSeries = ...
|
|
1446
|
+
|
|
1447
|
+
class TrendStat(Enum):
|
|
1448
|
+
r"""
|
|
1449
|
+
Channel statistics type for a trend channel, or Raw for raw channels
|
|
1450
|
+
"""
|
|
1451
|
+
|
|
1452
|
+
Raw = ...
|
|
1453
|
+
r"""
|
|
1454
|
+
Raw data, not a trend channel
|
|
1455
|
+
"""
|
|
1456
|
+
Mean = ...
|
|
1457
|
+
Rms = ...
|
|
1458
|
+
r"""
|
|
1459
|
+
Root-mean-square
|
|
1460
|
+
"""
|
|
1461
|
+
Min = ...
|
|
1462
|
+
Max = ...
|
|
1463
|
+
N = ...
|
|
1464
|
+
r"""
|
|
1465
|
+
Number of data points in the trend bucket
|
|
1466
|
+
"""
|
|
1467
|
+
|
|
1468
|
+
def data_name(self) -> builtins.str:
|
|
1469
|
+
r"""
|
|
1470
|
+
used for names of exported data blocks
|
|
1471
|
+
"""
|
|
1472
|
+
|
|
1473
|
+
class TrendType(Enum):
|
|
1474
|
+
r"""
|
|
1475
|
+
The trend of a ChannelId
|
|
1476
|
+
"""
|
|
1477
|
+
|
|
1478
|
+
Raw = ...
|
|
1479
|
+
Minute = ...
|
|
1480
|
+
Second = ...
|
|
Binary file
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
dttlib-0.9.5.dist-info/METADATA,sha256=ZCJZY5byhSfiq8dp7brllqXC3ZzqzIxh16wmmaKWBe8,1134
|
|
2
|
+
dttlib-0.9.5.dist-info/WHEEL,sha256=xn6znAgmO8PVVzwyWAAxgHSpmHAZ7tfeYQ1aqDiFzEg,109
|
|
3
|
+
dttlib-0.9.5.dist-info/licenses/COPYING,sha256=jxnpJYe5OWc5-08NV3sStA6JFXKvqHwqTF14C_0Hwg4,1735
|
|
4
|
+
dttlib-0.9.5.dist-info/licenses/COPYING-GPL-3,sha256=_ILKi2_bGNTj6Fz9irWNG80_Gymr54KJWr2R1kdj-Oc,35068
|
|
5
|
+
dttlib.libs/libfftw3-7229d6f2.so.3,sha256=Ex3MhKZdYUUcoY8Jpo_V6MPRm_KzWt64b-ocxvEl2oA,2155385
|
|
6
|
+
dttlib.libs/libfftw3f-3af7c840.so.3,sha256=_HfvElJPM-WSatYaasYuVXHcIBXkwxLj6_rB9MgRix0,2193217
|
|
7
|
+
dttlib.libs/libgds-sigp-e0383b3d.so,sha256=WvqtrgK57AvmxmSsIYhflCcPWjzucEC55VQ2rFn4goQ,4411553
|
|
8
|
+
dttlib.libs/libndsclient-5ff49674.so.1,sha256=SGfyZdMIaAr0IRael2ezJAtdJDMOh6hLEjzWKyzC2do,89417
|
|
9
|
+
dttlib.libs/libndscxx-78126e77.so.1,sha256=AhQ61_vYZj6E4WWF47pWT6RCYMVoeIQF9h63_Mpwxcw,498241
|
|
10
|
+
dttlib.libs/libsasl2-86ae7ca3.so.2,sha256=Wd_1atKWOKbLoJe63KBw9dDOYWz5HFvzOtdCsaSXUNE,117305
|
|
11
|
+
dttlib/__init__.py,sha256=L7UhbeXBFuGgQPcm9TzTfdaOkGqKm-WPMQ5JEECDghE,107
|
|
12
|
+
dttlib/__init__.pyi,sha256=bkN0OOE7TlX-e0bNo4id5ulvxOzcpKeLiD_wTdbwpTY,46978
|
|
13
|
+
dttlib/dttlib.cpython-312-x86_64-linux-gnu.so,sha256=Hi_Gq6gpWpzxKydfs2LYu2_Q8UBn6hThebFyuFHQLY8,23891865
|
|
14
|
+
dttlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
dttlib-0.9.5.dist-info/RECORD,,
|
dttlib-0.5.3.dist-info/RECORD
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
dttlib-0.5.3.dist-info/METADATA,sha256=MCpfqYkdeOYPBmXyp131ByvrOCZl4KGHKy7z9IYvwyM,1134
|
|
2
|
-
dttlib-0.5.3.dist-info/WHEEL,sha256=vJ4HcEqb478gknQv8kyUo2wVo1YvkVZDq-BZcXyJ-0g,108
|
|
3
|
-
dttlib-0.5.3.dist-info/licenses/COPYING,sha256=jxnpJYe5OWc5-08NV3sStA6JFXKvqHwqTF14C_0Hwg4,1735
|
|
4
|
-
dttlib-0.5.3.dist-info/licenses/COPYING-GPL-3,sha256=_ILKi2_bGNTj6Fz9irWNG80_Gymr54KJWr2R1kdj-Oc,35068
|
|
5
|
-
dttlib.libs/libcds-8ba34ad2.so.0.1.4,sha256=ZttyqHs-dCkFZIwKg10wCUTWsrxaMdsQ5mow59FSdbQ,72089
|
|
6
|
-
dttlib.libs/libfftw3-7229d6f2.so.3,sha256=Ex3MhKZdYUUcoY8Jpo_V6MPRm_KzWt64b-ocxvEl2oA,2155385
|
|
7
|
-
dttlib.libs/libfftw3f-3af7c840.so.3,sha256=_HfvElJPM-WSatYaasYuVXHcIBXkwxLj6_rB9MgRix0,2193217
|
|
8
|
-
dttlib.libs/libgds-sigp-e0383b3d.so,sha256=WvqtrgK57AvmxmSsIYhflCcPWjzucEC55VQ2rFn4goQ,4411553
|
|
9
|
-
dttlib.libs/libndsclient-5ff49674.so.1,sha256=SGfyZdMIaAr0IRael2ezJAtdJDMOh6hLEjzWKyzC2do,89417
|
|
10
|
-
dttlib.libs/libndscxx-78126e77.so.1,sha256=AhQ61_vYZj6E4WWF47pWT6RCYMVoeIQF9h63_Mpwxcw,498241
|
|
11
|
-
dttlib.libs/libpcre-2092419b.so.3,sha256=0BEAwjkEaaC1O4NhZCstbXEoeL-zE1Y36VnFKuRjcz4,468241
|
|
12
|
-
dttlib.libs/libpython3-25529256.12.so.1.0,sha256=bcz8plGVK8y-oHvCtBCuRhhx-vI9tEeh7dOMrfNf1os,39151545
|
|
13
|
-
dttlib.libs/libsasl2-86ae7ca3.so.2,sha256=Wd_1atKWOKbLoJe63KBw9dDOYWz5HFvzOtdCsaSXUNE,117305
|
|
14
|
-
dttlib/__init__.py,sha256=L7UhbeXBFuGgQPcm9TzTfdaOkGqKm-WPMQ5JEECDghE,107
|
|
15
|
-
dttlib/__init__.pyi,sha256=gsZLnv4sNzSfPGEGTLJOrvDSiB-ltFWCO-EZGoc-Vyk,15673
|
|
16
|
-
dttlib/dttlib.cpython-312-x86_64-linux-gnu.so,sha256=xN8f6KOnjp3kRiU-QE6kErcPK1EI6gA4QLqSOuWeflA,19287961
|
|
17
|
-
dttlib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
dttlib-0.5.3.dist-info/RECORD,,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|