iqm-pulla 11.1.0__tar.gz → 11.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 (76) hide show
  1. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/CHANGELOG.rst +16 -0
  2. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/PKG-INFO +6 -6
  3. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Quick Start.ipynb +10 -0
  4. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/base.txt +1 -1
  5. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/notebook.txt +1 -1
  6. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/qir.txt +1 -1
  7. iqm_pulla-11.3.0/requirements/qiskit.txt +5 -0
  8. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/pulla.py +113 -53
  9. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm_pulla.egg-info/PKG-INFO +6 -6
  10. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm_pulla.egg-info/requires.txt +5 -5
  11. iqm_pulla-11.3.0/version.txt +1 -0
  12. iqm_pulla-11.1.0/requirements/qiskit.txt +0 -5
  13. iqm_pulla-11.1.0/version.txt +0 -1
  14. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/AUTHORS.rst +0 -0
  15. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/LICENSE.txt +0 -0
  16. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/MANIFEST.in +0 -0
  17. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/README.rst +0 -0
  18. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/API.rst +0 -0
  19. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Compilation Stages.ipynb +0 -0
  20. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Configuration and Usage.ipynb +0 -0
  21. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Custom Gates and Implementations.ipynb +0 -0
  22. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Example - Compilation With Local Calibration Set.ipynb +0 -0
  23. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Example - Executing QIR programs.ipynb +0 -0
  24. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Example - Measuring T1.ipynb +0 -0
  25. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Example - Randomized Benchmarking.ipynb +0 -0
  26. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/Example - Simple Dynamical Decoupling.ipynb +0 -0
  27. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/_static/images/favicon.ico +0 -0
  28. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/_static/images/logo.png +0 -0
  29. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/_templates/autosummary-class-template.rst +0 -0
  30. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/_templates/autosummary-module-template.rst +0 -0
  31. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/authors.rst +0 -0
  32. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/changelog.rst +0 -0
  33. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/common_errors.rst +0 -0
  34. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/conf.py +0 -0
  35. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/examples.rst +0 -0
  36. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/index.rst +0 -0
  37. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/license.rst +0 -0
  38. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/migration_guide.rst +0 -0
  39. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/readme.rst +0 -0
  40. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/references.bib +0 -0
  41. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/references.rst +0 -0
  42. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/docs/user_guides.rst +0 -0
  43. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/pyproject.toml +0 -0
  44. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/base.in +0 -0
  45. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/base.in.internal +0 -0
  46. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/notebook.in +0 -0
  47. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/qir.in +0 -0
  48. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/requirements/qiskit.in.internal +0 -0
  49. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/setup.cfg +0 -0
  50. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/setup.py +0 -0
  51. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/__init__.py +0 -0
  52. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/__init__.py +0 -0
  53. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/compiler.py +0 -0
  54. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/dd.py +0 -0
  55. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/errors.py +0 -0
  56. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/standard_stages.py +0 -0
  57. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/compiler/station_settings.py +0 -0
  58. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/interface/__init__.py +0 -0
  59. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/interface/compiler.py +0 -0
  60. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/cpc/py.typed +0 -0
  61. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/__init__.py +0 -0
  62. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/calibration.py +0 -0
  63. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/interface.py +0 -0
  64. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/py.typed +0 -0
  65. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/quantum_architecture.py +0 -0
  66. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/utils.py +0 -0
  67. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/utils_cirq.py +0 -0
  68. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/utils_dd.py +0 -0
  69. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/utils_qir.py +0 -0
  70. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm/pulla/utils_qiskit.py +0 -0
  71. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm_pulla.egg-info/SOURCES.txt +0 -0
  72. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm_pulla.egg-info/dependency_links.txt +0 -0
  73. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/src/iqm_pulla.egg-info/top_level.txt +0 -0
  74. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/tests/.pylintrc +0 -0
  75. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/tests/__init__.py +0 -0
  76. {iqm_pulla-11.1.0 → iqm_pulla-11.3.0}/tests/conftest.py +0 -0
@@ -2,6 +2,22 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 11.3.0 (2025-09-12)
6
+ ===========================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Update dependency on station-control-client
12
+
13
+ Version 11.2.0 (2025-09-12)
14
+ ===========================
15
+
16
+ Features
17
+ --------
18
+
19
+ - Allow executing jobs in async fashion
20
+
5
21
  Version 11.1.0 (2025-09-12)
6
22
  ===========================
