iqm-station-control-client 4.2.0__tar.gz → 6.0.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 (79) hide show
  1. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/CHANGELOG.rst +17 -0
  2. {iqm_station_control_client-4.2.0/src/iqm_station_control_client.egg-info → iqm_station_control_client-6.0.0}/PKG-INFO +1 -1
  3. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/iqm_server_client.py +6 -4
  4. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/station_control.py +1 -1
  5. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/jobs.py +27 -15
  6. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0/src/iqm_station_control_client.egg-info}/PKG-INFO +1 -1
  7. iqm_station_control_client-6.0.0/version.txt +1 -0
  8. iqm_station_control_client-4.2.0/version.txt +0 -1
  9. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/LICENSE.txt +0 -0
  10. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/MANIFEST.in +0 -0
  11. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/README.rst +0 -0
  12. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/API.rst +0 -0
  13. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/Makefile +0 -0
  14. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/_static/css/custom.css +0 -0
  15. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/_static/images/favicon.ico +0 -0
  16. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/_static/images/logo.png +0 -0
  17. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/_templates/autosummary-class-template.rst +0 -0
  18. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/_templates/autosummary-module-template.rst +0 -0
  19. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/changelog.rst +0 -0
  20. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/conf.py +0 -0
  21. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/index.rst +0 -0
  22. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/docs/license.rst +0 -0
  23. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/pyproject.toml +0 -0
  24. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/requirements/base.in +0 -0
  25. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/requirements/base.txt +0 -0
  26. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/setup.cfg +0 -0
  27. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/setup.py +0 -0
  28. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/__init__.py +0 -0
  29. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/__init__.py +0 -0
  30. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/error.py +0 -0
  31. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/grpc_utils.py +0 -0
  32. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/meta_class.py +0 -0
  33. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/__init__.py +0 -0
  34. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.py +0 -0
  35. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2.pyi +0 -0
  36. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/calibration_pb2_grpc.py +0 -0
  37. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.py +0 -0
  38. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2.pyi +0 -0
  39. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/common_pb2_grpc.py +0 -0
  40. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.py +0 -0
  41. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2.pyi +0 -0
  42. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/job_pb2_grpc.py +0 -0
  43. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.py +0 -0
  44. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2.pyi +0 -0
  45. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/qc_pb2_grpc.py +0 -0
  46. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.py +0 -0
  47. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2.pyi +0 -0
  48. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/proto/uuid_pb2_grpc.py +0 -0
  49. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/testing/__init__.py +0 -0
  50. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/iqm_server/testing/iqm_server_mock.py +0 -0
  51. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/list_models.py +0 -0
  52. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/__init__.py +0 -0
  53. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/channel_property_serializer.py +0 -0
  54. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/datetime_serializers.py +0 -0
  55. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/playlist_serializers.py +0 -0
  56. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/run_serializers.py +0 -0
  57. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/setting_node_serializer.py +0 -0
  58. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/struct_serializer.py +0 -0
  59. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/sweep_serializers.py +0 -0
  60. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/serializers/task_serializers.py +0 -0
  61. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/client/utils.py +0 -0
  62. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/__init__.py +0 -0
  63. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/list_with_meta.py +0 -0
  64. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/__init__.py +0 -0
  65. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/dut.py +0 -0
  66. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/monitor.py +0 -0
  67. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/observation.py +0 -0
  68. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/observation_set.py +0 -0
  69. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/run.py +0 -0
  70. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/sequence.py +0 -0
  71. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/sweep.py +0 -0
  72. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/models/type_aliases.py +0 -0
  73. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm/station_control/interface/pydantic_base.py +0 -0
  74. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm_station_control_client.egg-info/SOURCES.txt +0 -0
  75. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm_station_control_client.egg-info/dependency_links.txt +0 -0
  76. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm_station_control_client.egg-info/requires.txt +0 -0
  77. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/src/iqm_station_control_client.egg-info/top_level.txt +0 -0
  78. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/tests/.pylintrc +0 -0
  79. {iqm_station_control_client-4.2.0 → iqm_station_control_client-6.0.0}/tests/__init__.py +0 -0
@@ -2,6 +2,23 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 6.0.0 (2025-05-30)
6
+ ==========================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Rename JobStatus entries to be more descriptive. :issue:`SW-1513`
12
+
13
+ Version 5.0.0 (2025-05-28)
14
+ ==========================
15
+
16
+ Breaking changes
17
+ ----------------
18
+
19
+ - :attr:`.JobData.job_error` now has separate fields for user error message and full error log, instead of only
20
+ containing the full error log. :issue:`SW-1179`
21
+
5
22
  Version 4.2.0 (2025-05-23)
6
23
  ==========================
7
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-station-control-client
3
- Version: 4.2.0
3
+ Version: 6.0.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
@@ -55,7 +55,7 @@ from iqm.station_control.interface.models import (
55
55
  SweepDefinition,
56
56
  SweepResults,
57
57
  )
58
- from iqm.station_control.interface.models.jobs import JobData, JobResult
58
+ from iqm.station_control.interface.models.jobs import JobData, JobError, JobResult
59
59
  from iqm.station_control.interface.models.sweep import SweepBase
