Changelog

Contents

Changelog#

Version 29.8.0 (2025-07-23)#

Features#

  • An update to IQMFacadeBackend such that all available IQMFakeBackends are usable for simulation, rather than

just IQMFakeAdonis

Version 29.7.0 (2025-07-15)#

Bug fixes#

  • Fix Resonance example links in Qiskit user guide

Version 29.6.0 (2025-07-15)#

Bug fixes#

  • Fix broken link in Qiskit user guide.

Version 29.5.0 (2025-07-09)#

Features#

  • Enable mypy type checking in CI and add temporary type ignores to the source code. :issue:`SW-1615`

Version 29.4.0 (2025-07-07)#

Features#

  • Bugfix: Fixed the iqm-client cirq documentation such that the instruction is to route circuits before decomposing.

Version 29.3.0 (2025-07-02)#

Bug fixes#

  • Fix type errors raised by mypy.

Version 29.2.0 (2025-06-30)#

Features#

  • Bugfix: Fixed case where the transpiler would sometimes replace Parameters in the circuit with another Parameter.

Version 29.1.0 (2025-06-30)#

Bug fixes#

  • Add job id to APITimeoutError

Version 29.0.0 (2025-06-13)#

Features#

  • Major IQMClient refactoring. Many methods now use StationControlClient internally to retrieve the data, instead of using direct HTTP requests to REST API. This work is going to continue in the future, and the end goal is to remove all HTTP logic from IQMClient and handle HTTP requests/responses only in StationControlClient. :issue:`SW-1084`

Breaking Changes#

  • Remove APIVariant from IQMClient, it will support only one version at any given time from now on. Upgrade/downgrade software if you want to use different versions of IQMClient. :issue:`SW-1084`

  • You may have to pass a different url to IQMClient than before: - If you previously used APIVariant.V1, you typically need to change /cocos to /station in the URL. - If you previously used APIVariant.V2, you typically need to add /station to the URL. - If you previously used APIVariant.RESONANCE_COCOS_V1, no changes are needed to the URL.

  • Support for timeout_secs parameter has been dropped from some methods (get_static_quantum_architecture(), get_quality_metric_set(), get_calibration_set(), get_dynamic_quantum_architecture(), get_feedback_groups()). IQMClient uses StationControlClient to retrieve the data now instead of HTTP requests directly, and we have no plans to support different request timeout for each endpoint separately in StationControlClient. Instead, all endpoints uses the same timeout which is currently set to default 120 seconds.

Version 28.0.0 (2025-06-12)#

Breaking changes#

  • Updated iqm_client.models.Status to conform with changed station-control-client job statuses. :issue:`SW-1513`.

Version 27.1.0 (2025-06-09)#

Bug Fixes#

Version 27.0.0 (2025-06-02)#

Features#

Version 26.0.0 (2025-05-30)#

Features#

  • Altered iqm_client.models.status to cover changed station-control-client job statuses. :issue:`SW-1513`.

Version 25.5.0 (2025-05-30)#

Features#

  • Bump NumPy to 1.26.4.

Version 25.4.0 (2025-05-30)#

Bug fixes#

  • Improve auth error message

Version 25.3.0 (2025-05-28)#

Features#

  • Use new error log artifact format when obtaining job error message from station using V2 API.

Version 25.2.0 (2025-05-23)#

Features#

  • IQMClient.submit_run_request uses UTF-8 encoding for the JSON payload.

Version 25.1.0 (2025-05-21)#

Features#

  • Fix cocos path in ruff isort to run isort for cocos correctly.

Version 25.0.0 (2025-05-16)#

Features#

  • Extended iqm_client.models.status to cover new station-control job statuses. :issue:`SW-948`.

  • Updated to work with station-control version 42.0. Earlier versions of station-control will not work. :issue:`SW-948`

Breaking Changes#

  • iqm_client.models.Status.PENDING_EXECUTION changed from “pending execution” to “pending_execution”. :issue:`SW-948`.

  • iqm_client.models.status.PENDING_COMPILATION changed from “pending compilation” to “pending_compilation”. :issue:`SW-948.`

