iqm-station-control-client 11.3.1__py3-none-any.whl → 12.0.1__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.
Files changed (44) hide show
  1. iqm/station_control/client/authentication.py +239 -0
  2. iqm/station_control/client/iqm_server/error.py +0 -30
  3. iqm/station_control/client/iqm_server/grpc_utils.py +0 -156
  4. iqm/station_control/client/iqm_server/iqm_server_client.py +0 -489
  5. iqm/station_control/client/list_models.py +16 -11
  6. iqm/station_control/client/qon.py +1 -1
  7. iqm/station_control/client/serializers/run_serializers.py +5 -4
  8. iqm/station_control/client/serializers/struct_serializer.py +1 -1
  9. iqm/station_control/client/station_control.py +140 -154
  10. iqm/station_control/client/utils.py +4 -42
  11. iqm/station_control/interface/models/__init__.py +21 -2
  12. iqm/station_control/interface/models/circuit.py +348 -0
  13. iqm/station_control/interface/models/dynamic_quantum_architecture.py +61 -3
  14. iqm/station_control/interface/models/jobs.py +41 -12
  15. iqm/station_control/interface/models/observation_set.py +28 -4
  16. iqm/station_control/interface/models/run.py +8 -8
  17. iqm/station_control/interface/models/sweep.py +7 -1
  18. iqm/station_control/interface/models/type_aliases.py +1 -2
  19. iqm/station_control/interface/station_control.py +1 -1
  20. {iqm_station_control_client-11.3.1.dist-info → iqm_station_control_client-12.0.1.dist-info}/METADATA +3 -3
  21. iqm_station_control_client-12.0.1.dist-info/RECORD +42 -0
  22. iqm/station_control/client/iqm_server/__init__.py +0 -14
  23. iqm/station_control/client/iqm_server/proto/__init__.py +0 -43
  24. iqm/station_control/client/iqm_server/proto/calibration_pb2.py +0 -48
  25. iqm/station_control/client/iqm_server/proto/calibration_pb2.pyi +0 -45
  26. iqm/station_control/client/iqm_server/proto/calibration_pb2_grpc.py +0 -152
  27. iqm/station_control/client/iqm_server/proto/common_pb2.py +0 -43
  28. iqm/station_control/client/iqm_server/proto/common_pb2.pyi +0 -32
  29. iqm/station_control/client/iqm_server/proto/common_pb2_grpc.py +0 -17
  30. iqm/station_control/client/iqm_server/proto/job_pb2.py +0 -57
  31. iqm/station_control/client/iqm_server/proto/job_pb2.pyi +0 -107
  32. iqm/station_control/client/iqm_server/proto/job_pb2_grpc.py +0 -436
  33. iqm/station_control/client/iqm_server/proto/qc_pb2.py +0 -51
  34. iqm/station_control/client/iqm_server/proto/qc_pb2.pyi +0 -57
  35. iqm/station_control/client/iqm_server/proto/qc_pb2_grpc.py +0 -163
  36. iqm/station_control/client/iqm_server/proto/uuid_pb2.py +0 -39
  37. iqm/station_control/client/iqm_server/proto/uuid_pb2.pyi +0 -26
  38. iqm/station_control/client/iqm_server/proto/uuid_pb2_grpc.py +0 -17
  39. iqm/station_control/client/iqm_server/testing/__init__.py +0 -13
  40. iqm/station_control/client/iqm_server/testing/iqm_server_mock.py +0 -102
  41. iqm_station_control_client-11.3.1.dist-info/RECORD +0 -59
  42. {iqm_station_control_client-11.3.1.dist-info → iqm_station_control_client-12.0.1.dist-info}/LICENSE.txt +0 -0
  43. {iqm_station_control_client-11.3.1.dist-info → iqm_station_control_client-12.0.1.dist-info}/WHEEL +0 -0
  44. {iqm_station_control_client-11.3.1.dist-info → iqm_station_control_client-12.0.1.dist-info}/top_level.txt +0 -0
