iqm-station-control-client 9.12.0__tar.gz → 9.13.0__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.
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/CHANGELOG.rst +8 -0
- {iqm_station_control_client-9.12.0/src/iqm_station_control_client.egg-info → iqm_station_control_client-9.13.0}/PKG-INFO +1 -1
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/list_models.py +35 -10
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/station_control.py +13 -12
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/list_with_meta.py +1 -1
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0/src/iqm_station_control_client.egg-info}/PKG-INFO +1 -1
- iqm_station_control_client-9.13.0/version.txt +1 -0
- iqm_station_control_client-9.12.0/version.txt +0 -1
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/LICENSE.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/MANIFEST.in +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/README.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/API.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/Makefile +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_static/css/custom.css +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_static/images/favicon.ico +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_static/images/logo.png +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_templates/autosummary-class-template.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_templates/autosummary-module-template.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/changelog.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/conf.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/index.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/license.rst +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/pyproject.toml +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/requirements/base.in +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/requirements/base.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/setup.cfg +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/setup.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/error.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/grpc_utils.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/iqm_server_client.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.pyi +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2_grpc.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.pyi +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2_grpc.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.pyi +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2_grpc.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.pyi +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2_grpc.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.pyi +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2_grpc.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/testing/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/iqm_server/testing/iqm_server_mock.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/py.typed +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/qon.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/channel_property_serializer.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/datetime_serializers.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/playlist_serializers.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/run_serializers.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/setting_node_serializer.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/struct_serializer.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/sweep_serializers.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/serializers/task_serializers.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/client/utils.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/__init__.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/dut.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/dynamic_quantum_architecture.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/jobs.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/monitor.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/observation.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/observation_set.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/run.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/sequence.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/static_quantum_architecture.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/sweep.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/models/type_aliases.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/py.typed +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/pydantic_base.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm/station_control/interface/station_control.py +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm_station_control_client.egg-info/SOURCES.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm_station_control_client.egg-info/dependency_links.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm_station_control_client.egg-info/requires.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/src/iqm_station_control_client.egg-info/top_level.txt +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/tests/.pylintrc +0 -0
- {iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/tests/__init__.py +0 -0
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
These are used mainly for easy serialization and deserialization of list of objects.
|
|
17
17
|
"""
|
|
18
18
|
|
|
19
|
-
from typing import Generic,
|
|
19
|
+
from typing import Generic, TypeVar
|
|
20
20
|
|
|
21
21
|
from pydantic import ConfigDict, RootModel
|
|
22
22
|
|
|
@@ -64,12 +64,37 @@ class ListModel(RootModel):
|
|
|
64
64
|
)
|
|
65
65
|
|
|
66
66
|
|
|
67
|
-
DutList
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
class DutList(ListModel):
|
|
68
|
+
root: list[DutData]
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class DutFieldDataList(ListModel):
|
|
72
|
+
root: list[DutFieldData]
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class ObservationDataList(ListModel):
|
|
76
|
+
root: list[ObservationData]
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
class ObservationDefinitionList(ListModel):
|
|
80
|
+
root: list[ObservationDefinition]
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class ObservationLiteList(ListModel):
|
|
84
|
+
root: list[ObservationLite]
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class ObservationUpdateList(ListModel):
|
|
88
|
+
root: list[ObservationUpdate]
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class ObservationSetDataList(ListModel):
|
|
92
|
+
root: list[ObservationSetData]
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class SequenceMetadataDataList(ListModel):
|
|
96
|
+
root: list[SequenceMetadataData]
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class RunLiteList(ListModel):
|
|
100
|
+
root: list[RunLite]
|
|
@@ -62,7 +62,7 @@ from iqm.station_control.client.serializers import (
|
|
|
62
62
|
from iqm.station_control.client.serializers.channel_property_serializer import unpack_channel_properties
|
|
63
63
|
from iqm.station_control.client.serializers.setting_node_serializer import deserialize_setting_node
|
|
64
64
|
from iqm.station_control.client.serializers.sweep_serializers import deserialize_sweep_data
|
|
65
|
-
from iqm.station_control.interface.list_with_meta import ListWithMeta
|
|
65
|
+
from iqm.station_control.interface.list_with_meta import ListWithMeta, Meta
|
|
66
66
|
from iqm.station_control.interface.models import (
|
|
67
67
|
DutData,
|
|
68
68
|
DutFieldData,
|
|
@@ -358,7 +358,7 @@ class StationControlClient(_StationControlClientBase):
|
|
|
358
358
|
def create_observations(
|
|
359
359
|
self, observation_definitions: Sequence[ObservationDefinition]
|
|
360
360
|
) -> ListWithMeta[ObservationData]: # type: ignore[type-arg]
|
|
361
|
-
json_str = self._serialize_model(ObservationDefinitionList(observation_definitions))
|
|
361
|
+
json_str = self._serialize_model(ObservationDefinitionList(list(observation_definitions)))
|
|
362
362
|
response = self._send_request(requests.post, "observations", json_str=json_str)
|
|
363
363
|
return self._deserialize_response(response, ObservationDataList, list_with_meta=True)
|
|
364
364
|
|
|
@@ -394,7 +394,7 @@ class StationControlClient(_StationControlClientBase):
|
|
|
394
394
|
return self._deserialize_response(response, ObservationDataList, list_with_meta=True)
|
|
395
395
|
|
|
396
396
|
def update_observations(self, observation_updates: Sequence[ObservationUpdate]) -> list[ObservationData]:
|
|
397
|
-
json_str = self._serialize_model(ObservationUpdateList(observation_updates))
|
|
397
|
+
json_str = self._serialize_model(ObservationUpdateList(list(observation_updates)))
|
|
398
398
|
response = self._send_request(requests.patch, "observations", json_str=json_str)
|
|
399
399
|
return self._deserialize_response(response, ObservationDataList)
|
|
400
400
|
|
|
@@ -612,22 +612,23 @@ class StationControlClient(_StationControlClientBase):
|
|
|
612
612
|
@staticmethod
|
|
613
613
|
def _deserialize_response(
|
|
614
614
|
response: requests.Response,
|
|
615
|
-
model_class: type[TypePydanticBase | ListModel
|
|
615
|
+
model_class: type[TypePydanticBase | ListModel],
|
|
616
616
|
*,
|
|
617
617
|
list_with_meta: bool = False,
|
|
618
|
-
) -> TypePydanticBase | ListWithMeta
|
|
618
|
+
) -> TypePydanticBase | ListWithMeta:
|
|
619
619
|
# Use "model_validate_json(response.text)" instead of "model_validate(response.json())".
|
|
620
620
|
# This validates the provided data as a JSON string or bytes object.
|
|
621
621
|
# If your incoming data is a JSON payload, this is generally considered faster.
|
|
622
622
|
if list_with_meta:
|
|
623
|
-
response_with_meta = ResponseWithMeta.model_validate_json(response.text)
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
return ListWithMeta(model_class.model_validate(response_with_meta.items), meta=response_with_meta.meta) # type: ignore[arg-type]
|
|
623
|
+
response_with_meta: ResponseWithMeta = ResponseWithMeta.model_validate_json(response.text)
|
|
624
|
+
meta = response_with_meta.meta or Meta()
|
|
625
|
+
if meta and meta.errors:
|
|
626
|
+
logger.warning("Errors in station control response:\n - %s", "\n - ".join(meta.errors))
|
|
627
|
+
return ListWithMeta(model_class.model_validate(response_with_meta.items), meta=meta)
|
|
629
628
|
model = model_class.model_validate_json(response.text)
|
|
630
|
-
|
|
629
|
+
if isinstance(model, ListModel):
|
|
630
|
+
return model.root
|
|
631
|
+
return model
|
|
631
632
|
|
|
632
633
|
|
|
633
634
|
def _remove_empty_values(kwargs: dict[str, Any]) -> dict[str, Any]:
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
"""Models to extend standard list with metadata."""
|
|
14
|
+
"""Models to extend a standard list with metadata."""
|
|
15
15
|
|
|
16
16
|
from collections.abc import Iterable
|
|
17
17
|
from dataclasses import dataclass
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9.13.0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
9.12.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_static/css/custom.css
RENAMED
|
File without changes
|
|
File without changes
|
{iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/docs/_static/images/logo.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/requirements/base.in
RENAMED
|
File without changes
|
{iqm_station_control_client-9.12.0 → iqm_station_control_client-9.13.0}/requirements/base.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|