Version 24.3.0 (2025-05-14)#

Feature#

  • Allow the IQMMoveLayout transpiler to handle gates that are not in the native gateset, done by skipping the marking of Circuit Qubits as either qubit or resonator when the gate is not natively supported. :issue:`SW-1390`.

Version 24.2.0 (2025-05-12)#

Features#

  • Update dependency on exa-common

Version 24.1.1 (2025-05-12)#

Version 24.1.0 (2025-04-17)#

Features#

Version 24.0.0 (2025-04-17)#

Features#

Breaking changes#

  • Remove timeout_seconds from IQMJob and IQMBackend.run().

Version 23.8.0 (2025-04-11)#

Bug fixes#

  • Fix broken link in docs to Cirq user guide

Version 23.7.0 (2025-04-11)#

Bug fixes#

  • Update license

Version 23.6.0 (2025-04-10)#

Features#

  • fix flaky e2e tests

Version 23.5.0 (2025-04-09)#

Bug fixes#

  • Add STATIC_QUANTUM_ARCHITECTURE to RESONANCE_COCOS_V1 api

Version 23.4.0 (2025-04-09)#

Bug fixes#

Version 23.3.0 (2025-04-09)#

Bug fixes#

  • Fix links in readme to be compatible with PyPI publishing.

Version 23.2.0 (2025-04-09)#

Features#

  • iqm.cortex_cli is moved inside iqm-client to a new submodule iqm.iqm_client.cli. The corresponding cli extra dependency can be installed as iqm-client[cli]. :issue:`SW-1145`

Version 23.1.0 (2025-04-07)#

Features#

Version 23.0.0 (2025-04-04)#

Features#

  • Replaced the old quantum architecture in IQMBackendBase.

Version 22.16.0 (2025-04-03)#

Version 22.15.0 (2025-04-03)#

Features#

Version 22.14.0 (2025-04-02)#

  • Update the documentation footer to display the package version.

Version 22.13.0 (2025-04-02)#

Features#

  • Add cirq_iqm to iqm-client distribution package as an optional feature. :issue:`SW-1145`

Version 22.12.0 (2025-03-31)#

Features#

  • IQMClient.get_static_quantum_architecture() added. :issue:`SW-706`

  • iqm.qiskit_iqm.fake_backends.IQMFakeBackend uses the static quantum architecture. :issue:`SW-706`

Version 22.11.0 (2025-03-25)#

Features#

  • Improve qiskit_iqm installation instructions and update links to qiskit_iqm documentation.

Version 22.10.0 (2025-03-24)#

Features#

  • Add qiskit_iqm to iqm-client distribution package as an optional feature. :issue:`SW-1146`

Version 22.9.0 (2025-03-17)#

Features#

  • Restore Python 3.10 support

Version 22.8.0 (2025-03-10)#

Features#

  • IQMClient tolerates unrecognized job statuses from the server to ensure forward compatibility.

Version 22.7.0 (2025-03-07)#

Features#

  • Instruction.args now has a default value (an empty dict) for convenience. :issue:`SW-1289`

Bug fixes#

  • transpile_insert_moves() now handles barrier instructions properly. :issue:`SW-1289`

Version 22.6.0 (2025-03-07)#

Features#

  • Improve docstrings.

  • Remove boilerplate code in IQMClient endpoint requests, make the error behavior more uniform.

  • Speed up the unit tests by mocking sleep calls, do not send out actual HTTP requests.

Version 22.5.0 (2025-03-05)#

Features#

  • Bump version for an updated repo organization. No functional changes. :issue:`SW-1015`

  • Drop support for Python 3.10.

Version 22.4 (2025-02-25)#

  • Python 3.10 support is deprecated and will be removed in the future. #173

Version 22.3 (2025-02-24)#

  • Add the native reset operation. #170

Version 22.2 (2025-02-20)#

Version 22.1 (2025-02-18)#

  • The V1 API is deprecated and will be removed in a future release. Please use the V2 API instead. #167