@@ -1,107 +0,0 @@
1
- # Copyright 2025 IQM
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- from . import common_pb2 as _common_pb2
15
- from . import uuid_pb2 as _uuid_pb2
16
- from . import qc_pb2 as _qc_pb2
17
- from google.protobuf import timestamp_pb2 as _timestamp_pb2
18
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
19
- from google.protobuf import descriptor as _descriptor
20
- from google.protobuf import message as _message
21
- from typing import ClassVar as _ClassVar, Mapping as _Mapping, Optional as _Optional, Union as _Union
22
-
23
- DESCRIPTOR: _descriptor.FileDescriptor
24
-
25
- class JobType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
26
- __slots__ = ()
27
- CIRCUIT: _ClassVar[JobType]
28
- PULSE: _ClassVar[JobType]
29
-
30
- class JobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
31
- __slots__ = ()
32
- IN_QUEUE: _ClassVar[JobStatus]
33
- EXECUTING: _ClassVar[JobStatus]
34
- COMPLETED: _ClassVar[JobStatus]
35
- CANCELLED: _ClassVar[JobStatus]
36
- FAILED: _ClassVar[JobStatus]
37
- INTERRUPTED: _ClassVar[JobStatus]
38
- CIRCUIT: JobType
39
- PULSE: JobType
40
- IN_QUEUE: JobStatus
41
- EXECUTING: JobStatus
42
- COMPLETED: JobStatus
43
- CANCELLED: JobStatus
44
- FAILED: JobStatus
45
- INTERRUPTED: JobStatus
46
-
47
- class JobV1(_message.Message):
48
- __slots__ = ("id", "type", "quantum_computer", "input", "status", "queue_position", "error", "created_at", "updated_at", "execution_started_at", "execution_ended_at")
49
- ID_FIELD_NUMBER: _ClassVar[int]
50
- TYPE_FIELD_NUMBER: _ClassVar[int]
51
- QUANTUM_COMPUTER_FIELD_NUMBER: _ClassVar[int]
52
- INPUT_FIELD_NUMBER: _ClassVar[int]
53
- STATUS_FIELD_NUMBER: _ClassVar[int]
54
- QUEUE_POSITION_FIELD_NUMBER: _ClassVar[int]
55
- ERROR_FIELD_NUMBER: _ClassVar[int]
56
- CREATED_AT_FIELD_NUMBER: _ClassVar[int]
57
- UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
58
- EXECUTION_STARTED_AT_FIELD_NUMBER: _ClassVar[int]
59
- EXECUTION_ENDED_AT_FIELD_NUMBER: _ClassVar[int]
60
- id: _uuid_pb2.Uuid
61
- type: JobType
62
- quantum_computer: _qc_pb2.QuantumComputerV1
63
- input: JobInputSummaryV1
64
- status: JobStatus
65
- queue_position: int
66
- error: str
67
- created_at: _timestamp_pb2.Timestamp
68
- updated_at: _timestamp_pb2.Timestamp
69
- execution_started_at: _timestamp_pb2.Timestamp
70
- execution_ended_at: _timestamp_pb2.Timestamp
71
- def __init__(self, id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ..., type: _Optional[_Union[JobType, str]] = ..., quantum_computer: _Optional[_Union[_qc_pb2.QuantumComputerV1, _Mapping]] = ..., input: _Optional[_Union[JobInputSummaryV1, _Mapping]] = ..., status: _Optional[_Union[JobStatus, str]] = ..., queue_position: _Optional[int] = ..., error: _Optional[str] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., execution_started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., execution_ended_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
72
-
73
- class JobInputSummaryV1(_message.Message):
74
- __slots__ = ("job_type", "shots", "circuits")
75
- JOB_TYPE_FIELD_NUMBER: _ClassVar[int]
76
- SHOTS_FIELD_NUMBER: _ClassVar[int]
77
- CIRCUITS_FIELD_NUMBER: _ClassVar[int]
78
- job_type: JobType
79
- shots: int
80
- circuits: int
81
- def __init__(self, job_type: _Optional[_Union[JobType, str]] = ..., shots: _Optional[int] = ..., circuits: _Optional[int] = ...) -> None: ...
82
-
83
- class JobEventV1(_message.Message):
84
- __slots__ = ("keepalive", "update")
85
- KEEPALIVE_FIELD_NUMBER: _ClassVar[int]
86
- UPDATE_FIELD_NUMBER: _ClassVar[int]
87
- keepalive: _common_pb2.Keepalive
88
- update: JobV1
89
- def __init__(self, keepalive: _Optional[_Union[_common_pb2.Keepalive, _Mapping]] = ..., update: _Optional[_Union[JobV1, _Mapping]] = ...) -> None: ...
90
-
91
- class JobLookupV1(_message.Message):
92
- __slots__ = ("id",)
93
- ID_FIELD_NUMBER: _ClassVar[int]
94
- id: _uuid_pb2.Uuid
95
- def __init__(self, id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ...) -> None: ...
96
-
97
- class SubmitJobRequestV1(_message.Message):
98
- __slots__ = ("qc_id", "type", "payload", "use_timeslot")
99
- QC_ID_FIELD_NUMBER: _ClassVar[int]
100
- TYPE_FIELD_NUMBER: _ClassVar[int]
101
- PAYLOAD_FIELD_NUMBER: _ClassVar[int]
102
- USE_TIMESLOT_FIELD_NUMBER: _ClassVar[int]
103
- qc_id: _uuid_pb2.Uuid
104
- type: JobType
105
- payload: bytes
106
- use_timeslot: bool
107
- def __init__(self, qc_id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ..., type: _Optional[_Union[JobType, str]] = ..., payload: _Optional[bytes] = ..., use_timeslot: bool = ...) -> None: ...
@@ -1,436 +0,0 @@
1
- # Copyright 2025 IQM
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
15
- """Client and server classes corresponding to protobuf-defined services."""
16
- import grpc
17
-
18
- from . import common_pb2 as common__pb2
19
- from . import job_pb2 as job__pb2
20
-
21
-
22
- class JobsStub(object):
23
- """
24
- User job management APIs.
25
- """
26
-
27
- def __init__(self, channel):
28
- """Constructor.
29
-
30
- Args:
31
- channel: A grpc.Channel.
32
- """
33
- self.SubmitJobV1 = channel.unary_unary(
34
- '/iqm.server.Jobs/SubmitJobV1',
35
- request_serializer=job__pb2.SubmitJobRequestV1.SerializeToString,
36
- response_deserializer=job__pb2.JobV1.FromString,
37
- )
38
- self.GetJobV1 = channel.unary_unary(
39
- '/iqm.server.Jobs/GetJobV1',
40
- request_serializer=job__pb2.JobLookupV1.SerializeToString,
41
- response_deserializer=job__pb2.JobV1.FromString,
42
- )
43
- self.SubscribeToJobV1 = channel.unary_stream(
44
- '/iqm.server.Jobs/SubscribeToJobV1',
45
- request_serializer=job__pb2.JobLookupV1.SerializeToString,
46
- response_deserializer=job__pb2.JobEventV1.FromString,
47
- )
48
- self.GetJobPayloadV1 = channel.unary_stream(
49
- '/iqm.server.Jobs/GetJobPayloadV1',
50
- request_serializer=job__pb2.JobLookupV1.SerializeToString,
51
- response_deserializer=common__pb2.DataChunk.FromString,
52
- )
53
- self.GetJobResultsV1 = channel.unary_stream(
54
- '/iqm.server.Jobs/GetJobResultsV1',
55
- request_serializer=job__pb2.JobLookupV1.SerializeToString,
56
- response_deserializer=common__pb2.DataChunk.FromString,
57
- )
58
- self.CancelJobV1 = channel.unary_unary(
59
- '/iqm.server.Jobs/CancelJobV1',
60
- request_serializer=job__pb2.JobLookupV1.SerializeToString,
61
- response_deserializer=job__pb2.JobV1.FromString,
62
- )
63
-
64
-
65
- class JobsServicer(object):
66
- """
67
- User job management APIs.
68
- """
69
-
70
- def SubmitJobV1(self, request, context):
71
- """
72
- Submits a new job to the quantum computer. If the submit succeeds, returns
73
- the handle for the submitted job.
74
-
75
- ## Errors
76
- In case of an error, a GRPC error status is returned with some optional additional
77
- details. The possible error cases are described below:
78
-
79
- ### Invalid payload
80
- This error is returned if the given job payload is not accepted by the
81
- target quantum computer. Note that different quantum computers might
82
- accept different payloads.
83
- ```
84
- Code = "INVALID_ARGUMENT"
85
- Metadata.error_code = "invalid_payload"
86
- Details = https://protobuf.dev/reference/protobuf/google.protobuf/#value
87
- {
88
- "errors": [<list-of-error-messages>]
89
- }
90
- ```
91
-
92
- ### Job type not supported
93
- This error is returned if the target quantum computer does not support the
94
- given job type (circuit, pulse).
95
- ```
96
- Code = "INVALID_ARGUMENT"
97
- Metadata.error_code = "job_type_not_supported"
98
- ```
99
-
100
- ### User job quota exceeded
101
- This error is returned if the user has already submitted the maximum allowed
102
- amount of jobs to the queue. Quota can be freed by either waiting for existing
103
- jobs to finish or manually cancelling them (either via the API or the web).
104
- ```
105
- Code = "RESOURCE_EXHAUSTED"
106
- Metadata.error_code = "quota_exceeded"
107
- ```
108
-
109
- ### Account does not have any active or upcoming timeslots
110
- This error is returned if the job is submitted with the `use_timeslot` flag enabled,
111
- but the user's account does not have active or upcoming timeslots booked.
112
- ```
113
- Code = "FAILED_PRECONDITION"
114
- Metadata.error_code = "no_booked_timeslots"
115
- ```
116
-
117
- ### Timeslot is required to execute job
118
- This error is returned if the target quantum computer requires timeslot to execute
119
- jobs but `use_timeslot` was unset (or set to `false`).
120
- ```
121
- Code = "FAILED_PRECONDITION"
122
- Metadata.error_code = "timeslot_required"
123
- ```
124
-
125
- ### Quantum computer not found
126
- This error is returned if the `qc_id` does not match any existing quantum computer.
127
- ```
128
- Code = "NOT_FOUND"
129
- Metadata.error_code = "not_found"
130
- ```
131
- """
132
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
133
- context.set_details('Method not implemented!')
134
- raise NotImplementedError('Method not implemented!')
135
-
136
- def GetJobV1(self, request, context):
137
- """
138
- Get job details by JobLookup. Returns the job if the user job exists.
139
- User needs to be authorised to access the job data, i.e. the job must be created by the user.
140
-
141
- ## Errors
142
- In case of an error, a GRPC error status is returned with some optional additional
143
- details. The possible error cases are described below:
144
-
145
- ### Job not found
146
- This error is returned if the JobLookup does not match any existing job.
147
- ```
148
- Code = "NOT_FOUND"
149
- Metadata.error_code = "not_found"
150
- ```
151
-
152
- ### Quantum computer not found
153
- This error is returned if quantum computer associated with the job does not match any existing quantum computer.
154
- ```
155
- Code = "NOT_FOUND"
156
- Metadata.error_code = "not_found"
157
- ```
158
- """
159
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
160
- context.set_details('Method not implemented!')
161
- raise NotImplementedError('Method not implemented!')
162
-
163
- def SubscribeToJobV1(self, request, context):
164
- """
165
- Subscribes to the job changes. Returns a stream that emits the job at subscription
166
- moment and after that the changed job every time when the job state changes. The stream
167
- will end automatically when the job is considered as "final" and won't be updated
168
- anymore in the future (cancelled, interrupted, failed, completed).
169
-
170
- The stream may also emit empty `Keepalive` messages to indicate that job is still being
171
- processed but hasn't been updated. Clients may ignore these keepalive messages.
172
-
173
- ## Errors
174
-
175
- ### Job not found
176
- If the job does not exist with the given lookup, the following error is
177
- returned upon the subscription.
178
- ```
179
- Code = "NOT_FOUND"
180
- Metadata.error_code = "not_found"
181
- ```
182
-
183
- ### Job deleted during the subscription
184
- If the job gets deleted during the open subscription, the subscription stream will
185
- emit the following error and close immediately after that.
186
- ```
187
- Code = "ABORTED"
188
- Metadata.error_code = "job_deleted"
189
- ```
190
-
191
- ### Server cancellation
192
- If server wants to cancel the subscription (e.g. due to restarts or maintenance), the
193
- subscription stream will emit the following error and close immediately after that.
194
- ```
195
- Code = "ABORTED"
196
- Metadata.error_code = "server_cancel"
197
- ```
198
- """
199
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
200
- context.set_details('Method not implemented!')
201
- raise NotImplementedError('Method not implemented!')
202
-
203
- def GetJobPayloadV1(self, request, context):
204
- """
205
- Get job payload as GRPC data chunk streams by JobLookup . Returns the job input data if the user job exists.
206
- User needs to be authorised to access the job.
207
-
208
- ## Errors
209
- In case of an error, a GRPC error status is returned with some optional additional
210
- details. The possible error cases are described below:
211
-
212
- ### Job not found
213
- This error is returned if the JobLookup does not match any existing job.
214
- ```
215
- Code = "NOT_FOUND"
216
- Metadata.error_code = "not_found"
217
- ```
218
-
219
- ### Job payload not found
220
- This error is returned if the job payload is not found.
221
- ```
222
- Code = "NOT_FOUND"
223
- Metadata.error_code = "not_found"
224
- ```
225
- """
226
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
227
- context.set_details('Method not implemented!')
228
- raise NotImplementedError('Method not implemented!')
229
-
230
- def GetJobResultsV1(self, request, context):
231
- """
232
- Get job result as GRPC data chunk streams by JobLookup. Returns the job measurements data if the user job exists.
233
- User needs to be authorised to access the job.
234
-
235
- ## Errors
236
- In case of an error, a GRPC error status is returned with some optional additional
237
- details. The possible error cases are described below:
238
-
239
- ### Job not found
240
- This error is returned if the JobLookup does not match any existing job.
241
- ```
242
- Code = "NOT_FOUND"
243
- Metadata.error_code = "not_found"
244
- ```
245
-
246
- ### Job results not found
247
- This error is returned if the job results is not found.
248
- ```
249
- Code = "NOT_FOUND"
250
- Metadata.error_code = "not_found"
251
- ```
252
- """
253
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
254
- context.set_details('Method not implemented!')
255
- raise NotImplementedError('Method not implemented!')
256
-
257
- def CancelJobV1(self, request, context):
258
- """
259
- Cancel a queued job by JobLookup. Returns the updated job when cancelled.
260
- User needs to be authorised to access the job.
261
-
262
- ## Errors
263
- In case of an error, a GRPC error status is returned with some optional additional
264
- details. The possible error cases are described below:
265
-
266
- ### Job not found
267
- This error is returned if the JobLookup does not match any existing user job.
268
- ```
269
- Code = "NOT_FOUND"
270
- Metadata.error_code = "not_found"
271
- ```
272
-
273
- ### Can't cancel job from QC because it's already in final state
274
- This error is returned if the job measurements is not found.
275
- ```
276
- Code = "FAILED_PRECONDITION"
277
- Metadata.error_code = "job_not_submitted_to_qc"
278
- ```
279
-
280
- ### Quantum computer not found
281
- This error is returned if quantum computer associated with the job does not match any existing quantum computer.
282
- ```
283
- Code = "NOT_FOUND"
284
- Metadata.error_code = "not_found"
285
- ```
286
- """
287
- context.set_code(grpc.StatusCode.UNIMPLEMENTED)
288
- context.set_details('Method not implemented!')
289
- raise NotImplementedError('Method not implemented!')
290
-
291
-
292
- def add_JobsServicer_to_server(servicer, server):
293
- rpc_method_handlers = {
294
- 'SubmitJobV1': grpc.unary_unary_rpc_method_handler(
295
- servicer.SubmitJobV1,
296
- request_deserializer=job__pb2.SubmitJobRequestV1.FromString,
297
- response_serializer=job__pb2.JobV1.SerializeToString,
298
- ),
299
- 'GetJobV1': grpc.unary_unary_rpc_method_handler(
300
- servicer.GetJobV1,
301
- request_deserializer=job__pb2.JobLookupV1.FromString,
302
- response_serializer=job__pb2.JobV1.SerializeToString,
303
- ),
304
- 'SubscribeToJobV1': grpc.unary_stream_rpc_method_handler(
305
- servicer.SubscribeToJobV1,
306
- request_deserializer=job__pb2.JobLookupV1.FromString,
307
- response_serializer=job__pb2.JobEventV1.SerializeToString,
308
- ),
309
- 'GetJobPayloadV1': grpc.unary_stream_rpc_method_handler(
310
- servicer.GetJobPayloadV1,
311
- request_deserializer=job__pb2.JobLookupV1.FromString,
312
- response_serializer=common__pb2.DataChunk.SerializeToString,
313
- ),
314
- 'GetJobResultsV1': grpc.unary_stream_rpc_method_handler(
315
- servicer.GetJobResultsV1,
316
- request_deserializer=job__pb2.JobLookupV1.FromString,
317
- response_serializer=common__pb2.DataChunk.SerializeToString,
318
- ),
319
- 'CancelJobV1': grpc.unary_unary_rpc_method_handler(
320
- servicer.CancelJobV1,
321
- request_deserializer=job__pb2.JobLookupV1.FromString,
322
- response_serializer=job__pb2.JobV1.SerializeToString,
323
- ),
324
- }
325
- generic_handler = grpc.method_handlers_generic_handler(
326
- 'iqm.server.Jobs', rpc_method_handlers)
327
- server.add_generic_rpc_handlers((generic_handler,))
328
-
329
-
330
- # This class is part of an EXPERIMENTAL API.
331
- class Jobs(object):
332
- """
333
- User job management APIs.
334
- """
335
-
336
- @staticmethod
337
- def SubmitJobV1(request,
338
- target,
339
- options=(),
340
- channel_credentials=None,
341
- call_credentials=None,
342
- insecure=False,
343
- compression=None,
344
- wait_for_ready=None,
345
- timeout=None,
346
- metadata=None):
347
- return grpc.experimental.unary_unary(request, target, '/iqm.server.Jobs/SubmitJobV1',
348
- job__pb2.SubmitJobRequestV1.SerializeToString,
349
- job__pb2.JobV1.FromString,
350
- options, channel_credentials,
351
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
352
-
353
- @staticmethod
354
- def GetJobV1(request,
355
- target,
356
- options=(),
357
- channel_credentials=None,
358
- call_credentials=None,
359
- insecure=False,
360
- compression=None,
361
- wait_for_ready=None,
362
- timeout=None,
363
- metadata=None):
364
- return grpc.experimental.unary_unary(request, target, '/iqm.server.Jobs/GetJobV1',
365
- job__pb2.JobLookupV1.SerializeToString,
366
- job__pb2.JobV1.FromString,
367
- options, channel_credentials,
368
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
369
-
370
- @staticmethod
371
- def SubscribeToJobV1(request,
372
- target,
373
- options=(),
374
- channel_credentials=None,
375
- call_credentials=None,
376
- insecure=False,
377
- compression=None,
378
- wait_for_ready=None,
379
- timeout=None,
380
- metadata=None):
381
- return grpc.experimental.unary_stream(request, target, '/iqm.server.Jobs/SubscribeToJobV1',
382
- job__pb2.JobLookupV1.SerializeToString,
383
- job__pb2.JobEventV1.FromString,
384
- options, channel_credentials,
385
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
386
-
387
- @staticmethod
388
- def GetJobPayloadV1(request,
389
- target,
390
- options=(),
391
- channel_credentials=None,
392
- call_credentials=None,
393
- insecure=False,
394
- compression=None,
395
- wait_for_ready=None,
396
- timeout=None,
397
- metadata=None):
398
- return grpc.experimental.unary_stream(request, target, '/iqm.server.Jobs/GetJobPayloadV1',
399
- job__pb2.JobLookupV1.SerializeToString,
400
- common__pb2.DataChunk.FromString,
401
- options, channel_credentials,
402
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
403
-
404
- @staticmethod
405
- def GetJobResultsV1(request,
406
- target,
407
- options=(),
408
- channel_credentials=None,
409
- call_credentials=None,
410
- insecure=False,
411
- compression=None,
412
- wait_for_ready=None,
413
- timeout=None,
414
- metadata=None):
415
- return grpc.experimental.unary_stream(request, target, '/iqm.server.Jobs/GetJobResultsV1',
416
- job__pb2.JobLookupV1.SerializeToString,
417
- common__pb2.DataChunk.FromString,
418
- options, channel_credentials,
419
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
420
-
421
- @staticmethod
422
- def CancelJobV1(request,
423
- target,
424
- options=(),
425
- channel_credentials=None,
426
- call_credentials=None,
427
- insecure=False,
428
- compression=None,
429
- wait_for_ready=None,
430
- timeout=None,
431
- metadata=None):
432
- return grpc.experimental.unary_unary(request, target, '/iqm.server.Jobs/CancelJobV1',
433
- job__pb2.JobLookupV1.SerializeToString,
434
- job__pb2.JobV1.FromString,
435
- options, channel_credentials,
436
- insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@@ -1,51 +0,0 @@
1
- # Copyright 2025 IQM
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # -*- coding: utf-8 -*-
15
- # Generated by the protocol buffer compiler. DO NOT EDIT!
16
- # source: qc.proto
17
- # Protobuf Python Version: 4.25.1
18
- """Generated protocol buffer code."""
19
- from google.protobuf import descriptor as _descriptor
20
- from google.protobuf import descriptor_pool as _descriptor_pool
21
- from google.protobuf import symbol_database as _symbol_database
22
- from google.protobuf.internal import builder as _builder
23
- # @@protoc_insertion_point(imports)
24
-
25
- _sym_db = _symbol_database.Default()
26
-
27
-
28
- from . import common_pb2 as common__pb2
29
- from . import uuid_pb2 as uuid__pb2
30
-
31
-
32
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x08qc.proto\x12\niqm.server\x1a\x0c\x63ommon.proto\x1a\nuuid.proto\"T\n\x17QuantumComputerLookupV1\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x10.iqm.server.UuidH\x00\x12\x0f\n\x05\x61lias\x18\x02 \x01(\tH\x00\x42\x08\n\x06lookup\"\x1e\n\x1cListQuantumComputerFiltersV1\"V\n\x11QuantumComputerV1\x12\x1c\n\x02id\x18\x01 \x02(\x0b\x32\x10.iqm.server.Uuid\x12\r\n\x05\x61lias\x18\x02 \x02(\t\x12\x14\n\x0c\x64isplay_name\x18\x03 \x02(\t\"F\n\x16QuantumComputersListV1\x12,\n\x05items\x18\x01 \x03(\x0b\x32\x1d.iqm.server.QuantumComputerV1\"Y\n\x1fQuantumComputerResourceLookupV1\x12\x1f\n\x05qc_id\x18\x01 \x02(\x0b\x32\x10.iqm.server.Uuid\x12\x15\n\rresource_name\x18\x02 \x02(\t2\xbc\x02\n\x10QuantumComputers\x12Z\n\x14GetQuantumComputerV1\x12#.iqm.server.QuantumComputerLookupV1\x1a\x1d.iqm.server.QuantumComputerV1\x12\x66\n\x16ListQuantumComputersV1\x12(.iqm.server.ListQuantumComputerFiltersV1\x1a\".iqm.server.QuantumComputersListV1\x12\x64\n\x1cGetQuantumComputerResourceV1\x12+.iqm.server.QuantumComputerResourceLookupV1\x1a\x15.iqm.server.DataChunk0\x01')
33
-
34
- _globals = globals()
35
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
36
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'qc_pb2', _globals)
37
- if _descriptor._USE_C_DESCRIPTORS == False:
38
- DESCRIPTOR._options = None
39
- _globals['_QUANTUMCOMPUTERLOOKUPV1']._serialized_start=50
40
- _globals['_QUANTUMCOMPUTERLOOKUPV1']._serialized_end=134
41
- _globals['_LISTQUANTUMCOMPUTERFILTERSV1']._serialized_start=136
42
- _globals['_LISTQUANTUMCOMPUTERFILTERSV1']._serialized_end=166
43
- _globals['_QUANTUMCOMPUTERV1']._serialized_start=168
44
- _globals['_QUANTUMCOMPUTERV1']._serialized_end=254
45
- _globals['_QUANTUMCOMPUTERSLISTV1']._serialized_start=256
46
- _globals['_QUANTUMCOMPUTERSLISTV1']._serialized_end=326
47
- _globals['_QUANTUMCOMPUTERRESOURCELOOKUPV1']._serialized_start=328
48
- _globals['_QUANTUMCOMPUTERRESOURCELOOKUPV1']._serialized_end=417
49
- _globals['_QUANTUMCOMPUTERS']._serialized_start=420
50
- _globals['_QUANTUMCOMPUTERS']._serialized_end=736
51
- # @@protoc_insertion_point(module_scope)
@@ -1,57 +0,0 @@
1
- # Copyright 2025 IQM
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- from . import common_pb2 as _common_pb2
15
- from . import uuid_pb2 as _uuid_pb2
16
- from google.protobuf.internal import containers as _containers
17
- from google.protobuf import descriptor as _descriptor
18
- from google.protobuf import message as _message
19
- from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
20
-
21
- DESCRIPTOR: _descriptor.FileDescriptor
22
-
23
- class QuantumComputerLookupV1(_message.Message):
24
- __slots__ = ("id", "alias")
25
- ID_FIELD_NUMBER: _ClassVar[int]
26
- ALIAS_FIELD_NUMBER: _ClassVar[int]
27
- id: _uuid_pb2.Uuid
28
- alias: str
29
- def __init__(self, id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ..., alias: _Optional[str] = ...) -> None: ...
30
-
31
- class ListQuantumComputerFiltersV1(_message.Message):
32
- __slots__ = ()
33
- def __init__(self) -> None: ...
34
-
35
- class QuantumComputerV1(_message.Message):
36
- __slots__ = ("id", "alias", "display_name")
37
- ID_FIELD_NUMBER: _ClassVar[int]
38
- ALIAS_FIELD_NUMBER: _ClassVar[int]
39
- DISPLAY_NAME_FIELD_NUMBER: _ClassVar[int]
40
- id: _uuid_pb2.Uuid
41
- alias: str
42
- display_name: str
43
- def __init__(self, id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ..., alias: _Optional[str] = ..., display_name: _Optional[str] = ...) -> None: ...
44
-
45
- class QuantumComputersListV1(_message.Message):
46
- __slots__ = ("items",)
47
- ITEMS_FIELD_NUMBER: _ClassVar[int]
48
- items: _containers.RepeatedCompositeFieldContainer[QuantumComputerV1]
49
- def __init__(self, items: _Optional[_Iterable[_Union[QuantumComputerV1, _Mapping]]] = ...) -> None: ...
50
-
51
- class QuantumComputerResourceLookupV1(_message.Message):
52
- __slots__ = ("qc_id", "resource_name")
53
- QC_ID_FIELD_NUMBER: _ClassVar[int]
54
- RESOURCE_NAME_FIELD_NUMBER: _ClassVar[int]
55
- qc_id: _uuid_pb2.Uuid
56
- resource_name: str
57
- def __init__(self, qc_id: _Optional[_Union[_uuid_pb2.Uuid, _Mapping]] = ..., resource_name: _Optional[str] = ...) -> None: ...