iqm-station-control-client 2.16__py3-none-any.whl → 2.18__py3-none-any.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.
- iqm/station_control/client/__init__.py +1 -0
- iqm/station_control/client/list_models.py +1 -0
- iqm/station_control/client/serializers/__init__.py +1 -0
- iqm/station_control/client/serializers/channel_property_serializer.py +3 -1
- iqm/station_control/client/serializers/datetime_serializers.py +1 -0
- iqm/station_control/client/serializers/playlist_serializers.py +2 -2
- iqm/station_control/client/serializers/run_serializers.py +4 -5
- iqm/station_control/client/serializers/setting_node_serializer.py +3 -3
- iqm/station_control/client/serializers/struct_serializer.py +1 -3
- iqm/station_control/client/serializers/sweep_serializers.py +5 -6
- iqm/station_control/client/serializers/task_serializers.py +3 -1
- iqm/station_control/client/station_control.py +21 -7
- iqm/station_control/client/utils.py +1 -0
- iqm/station_control/interface/list_with_meta.py +1 -0
- iqm/station_control/interface/models/__init__.py +1 -0
- iqm/station_control/interface/models/observation.py +1 -0
- iqm/station_control/interface/models/observation_set.py +1 -0
- iqm/station_control/interface/models/run.py +1 -3
- iqm/station_control/interface/models/sequence.py +1 -0
- iqm/station_control/interface/models/sweep.py +3 -1
- iqm/station_control/interface/models/type_aliases.py +1 -0
- iqm/station_control/interface/pydantic_base.py +2 -1
- {iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/METADATA +1 -1
- iqm_station_control_client-2.18.dist-info/RECORD +29 -0
- iqm_station_control_client-2.16.dist-info/RECORD +0 -29
- {iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/LICENSE.txt +0 -0
- {iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/WHEEL +0 -0
- {iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/top_level.txt +0 -0
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Module for station control client serialization and deserialization."""
|
|
15
|
+
|
|
15
16
|
from iqm.station_control.client.serializers.channel_property_serializer import serialize_channel_properties
|
|
16
17
|
from iqm.station_control.client.serializers.datetime_serializers import deserialize_datetime, serialize_datetime
|
|
17
18
|
from iqm.station_control.client.serializers.run_serializers import (
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
# is prohibited without IQM Finland Oy’s prior written permission.
|
|
7
7
|
# ********************************************************************************
|
|
8
8
|
"""Serializers and deserializers for :class:`~iqm.models.channel_properties.channel_properties.ChannelProperties`"""
|
|
9
|
-
# pylint: disable=protected-access,no-member
|
|
10
9
|
|
|
11
10
|
from collections.abc import Iterable
|
|
12
11
|
|
|
@@ -34,6 +33,7 @@ def serialize_channel_properties(
|
|
|
34
33
|
|
|
35
34
|
Returns:
|
|
36
35
|
``ChannelPropertyDictionary``
|
|
36
|
+
|
|
37
37
|
"""
|
|
38
38
|
pb_channel_prop_dict = pb.ChannelPropertyDictionary()
|
|
39
39
|
for name, channel_properties in channel_property_dictionary.items():
|
|
@@ -98,6 +98,7 @@ def deserialize_channel_properties(
|
|
|
98
98
|
|
|
99
99
|
Returns:
|
|
100
100
|
dictionary of channel properties
|
|
101
|
+
|
|
101
102
|
"""
|
|
102
103
|
channel_prop_dict = {}
|
|
103
104
|
for name, props in channel_property_dictionary.channel_property_mapping.items():
|
|
@@ -141,6 +142,7 @@ def unpack_channel_properties(payload: bytes, convert_instructions: bool = True)
|
|
|
141
142
|
payload: protobuf serialised payload of channel property dictionary.
|
|
142
143
|
convert_instructions: whether to convert string representation of instruction types to actual
|
|
143
144
|
python types.
|
|
145
|
+
|
|
144
146
|
"""
|
|
145
147
|
pb_channel_properties = pb.ChannelPropertyDictionary()
|
|
146
148
|
pb_channel_properties.ParseFromString(payload)
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Serializers and deserializers for :class:`~iqm.models.playlist.playlist.Playlist`"""
|
|
15
|
-
# pylint: disable=protected-access,no-member
|
|
16
15
|
|
|
17
16
|
import iqm.data_definitions.common.v1.playlist_pb2 as pb
|
|
18
17
|
from iqm.models.playlist import ChannelDescription, IQChannelConfig, RealChannelConfig, Segment, instructions, waveforms
|
|
@@ -147,6 +146,7 @@ def pack_playlist(playlist: Playlist) -> pb.Playlist:
|
|
|
147
146
|
|
|
148
147
|
Returns:
|
|
149
148
|
``playlist`` in protobuf format
|
|
149
|
+
|
|
150
150
|
"""
|
|
151
151
|
proto_playlist = pb.Playlist()
|
|
152
152
|
|
|
@@ -236,7 +236,6 @@ def _proto_to_acqusition_method(
|
|
|
236
236
|
|
|
237
237
|
|
|
238
238
|
def _proto_to_waveform(waveform: pb.Waveform) -> waveforms.CanonicalWaveform:
|
|
239
|
-
# pylint: disable=too-many-return-statements
|
|
240
239
|
wf_type = waveform.WhichOneof("waveform_description")
|
|
241
240
|
match wf_type:
|
|
242
241
|
case "samples":
|
|
@@ -350,6 +349,7 @@ def unpack_playlist(proto_playlist: pb.Playlist) -> Playlist:
|
|
|
350
349
|
|
|
351
350
|
Returns:
|
|
352
351
|
``proto_playlist`` in runtime representation
|
|
352
|
+
|
|
353
353
|
"""
|
|
354
354
|
playlist = Playlist()
|
|
355
355
|
for channel in proto_playlist.channels.values():
|
|
@@ -12,17 +12,16 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Serializers and deserializers for run related models."""
|
|
15
|
-
import uuid
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
from exa.common.sweep.database_serialization import decode_and_validate_sweeps, encode_nd_sweeps
|
|
19
|
-
from exa.common.sweep.util import convert_sweeps_to_list_of_tuples
|
|
16
|
+
import uuid
|
|
20
17
|
|
|
21
18
|
# FIXME: Re-enable `no-name-in-module` after pylint supports .pyi files: https://github.com/PyCQA/pylint/issues/4987
|
|
22
|
-
# pylint: disable=no-name-in-module
|
|
23
19
|
from iqm.data_definitions.station_control.v1.sweep_request_pb2 import SweepRequest as SweepDefinitionProto
|
|
24
20
|
from iqm.data_definitions.station_control.v2.run_definition_pb2 import RunDefinition as RunDefinitionProto
|
|
25
21
|
|
|
22
|
+
from exa.common.api import proto_serialization
|
|
23
|
+
from exa.common.sweep.database_serialization import decode_and_validate_sweeps, encode_nd_sweeps
|
|
24
|
+
from exa.common.sweep.util import convert_sweeps_to_list_of_tuples
|
|
26
25
|
from iqm.station_control.client.serializers.datetime_serializers import deserialize_datetime, serialize_datetime
|
|
27
26
|
from iqm.station_control.client.serializers.struct_serializer import deserialize_struct, serialize_struct
|
|
28
27
|
from iqm.station_control.client.serializers.sweep_serializers import (
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Serializers and deserializers for setting node related models."""
|
|
15
|
-
from exa.common.api import proto_serialization
|
|
16
|
-
from exa.common.data.setting_node import SettingNode
|
|
17
15
|
|
|
18
16
|
# FIXME: Re-enable `no-name-in-module` after pylint supports .pyi files: https://github.com/PyCQA/pylint/issues/4987
|
|
19
|
-
# pylint: disable=no-name-in-module
|
|
20
17
|
from iqm.data_definitions.common.v1.setting_pb2 import SettingNode as SettingNodeProto
|
|
21
18
|
|
|
19
|
+
from exa.common.api import proto_serialization
|
|
20
|
+
from exa.common.data.setting_node import SettingNode
|
|
21
|
+
|
|
22
22
|
|
|
23
23
|
def deserialize_setting_node(setting_node_str: bytes) -> SettingNode:
|
|
24
24
|
"""Convert binary string into SettingNode."""
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
We use custom Struct model instead of standard Struct from protobuf,
|
|
17
17
|
since standard Struct doesn't support integers but instead casts them always to floats.
|
|
18
18
|
"""
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
import iqm.data_definitions.common.v1.struct_pb2 as pb
|
|
21
21
|
|
|
22
22
|
|
|
@@ -35,7 +35,6 @@ def deserialize_struct(proto: pb.Struct) -> dict:
|
|
|
35
35
|
|
|
36
36
|
def _serialize_value(value: None | float | str | bool | dict | list | int) -> pb.Value:
|
|
37
37
|
"""Serialize a value into a Value protobuf representation."""
|
|
38
|
-
# pylint: disable=too-many-return-statements
|
|
39
38
|
if value is None:
|
|
40
39
|
return pb.Value(null_value=True)
|
|
41
40
|
if isinstance(value, float):
|
|
@@ -55,7 +54,6 @@ def _serialize_value(value: None | float | str | bool | dict | list | int) -> pb
|
|
|
55
54
|
|
|
56
55
|
def _deserialize_value(proto: pb.Value) -> None | float | str | bool | dict | list | int:
|
|
57
56
|
"""Deserialize a Value protobuf representation into a value."""
|
|
58
|
-
# pylint: disable=too-many-return-statements
|
|
59
57
|
which = proto.WhichOneof("kind")
|
|
60
58
|
if which == "null_value":
|
|
61
59
|
return None
|
|
@@ -12,20 +12,19 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Serializers and deserializers for sweep related models."""
|
|
15
|
+
|
|
15
16
|
import json
|
|
16
17
|
import uuid
|
|
17
18
|
|
|
18
|
-
from exa.common.api import proto_serialization
|
|
19
|
-
from exa.common.api.model.setting_node_model import SettingNodeModel
|
|
20
|
-
from exa.common.api.proto_serialization import array
|
|
21
|
-
from exa.common.sweep.database_serialization import decode_and_validate_sweeps, encode_nd_sweeps
|
|
22
|
-
|
|
23
19
|
# FIXME: Re-enable `no-name-in-module` after pylint supports .pyi files: https://github.com/PyCQA/pylint/issues/4987
|
|
24
|
-
# pylint: disable=no-name-in-module
|
|
25
20
|
from iqm.data_definitions.common.v1.data_types_pb2 import Arrays as ArraysProto
|
|
26
21
|
from iqm.data_definitions.station_control.v1.sweep_request_pb2 import SweepRequest as SweepDefinitionProto
|
|
27
22
|
from iqm.data_definitions.station_control.v2.task_service_pb2 import SweepResultsResponse as SweepResultsResponseProto
|
|
28
23
|
|
|
24
|
+
from exa.common.api import proto_serialization
|
|
25
|
+
from exa.common.api.model.setting_node_model import SettingNodeModel
|
|
26
|
+
from exa.common.api.proto_serialization import array
|
|
27
|
+
from exa.common.sweep.database_serialization import decode_and_validate_sweeps, encode_nd_sweeps
|
|
29
28
|
from iqm.station_control.client.serializers.datetime_serializers import deserialize_datetime, serialize_datetime
|
|
30
29
|
from iqm.station_control.client.serializers.playlist_serializers import pack_playlist, unpack_playlist
|
|
31
30
|
from iqm.station_control.interface.models import SweepData, SweepDefinition, SweepResults, SweepStatus
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Serializers and deserializers for task related models."""
|
|
15
|
+
|
|
15
16
|
from typing import Any
|
|
16
17
|
import uuid
|
|
17
18
|
|
|
18
19
|
# FIXME: Re-enable `no-name-in-module` after pylint supports .pyi files: https://github.com/PyCQA/pylint/issues/4987
|
|
19
|
-
# pylint: disable=no-name-in-module
|
|
20
20
|
from iqm.data_definitions.station_control.v1.task_service_pb2 import SweepTaskRequest as SweepTaskRequestProto
|
|
21
21
|
|
|
22
22
|
from iqm.station_control.client.serializers.run_serializers import serialize_run_definition
|
|
@@ -34,6 +34,7 @@ def serialize_run_task_request(run_definition: RunDefinition, queue_name: str) -
|
|
|
34
34
|
Returns:
|
|
35
35
|
:class:`~iqm.data_definitions.station_control.v1.task_service_pb2.SweepTaskRequest`
|
|
36
36
|
encoded into a bitstring.
|
|
37
|
+
|
|
37
38
|
"""
|
|
38
39
|
payload = serialize_run_definition(run_definition)
|
|
39
40
|
return _serialize_task_request(payload, queue_name, run_definition.sweep_definition.sweep_id)
|
|
@@ -49,6 +50,7 @@ def serialize_sweep_task_request(sweep_definition: SweepDefinition, queue_name:
|
|
|
49
50
|
Returns:
|
|
50
51
|
:class:`~iqm.data_definitions.station_control.v1.task_service_pb2.SweepTaskRequest`
|
|
51
52
|
encoded into a bitstring.
|
|
53
|
+
|
|
52
54
|
"""
|
|
53
55
|
payload = serialize_sweep_definition(sweep_definition)
|
|
54
56
|
return _serialize_task_request(payload, queue_name, sweep_definition.sweep_id)
|
|
@@ -12,9 +12,10 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Station control client implementation."""
|
|
15
|
+
|
|
15
16
|
from collections.abc import Callable, Sequence
|
|
16
|
-
from importlib.metadata import version
|
|
17
17
|
from functools import cache
|
|
18
|
+
from importlib.metadata import version
|
|
18
19
|
import json
|
|
19
20
|
import logging
|
|
20
21
|
import os
|
|
@@ -22,15 +23,15 @@ from time import sleep
|
|
|
22
23
|
from typing import Any, TypeVar
|
|
23
24
|
import uuid
|
|
24
25
|
|
|
25
|
-
from exa.common.data.setting_node import SettingNode
|
|
26
|
-
from exa.common.errors.exa_error import RequestError
|
|
27
|
-
from exa.common.qcm_data.chad_model import CHAD
|
|
28
|
-
from exa.common.qcm_data.qcm_data_client import QCMDataClient
|
|
29
26
|
from iqm.models.channel_properties import ChannelProperties
|
|
30
27
|
from opentelemetry import propagate, trace
|
|
31
28
|
from packaging.version import Version, parse
|
|
32
29
|
import requests
|
|
33
30
|
|
|
31
|
+
from exa.common.data.setting_node import SettingNode
|
|
32
|
+
from exa.common.errors.exa_error import RequestError
|
|
33
|
+
from exa.common.qcm_data.chad_model import CHAD
|
|
34
|
+
from exa.common.qcm_data.qcm_data_client import QCMDataClient
|
|
34
35
|
from iqm.station_control.client.list_models import (
|
|
35
36
|
DutFieldDataList,
|
|
36
37
|
DutList,
|
|
@@ -84,7 +85,6 @@ logger = logging.getLogger(__name__)
|
|
|
84
85
|
T = TypeVar("T")
|
|
85
86
|
|
|
86
87
|
|
|
87
|
-
# pylint: disable=too-many-public-methods,method-cache-max-size-none)
|
|
88
88
|
class StationControlClient:
|
|
89
89
|
"""Station control client implementation.
|
|
90
90
|
|
|
@@ -137,6 +137,7 @@ class StationControlClient:
|
|
|
137
137
|
Generic query methods will return a list of objects, but with additional (optional) "meta" attribute,
|
|
138
138
|
which contains metadata, like pagination details. The client can ignore this data,
|
|
139
139
|
or use it to implement pagination logic for example to fetch all results available.
|
|
140
|
+
|
|
140
141
|
"""
|
|
141
142
|
|
|
142
143
|
def __init__(self, root_url: str, get_token_callback: Callable[[], str] | None = None):
|
|
@@ -195,6 +196,7 @@ class StationControlClient:
|
|
|
195
196
|
|
|
196
197
|
Returns:
|
|
197
198
|
Mapping from channel name to AWGProperties or ReadoutProperties
|
|
199
|
+
|
|
198
200
|
"""
|
|
199
201
|
headers = {"accept": "application/octet-stream"}
|
|
200
202
|
response = self._send_request(requests.get, "channel-properties/", headers=headers)
|
|
@@ -254,6 +256,7 @@ class StationControlClient:
|
|
|
254
256
|
|
|
255
257
|
Raises:
|
|
256
258
|
RequestError if submitting a sweep failed.
|
|
259
|
+
|
|
257
260
|
"""
|
|
258
261
|
data = serialize_sweep_task_request(sweep_definition, queue_name="sweeps")
|
|
259
262
|
headers = {"Content-Type": "application/octet-stream"}
|
|
@@ -330,6 +333,7 @@ class StationControlClient:
|
|
|
330
333
|
|
|
331
334
|
Returns:
|
|
332
335
|
Queried runs with some query related metadata.
|
|
336
|
+
|
|
333
337
|
"""
|
|
334
338
|
params = self._clean_query_parameters(RunData, **kwargs)
|
|
335
339
|
response = self._send_request(requests.get, "runs", params=params)
|
|
@@ -346,12 +350,12 @@ class StationControlClient:
|
|
|
346
350
|
|
|
347
351
|
Returns:
|
|
348
352
|
Created observations, each including also the database created fields like ID and timestamps.
|
|
353
|
+
|
|
349
354
|
"""
|
|
350
355
|
data = ObservationDefinitionList(observation_definitions).model_dump_json()
|
|
351
356
|
response = self._send_request(requests.post, "observations", data=data)
|
|
352
357
|
return self._create_list_with_meta(response, ObservationDataList)
|
|
353
358
|
|
|
354
|
-
# pylint: disable=too-many-arguments
|
|
355
359
|
def get_observations(
|
|
356
360
|
self,
|
|
357
361
|
*,
|
|
@@ -392,6 +396,7 @@ class StationControlClient:
|
|
|
392
396
|
|
|
393
397
|
Returns:
|
|
394
398
|
Observations, each including also the database created fields like ID and timestamps.
|
|
399
|
+
|
|
395
400
|
"""
|
|
396
401
|
kwargs = {
|
|
397
402
|
"mode": mode,
|
|
@@ -429,6 +434,7 @@ class StationControlClient:
|
|
|
429
434
|
|
|
430
435
|
Returns:
|
|
431
436
|
Queried observations with some query related metadata.
|
|
437
|
+
|
|
432
438
|
"""
|
|
433
439
|
params = self._clean_query_parameters(ObservationData, **kwargs)
|
|
434
440
|
response = self._send_request(requests.get, "observations", params=params)
|
|
@@ -443,6 +449,7 @@ class StationControlClient:
|
|
|
443
449
|
|
|
444
450
|
Returns:
|
|
445
451
|
Updated observations, each including also the database created fields like ID and timestamps.
|
|
452
|
+
|
|
446
453
|
"""
|
|
447
454
|
data = ObservationUpdateList(observation_updates).model_dump_json()
|
|
448
455
|
response = self._send_request(requests.patch, "observations", data=data)
|
|
@@ -467,6 +474,7 @@ class StationControlClient:
|
|
|
467
474
|
|
|
468
475
|
Returns:
|
|
469
476
|
Queried observation sets with some query related metadata
|
|
477
|
+
|
|
470
478
|
"""
|
|
471
479
|
params = self._clean_query_parameters(ObservationSetData, **kwargs)
|
|
472
480
|
response = self._send_request(requests.get, "observation-sets", params=params)
|
|
@@ -483,6 +491,7 @@ class StationControlClient:
|
|
|
483
491
|
|
|
484
492
|
Raises:
|
|
485
493
|
ExaError: If creation failed.
|
|
494
|
+
|
|
486
495
|
"""
|
|
487
496
|
data = observation_set_definition.model_dump_json()
|
|
488
497
|
response = self._send_request(requests.post, "observation-sets", data=data)
|
|
@@ -499,6 +508,7 @@ class StationControlClient:
|
|
|
499
508
|
|
|
500
509
|
Raises:
|
|
501
510
|
ExaError: If retrieval failed.
|
|
511
|
+
|
|
502
512
|
"""
|
|
503
513
|
response = self._send_request(requests.get, f"observation-sets/{observation_set_id}")
|
|
504
514
|
return ObservationSetData.model_validate(response.json())
|
|
@@ -514,6 +524,7 @@ class StationControlClient:
|
|
|
514
524
|
|
|
515
525
|
Raises:
|
|
516
526
|
ExaError: If updating failed.
|
|
527
|
+
|
|
517
528
|
"""
|
|
518
529
|
data = observation_set_update.model_dump_json()
|
|
519
530
|
response = self._send_request(requests.patch, "observation-sets", data=data)
|
|
@@ -529,6 +540,7 @@ class StationControlClient:
|
|
|
529
540
|
|
|
530
541
|
Raises:
|
|
531
542
|
ExaError: If finalization failed.
|
|
543
|
+
|
|
532
544
|
"""
|
|
533
545
|
self._send_request(requests.post, f"observation-sets/{observation_set_id}/finalize")
|
|
534
546
|
|
|
@@ -540,6 +552,7 @@ class StationControlClient:
|
|
|
540
552
|
|
|
541
553
|
Returns:
|
|
542
554
|
Observations belonging to the given observation set.
|
|
555
|
+
|
|
543
556
|
"""
|
|
544
557
|
response = self._send_request(requests.get, f"observation-sets/{observation_set_id}/observations")
|
|
545
558
|
return ObservationLiteList.model_validate(response.json())
|
|
@@ -567,6 +580,7 @@ class StationControlClient:
|
|
|
567
580
|
|
|
568
581
|
Returns:
|
|
569
582
|
Sequence metadatas with some query related metadata.
|
|
583
|
+
|
|
570
584
|
"""
|
|
571
585
|
params = self._clean_query_parameters(SequenceMetadataData, **kwargs)
|
|
572
586
|
response = self._send_request(requests.get, "sequence-metadatas", params=params)
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Station control interface models."""
|
|
15
|
+
|
|
15
16
|
from iqm.station_control.interface.models.dut import DutData, DutFieldData
|
|
16
17
|
from iqm.station_control.interface.models.observation import (
|
|
17
18
|
ObservationData,
|
|
@@ -12,17 +12,15 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Run related station control interface models."""
|
|
15
|
+
|
|
15
16
|
from dataclasses import dataclass
|
|
16
17
|
from datetime import datetime
|
|
17
18
|
from typing import Any
|
|
18
19
|
import uuid
|
|
19
20
|
|
|
20
21
|
from exa.common.sweep.util import NdSweep
|
|
21
|
-
|
|
22
22
|
from iqm.station_control.interface.models.sweep import SweepData, SweepDefinition
|
|
23
23
|
|
|
24
|
-
# pylint: disable=too-many-instance-attributes
|
|
25
|
-
|
|
26
24
|
|
|
27
25
|
@dataclass(kw_only=True)
|
|
28
26
|
class RunBase:
|
|
@@ -12,15 +12,17 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
"""Sweep related station control interface models."""
|
|
15
|
+
|
|
15
16
|
from dataclasses import dataclass
|
|
16
17
|
from datetime import datetime
|
|
17
18
|
from enum import Enum
|
|
18
19
|
import uuid
|
|
19
20
|
import warnings
|
|
20
21
|
|
|
22
|
+
from iqm.models.playlist import Playlist
|
|
23
|
+
|
|
21
24
|
from exa.common.data.setting_node import SettingNode
|
|
22
25
|
from exa.common.sweep.util import NdSweep
|
|
23
|
-
from iqm.models.playlist import Playlist
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
@dataclass(kw_only=True)
|
|
@@ -24,7 +24,8 @@ from pydantic_core import core_schema
|
|
|
24
24
|
class PydanticBase(BaseModel):
|
|
25
25
|
"""Pydantic base model to change the behaviour of pydantic globally.
|
|
26
26
|
Note that setting model_config in child classes will merge the configs rather than override this one.
|
|
27
|
-
https://docs.pydantic.dev/latest/concepts/config/#change-behaviour-globally
|
|
27
|
+
https://docs.pydantic.dev/latest/concepts/config/#change-behaviour-globally
|
|
28
|
+
"""
|
|
28
29
|
|
|
29
30
|
model_config = ConfigDict(
|
|
30
31
|
extra="ignore", # Ignore any extra attributes
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
iqm/station_control/client/__init__.py,sha256=BmBIBdZa10r-IWCFzZ1-0DG6GQKPIXqGXltfXop4ZeQ,942
|
|
2
|
+
iqm/station_control/client/list_models.py,sha256=SjD0DbCrM9z1SSuGoQS83lyJmDLuMOatpJUoW8itW9s,2335
|
|
3
|
+
iqm/station_control/client/station_control.py,sha256=CKeqlGp1TEVRfW9NqYo22jXW3H_iBtDFIpxK0alSMN8,35021
|
|
4
|
+
iqm/station_control/client/utils.py,sha256=3VVLCXt6rcKNQc4HerlMxpxkRfTFMYCwOQHF2DS1OG8,1143
|
|
5
|
+
iqm/station_control/client/serializers/__init__.py,sha256=8os3EGOtNTRFaviZdGwDyMt9GUpM3ZP7icPKAxOg1qg,1438
|
|
6
|
+
iqm/station_control/client/serializers/channel_property_serializer.py,sha256=ChlX8B-blM5hjv3pUExHOd-vE3O_myPwILu36KZYYNU,7121
|
|
7
|
+
iqm/station_control/client/serializers/datetime_serializers.py,sha256=Ke6VRHa_359xYxXTegs8iweoDfuGeBDgkoOtGBbyC1Q,1122
|
|
8
|
+
iqm/station_control/client/serializers/playlist_serializers.py,sha256=S8RuKdqeJxqUf7_kqTDXIKnuo6g-WpzGY7cesSQa3Rw,18086
|
|
9
|
+
iqm/station_control/client/serializers/run_serializers.py,sha256=4zH0I5EvvaP7wgLMprXXWa36nAPO4Lv0fPkCrDC_v-g,6698
|
|
10
|
+
iqm/station_control/client/serializers/setting_node_serializer.py,sha256=m4Sbm8Qr3GiSNiE-Jh8gFEgfscfN1xxELb0vCa9cK70,1197
|
|
11
|
+
iqm/station_control/client/serializers/struct_serializer.py,sha256=QztBsbRlRG_UrtpQLE3bi0WKEVn48kVB91H1g26PvqQ,3270
|
|
12
|
+
iqm/station_control/client/serializers/sweep_serializers.py,sha256=yzzBzxQeIk-oPOZ3j7n0qJ646y2iEa3TtH7Vj5updK0,5780
|
|
13
|
+
iqm/station_control/client/serializers/task_serializers.py,sha256=mUi6IeNBUQnWy5U65C2fL597lcee71YAo9o8VM-aCnE,2712
|
|
14
|
+
iqm/station_control/interface/__init__.py,sha256=MIQla-cBKPbZqBkp-LNyPfjiV0gzf-IFEwrMMhsnKlg,785
|
|
15
|
+
iqm/station_control/interface/list_with_meta.py,sha256=GAXIDEXKeua6-2FoQ_O1tkhx-d8pBMGHaIkdvgg-cag,1185
|
|
16
|
+
iqm/station_control/interface/pydantic_base.py,sha256=4Gl9tnClnmwh2XQ0bJ0aN7w0QqX_lJf8l1Ybc4yL7eY,2985
|
|
17
|
+
iqm/station_control/interface/models/__init__.py,sha256=PbENb1YhX2OLGTiJNvj70e5Acj7f8jMP3hp5ncH5U-0,1527
|
|
18
|
+
iqm/station_control/interface/models/dut.py,sha256=dd1SpcsBe4P057jvcPqv39SjzekewwP07hThFe5ulNA,1216
|
|
19
|
+
iqm/station_control/interface/models/observation.py,sha256=XP76qSjjEIUOEh78k4vIqFSAWI71qiX190I6NCpyJKQ,3228
|
|
20
|
+
iqm/station_control/interface/models/observation_set.py,sha256=Ko2o3-9I38NfjNF2IQPcwfbwpkTQ3PIU7fUiSaDleX8,3031
|
|
21
|
+
iqm/station_control/interface/models/run.py,sha256=m-iE3QMPQUOF7bsw8JCAM1Bd6bDVhAgxrtc_AC7rCkc,4097
|
|
22
|
+
iqm/station_control/interface/models/sequence.py,sha256=uOqMwF1x-vW6UHs2WnPD3PsuSgV3a8OTAsgn_4UENLw,2723
|
|
23
|
+
iqm/station_control/interface/models/sweep.py,sha256=FhxR-1nzRa5vp0vbFKOlFqrqvViPk30Qh0NmSMtib-g,3744
|
|
24
|
+
iqm/station_control/interface/models/type_aliases.py,sha256=3LB9viZVi8osavY5kKF8TH1crayG7-MLjgBqXDCqL2s,1018
|
|
25
|
+
iqm_station_control_client-2.18.dist-info/LICENSE.txt,sha256=R6Q7eUrLyoCQgWYorQ8WJmVmWKYU3dxA3jYUp0wwQAw,11332
|
|
26
|
+
iqm_station_control_client-2.18.dist-info/METADATA,sha256=GsQdbjJpOm6bZaN8NQrgf1fyK2fGyy_I_zJewUxg9E0,13971
|
|
27
|
+
iqm_station_control_client-2.18.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
|
28
|
+
iqm_station_control_client-2.18.dist-info/top_level.txt,sha256=NB4XRfyDS6_wG9gMsyX-9LTU7kWnTQxNvkbzIxGv3-c,4
|
|
29
|
+
iqm_station_control_client-2.18.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
iqm/station_control/client/__init__.py,sha256=Rc-GZ5J2SCAxsC4dYP4FwMuprYvzKXu6jDHxhJrFoxg,941
|
|
2
|
-
iqm/station_control/client/list_models.py,sha256=ijfp7F8mHHUvAxNnZEUAIoQGzGTmWwdJjab4S0JYLyI,2334
|
|
3
|
-
iqm/station_control/client/station_control.py,sha256=cvyd1xm9m4GNkQlCXWkZ50XCMMyd1vPeLEsuDLVRKpM,35116
|
|
4
|
-
iqm/station_control/client/utils.py,sha256=r30tFy16WS1CxLX_yNuvPICer5xCJ-swz3cot9A7cbk,1142
|
|
5
|
-
iqm/station_control/client/serializers/__init__.py,sha256=cNrJ3e9uJ70BmnFQDkuL58A43GcwdUwqCkqcdTWW_Do,1437
|
|
6
|
-
iqm/station_control/client/serializers/channel_property_serializer.py,sha256=JRdXcyQykxnKlq5TDmSa4uNbjgGPyckmWo-QQ8NcE1U,7163
|
|
7
|
-
iqm/station_control/client/serializers/datetime_serializers.py,sha256=3fBcrex1xqOcl6E1A7UPKVBOBMQqZ0TP9bMcA1ArqZU,1121
|
|
8
|
-
iqm/station_control/client/serializers/playlist_serializers.py,sha256=t0vQ4V17apPCJ35BY9RDdWWsiUCZq1k42t5e08iu5ec,18178
|
|
9
|
-
iqm/station_control/client/serializers/run_serializers.py,sha256=bFGNtRjcAGUN-uM2E6R09oqxpGPdwbQNGghlaIlU1d4,6734
|
|
10
|
-
iqm/station_control/client/serializers/setting_node_serializer.py,sha256=XsE0acglaw_vlXh4Dh5RyVsaeI4OJfgA2NY6HZU0CY0,1232
|
|
11
|
-
iqm/station_control/client/serializers/struct_serializer.py,sha256=V1OYECPSIkAAv89jU13YcVvlgrngpRn2QWF0nvVKCNA,3395
|
|
12
|
-
iqm/station_control/client/serializers/sweep_serializers.py,sha256=EsqcX0A5AGFUFyXGM0ArezGgwkwDOU_u2N6zIDoFLhE,5816
|
|
13
|
-
iqm/station_control/client/serializers/task_serializers.py,sha256=JGOu_lF4FOqSbBEiw5zWDjqJeQ96QfJEoH45-hbOLIo,2745
|
|
14
|
-
iqm/station_control/interface/__init__.py,sha256=MIQla-cBKPbZqBkp-LNyPfjiV0gzf-IFEwrMMhsnKlg,785
|
|
15
|
-
iqm/station_control/interface/list_with_meta.py,sha256=p7oLA_cRsAKRe_T_eY-9JMDR2ALno_E8U4YUd_nLXmc,1184
|
|
16
|
-
iqm/station_control/interface/pydantic_base.py,sha256=ScsBt1m9Ie36SK_rIXLJKiQrXiSg-JrJc1oqLwPNmH0,2980
|
|
17
|
-
iqm/station_control/interface/models/__init__.py,sha256=PX4b8aU65tx55tFbhFIdgv1fLZq5zfy2rkePKl9ndb0,1526
|
|
18
|
-
iqm/station_control/interface/models/dut.py,sha256=dd1SpcsBe4P057jvcPqv39SjzekewwP07hThFe5ulNA,1216
|
|
19
|
-
iqm/station_control/interface/models/observation.py,sha256=Z-OZ0fzyODVRKW5FcNMb0LYUa-zrPQ_Y3G_xa_LyymM,3227
|
|
20
|
-
iqm/station_control/interface/models/observation_set.py,sha256=W0rHj_9KCgaCecfk4tDFcTfDvxa26dtGCMta66cxkpQ,3030
|
|
21
|
-
iqm/station_control/interface/models/run.py,sha256=GQNSUHt-zvL4ns6P5zFL75UEPEYGaB_7revaIEb5M_M,4145
|
|
22
|
-
iqm/station_control/interface/models/sequence.py,sha256=1nRMHAbjY6uV4JgAZ5LiUiPoB_gBp8u1A8KAjxARyP8,2722
|
|
23
|
-
iqm/station_control/interface/models/sweep.py,sha256=hVwZoudKsRPM5jPaVCM9yf3sBdzS5haUhQ3h7Uyz5sg,3742
|
|
24
|
-
iqm/station_control/interface/models/type_aliases.py,sha256=MbYI-A024nqfr8hFj_2EoP8crOXSiOkWWzKUChOoAgo,1017
|
|
25
|
-
iqm_station_control_client-2.16.dist-info/LICENSE.txt,sha256=R6Q7eUrLyoCQgWYorQ8WJmVmWKYU3dxA3jYUp0wwQAw,11332
|
|
26
|
-
iqm_station_control_client-2.16.dist-info/METADATA,sha256=-8Dn6iufRkfZIdZcYes_8EbiVDxs51uPCJIDQMdzGlM,13971
|
|
27
|
-
iqm_station_control_client-2.16.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
|
28
|
-
iqm_station_control_client-2.16.dist-info/top_level.txt,sha256=NB4XRfyDS6_wG9gMsyX-9LTU7kWnTQxNvkbzIxGv3-c,4
|
|
29
|
-
iqm_station_control_client-2.16.dist-info/RECORD,,
|
{iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/LICENSE.txt
RENAMED
|
File without changes
|
{iqm_station_control_client-2.16.dist-info → iqm_station_control_client-2.18.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|