Version 22.0 (2025-02-14)#

  • Refactor the transpilation code, make its details private, improve the docs. #156

  • By default transpile_insert_moves() now keeps any existing MOVE gates in the circuit. #156

  • Add the delay operation. #156

Version 20.17 (2025-02-14)#

  • Fix DQA deserialization when override_default_implementations is not empty. #166

Version 20.16 (2025-02-07)#

  • Define DDStrategy as Pydantic BaseModel #153

  • Add unit tests to test RunRequest with dynamical decoupling #153

Version 20.15 (2025-02-03)#

  • Relax version ranges of numpy, packaging. #165

Version 20.14 (2025-01-28)#

  • Add IQMClient::get_feedback_groups method. #162

Version 20.13 (2025-01-13)#

  • Fix package publishing from ci, no functional changes. #160

Version 20.12 (2025-01-13)#

  • Drop support for Python 3.9. #159

  • Add optional security-scanned lockfile. #159

Version 20.11 (2025-01-03)#

  • Add RESONANCE_COCOS_V1 API variant option for Resonance Cocos API v1. #158

  • Add IQMClient::get_run_counts method. #158

  • Add IQMClient::get_supported_client_libraries method. #158

Version 20.10 (2024-12-17)#

  • Fix Sphinx documentation build warnings #155

  • Enable Sphinx documentation build option to treat warnings as errors #155

Version 20.9 (2024-12-14)#

  • Added Python 3.12 support #154

  • Python 3.9 support is deprecated and will be removed in the future

Version 20.8 (2024-11-29)#

  • Add dd_mode and dd_strategy to CircuitCompilationOptions and RunRequest #152

Version 20.7 (2024-11-26)#

  • Fix typo of QUALITY in src/iqm/iqm_client/api.py #149

Version 20.6 (2024-11-21)#

  • Improve version compatibility check to avoid it preventing usage of the client in any situation. #150

Version 20.5 (2024-11-19)#

  • Fixed client version compatibility check. #148

Version 20.4 (2024-11-18)#

  • active_reset_cycles added to CircuitCompilationOptions (in 20.2 it was only added to RunRequest making it difficult to use).

Version 20.3 (2024-11-15)#

  • Add warning when initializing client with server that has incompatible version. #145

  • Improve error message when an endpoint returns a 404 error due to the server version not supporting the endpoint. #145

Version 20.2 (2024-11-15)#

  • Add active_reset_cycles circuit execution option, used for deciding between reset-by-wait and active reset (and how active reset cycles). #146

Version 20.1 (2024-10-30)#

  • Disable attestations on gh-action-pypi-publish to fix failing PyPI publishing #143

Version 20.0 (2024-10-30)#

  • Use dynamic quantum architecture for transpilation and validation. #140

  • Bugfix: cc_prx params fixed. #140

Version 19.0 (2024-12-16)#

  • Allow mid-circuit measurements and classically controlled PRX gates. #136

  • Deprecated native operations names phased_rx and measurement removed, use prx and measure instead. #136

Version 18.8 (2024-10-17)#

  • Fix MOVE gate validation for qubit mappings containing only some of the architecture qubits #137

Version 18.7 (2024-10-16)#

  • Fix list of endpoints supported by the V1 API. #138

Version 18.6 (2024-10-16)#

  • Add IQM Server API versioning support. #135

Version 18.5 (2024-10-15)#

  • Added isort formatting to the tox configuration, so it is automatically run when running tox -e format. #130

  • Bugfix: Fix the issue where the CircuitCompilationOptions was not used in local circuit validation when using the submit_circuit() method. Improved testing to catch the bug. #130

  • Bugfix: MOVE gate validation now also works with more than one resonator. #130

  • More specific validation and transpilation errors. #130

  • Docs updated: mid-circuit measurements are allowed on stations with cocos >= 30.2. #130

  • Integration guide updated. #130

  • Circuit validation: All measurement keys must be unique. #130