7
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulla
3
- Version: 11.1.0
3
+ Version: 11.3.0
4
4
  Summary: Client library for pulse-level access to an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -217,30 +217,30 @@ Description-Content-Type: text/x-rst
217
217
  License-File: LICENSE.txt
218
218
  License-File: AUTHORS.rst
219
219
  Requires-Dist: iqm-exa-common<27,>=26
220
- Requires-Dist: iqm-station-control-client<10,>=9
220
+ Requires-Dist: iqm-station-control-client<11,>=10
221
221
  Requires-Dist: iqm-pulse<13,>=12
222
222
  Requires-Dist: iqm-data-definitions<3.0,>=2.13
223
223
  Requires-Dist: pylatexenc==2.10
224
224
  Requires-Dist: pydantic<3.0,>=2.10.4
225
225
  Provides-Extra: notebook
226
226
  Requires-Dist: iqm-exa-common<27,>=26; extra == "notebook"
227
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "notebook"
227
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "notebook"
228
228
  Requires-Dist: iqm-pulse<13,>=12; extra == "notebook"
229
229
  Requires-Dist: notebook<7,>=6.4.11; extra == "notebook"
230
230
  Requires-Dist: matplotlib<4,>=3.6.3; extra == "notebook"
231
231
  Requires-Dist: nbclient~=0.5.10; extra == "notebook"
232
232
  Provides-Extra: qir
233
233
  Requires-Dist: iqm-exa-common<27,>=26; extra == "qir"
234
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "qir"
234
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "qir"
235
235
  Requires-Dist: iqm-pulse<13,>=12; extra == "qir"
236
236
  Requires-Dist: iqm-pyqir==0.12.0; extra == "qir"
237
237
  Requires-Dist: iqm-qiskit-qir==0.8.0; extra == "qir"
238
238
  Provides-Extra: qiskit
239
239
  Requires-Dist: iqm-exa-common<27,>=26; extra == "qiskit"
240
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "qiskit"
240
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "qiskit"
241
241
  Requires-Dist: iqm-pulse<13,>=12; extra == "qiskit"
242
- Requires-Dist: iqm-client<32,>=31; extra == "qiskit"
243
242
  Requires-Dist: iqm-client[qiskit]<32,>=31; extra == "qiskit"
243
+ Requires-Dist: iqm-client<32,>=31; extra == "qiskit"
244
244
 
245
245
  IQM Pulla
246
246
  #########
@@ -388,6 +388,16 @@
388
388
  "print(f\"Qiskit result counts:\\n{qiskit_result.get_counts()}\\n\")"
389
389
  ]
390
390
  },
391
+ {
392
+ "cell_type": "markdown",
393
+ "id": "1778cf4c",
394
+ "metadata": {},
395
+ "source": [
396
+ "By default, `execute()` submits the job and waits for its completion by polling the server every second, until interrupted. If you pass `wait_completion=False`, then the method will terminate immediately after submitting the job and return a `StationControlResult` object with the job id in `PENDING` status. \n",
397
+ "\n",
398
+ "You can then manually retrieve job results by calling `get_execution_result()`. It will also, by default, wait for the job to complete until interrupted. If you pass `wait_completion=False`, then `get_execution_result()` will query the server only once and return the current state; it is then up to you to call `get_execution_result()` until the job is completed."
399
+ ]
400
+ },
391
401
  {
392
402
  "cell_type": "markdown",
393
403
  "id": "2014d3e7",
@@ -1,5 +1,5 @@
1
1
  iqm-exa-common>=26,<27
2
- iqm-station-control-client>=9,<10
2
+ iqm-station-control-client>=10,<11
3
3
  iqm-pulse>=12,<13
4
4
  iqm-data-definitions >= 2.13, < 3.0
5
5
  pylatexenc == 2.10
@@ -1,5 +1,5 @@
1
1
  iqm-exa-common>=26,<27
2
- iqm-station-control-client>=9,<10
2
+ iqm-station-control-client>=10,<11
3
3
  iqm-pulse>=12,<13
4
4
  notebook >= 6.4.11, < 7
5
5
  matplotlib >= 3.6.3, < 4
@@ -1,5 +1,5 @@
1
1
  iqm-exa-common>=26,<27
2
- iqm-station-control-client>=9,<10
2
+ iqm-station-control-client>=10,<11
3
3
  iqm-pulse>=12,<13
4
4
  iqm-pyqir==0.12.0
5
5
  iqm-qiskit-qir==0.8.0
@@ -0,0 +1,5 @@
1
+ iqm-exa-common>=26,<27
2
+ iqm-station-control-client>=10,<11
3
+ iqm-pulse>=12,<13
4
+ iqm-client[qiskit]>=31,<32
5
+ iqm-client>=31,<32
@@ -210,6 +210,7 @@ class Pulla:
210
210
  context: dict[str, Any],
211
211
  settings: SettingNode,
212
212
  verbose: bool = True,
213
+ wait_completion: bool = True,
213
214
  ) -> StationControlResult:
214
215
  """Executes a quantum circuit on the remote quantum computer.
215
216
 
@@ -218,6 +219,7 @@ class Pulla:
218
219
  context: Context object of the successful compiler run, containing the readout mappings.
219
220
  settings: Station settings.
220
221
  verbose: Whether to print results.
222
+ wait_completion: If True, returns immediately with job ID. If False, waits for completion.
221
223
 
222
224
  Returns:
223
225
  results of the execution
@@ -240,72 +242,130 @@ class Pulla:
240
242
  )
241
243
  )
242
244
  job_id = uuid.UUID(sweep_response["job_id"])
243
- try:
244
- logger.info("Created job in queue with ID: %s", job_id)
245
- if href := sweep_response.get("job_href"):
246
- logger.info("Job link: %s", href)
247
245
 
248
- logger.info("Waiting for the job to finish...")
246
+ logger.info("Created job in queue with ID: %s", job_id)
247
+ if href := sweep_response.get("job_href"):
248
+ logger.info("Job link: %s", href)
249
249
 
250
- while True:
251
- job_data = self._station_control.get_job(job_id)
252
- sc_result = StationControlResult(sweep_id=job_id, task_id=job_id, status=TaskStatus.PENDING)
250
+ if wait_completion:
251
+ return self.get_execution_result(job_id, context, verbose, wait_completion=True)
252
+ else:
253
+ return StationControlResult(sweep_id=job_id, task_id=job_id, status=TaskStatus.PENDING)
253
254
 
254
- if job_data.job_status <= JobExecutorStatus.EXECUTION_STARTED: # type: ignore[operator]
255
- # Wait in the task queue while showing a progress bar
255
+ def get_execution_result(
256
+ self,
257
+ job_id: uuid.UUID,
258
+ context: dict[str, Any],
259
+ verbose: bool = True,
260
+ wait_completion: bool = True,
261
+ ) -> StationControlResult:
262
+ """Get execution results.
256
263
 
257
- interrupted = self._station_control._wait_job_completion(str(job_id), get_progress_bar_callback()) # type: ignore[attr-defined]
258
- if interrupted:
259
- raise KeyboardInterrupt
260
- else:
261
- # job is not in queue or executing, so we can query the sweep
262
- sweep_data = self._station_control.get_sweep(job_id)
263
- if job_data.job_status == JobExecutorStatus.READY:
264
- logger.info("Sweep status: %s", str(sweep_data.job_status))
265
-
266
- sc_result.status = TaskStatus.READY
267
- sc_result.result = map_sweep_results_to_logical_qubits(
268
- self._station_control.get_sweep_results(job_id),
269
- context["readout_mappings"],
270
- context["options"].heralding_mode,
271
- )
272
- sc_result.start_time = (
273
- sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
274
- )
275
- sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
264
+ Args:
265
+ job_id: The ID of the job to process.
266
+ context: Context object of the successful compiler run, containing the readout mappings.
267
+ verbose: Whether to print results.
268
+ wait_completion: If True, waits for job completion. If False, returns current status.
276
269
 
277
- if verbose:
278
- # TODO: Consider using just 'logger.debug' here and remove 'verbose'
279
- logger.info(sc_result.result)
270
+ Returns:
271
+ The processed station control result.
280
272
 
