iqm-client 29.2.0__tar.gz → 29.4.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 (107) hide show
  1. {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG.rst +16 -0
  2. {iqm_client-29.2.0 → iqm_client-29.4.0}/PKG-INFO +1 -1
  3. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_cirq.rst +25 -26
  4. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_common.py +5 -5
  5. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_iqm_execution.py +1 -1
  6. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/serialize.py +1 -1
  7. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/api.py +1 -1
  8. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/auth.py +7 -3
  9. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/models.py +2 -2
  10. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_circuit_validation.py +1 -0
  11. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_naive_move_pass.py +1 -0
  12. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/PKG-INFO +1 -1
  13. iqm_client-29.4.0/version.txt +1 -0
  14. iqm_client-29.2.0/version.txt +0 -1
  15. {iqm_client-29.2.0 → iqm_client-29.4.0}/AUTHORS.rst +0 -0
  16. {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_cirq-iqm.rst +0 -0
  17. {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_cortex-cli.rst +0 -0
  18. {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_qiskit-iqm.rst +0 -0
  19. {iqm_client-29.2.0 → iqm_client-29.4.0}/INTEGRATION_GUIDE.rst +0 -0
  20. {iqm_client-29.2.0 → iqm_client-29.4.0}/LICENSE.txt +0 -0
  21. {iqm_client-29.2.0 → iqm_client-29.4.0}/MANIFEST.in +0 -0
  22. {iqm_client-29.2.0 → iqm_client-29.4.0}/README.rst +0 -0
  23. {iqm_client-29.2.0 → iqm_client-29.4.0}/docbuild +0 -0
  24. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/API.rst +0 -0
  25. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_static/images/favicon.ico +0 -0
  26. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_static/images/logo.png +0 -0
  27. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_templates/autosummary-class-template.rst +0 -0
  28. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_templates/autosummary-module-template.rst +0 -0
  29. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/authors.rst +0 -0
  30. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/changelog.rst +0 -0
  31. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/conf.py +0 -0
  32. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/index.rst +0 -0
  33. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/integration_guide.rst +0 -0
  34. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/license.rst +0 -0
  35. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/readme.rst +0 -0
  36. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_cli.rst +0 -0
  37. {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_qiskit.rst +0 -0
  38. {iqm_client-29.2.0 → iqm_client-29.4.0}/pyproject.toml +0 -0
  39. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/base.in +0 -0
  40. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/base.txt +0 -0
  41. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cirq.in +0 -0
  42. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cirq.txt +0 -0
  43. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cli.in +0 -0
  44. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cli.txt +0 -0
  45. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/qiskit.in +0 -0
  46. {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/qiskit.txt +0 -0
  47. {iqm_client-29.2.0 → iqm_client-29.4.0}/setup.cfg +0 -0
  48. {iqm_client-29.2.0 → iqm_client-29.4.0}/setup.py +0 -0
  49. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/__init__.py +0 -0
  50. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/__init__.py +0 -0
  51. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/adonis.py +0 -0
  52. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/aphrodite.py +0 -0
  53. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/apollo.py +0 -0
  54. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/iqm_device.py +0 -0
  55. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/iqm_device_metadata.py +0 -0
  56. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_adonis.py +0 -0
  57. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_apollo.py +0 -0
  58. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/usage.ipynb +0 -0
  59. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/extended_qasm_parser.py +0 -0
  60. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/iqm_gates.py +0 -0
  61. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/iqm_sampler.py +0 -0
  62. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/optimizers.py +0 -0
  63. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/py.typed +0 -0
  64. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/transpiler.py +0 -0
  65. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/__init__.py +0 -0
  66. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/authentication.py +0 -0
  67. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/__init__.py +0 -0
  68. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/cli.py +0 -0
  69. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/models.py +0 -0
  70. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/py.typed +0 -0
  71. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/token_manager.py +0 -0
  72. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/errors.py +0 -0
  73. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/iqm_client.py +0 -0
  74. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/py.typed +0 -0
  75. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/transpile.py +0 -0
  76. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/util.py +0 -0
  77. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/validation.py +0 -0
  78. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/__init__.py +0 -0
  79. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/__init__.py +0 -0
  80. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/bell_measure.py +0 -0
  81. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/resonance_example.py +0 -0
  82. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/transpile_example.py +0 -0
  83. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/__init__.py +0 -0
  84. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_adonis.py +0 -0
  85. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_aphrodite.py +0 -0
  86. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_apollo.py +0 -0
  87. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_deneb.py +0 -0
  88. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_garnet.py +0 -0
  89. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/iqm_fake_backend.py +0 -0
  90. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_backend.py +0 -0
  91. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_circuit.py +0 -0
  92. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_job.py +0 -0
  93. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_move_layout.py +0 -0
  94. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_provider.py +0 -0
  95. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_transpilation.py +0 -0
  96. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/move_gate.py +0 -0
  97. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/py.typed +0 -0
  98. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/qiskit_to_iqm.py +0 -0
  99. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/transpiler_plugins.py +0 -0
  100. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/SOURCES.txt +0 -0
  101. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/dependency_links.txt +0 -0
  102. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/entry_points.txt +0 -0
  103. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/requires.txt +0 -0
  104. {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/top_level.txt +0 -0
  105. {iqm_client-29.2.0 → iqm_client-29.4.0}/test +0 -0
  106. {iqm_client-29.2.0 → iqm_client-29.4.0}/tests/__init__.py +0 -0
  107. {iqm_client-29.2.0 → iqm_client-29.4.0}/tests/conftest.py +0 -0
@@ -2,6 +2,22 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 29.4.0 (2025-07-07)
6
+ ===========================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Bugfix: Fixed the iqm-client cirq documentation such that the instruction is to route circuits before decomposing.
12
+
13
+ Version 29.3.0 (2025-07-02)
14
+ ===========================
15
+
16
+ Bug fixes
17
+ ---------
18
+
19
+ - Fix type errors raised by mypy.
20
+
5
21
  Version 29.2.0 (2025-06-30)
6
22
  ===========================
7
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-client
3
- Version: 29.2.0
3
+ Version: 29.4.0
4
4
  Summary: Client library for accessing an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -138,29 +138,6 @@ and convert it into a :class:`cirq.Circuit` object using :func:`.circuit_from_qa
138
138
 
139
139
  After a circuit has been constructed, it can be decomposed and routed against a particular :class:`.IQMDevice`.
140
140
 
141
-
142
- Decomposition
143
- -------------
144
-
145
- The method :meth:`.IQMDevice.decompose_circuit` accepts a :class:`cirq.Circuit` object as an argument and
146
- returns the decomposed circuit containing only native operations for the corresponding device:
147
-
148
- .. code-block:: python
149
-
150
- decomposed_circuit = adonis.decompose_circuit(circuit)
151
- print(decomposed_circuit)
152
-
153
- ::
154
-
155
- Alice: ───X────────────────────@───────────M('m')───
156
- │ │
157
- Bob: ─────Y^0.5───X───Y^-0.5───@───Y^0.5───M────────
158
-
159
- The Hadamard and CNOT gates are not native to Adonis, so they were decomposed to X, Y and CZ gates which are.
160
-
161
-
162
- .. _routing:
163
-
164
141
  Routing
165
142
  -------
166
143
 
@@ -216,6 +193,28 @@ To ensure that the transpiler is restricted to a specific subset of qubits, you
216
193
  of qubits in the ``qubit_subset`` argument such that ancillary qubits will not be added during
217
194
  routing. This is particularly useful when running Quantum Volume benchmarks.
218
195
 
196
+ Decomposition
197
+ -------------
198
+
199
+ The method :meth:`.IQMDevice.decompose_circuit` accepts a :class:`cirq.Circuit` object as an argument and
200
+ returns the decomposed circuit containing only native operations for the corresponding device:
201
+
202
+ .. code-block:: python
203
+
204
+ decomposed_circuit = adonis.decompose_circuit(circuit)
205
+ print(decomposed_circuit)
206
+
207
+ ::
208
+
209
+ Alice: ───X────────────────────@───────────M('m')───
210
+ │ │
211
+ Bob: ─────Y^0.5───X───Y^-0.5───@───Y^0.5───M────────
212
+
213
+ The Hadamard and CNOT gates are not native to Adonis, so they were decomposed to X, Y and CZ gates which are.
214
+
215
+
216
+ .. _routing:
217
+
219
218
  IQM Star architecture
220
219
  ^^^^^^^^^^^^^^^^^^^^^
221
220
 
@@ -360,9 +359,9 @@ Once you have access to an IQM server you can create an :class:`.IQMSampler` ins
360
359
  # circuit = ...
361
360
 
362
361
  sampler = IQMSampler(iqm_server_url)
363
- decomposed_circuit = sampler.device.decompose_circuit(circuit)
364
- routed_circuit, _, _ = sampler.device.route_circuit(decomposed_circuit)
365
- result = sampler.run(routed_circuit, repetitions=10)
362
+ routed_circuit, _, _ = sampler.device.route_circuit(circuit)
363
+ decomposed_circuit = sampler.device.decompose_circuit(routed_circuit)
364
+ result = sampler.run(decomposed_circuit, repetitions=10)
366
365
  print(result.measurements['m'])
367
366
 
368
367
 
@@ -52,10 +52,10 @@ def get_qubit_order(circuit: cirq.Circuit) -> tuple[list[cirq.Qid], int]:
52
52
  qubit order, number of measured qubits
53
53
 
54
54
  """
55
- measurements = get_measurements(circuit)
55
+ measurements: list[tuple[int, cirq.GateOperation]] = get_measurements(circuit)
56
56
 
57
57
  # mapping from (key, index) to measured qubit, in lexical order
58
- m_qubits = {(op.gate.key, index): qubit for _, op in measurements for index, qubit in enumerate(op.qubits)}
58
+ m_qubits = {(op.gate.key, index): qubit for _, op in measurements for index, qubit in enumerate(op.qubits)} # type:ignore[attr-defined]
59
59
  m_qubits = dict(sorted(m_qubits.items()))
60
60
 
61
61
  qubit_order = list(m_qubits.values())
@@ -81,7 +81,7 @@ def simulate_measurement_probabilities(
81
81
  map from result to its probability, measurement keys
82
82
 
83
83
  """
84
- measurements = get_measurements(circuit)
84
+ measurements: list[tuple[int, cirq.GateOperation]] = get_measurements(circuit)
85
85
  if not measurements:
86
86
  raise ValueError("Circuit has no measurements.")
87
87
 
@@ -95,12 +95,12 @@ def simulate_measurement_probabilities(
95
95
  state = result.state_vector()
96
96
 
97
97
  # trace out non-measured qubits, compute the probabilities of the various measurement outcomes
98
- mixture = cirq.linalg.partial_trace_of_state_vector_as_mixture(state, keep_indices=range(n_measured_qubits))
98
+ mixture = cirq.linalg.partial_trace_of_state_vector_as_mixture(state, keep_indices=list(range(n_measured_qubits)))
99
99
  _temp = [p * np.abs(ket) ** 2 for p, ket in mixture]
100
100
  probs = np.sum(_temp, axis=0)
101
101
 
102
102
  # list the all the measurement outcomes in the matching order
103
- measurement_arities = {op.gate.key: len(op.qubits) for _, op in measurements}
103
+ measurement_arities = {op.gate.key: len(op.qubits) for _, op in measurements} # type:ignore[attr-defined]
104
104
  measurement_arities = dict(sorted(measurement_arities.items()))
105
105
 
106
106
  shape = np.array(2) ** list(measurement_arities.values())
@@ -60,7 +60,7 @@ def demo_run_circuit() -> None:
60
60
 
61
61
  # Sampler results can be accessed several ways
62
62
  # For instance, to see the histogram of results
63
- print(results.histogram(key="m", fold_func=fold_func))
63
+ print(results.histogram(key="m", fold_func=fold_func)) # type:ignore[arg-type]
64
64
 
65
65
  # Or the data itself
66
66
  print(results.data)
@@ -195,7 +195,7 @@ def serialize_circuit(circuit: Circuit) -> iqm_client.Circuit:
195
195
  inst.args["feedback_qubit"] = measurement.qubits[0]
196
196
  measurement.args["feedback_key"] = feedback_key
197
197
 
198
- return iqm_client.Circuit(name="Serialized from Cirq", instructions=instructions)
198
+ return iqm_client.Circuit(name="Serialized from Cirq", instructions=instructions, metadata=None)
199
199
 
200
200
 
201
201
  def deserialize_circuit(circuit: iqm_client.Circuit) -> Circuit:
@@ -86,5 +86,5 @@ class APIConfig:
86
86
  ValueError: If the endpoint is not supported.
87
87
 
88
88
  """
89
- url = self.urls.get(endpoint)
89
+ url = self.urls.get(endpoint, "")
90
90
  return join(self.station_control_url, url % args)
@@ -76,7 +76,9 @@ def login_request(url: str, realm: str, client_id: str, username: str, password:
76
76
  Tokens dictionary
77
77
 
78
78
  """
79
- data = AuthRequest(client_id=client_id, grant_type=GrantType.PASSWORD, username=username, password=password)
79
+ data = AuthRequest(
80
+ client_id=client_id, grant_type=GrantType.PASSWORD, username=username, password=password, refresh_token=None
81
+ )
80
82
 
81
83
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/token")
82
84
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
@@ -107,7 +109,9 @@ def refresh_request(url: str, realm: str, client_id: str, refresh_token: str) ->
107
109
  raise ClientAuthenticationError("Refresh token has expired")
108
110
 
109
111
  # Update tokens using existing refresh_token
110
- data = AuthRequest(client_id=client_id, grant_type=GrantType.REFRESH, refresh_token=refresh_token)
112
+ data = AuthRequest(
113
+ client_id=client_id, grant_type=GrantType.REFRESH, username=None, password=None, refresh_token=refresh_token
114
+ )
111
115
 
112
116
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/token")
113
117
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
@@ -130,7 +134,7 @@ def logout_request(url: str, realm: str, client_id: str, refresh_token: str) ->
130
134
  True if logout was successful
131
135
 
132
136
  """
133
- data = AuthRequest(client_id=client_id, refresh_token=refresh_token)
137
+ data = AuthRequest(client_id=client_id, grant_type=None, username=None, password=None, refresh_token=refresh_token)
134
138
  request_url = slash_join(url, f"realms/{realm}/protocol/openid-connect/logout")
135
139
  result = requests.post(request_url, data=data.model_dump(exclude_none=True), timeout=AUTH_REQUESTS_TIMEOUT)
136
140
 
@@ -412,7 +412,7 @@ class Circuit(BaseModel):
412
412
 
413
413
  name: str = Field(..., examples=["test circuit"])
414
414
  """name of the circuit"""
415
- instructions: tuple[Instruction, ...] = Field(...)
415
+ instructions: list[Instruction] | tuple[Instruction, ...] = Field(...)
416
416
  """instructions comprising the circuit"""
417
417
  metadata: dict[str, Any] | None = Field(None)
418
418
  """arbitrary metadata associated with the circuit"""
@@ -1116,7 +1116,7 @@ class RunResult(BaseModel):
1116
1116
  status = Status(input_copy.pop("status"))
1117
1117
  except ValueError:
1118
1118
  status = Status.UNKNOWN
1119
- return RunResult(status=status, **input_copy)
1119
+ return RunResult(status=status, **input_copy) # type:ignore[arg-type]
1120
1120
 
1121
1121
 
1122
1122
  class RunStatus(BaseModel):
@@ -33,6 +33,7 @@ def validate_circuit(
33
33
  new_circuit = IQMClientCircuit(
34
34
  name="Validation circuit",
35
35
  instructions=tuple(serialize_instructions(circuit=circuit, qubit_index_to_name=qubit_mapping)),
36
+ metadata=None,
36
37
  )
37
38
  if validate_moves is None:
38
39
  validate_moves = MoveGateValidationMode.STRICT
@@ -99,6 +99,7 @@ class IQMNaiveResonatorMoving(TransformationPass):
99
99
  iqm_circuit = IQMClientCircuit(
100
100
  name="Transpiling Circuit",
101
101
  instructions=tuple(serialize_instructions(circuit, self.idx_to_component)),
102
+ metadata=None,
102
103
  )
103
104
  try:
104
105
  routed_iqm_circuit = transpile_insert_moves(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-client
3
- Version: 29.2.0
3
+ Version: 29.4.0
4
4
  Summary: Client library for accessing an IQM quantum computer
5
5
  Author-email: IQM Finland Oy <developers@meetiqm.com>
6
6
  License: Apache License
@@ -0,0 +1 @@
1
+ 29.4.0
@@ -1 +0,0 @@
1
- 29.2.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