Version 18.4 (2024-10-04)#

  • Do not verify external auth token expiration. This fixes IQM Resonance authentication. #134

Version 18.3 (2024-10-01)#

  • Remove unnecessary build files when publishing documentation. #133

Version 18.2 (2024-10-01)#

  • Add mitigation for failed authentication sessions. #132

Version 18.1 (2024-09-19)#

  • Add IQMClient.get_dynamic_quantum_architecture(). #131

Version 18.0 (2024-10-16)#

  • Added the naive MOVE transpilation method for unified transpilation behavior for different external APIs. #124

  • Added class for compilation options CircuitCompilationOptions to allow for more fine-grained control over the compilation process. (breaking change)

    • IQMClient.submit_circuit() now takes a CircuitCompilationOptions parameter instead of max_circuit_duration_over_t2 and heralding_mode.

    • Moved the existing max_circuit_duration_over_t2 parameter to CircuitCompilationOptions.

    • Moved the existing heralding_mode parameter to CircuitCompilationOptions.

    • Introduced new option move_gate_validation to turn off MOVE gate validation during compilation (ADVANCED).

    • Introduced new option move_gate_frame_tracking to turn off frame tracking for the MOVE gate (ADVANCED).

    • New options can only be used on stations with CoCoS version 29.9 or later that support the MOVE gate instruction. Otherwise, the options will be ignored.

Version 17.8 (2024-08-26)#

  • Allow inspecting a run request before submitting it for execution. #129

Version 17.7 (2024-06-11)#

  • Update documentation. #128

Version 17.6 (2024-05-21)#

  • Move all data models to iqm.iqm_client.models. #125

  • Refactor user authentication and check authentication parameters for conflicts. #125

Version 17.5 (2024-05-06)#

  • Show full response error in all cases of receiving a HTTP 4xx error response. #123

Version 17.4 (2024-04-26)#

  • Raise ClientConfigurationError and display the details of the error upon receiving a HTTP 400 error response. #120

Version 17.3 (2024-04-24)#

  • Add new job states to support job delete operation in the backend. #119

Version 17.2 (2024-03-18)#

  • Use GitHub Action as a Trusted Publisher to publish packages to PyPI. #116

Version 17.1 (2024-03-08)#

  • Support both extended and simple quantum architecture specification. #117

Version 17.0 (2024-03-07)#

  • Extend quantum architecture specification to allow different loci for each operation. #112

  • Allow the move instruction natively.

  • Validate instructions loci based on quantum architecture.

  • Auto-rename deprecated instruction names to current names.

Version 16.1 (2024-02-26)#

  • Remove multiversion documentation. #115

Version 16.0 (2024-02-07)#

  • Remove circuit_duration_check parameter from RunRequest. #114

  • Add max_circuit_duration_over_t2 parameter to RunRequest to control circuit disqualification threshold. #114

Version 15.4 (2024-01-30)#

  • Add testing with python 3.11. #113

Version 15.3 (2024-01-12)#

  • Make network request timeouts reconfigurable for abort_job, get_quantum_architecture, get_run, and get_run_status via keyword argument timeout_secs. #110

  • Make network request timeouts reconfigurable globally via environment variable IQM_CLIENT_REQUESTS_TIMEOUT. #110

Version 15.2 (2023-12-20)#

  • Allow construction of Circuit.instructions from a tuple of dict. #109

Version 15.1 (2023-12-19)#

  • Bump pydantic version to 2.4.2. #108

Version 15.0 (2023-12-15)#

  • Update project setup to use pyproject.toml. #107

  • New instruction names: phased_rx -> prx, measurement -> measure (the old names are deprecated but still supported). #107

Version 14.7 (2023-12-07)#

  • Add API token support. #102

Version 14.6 (2023-11-17)#

  • Add CoCoS version to job metadata. #104

Version 14.5 (2023-11-15)#

  • Add platform version and python version to user agent. #103

Version 14.4 (2023-11-14)#

  • Require number of shots to be greater than zero. #101

Version 14.3 (2023-11-08)#

  • Update integration guide. #99