60
60
 
61
61
  logger = logging.getLogger(__name__)
@@ -169,7 +169,9 @@ class IqmServerClient(StationControlClient, metaclass=IqmServerClientMeta):
169
169
  parallel_sweep_progress=[],
170
170
  interrupted=False,
171
171
  ),
172
- job_error=job.error if job.HasField("error") else "",
172
+ job_error=JobError(full_error_log=job.error, user_error_message=job.error)
173
+ if job.HasField("error")
174
+ else None,
173
175
  position=job.queue_position if job.HasField("queue_position") else None,
174
176
  )
175
177
 
@@ -293,9 +295,9 @@ def payload_to_sweep(job_payload: bytes) -> SweepDefinition:
293
295
  def to_job_status(job_status: proto.JobStatus) -> JobStatus:
294
296
  match job_status:
295
297
  case proto.JobStatus.IN_QUEUE:
296
- return JobStatus.PENDING_EXECUTION
298
+ return JobStatus.EXECUTION_PENDING
297
299
  case proto.JobStatus.EXECUTING:
298
- return JobStatus.EXECUTION_START
300
+ return JobStatus.EXECUTION_STARTED
299
301
  case proto.JobStatus.FAILED:
300
302
  return JobStatus.FAILED
301
303
  case proto.JobStatus.COMPLETED:
@@ -699,7 +699,7 @@ class StationControlClient:
699
699
  max_seen_position = 0
700
700
  while True:
701
701
  job = self._poll_job(job_id)
702
- if job.job_status >= JobStatus.EXECUTION_START:
702
+ if job.job_status >= JobStatus.EXECUTION_STARTED:
703
703
  if max_seen_position:
704
704
  update_progress_callback([("Progress in queue", max_seen_position, max_seen_position)])
705
705
  return job.job_status
@@ -38,13 +38,20 @@ class JobResult(PydanticBase):
38
38
  interrupted: bool
39
39
 
40
40
 
41
+ class JobError(PydanticBase):
42
+ """Error log for a job."""
43
+
44
+ full_error_log: str
45
+ user_error_message: str
46
+
47
+
41
48
  class JobData(PydanticBase):
42
49
  """Job response data model"""
43
50
 
44
51
  job_id: UUID
45
52
  job_status: JobStatus
46
53
  job_result: JobResult
47
- job_error: str | None
54
+ job_error: JobError | None
48
55
  position: int | None
49
56
 
50
57
 
@@ -59,24 +66,29 @@ class JobStatus(Enum):
59
66
  RECEIVED = "received"
60
67
 
61
68
  # Validating the job
62
- VALIDATING = "validating"
63
- ACCEPTED = "accepted"
64
69
 
65
- PREPARING_CALIBRATION = "preparing_calibration"
70
+ VALIDATION_STARTED = "validation_started"
71
+ VALIDATION_ENDED = "validation_ended"
72
+
73
+ FETCH_CALIBRATION_STARTED = "fetch_calibration_started"
74
+ FETCH_CALIBRATION_ENDED = "fetch_calibration_ended"
66
75
 
67
76
  # Running PulLA
68
- PENDING_COMPILATION = "pending_compilation"
69
- COMPILING = "compiling"
70
- COMPILED = "compiled"
77
+ COMPILATION_STARTED = "compilation_started"
78
+ COMPILATION_ENDED = "compilation_ended"
71
79
 
72
80
  # Executing sweep
73
- STORING_SWEEP_METADATA = "storing_sweep_metadata"
74
- METADATA_STORED = "metadata_stored"
75
- PENDING_EXECUTION = "pending_execution"
76
- EXECUTION_START = "execution_start"
77
- EXECUTION_END = "execution_end"
78
- PENDING_POST_PROCESSING = "pending_post_processing"
79
- POST_PROCESSING = "post_processing"
81
+ SAVE_SWEEP_METADATA_STARTED = "save_sweep_metadata_started"
82
+ SAVE_SWEEP_METADATA_ENDED = "save_sweep_metadata_ended"
83
+ EXECUTION_PENDING = "execution_pending"
84
+ EXECUTION_STARTED = "execution_started"
85
+ EXECUTION_ENDED = "execution_ended"
86
+ EXECUTION_STAGE_COMPLETED = "execution_completed"
87
+
88
+ # Extracting artifacts from results
89
+ POST_PROCESSING_STARTED = "post_processing_started"
90
+ POST_PROCESSING_ENDED = "post_processing_ended"
91
+
80
92
  READY = "ready"
81
93
 
82
94
  # Job failed, can happen at any stage
@@ -105,7 +117,7 @@ class JobStatus(Enum):
105
117
  """Enable comparison according to definition order.
106
118
 
107
119
  Examples:
108
- >>> JobStatus.ACCEPTED < JobStatus.COMPILED
120
+ >>> JobStatus.VALIDATION_STARTED < JobStatus.COMPILATION_ENDED
109
121
  True
110
122
 
111
123
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-station-control-client
3
- Version: 4.2.0
3
+ Version: 6.0.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
+ 6.0.0
@@ -1 +0,0 @@
1
- 4.2.0