iqm-pulla 9.6.0__tar.gz → 9.8.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_pulla-9.6.0 → iqm_pulla-9.8.0}/CHANGELOG.rst +16 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/PKG-INFO +3 -3
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/qiskit.txt +2 -2
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/pulla.py +44 -44
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm_pulla.egg-info/PKG-INFO +3 -3
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm_pulla.egg-info/requires.txt +2 -2
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/tests/conftest.py +6 -3
- iqm_pulla-9.8.0/version.txt +1 -0
- iqm_pulla-9.6.0/version.txt +0 -1
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/AUTHORS.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/LICENSE.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/MANIFEST.in +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/README.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/API.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Compilation Stages.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Configuration and Usage.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Custom Gates and Implementations.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Compilation With Local Calibration Set.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Executing QIR programs.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Measuring T1.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Randomized Benchmarking.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Simple Dynamical Decoupling.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Quick Start.ipynb +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/_static/images/favicon.ico +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/_static/images/logo.png +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/_templates/autosummary-class-template.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/_templates/autosummary-module-template.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/authors.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/changelog.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/common_errors.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/conf.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/examples.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/index.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/license.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/migration_guide.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/readme.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/references.bib +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/references.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/user_guides.rst +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/pyproject.toml +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/base.in +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/base.in.internal +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/base.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/notebook.in +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/notebook.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/qir.in +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/qir.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/requirements/qiskit.in.internal +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/setup.cfg +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/setup.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/__init__.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/__init__.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/compiler.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/dd.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/errors.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/standard_stages.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/compiler/station_settings.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/interface/__init__.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/interface/compiler.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/cpc/py.typed +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/__init__.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/calibration.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/interface.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/py.typed +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/quantum_architecture.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/utils.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/utils_cirq.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/utils_dd.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/utils_qir.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm/pulla/utils_qiskit.py +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm_pulla.egg-info/SOURCES.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm_pulla.egg-info/dependency_links.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/src/iqm_pulla.egg-info/top_level.txt +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/tests/.pylintrc +0 -0
- {iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/tests/__init__.py +0 -0
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
Changelog
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
+
Version 9.8.0 (2025-08-21)
|
|
6
|
+
==========================
|
|
7
|
+
|
|
8
|
+
Bug fixes
|
|
9
|
+
---------
|
|
10
|
+
|
|
11
|
+
- FIx Pulla.execute crashing when there are jobs in the queue
|
|
12
|
+
|
|
13
|
+
Version 9.7.0 (2025-08-20)
|
|
14
|
+
==========================
|
|
15
|
+
|
|
16
|
+
Features
|
|
17
|
+
--------
|
|
18
|
+
|
|
19
|
+
Fix qiskit-to-pulla tests so they don't initialize IQMBackend with metrics :issue:`SW-769`.
|
|
20
|
+
|
|
5
21
|
Version 9.6.0 (2025-08-20)
|
|
6
22
|
==========================
|
|
7
23
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iqm-pulla
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.8.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
|
|
@@ -239,8 +239,8 @@ Provides-Extra: qiskit
|
|
|
239
239
|
Requires-Dist: iqm-exa-common<27,>=26; extra == "qiskit"
|
|
240
240
|
Requires-Dist: iqm-station-control-client<10,>=9; extra == "qiskit"
|
|
241
241
|
Requires-Dist: iqm-pulse<11,>=10; extra == "qiskit"
|
|
242
|
-
Requires-Dist: iqm-client[qiskit]<30
|
|
243
|
-
Requires-Dist: iqm-client<30
|
|
242
|
+
Requires-Dist: iqm-client[qiskit]<31,>=30; extra == "qiskit"
|
|
243
|
+
Requires-Dist: iqm-client<31,>=30; extra == "qiskit"
|
|
244
244
|
|
|
245
245
|
IQM Pulla
|
|
246
246
|
#########
|
|
@@ -248,57 +248,57 @@ class Pulla:
|
|
|
248
248
|
logger.info("Waiting for the job to finish...")
|
|
249
249
|
|
|
250
250
|
while True:
|
|
251
|
-
|
|
251
|
+
job_data = self._station_control.get_job(job_id)
|
|
252
252
|
sc_result = StationControlResult(sweep_id=job_id, task_id=job_id, status=TaskStatus.PENDING)
|
|
253
253
|
|
|
254
|
-
if
|
|
254
|
+
if job_data.job_status <= JobExecutorStatus.EXECUTION_STARTED: # type: ignore[operator]
|
|
255
255
|
# Wait in the task queue while showing a progress bar
|
|
256
256
|
|
|
257
257
|
interrupted = self._station_control._wait_job_completion(str(job_id), get_progress_bar_callback()) # type: ignore[attr-defined]
|
|
258
258
|
if interrupted:
|
|
259
259
|
raise KeyboardInterrupt
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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
|
|
276
|
+
|
|
277
|
+
if verbose:
|
|
278
|
+
# TODO: Consider using just 'logger.debug' here and remove 'verbose'
|
|
279
|
+
logger.info(sc_result.result)
|
|
280
|
+
|
|
281
|
+
return sc_result
|
|
282
|
+
|
|
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
|
|
292
|
+
|
|
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
|
|
297
|
+
)
|
|
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
|
+
return sc_result
|
|
302
302
|
|
|
303
303
|
time.sleep(1)
|
|
304
304
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iqm-pulla
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.8.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
|
|
@@ -239,8 +239,8 @@ Provides-Extra: qiskit
|
|
|
239
239
|
Requires-Dist: iqm-exa-common<27,>=26; extra == "qiskit"
|
|
240
240
|
Requires-Dist: iqm-station-control-client<10,>=9; extra == "qiskit"
|
|
241
241
|
Requires-Dist: iqm-pulse<11,>=10; extra == "qiskit"
|
|
242
|
-
Requires-Dist: iqm-client[qiskit]<30
|
|
243
|
-
Requires-Dist: iqm-client<30
|
|
242
|
+
Requires-Dist: iqm-client[qiskit]<31,>=30; extra == "qiskit"
|
|
243
|
+
Requires-Dist: iqm-client<31,>=30; extra == "qiskit"
|
|
244
244
|
|
|
245
245
|
IQM Pulla
|
|
246
246
|
#########
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
from http import HTTPStatus
|
|
17
17
|
from importlib.metadata import version
|
|
18
18
|
import json
|
|
19
|
-
import os
|
|
20
19
|
from pathlib import Path
|
|
21
20
|
from unittest.mock import Mock
|
|
22
21
|
from uuid import UUID
|
|
@@ -43,7 +42,7 @@ from iqm.station_control.client.iqm_server import proto
|
|
|
43
42
|
from iqm.station_control.client.iqm_server.testing.iqm_server_mock import IqmServerMockBase
|
|
44
43
|
from iqm.station_control.client.station_control import StationControlClient
|
|
45
44
|
|
|
46
|
-
RESOURCES = Path(
|
|
45
|
+
RESOURCES = Path(__file__).parent / "resources"
|
|
47
46
|
|
|
48
47
|
|
|
49
48
|
@pytest.fixture(scope="module")
|
|
@@ -106,6 +105,10 @@ def pulla_on_spark(request, monkeypatch):
|
|
|
106
105
|
response = Response()
|
|
107
106
|
response.status_code = HTTPStatus.INTERNAL_SERVER_ERROR
|
|
108
107
|
return response
|
|
108
|
+
if args[0].startswith(f"{root_url}/station/jobs/"):
|
|
109
|
+
response = Response()
|
|
110
|
+
response.status_code = HTTPStatus.INTERNAL_SERVER_ERROR
|
|
111
|
+
return response
|
|
109
112
|
|
|
110
113
|
return HTTPResponse(404)
|
|
111
114
|
|
|
@@ -241,7 +244,7 @@ def qiskit_backend_spark(monkeypatch) -> IQMBackend:
|
|
|
241
244
|
when(mock_about_response).json().thenReturn({})
|
|
242
245
|
when(requests).get(f"{root_url}/station/about", headers=ANY).thenReturn(mock_about_response)
|
|
243
246
|
iqm_client = IQMClient(f"{root_url}/station", client_signature="test fixture")
|
|
244
|
-
return IQMBackend(iqm_client, calibration_set_id=calset_id)
|
|
247
|
+
return IQMBackend(iqm_client, calibration_set_id=calset_id, use_metrics=False)
|
|
245
248
|
|
|
246
249
|
|
|
247
250
|
@pytest.fixture
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
9.8.0
|
iqm_pulla-9.6.0/version.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
9.6.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
|
{iqm_pulla-9.6.0 → iqm_pulla-9.8.0}/docs/Example - Compilation With Local Calibration Set.ipynb
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
|