Version 14.2 (2023-11-08)#

  • Use get_run_status instead of get_run to check job status in wait_for_compilation and wait_for_results. #100

Version 14.1 (2023-10-19)#

  • Use latest version of sphinx-multiversion-contrib to fix documentation version sorting. #98

Version 14.0 (2023-09-15)#

  • Move iqm_client package to iqm namespace. #96

Version 13.4 (2023-09-11)#

  • Update integration guide. #95

Version 13.3 (2023-08-30)#

  • Improve tests. #94

Version 13.2 (2023-08-25)#

  • Use ISO 8601 format timestamps in RunResult metadata. #93

Version 13.1 (2023-08-11)#

  • Add execution timestamps in RunResult metadata. #92

Version 13.0 (2023-07-03)#

  • Add ability to abort jobs. #89

Version 12.5 (2023-05-25)#

  • Add parameter heralding to RunRequest. #87

Version 12.4 (2023-05-25)#

  • Add parameter circuit_duration_check allowing to control server-side maximum circuit duration check. #85

Version 12.3 (2023-05-03)#

  • Generate license information for dependencies on every release #84

Version 12.2 (2023-04-21)#

  • Revert moving Pydantic model definitions into models.py file. #81

Version 12.1 (2023-04-20)#

  • Add function validate_circuit to validate a submitted circuit for input argument correctness. #80

Version 12.0 (2023-04-18)#

  • Split PENDING job status into PENDING_COMPILATION and PENDING_EXECUTION #79

  • Add wait_for_compilation method. #79

Version 11.8 (2023-03-28)#

  • Bugfix: multiversion documentation has incomplete lists to available documentation versions #76

Version 11.7 (2023-03-10)#

  • Add utility function to_json_dict to convert a dict to a JSON dict. #77

Version 11.6 (2023-02-23)#

  • Improve error reporting on unexpected server responses. #74

Version 11.5 (2023-02-23)#

  • Improve multiversion docs builds. #75

Version 11.4 (2023-02-10)#

  • Add user agent header to requests. #72

Version 11.3 (2023-02-09)#

  • Fix multiversion docs publication. #73

Version 11.2 (2023-02-06)#

  • Reduce docs size. #71

Version 11.1 (2023-01-26)#

  • Fix docs version sort. #70

Version 11.0 (2023-01-20)#

  • Change type of calibration_set_id to be opaque UUID. #69

Version 10.3 (2023-01-04)#

  • Remove description from pydantic model fields. #68

Version 10.2 (2022-12-29)#

  • Add optional implementation field to Instruction. #67

Version 10.1 (2022-12-28)#

  • Raise an error while fetching quantum architecture if authentication is not provided. #66

Version 10.0 (2022-12-28)#

  • RunResult.metadata.request now contains a copy of the original request. #65

Version 9.8 (2022-12-20)#

  • Bugfix: Circuit.metadata Pydantic field needs default value. #64

Version 9.7 (2022-12-20)#

  • Add optional metadata field to Circuit. #63

Version 9.6 (2022-12-14)#

  • Reduce wait interval between requests to the IQM Server and make it configurable with the IQM_CLIENT_SECONDS_BETWEEN_CALLS environment var. #62

Version 9.5 (2022-12-05)#

  • Retry requests to the IQM Server if the server is busy. #61

Version 9.4 (2022-11-30)#

  • Add integration guide. #60

Version 9.3 (2022-11-23)#

  • Support OpenTelemetry trace propagation. #59

Version 9.2 (2022-11-17)#

  • New external token is now obtained from tokens file if old token expired. #58

Version 9.1 (2022-10-20)#

  • Update documentation. #57

Version 9.0 (2022-10-19)#

  • The method IQMClient.get_quantum_architecture now return the architecture specification instead of the top level object. #56

Version 8.4 (2022-10-17)#

  • Update documentation of Metadata. #54

Version 8.3 (2022-10-17)#

  • Improved error message when qubit_mapping does not cover all qubits in a circuit. #53

  • Better type definitions and code cleanup. #53, #52

