iqm-station-control-client 9.2.0__tar.gz → 9.3.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.
Files changed (81) hide show
  1. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/CHANGELOG.rst +8 -0
  2. {iqm_station_control_client-9.2.0/src/iqm_station_control_client.egg-info → iqm_station_control_client-9.3.0}/PKG-INFO +1 -1
  3. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/dynamic_quantum_architecture.py +22 -1
  4. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0/src/iqm_station_control_client.egg-info}/PKG-INFO +1 -1
  5. iqm_station_control_client-9.3.0/version.txt +1 -0
  6. iqm_station_control_client-9.2.0/version.txt +0 -1
  7. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/LICENSE.txt +0 -0
  8. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/MANIFEST.in +0 -0
  9. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/README.rst +0 -0
  10. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/API.rst +0 -0
  11. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/Makefile +0 -0
  12. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/_static/css/custom.css +0 -0
  13. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/_static/images/favicon.ico +0 -0
  14. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/_static/images/logo.png +0 -0
  15. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/_templates/autosummary-class-template.rst +0 -0
  16. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/_templates/autosummary-module-template.rst +0 -0
  17. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/changelog.rst +0 -0
  18. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/conf.py +0 -0
  19. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/index.rst +0 -0
  20. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/docs/license.rst +0 -0
  21. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/pyproject.toml +0 -0
  22. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/requirements/base.in +0 -0
  23. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/requirements/base.txt +0 -0
  24. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/setup.cfg +0 -0
  25. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/setup.py +0 -0
  26. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/__init__.py +0 -0
  27. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/__init__.py +0 -0
  28. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/error.py +0 -0
  29. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/grpc_utils.py +0 -0
  30. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/iqm_server_client.py +0 -0
  31. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/__init__.py +0 -0
  32. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.py +0 -0
  33. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.pyi +0 -0
  34. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2_grpc.py +0 -0
  35. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.py +0 -0
  36. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.pyi +0 -0
  37. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2_grpc.py +0 -0
  38. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.py +0 -0
  39. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.pyi +0 -0
  40. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2_grpc.py +0 -0
  41. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.py +0 -0
  42. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.pyi +0 -0
  43. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2_grpc.py +0 -0
  44. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.py +0 -0
  45. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.pyi +0 -0
  46. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2_grpc.py +0 -0
  47. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/testing/__init__.py +0 -0
  48. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/iqm_server/testing/iqm_server_mock.py +0 -0
  49. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/list_models.py +0 -0
  50. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/__init__.py +0 -0
  51. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/channel_property_serializer.py +0 -0
  52. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/datetime_serializers.py +0 -0
  53. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/playlist_serializers.py +0 -0
  54. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/run_serializers.py +0 -0
  55. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/setting_node_serializer.py +0 -0
  56. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/struct_serializer.py +0 -0
  57. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/sweep_serializers.py +0 -0
  58. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/serializers/task_serializers.py +0 -0
  59. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/station_control.py +0 -0
  60. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/client/utils.py +0 -0
  61. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/__init__.py +0 -0
  62. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/list_with_meta.py +0 -0
  63. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/__init__.py +0 -0
  64. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/dut.py +0 -0
  65. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/jobs.py +0 -0
  66. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/monitor.py +0 -0
  67. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/observation.py +0 -0
  68. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/observation_set.py +0 -0
  69. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/run.py +0 -0
  70. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/sequence.py +0 -0
  71. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/static_quantum_architecture.py +0 -0
  72. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/sweep.py +0 -0
  73. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/models/type_aliases.py +0 -0
  74. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/pydantic_base.py +0 -0
  75. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm/station_control/interface/station_control.py +0 -0
  76. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm_station_control_client.egg-info/SOURCES.txt +0 -0
  77. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm_station_control_client.egg-info/dependency_links.txt +0 -0
  78. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm_station_control_client.egg-info/requires.txt +0 -0
  79. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/src/iqm_station_control_client.egg-info/top_level.txt +0 -0
  80. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/tests/.pylintrc +0 -0
  81. {iqm_station_control_client-9.2.0 → iqm_station_control_client-9.3.0}/tests/__init__.py +0 -0
@@ -2,6 +2,14 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 9.3.0 (2025-06-25)
6
+ ==========================
7
+
8
+ Bug fixes
9
+ ---------
10
+
11
+ - Fix DQA deserialization when ``override_default_implementations`` is not empty. :issue:`SW-1625`
12
+
5
13
  Version 9.2.0 (2025-06-25)
6
14
  ==========================
7
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-station-control-client
3
- Version: 9.2.0
3
+ Version: 9.3.0
4
4
  Summary: Python client for communicating with Station Control Service
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -13,9 +13,10 @@
13
13
  # limitations under the License.
14
14
  """Dynamic quantum architecture (DQA) related interface models."""
15
15
 
16
+ from typing import Any
16
17
  from uuid import UUID
17
18
 
18
- from pydantic import Field, StrictStr
19
+ from pydantic import Field, StrictStr, field_validator
19
20
 
20
21
  from iqm.station_control.interface.pydantic_base import PydanticBase
21
22
 
@@ -59,6 +60,26 @@ class GateInfo(PydanticBase):
59
60
  )
60
61
  """Mapping of loci to implementation names that override ``default_implementation`` for those loci."""
61
62
 
63
+ @field_validator("override_default_implementation", mode="before")
64
+ @classmethod
65
+ def override_default_implementation_validator(cls, value: Any) -> dict[Locus, str]:
66
+ """Converts locus keys to tuples if they are encoded as strings."""
67
+ new_value = {}
68
+ if isinstance(value, dict):
69
+ for k, v in value.items():
70
+ if isinstance(k, tuple):
71
+ new_value[k] = v
72
+ # When Pydantic serializes a dict with tuple keys into JSON, the keys are turned into
73
+ # comma-separated strings (because JSON only supports string keys). Here we convert
74
+ # them back into tuples.
75
+ elif isinstance(k, str):
76
+ new_k = tuple(k.split(","))
77
+ new_value[new_k] = v
78
+ else:
79
+ raise ValueError("'override_default_implementation' keys must be strings or tuples.")
80
+ return new_value
81
+ raise ValueError("'override_default_implementation' must be a dict.")
82
+
62
83
 
63
84
  class DynamicQuantumArchitecture(PydanticBase):
64
85
  """The dynamic quantum architecture (DQA).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-station-control-client
3
- Version: 9.2.0
3
+ Version: 9.3.0
4
4
  Summary: Python client for communicating with Station Control Service
5
5
  Author-email: IQM Finland Oy <info@meetiqm.com>
6
6
  License: Apache License
@@ -0,0 +1 @@
1
+ 9.3.0
@@ -1 +0,0 @@
1
- 9.2.0