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.
- {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG.rst +16 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/PKG-INFO +1 -1
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_cirq.rst +25 -26
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_common.py +5 -5
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_iqm_execution.py +1 -1
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/serialize.py +1 -1
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/api.py +1 -1
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/auth.py +7 -3
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/models.py +2 -2
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_circuit_validation.py +1 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_naive_move_pass.py +1 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/PKG-INFO +1 -1
- iqm_client-29.4.0/version.txt +1 -0
- iqm_client-29.2.0/version.txt +0 -1
- {iqm_client-29.2.0 → iqm_client-29.4.0}/AUTHORS.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_cirq-iqm.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_cortex-cli.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/CHANGELOG_qiskit-iqm.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/INTEGRATION_GUIDE.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/LICENSE.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/MANIFEST.in +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/README.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docbuild +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/API.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_static/images/favicon.ico +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_static/images/logo.png +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_templates/autosummary-class-template.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/_templates/autosummary-module-template.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/authors.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/changelog.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/conf.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/index.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/integration_guide.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/license.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/readme.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_cli.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/docs/user_guide_qiskit.rst +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/pyproject.toml +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/base.in +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/base.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cirq.in +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cirq.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cli.in +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/cli.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/qiskit.in +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/requirements/qiskit.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/setup.cfg +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/setup.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/adonis.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/aphrodite.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/apollo.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/iqm_device.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/devices/iqm_device_metadata.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_adonis.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/demo_apollo.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/examples/usage.ipynb +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/extended_qasm_parser.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/iqm_gates.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/iqm_sampler.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/optimizers.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/py.typed +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/cirq_iqm/transpiler.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/authentication.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/cli.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/models.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/py.typed +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/cli/token_manager.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/errors.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/iqm_client.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/py.typed +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/transpile.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/util.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/iqm_client/validation.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/bell_measure.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/resonance_example.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/examples/transpile_example.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/__init__.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_adonis.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_aphrodite.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_apollo.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_deneb.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/fake_garnet.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/iqm_fake_backend.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_backend.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_circuit.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_job.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_move_layout.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_provider.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/iqm_transpilation.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/move_gate.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/py.typed +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/qiskit_to_iqm.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/transpiler_plugins.py +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/SOURCES.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/dependency_links.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/entry_points.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/requires.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm_client.egg-info/top_level.txt +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/test +0 -0
- {iqm_client-29.2.0 → iqm_client-29.4.0}/tests/__init__.py +0 -0
- {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
|
|
|
@@ -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
|
-
|
|
364
|
-
|
|
365
|
-
result = sampler.run(
|
|
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:
|
|
@@ -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(
|
|
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(
|
|
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(
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
29.4.0
|
iqm_client-29.2.0/version.txt
DELETED
|
@@ -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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iqm_client-29.2.0 → iqm_client-29.4.0}/src/iqm/qiskit_iqm/fake_backends/iqm_fake_backend.py
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
|