Version 8.2 (2022-10-10)#

  • Add method IQMClient.get_quantum_architecture. #51

Version 8.1 (2022-09-30)#

  • Change Circuit.instructions and Instruction.qubits from list to tuple. #49

Version 8.0 (2022-09-28)#

  • Remove settings from RunRequest, add custom_settings. #48

Version 7.3 (2022-09-28)#

  • Increase job result poll interval while waiting for circuit execution. #47

Version 7.2 (2022-09-08)#

  • Add description of calibration set ID of RunResult metadata in the documentation. #45

Version 7.1 (2022-09-08)#

  • Increase timeout of requests. #43

Version 7.0 (2022-09-02)#

  • Add calibration set ID to RunResult metadata. #42

Version 6.2 (2022-08-29)#

  • Enable mypy checks. #41

  • Update source code according to new checks in pylint v2.15.0. #41

Version 6.1 (2022-08-16)#

  • Add optional calibration_set_id parameter to IQMClient.submit_circuit. #40

Version 6.0 (2022-08-12)#

  • IQMClient.close renamed to IQMClient.close_auth_session and raises an exception when asked to close an externally managed authentication session. #39

  • Try to automatically close the authentication session when the client is deleted. #39

  • Show CoCoS error on 401 response. #39

Version 5.0 (2022-08-09)#

  • settings are moved from the constructor of IQMClient to IQMClient.submit_circuit. #31

  • Changed the type of qubit_mapping argument of IQMClient.submit_circuit to dict[str, str]. #31

  • User can now import from iqm_client using from iqm_client import x instead of from iqm_client.iqm_client import x. #31

Version 4.3 (2022-08-03)#

  • Parse new field metadata for job result requests to the IQM quantum computer. #37

Version 4.2 (2022-07-20)#

  • Update documentation to include development version and certain released versions in a subdirectory. #36

Version 4.1 (2022-07-12)#

  • Add support for authentication without username/password, using externally managed tokens file. #35

Version 4.0 (2022-06-28)#

  • Implement functionality to submit a batch of circuits in one job. #34

Version 3.3 (2022-06-02)#

  • Make settings an optional parameter for IQMClient. #30

Version 3.2 (2022-06-02)#

  • Add function get_run_status to check status of execution without getting measurement results. #29

Version 3.1 (2022-11-17)#

  • Update documentation to mention barriers. #28

Version 3.0 (2022-05-17)#

  • Update HTTP endpoints for circuit execution and results retrieval. #26

  • Requires CoCoS 4.0

Version 2.2 (2022-04-26)#

  • Publish JSON schema for the circuit run request sent to an IQM server. #24

Version 2.1 (2022-04-19)#

  • Add support for Python 3.10. #23

Version 2.0 (2022-03-25)#

  • Update user authentication to use access token. #22

  • Add token management to IQMClient. #22

Version 1.10 (2022-02-22)#

  • Make qubit_mapping an optional parameter in IQMClient.submit_circuit. #21

Version 1.9 (2022-02-22)#

  • Validate that the schema of IQM server URL is http or https. #20

Version 1.8 (2022-02-01)#

  • Add ‘Expect: 100-Continue’ header to the post request. #18

  • Bump pydantic dependency. #13

  • Minor updates in docs. #13

Version 1.7 (2022-01-25)#

  • Emit warnings in server response as python UserWarning. #15

Version 1.6 (2021-12-15)#

  • Configure automatic tagging and releasing. #7

Version 1.5 (2021-11-23)#

  • Implement HTTP Basic auth. #9

Version 1.4 (2021-11-05)#

  • Increase default timeout. #8

Version 1.3 (2021-10-20)#

Features#

  • Document the native instruction types. #5

Version 1.2 (2021-10-19)#

Fixes#

  • Remove unneeded args field from Circuit. #4

Version 1.1 (2021-10-08)#

Fixes#

  • Changed example instruction phased_rx to measurement. #2

Version 1.0 (2021-08-27)#

Features#

  • Split IQM client from the Cirq on IQM library