Changelog#

Version 20.5#

  • Fixed client version compatibility check. #148

Version 20.4#

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

Version 20.3#

  • 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#

  • 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#

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

Version 20.0#

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

  • Bugfix: cc_prx params fixed. #140

Version 19.0#

  • 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#

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

Version 18.7#

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

Version 18.6#

  • Add IQM Server API versioning support. #135

Version 18.5#

  • 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#

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

Version 18.3#

  • Remove unnecessary build files when publishing documentation. #133

Version 18.2#

  • Add mitigation for failed authentication sessions. #132

Version 18.1#

  • Add IQMClient.get_dynamic_quantum_architecture(). #131

Version 18.0#

  • 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#

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

Version 17.7#

  • Update documentation. #128

Version 17.6#

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

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

Version 17.5#

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

Version 17.4#

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

Version 17.3#

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

Version 17.2#

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

Version 17.1#

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

Version 17.0#

  • 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#

  • Remove multiversion documentation. #115

Version 16.0#

  • 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#

  • Add testing with python 3.11. #113

Version 15.3#

  • 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#

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

Version 15.1#

  • Bump pydantic version to 2.4.2. #108

Version 15.0#

  • 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#

  • Add API token support. #102

Version 14.6#

  • Add CoCoS version to job metadata. #104

Version 14.5#

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

Version 14.4#

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

Version 14.3#

  • Update integration guide. #99

Version 14.2#

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

Version 14.1#

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

Version 14.0#

  • Move iqm_client package to iqm namespace. #96

Version 13.4#

  • Update integration guide. #95

Version 13.3#

  • Improve tests. #94

Version 13.2#

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

Version 13.1#

  • Add execution timestamps in RunResult metadata. #92

Version 13.0#

  • Add ability to abort jobs. #89

Version 12.5#

  • Add parameter heralding to RunRequest. #87

Version 12.4#

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

Version 12.3#

  • Generate license information for dependencies on every release #84

Version 12.2#

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

Version 12.1#

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

Version 12.0#

  • Split PENDING job status into PENDING_COMPILATION and PENDING_EXECUTION #79

  • Add wait_for_compilation method. #79

Version 11.8#

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

Version 11.7#

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

Version 11.6#

  • Improve error reporting on unexpected server responses. #74

Version 11.5#

  • Improve multiversion docs builds. #75

Version 11.4#

  • Add user agent header to requests. #72

Version 11.3#

  • Fix multiversion docs publication. #73

Version 11.2#

  • Reduce docs size. #71

Version 11.1#

  • Fix docs version sort. #70

Version 11.0#

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

Version 10.3#

  • Remove description from pydantic model fields. #68

Version 10.2#

  • Add optional implementation field to Instruction. #67

Version 10.1#

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

Version 10.0#

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

Version 9.8#

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

Version 9.7#

  • Add optional metadata field to Circuit. #63

Version 9.6#

  • 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#

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

Version 9.4#

  • Add integration guide. #60

Version 9.3#

  • Support OpenTelemetry trace propagation. #59

Version 9.2#

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

Version 9.1#

  • Update documentation. #57

Version 9.0#

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

Version 8.4#

  • Update documentation of Metadata. #54

Version 8.3#

  • 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#

  • Add method IQMClient.get_quantum_architecture. #51

Version 8.1#

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

Version 8.0#

  • Remove settings from RunRequest, add custom_settings. #48

Version 7.3#

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

Version 7.2#

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

Version 7.1#

  • Increase timeout of requests. #43

Version 7.0#

  • Add calibration set ID to RunResult metadata. #42

Version 6.2#

  • Enable mypy checks. #41

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

Version 6.1#

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

Version 6.0#

  • 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#

  • 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#

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

Version 4.2#

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

Version 4.1#

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

Version 4.0#

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

Version 3.3#

  • Make settings an optional parameter for IQMClient. #30

Version 3.2#

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

Version 3.1#

  • Update documentation to mention barriers. #28

Version 3.0#

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

  • Requires CoCoS 4.0

Version 2.2#

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

Version 2.1#

  • Add support for Python 3.10. #23

Version 2.0#

  • Update user authentication to use access token. #22

  • Add token management to IQMClient. #22

Version 1.10#

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

Version 1.9#

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

Version 1.8#

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

  • Bump pydantic dependency. #13

  • Minor updates in docs. #13

Version 1.7#

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

Version 1.6#

  • Configure automatic tagging and releasing. #7

Version 1.5#

  • Implement HTTP Basic auth. #9

Version 1.4#

  • Increase default timeout. #8

Version 1.3#

Features#

  • Document the native instruction types. #5

Version 1.2#

Fixes#

  • Remove unneeded args field from Circuit. #4

Version 1.1#

Fixes#

  • Changed example instruction phased_rx to measurement. #2

Version 1.0#

Features#

  • Split IQM client from the Cirq on IQM library