281
- return sc_result
273
+ """
274
+ sc_result = StationControlResult(sweep_id=job_id, task_id=job_id, status=TaskStatus.PENDING)
282
275
 
283
- if job_data.job_status == JobExecutorStatus.FAILED:
284
- sc_result.status = TaskStatus.FAILED
285
- sc_result.start_time = (
286
- sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
287
- )
288
- sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
289
- sc_result.message = str(job_data.job_error)
290
- logger.error("Submission failed! Error: %s", sc_result.message)
291
- return sc_result
276
+ try:
277
+ if wait_completion:
278
+ logger.info("Waiting for the job to finish...")
292
279
 
293
- if job_data.job_status == JobExecutorStatus.ABORTED:
294
- sc_result.status = TaskStatus.FAILED
295
- sc_result.start_time = (
296
- sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
280
+ while True:
281
+ job_data = self._station_control.get_job(job_id)
282
+ sc_result.status = TaskStatus.PENDING
283
+
284
+ if job_data.job_status <= JobExecutorStatus.EXECUTION_STARTED: # type: ignore[operator]
285
+ if wait_completion:
286
+ # Wait in the task queue while showing a progress bar
287
+ interrupted = self._station_control._wait_job_completion( # type: ignore[attr-defined]
288
+ str(job_id), get_progress_bar_callback()
289
+ )
290
+ if interrupted:
291
+ raise KeyboardInterrupt
292
+ else:
293
+ # Non-blocking check - return current status
294
+ sc_result.status = (
295
+ TaskStatus.PROGRESS
296
+ if job_data.job_status == JobExecutorStatus.EXECUTION_STARTED
297
+ else TaskStatus.PENDING
297
298
  )
298
- sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
299
- sc_result.message = str(job_data.job_error)
300
- logger.error("Submission was revoked!")
301
299
  return sc_result
302
-
303
- time.sleep(1)
300
+ else:
301
+ # job is not in queue or executing, so we can query the sweep
302
+ result_or_nothing = self._get_result_of_started_job(
303
+ context, job_data, job_id, sc_result, wait_completion, verbose
304
+ )
305
+ if result_or_nothing is not None:
306
+ return result_or_nothing
307
+
308
+ if wait_completion:
309
+ time.sleep(1)
310
+ else:
311
+ break
304
312
 
305
313
  except KeyboardInterrupt as exc:
306
- logger.info("Caught KeyboardInterrupt, revoking job %s", job_id)
307
- self._station_control.abort_job(job_id)
314
+ if wait_completion:
315
+ logger.info("Caught KeyboardInterrupt, revoking job %s", job_id)
316
+ self._station_control.abort_job(job_id)
308
317
  raise KeyboardInterrupt from exc
309
318
 
319
+ return sc_result
320
+
321
+ def _get_result_of_started_job(
322
+ self,
323
+ context: dict[str, Any],
324
+ job_data: Any,
325
+ job_id: uuid.UUID,
326
+ sc_result: StationControlResult,
327
+ wait_completion: bool,
328
+ verbose: bool,
329
+ ) -> StationControlResult | None:
330
+ sweep_data = self._station_control.get_sweep(job_id)
331
+ if job_data.job_status == JobExecutorStatus.READY:
332
+ if wait_completion:
333
+ logger.info("Sweep status: %s", str(sweep_data.job_status))
334
+
335
+ sc_result.status = TaskStatus.READY
336
+ sc_result.result = map_sweep_results_to_logical_qubits(
337
+ self._station_control.get_sweep_results(job_id),
338
+ context["readout_mappings"],
339
+ context["options"].heralding_mode,
340
+ )
341
+ sc_result.start_time = sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
342
+ sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
343
+
344
+ if verbose and wait_completion:
345
+ # TODO: Consider using just 'logger.debug' here and remove 'verbose'
346
+ logger.info(sc_result.result)
347
+
348
+ return sc_result
349
+
350
+ if job_data.job_status == JobExecutorStatus.FAILED:
351
+ sc_result.status = TaskStatus.FAILED
352
+ sc_result.start_time = sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
353
+ sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
354
+ sc_result.message = str(job_data.job_error)
355
+ if wait_completion:
356
+ logger.error("Submission failed! Error: %s", sc_result.message)
357
+ return sc_result
358
+
359
+ if job_data.job_status == JobExecutorStatus.ABORTED:
360
+ sc_result.status = TaskStatus.FAILED
361
+ sc_result.start_time = sweep_data.begin_timestamp.isoformat() if sweep_data.begin_timestamp else None
362
+ sc_result.end_time = sweep_data.end_timestamp.isoformat() if sweep_data.end_timestamp else None
363
+ sc_result.message = str(job_data.job_error)
364
+ if wait_completion:
365
+ logger.error("Submission was revoked!")
366
+ return sc_result
367
+
368
+ return None
369
+
310
370
 
311
371
  init_loggers({"iqm": "INFO"})
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulla
3
- Version: 11.1.0
3
+ Version: 11.3.0
4
4
  Summary: Client library for pulse-level access to an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -217,30 +217,30 @@ Description-Content-Type: text/x-rst
217
217
  License-File: LICENSE.txt
218
218
  License-File: AUTHORS.rst
219
219
  Requires-Dist: iqm-exa-common<27,>=26
220
- Requires-Dist: iqm-station-control-client<10,>=9
220
+ Requires-Dist: iqm-station-control-client<11,>=10
221
221
  Requires-Dist: iqm-pulse<13,>=12
222
222
  Requires-Dist: iqm-data-definitions<3.0,>=2.13
223
223
  Requires-Dist: pylatexenc==2.10
224
224
  Requires-Dist: pydantic<3.0,>=2.10.4
225
225
  Provides-Extra: notebook
226
226
  Requires-Dist: iqm-exa-common<27,>=26; extra == "notebook"
227
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "notebook"
227
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "notebook"
228
228
  Requires-Dist: iqm-pulse<13,>=12; extra == "notebook"
229
229
  Requires-Dist: notebook<7,>=6.4.11; extra == "notebook"
230
230
  Requires-Dist: matplotlib<4,>=3.6.3; extra == "notebook"
231
231
  Requires-Dist: nbclient~=0.5.10; extra == "notebook"
232
232
  Provides-Extra: qir
233
233
  Requires-Dist: iqm-exa-common<27,>=26; extra == "qir"
234
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "qir"
234
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "qir"
235
235
  Requires-Dist: iqm-pulse<13,>=12; extra == "qir"
236
236
  Requires-Dist: iqm-pyqir==0.12.0; extra == "qir"
237
237
  Requires-Dist: iqm-qiskit-qir==0.8.0; extra == "qir"
238
238
  Provides-Extra: qiskit
239
239
  Requires-Dist: iqm-exa-common<27,>=26; extra == "qiskit"
240
- Requires-Dist: iqm-station-control-client<10,>=9; extra == "qiskit"
240
+ Requires-Dist: iqm-station-control-client<11,>=10; extra == "qiskit"
241
241
  Requires-Dist: iqm-pulse<13,>=12; extra == "qiskit"
242
- Requires-Dist: iqm-client<32,>=31; extra == "qiskit"
243
242
  Requires-Dist: iqm-client[qiskit]<32,>=31; extra == "qiskit"
243
+ Requires-Dist: iqm-client<32,>=31; extra == "qiskit"
244
244
 
245
245
  IQM Pulla
246
246
  #########
@@ -1,5 +1,5 @@
1
1
  iqm-exa-common<27,>=26
2
- iqm-station-control-client<10,>=9
2
+ iqm-station-control-client<11,>=10
3
3
  iqm-pulse<13,>=12
4
4
  iqm-data-definitions<3.0,>=2.13
5
5
  pylatexenc==2.10
@@ -7,7 +7,7 @@ pydantic<3.0,>=2.10.4
7
7
 
8
8
  [notebook]
9
9
  iqm-exa-common<27,>=26
10
- iqm-station-control-client<10,>=9
10
+ iqm-station-control-client<11,>=10
11
11
  iqm-pulse<13,>=12
12
12
  notebook<7,>=6.4.11
13
13
  matplotlib<4,>=3.6.3
@@ -15,14 +15,14 @@ nbclient~=0.5.10
15
15
 
16
16
  [qir]
17
17
  iqm-exa-common<27,>=26
18
- iqm-station-control-client<10,>=9
18
+ iqm-station-control-client<11,>=10
19
19
  iqm-pulse<13,>=12
20
20
  iqm-pyqir==0.12.0
21
21
  iqm-qiskit-qir==0.8.0
22
22
 
23
23
  [qiskit]
24
24
  iqm-exa-common<27,>=26
25
- iqm-station-control-client<10,>=9
25
+ iqm-station-control-client<11,>=10
26
26
  iqm-pulse<13,>=12
27
- iqm-client<32,>=31
28
27
  iqm-client[qiskit]<32,>=31
28
+ iqm-client<32,>=31
@@ -0,0 +1 @@
1
+ 11.3.0
@@ -1,5 +0,0 @@
1
- iqm-exa-common>=26,<27
2
- iqm-station-control-client>=9,<10
3
- iqm-pulse>=12,<13
4
- iqm-client>=31,<32
5
- iqm-client[qiskit]>=31,<32
@@ -1 +0,0 @@
1
- 11.1.0
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