iqm-pulla 10.1.0__py3-none-any.whl → 11.1.0__py3-none-any.whl
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/cpc/__init__.py +2 -19
- iqm/cpc/compiler/compiler.py +70 -20
- iqm/cpc/interface/compiler.py +2 -12
- iqm/pulla/interface.py +2 -47
- iqm/pulla/utils_qir.py +1 -1
- iqm/pulla/utils_qiskit.py +10 -36
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/METADATA +7 -7
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/RECORD +12 -12
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/AUTHORS.rst +0 -0
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/LICENSE.txt +0 -0
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/WHEEL +0 -0
- {iqm_pulla-10.1.0.dist-info → iqm_pulla-11.1.0.dist-info}/top_level.txt +0 -0
iqm/cpc/__init__.py
CHANGED
|
@@ -14,26 +14,9 @@
|
|
|
14
14
|
"""IQM Circuit to Pulse Compiler.
|
|
15
15
|
|
|
16
16
|
IQM Circuit to Pulse Compiler is a Python-based library for converting quantum circuits
|
|
17
|
-
into :class:`instruction schedules <
|
|
18
|
-
(which map ``Station Control`` controller names to
|
|
17
|
+
into :class:`instruction schedules <iqm.pulse.playlist.schedule.Schedule>`
|
|
18
|
+
(which map ``Station Control`` controller names to lists of hardware instructions) and Station Control settings
|
|
19
19
|
required for circuit execution, using the calibration data it is given.
|
|
20
20
|
The generated schedules and settings can be sent to Station Control
|
|
21
21
|
for execution on real or simulated quantum hardware.
|
|
22
|
-
|
|
23
|
-
CPC is normally only accessed indirectly through Cocos or its reference client
|
|
24
|
-
`IQM client <https://docs.meetiqm.com/iqm-client/index.html>`_,
|
|
25
|
-
or a frontend such as
|
|
26
|
-
`Cirq on IQM <https://docs.meetiqm.com/iqm-client/user_guide_cirq.html>`_ or
|
|
27
|
-
`Qiskit on IQM <https://docs.meetiqm.com/iqm-client/user_guide_qiskit.html>`_.
|
|
28
22
|
"""
|
|
29
|
-
|
|
30
|
-
# from importlib.metadata import PackageNotFoundError, version
|
|
31
|
-
|
|
32
|
-
# try:
|
|
33
|
-
# # Change here if project is renamed and does not equal the package name
|
|
34
|
-
# DIST_NAME = "iqm-cocos"
|
|
35
|
-
# __version__ = version(DIST_NAME)
|
|
36
|
-
# except PackageNotFoundError: # pragma: no cover
|
|
37
|
-
# __version__ = "unknown"
|
|
38
|
-
# finally:
|
|
39
|
-
# del version, PackageNotFoundError
|
iqm/cpc/compiler/compiler.py
CHANGED
|
@@ -20,7 +20,7 @@ can be executed by the IQM server on quantum hardware.
|
|
|
20
20
|
|
|
21
21
|
from __future__ import annotations
|
|
22
22
|
|
|
23
|
-
from collections.abc import Callable, Iterable
|
|
23
|
+
from collections.abc import Callable, Collection, Iterable
|
|
24
24
|
from copy import deepcopy
|
|
25
25
|
import functools
|
|
26
26
|
import inspect
|
|
@@ -28,8 +28,10 @@ import logging
|
|
|
28
28
|
from typing import TYPE_CHECKING, Any
|
|
29
29
|
|
|
30
30
|
from opentelemetry import trace
|
|
31
|
+
from typing_extensions import deprecated
|
|
31
32
|
|
|
32
33
|
from exa.common.data.setting_node import SettingNode
|
|
34
|
+
from exa.common.helpers.deprecation import format_deprecated
|
|
33
35
|
from iqm.cpc.compiler.errors import CalibrationError, ClientError, InsufficientContextError
|
|
34
36
|
from iqm.cpc.interface.compiler import (
|
|
35
37
|
CircuitBoundaryMode,
|
|
@@ -187,13 +189,16 @@ class Compiler:
|
|
|
187
189
|
Args:
|
|
188
190
|
calibration_set: Calibration data.
|
|
189
191
|
chip_topology: Physical layout and connectivity of the quantum chip.
|
|
190
|
-
channel_properties:
|
|
191
|
-
component_channels: Mapping
|
|
192
|
-
|
|
192
|
+
channel_properties: Control channel properties for the station.
|
|
193
|
+
component_channels: Mapping from QPU component name to a mapping from ``('drive', 'flux', 'readout')``
|
|
194
|
+
to the name of the control channel responsible for that function of the component.
|
|
195
|
+
component_mapping: Mapping of logical QPU component names to physical QPU component names.
|
|
196
|
+
``None`` means the identity mapping.
|
|
193
197
|
options: Circuit execution options.
|
|
194
198
|
Defaults to STANDARD_CIRCUIT_EXECUTION_OPTIONS.
|
|
195
|
-
stages:
|
|
196
|
-
Note that
|
|
199
|
+
stages: Compilation stages to use. ``None`` means none.
|
|
200
|
+
Note that meaningful circuit compilation requires at least some stages.
|
|
201
|
+
pp_stages: Post-processing stages to use. ``None`` means none.
|
|
197
202
|
strict: If True, raises CalibrationError on calibration validation failures.
|
|
198
203
|
If False, only logs warnings. Defaults to False.
|
|
199
204
|
|
|
@@ -202,7 +207,7 @@ class Compiler:
|
|
|
202
207
|
|
|
203
208
|
"""
|
|
204
209
|
|
|
205
|
-
def __init__(
|
|
210
|
+
def __init__( # noqa: PLR0913
|
|
206
211
|
self,
|
|
207
212
|
*,
|
|
208
213
|
calibration_set: CalibrationSet,
|
|
@@ -211,13 +216,15 @@ class Compiler:
|
|
|
211
216
|
component_channels: dict[str, dict[str, str]],
|
|
212
217
|
component_mapping: dict[str, str] | None = None,
|
|
213
218
|
options: CircuitExecutionOptions = STANDARD_CIRCUIT_EXECUTION_OPTIONS,
|
|
214
|
-
stages:
|
|
219
|
+
stages: Collection[CompilationStage] | None = None,
|
|
220
|
+
pp_stages: Collection[CompilationStage] | None = None,
|
|
215
221
|
strict: bool = False, # consider extending to e.g. errors: Literal["raise", "warning", "ignore"] = "warning"
|
|
216
222
|
):
|
|
217
223
|
self._calibration_set = calibration_set
|
|
218
224
|
self.component_mapping = component_mapping
|
|
219
225
|
self.options = options
|
|
220
226
|
self.stages = stages or []
|
|
227
|
+
self.pp_stages = pp_stages or []
|
|
221
228
|
|
|
222
229
|
self.builder: ScheduleBuilder = initialize_schedule_builder(
|
|
223
230
|
calibration_set, chip_topology, channel_properties, component_channels
|
|
@@ -357,11 +364,12 @@ class Compiler:
|
|
|
357
364
|
)
|
|
358
365
|
self._refresh()
|
|
359
366
|
|
|
367
|
+
@deprecated(format_deprecated(old="`ready`", new=None, since="12.08.2025"))
|
|
360
368
|
def ready(self) -> bool:
|
|
361
369
|
"""Check if the compiler is ready to compile circuits. The compiler is ready if at least one stage is defined, and
|
|
362
370
|
all the stages are non-empty.
|
|
363
371
|
""" # noqa: E501
|
|
364
|
-
if
|
|
372
|
+
if not self.stages:
|
|
365
373
|
return False
|
|
366
374
|
for stage in self.stages:
|
|
367
375
|
if not stage.ready():
|
|
@@ -394,7 +402,7 @@ class Compiler:
|
|
|
394
402
|
full: Iff True, also print the docstring of each pass function.
|
|
395
403
|
|
|
396
404
|
"""
|
|
397
|
-
if
|
|
405
|
+
if not self.stages:
|
|
398
406
|
print("No stages defined.")
|
|
399
407
|
return
|
|
400
408
|
|
|
@@ -409,7 +417,10 @@ class Compiler:
|
|
|
409
417
|
print()
|
|
410
418
|
|
|
411
419
|
def compiler_context(self) -> dict[str, Any]:
|
|
412
|
-
"""Return initial compiler context dictionary.
|
|
420
|
+
"""Return initial compiler context dictionary.
|
|
421
|
+
|
|
422
|
+
Used automatically by :meth:`compile`.
|
|
423
|
+
"""
|
|
413
424
|
return {
|
|
414
425
|
"calibration_set": self._calibration_set,
|
|
415
426
|
"builder": self.builder,
|
|
@@ -422,27 +433,66 @@ class Compiler:
|
|
|
422
433
|
def compile(
|
|
423
434
|
self, data: Iterable[Any], context: dict[str, Any] | None = None
|
|
424
435
|
) -> tuple[Iterable[Any], dict[str, Any]]:
|
|
425
|
-
"""Run all compiler stages.
|
|
436
|
+
"""Run all compiler stages.
|
|
437
|
+
|
|
438
|
+
Initial context will be derived using :meth:`compiler_context` unless a custom
|
|
439
|
+
context dictionary is provided.
|
|
440
|
+
|
|
441
|
+
Args:
|
|
442
|
+
data: Circuits to be compiled.
|
|
443
|
+
context: Custom initial compiler context dictionary.
|
|
444
|
+
|
|
445
|
+
Returns:
|
|
446
|
+
Compiled ``data``, final context.
|
|
447
|
+
|
|
448
|
+
"""
|
|
449
|
+
cpc_logger.info("Running compilation stages...")
|
|
450
|
+
return self.run_stages(self.stages, data, context or self.compiler_context())
|
|
451
|
+
|
|
452
|
+
def postprocess(
|
|
453
|
+
self, data: Iterable[Any], context: dict[str, Any] | None = None
|
|
454
|
+
) -> tuple[Iterable[Any], dict[str, Any]]:
|
|
455
|
+
"""Run all post-processing stages.
|
|
456
|
+
|
|
457
|
+
Initial context will be derived using :meth:`compiler_context` unless a custom
|
|
426
458
|
context dictionary is provided.
|
|
427
459
|
|
|
428
460
|
Args:
|
|
429
|
-
data:
|
|
461
|
+
data: Any data, e.g. execution results derived from :meth:`Pulla.execute`
|
|
430
462
|
context: Custom initial compiler context dictionary.
|
|
431
463
|
|
|
464
|
+
Returns:
|
|
465
|
+
Postprocessed ``data``, final context.
|
|
466
|
+
|
|
432
467
|
""" # noqa: E501
|
|
433
|
-
|
|
434
|
-
|
|
468
|
+
cpc_logger.info("Running postprocessing stages...")
|
|
469
|
+
return self.run_stages(self.pp_stages, data, context or self.compiler_context())
|
|
470
|
+
|
|
471
|
+
def run_stages(
|
|
472
|
+
self, stages: Collection[CompilationStage], data: Iterable[Any], context: dict[str, Any]
|
|
473
|
+
) -> tuple[Iterable[Any], dict[str, Any]]:
|
|
474
|
+
"""Run the given stages in given order on the given data.
|
|
475
|
+
|
|
476
|
+
Args:
|
|
477
|
+
stages: Stages to run on ``data``.
|
|
478
|
+
data: The data to be processed.
|
|
479
|
+
context: Additional information that is passed to the first stage.
|
|
480
|
+
Each stage may make modifications to ``context`` before it is passed to the next stage.
|
|
435
481
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
context = self.compiler_context()
|
|
482
|
+
Returns:
|
|
483
|
+
Processed data, final context.
|
|
439
484
|
|
|
440
|
-
|
|
485
|
+
"""
|
|
486
|
+
if not stages:
|
|
487
|
+
raise RuntimeError("No stages defined.")
|
|
441
488
|
for stage in self.stages:
|
|
489
|
+
if not stage.ready():
|
|
490
|
+
raise RuntimeError(f"Stage {stage.name} is not ready.")
|
|
491
|
+
|
|
492
|
+
for stage in stages:
|
|
442
493
|
cpc_logger.info('Running stage "%s"...', stage.name)
|
|
443
494
|
data, context = stage.run(data, context)
|
|
444
495
|
|
|
445
|
-
cpc_logger.info("Compilation finished.")
|
|
446
496
|
return data, context
|
|
447
497
|
|
|
448
498
|
def build_settings(self, context: dict[str, Any], shots: int) -> tuple[SettingNode, dict[str, Any]]:
|
iqm/cpc/interface/compiler.py
CHANGED
|
@@ -19,20 +19,10 @@ from enum import StrEnum
|
|
|
19
19
|
from typing import TypeAlias
|
|
20
20
|
|
|
21
21
|
from exa.common.data.setting_node import SettingNode
|
|
22
|
-
from iqm.pulse
|
|
22
|
+
from iqm.pulse import Circuit
|
|
23
|
+
from iqm.pulse.builder import Locus
|
|
23
24
|
from iqm.pulse.playlist.playlist import Playlist
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
@dataclass
|
|
27
|
-
class Circuit:
|
|
28
|
-
"""Quantum circuit to be executed."""
|
|
29
|
-
|
|
30
|
-
name: str
|
|
31
|
-
"""name of the circuit"""
|
|
32
|
-
instructions: tuple[CircuitOperation, ...]
|
|
33
|
-
"""operations comprising the circuit"""
|
|
34
|
-
|
|
35
|
-
|
|
36
26
|
CircuitBatch: TypeAlias = list[Circuit]
|
|
37
27
|
"""Type that represents a list of quantum circuits to be executed together in a single batch."""
|
|
38
28
|
|
iqm/pulla/interface.py
CHANGED
|
@@ -19,56 +19,11 @@ Many of these must be identical to those in iqm-client.
|
|
|
19
19
|
|
|
20
20
|
from dataclasses import dataclass
|
|
21
21
|
from enum import StrEnum
|
|
22
|
-
from typing import
|
|
22
|
+
from typing import TypeAlias
|
|
23
23
|
from uuid import UUID
|
|
24
24
|
|
|
25
|
-
from pydantic import BaseModel, Field
|
|
26
|
-
|
|
27
25
|
from exa.common.data.value import ObservationValue
|
|
28
|
-
from iqm.cpc.interface.compiler import
|
|
29
|
-
from iqm.cpc.interface.compiler import CircuitOperation, Locus
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class Instruction(BaseModel):
|
|
33
|
-
"""An instruction in a quantum circuit."""
|
|
34
|
-
|
|
35
|
-
name: str = Field(..., description="name of the quantum operation", examples=["measurement"])
|
|
36
|
-
"""name of the quantum operation"""
|
|
37
|
-
implementation: str | None = Field(None, description="name of the implementation")
|
|
38
|
-
"""name of the implementation"""
|
|
39
|
-
qubits: tuple[str, ...] = Field(
|
|
40
|
-
...,
|
|
41
|
-
description="names of the logical qubits the operation acts on",
|
|
42
|
-
examples=[("alice",)],
|
|
43
|
-
)
|
|
44
|
-
"""names of the logical qubits the operation acts on"""
|
|
45
|
-
args: dict[str, Any] = Field(
|
|
46
|
-
...,
|
|
47
|
-
description="arguments for the operation",
|
|
48
|
-
examples=[{"key": "m"}],
|
|
49
|
-
)
|
|
50
|
-
"""arguments for the operation"""
|
|
51
|
-
|
|
52
|
-
def to_dataclass(self) -> CircuitOperation:
|
|
53
|
-
"""Convert the model to a dataclass."""
|
|
54
|
-
return CircuitOperation(name=self.name, implementation=self.implementation, locus=self.qubits, args=self.args)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
class Circuit(BaseModel):
|
|
58
|
-
"""Quantum circuit to be executed."""
|
|
59
|
-
|
|
60
|
-
name: str = Field(..., description="name of the circuit", examples=["test circuit"])
|
|
61
|
-
"""name of the circuit"""
|
|
62
|
-
instructions: tuple[Instruction, ...] = Field(..., description="instructions comprising the circuit")
|
|
63
|
-
"""instructions comprising the circuit"""
|
|
64
|
-
metadata: dict[str, Any] | None = Field(None, description="arbitrary metadata associated with the circuit")
|
|
65
|
-
"""arbitrary metadata associated with the circuit"""
|
|
66
|
-
|
|
67
|
-
def to_dataclass(self) -> CPC_Circuit:
|
|
68
|
-
"""Convert the model to a dataclass."""
|
|
69
|
-
return CPC_Circuit(
|
|
70
|
-
name=self.name, instructions=tuple(instruction.to_dataclass() for instruction in self.instructions)
|
|
71
|
-
)
|
|
26
|
+
from iqm.cpc.interface.compiler import Locus
|
|
72
27
|
|
|
73
28
|
|
|
74
29
|
class CHADRetrievalException(Exception):
|
iqm/pulla/utils_qir.py
CHANGED
|
@@ -39,7 +39,7 @@ from qiskit.providers import BackendV2
|
|
|
39
39
|
|
|
40
40
|
from iqm.cpc.compiler.compiler import Compiler
|
|
41
41
|
from iqm.cpc.interface.compiler import Circuit as CPC_Circuit
|
|
42
|
-
from iqm.pulse
|
|
42
|
+
from iqm.pulse import CircuitOperation
|
|
43
43
|
|
|
44
44
|
qir_logger = logging.getLogger(__name__)
|
|
45
45
|
|
iqm/pulla/utils_qiskit.py
CHANGED
|
@@ -19,7 +19,6 @@ from collections import Counter
|
|
|
19
19
|
from collections.abc import Collection, Sequence
|
|
20
20
|
from typing import TYPE_CHECKING
|
|
21
21
|
|
|
22
|
-
from iqm.iqm_client import Circuit
|
|
23
22
|
from iqm.qiskit_iqm.iqm_backend import IQMBackendBase
|
|
24
23
|
from iqm.qiskit_iqm.iqm_job import IQMJob
|
|
25
24
|
from iqm.qiskit_iqm.qiskit_to_iqm import serialize_instructions
|
|
@@ -27,13 +26,10 @@ from qiskit import QuantumCircuit
|
|
|
27
26
|
from qiskit.providers import JobStatus, JobV1, Options
|
|
28
27
|
from qiskit.result import Counts, Result
|
|
29
28
|
|
|
30
|
-
from iqm.cpc.interface.compiler import Circuit
|
|
31
|
-
from iqm.cpc.interface.compiler import CircuitExecutionOptions, HeraldingMode
|
|
29
|
+
from iqm.cpc.interface.compiler import Circuit, CircuitExecutionOptions, HeraldingMode
|
|
32
30
|
from iqm.pulla.interface import StationControlResult, TaskStatus
|
|
33
|
-
from iqm.pulse.builder import CircuitOperation
|
|
34
31
|
|
|
35
32
|
if TYPE_CHECKING:
|
|
36
|
-
from iqm.iqm_client import Instruction
|
|
37
33
|
from iqm.qiskit_iqm.iqm_backend import DynamicQuantumArchitecture
|
|
38
34
|
from iqm.qiskit_iqm.iqm_provider import IQMBackend
|
|
39
35
|
|
|
@@ -41,29 +37,11 @@ if TYPE_CHECKING:
|
|
|
41
37
|
from iqm.pulla.pulla import Pulla
|
|
42
38
|
|
|
43
39
|
|
|
44
|
-
def _instruction_to_dataclass(instruction: Instruction) -> CircuitOperation:
|
|
45
|
-
"""Convert the iqm-client model to an iqm-pulse dataclass."""
|
|
46
|
-
return CircuitOperation(
|
|
47
|
-
name=instruction.name,
|
|
48
|
-
implementation=instruction.implementation,
|
|
49
|
-
locus=instruction.qubits,
|
|
50
|
-
args=instruction.args,
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def _circuit_to_dataclass(circuit: Circuit) -> CPC_Circuit:
|
|
55
|
-
"""Convert the iqm-client model to a CPC dataclass."""
|
|
56
|
-
return CPC_Circuit(
|
|
57
|
-
name=circuit.name,
|
|
58
|
-
instructions=tuple(_instruction_to_dataclass(instruction) for instruction in circuit.instructions),
|
|
59
|
-
)
|
|
60
|
-
|
|
61
|
-
|
|
62
40
|
def qiskit_circuits_to_pulla(
|
|
63
41
|
qiskit_circuits: QuantumCircuit | Sequence[QuantumCircuit],
|
|
64
42
|
qubit_idx_to_name: dict[int, str],
|
|
65
43
|
custom_gates: Collection[str] = (),
|
|
66
|
-
) -> list[
|
|
44
|
+
) -> list[Circuit]:
|
|
67
45
|
"""Convert Qiskit quantum circuits into IQM Pulse quantum circuits.
|
|
68
46
|
|
|
69
47
|
Lower-level method, you may want to use :func:`qiskit_to_pulla` instead.
|
|
@@ -83,17 +61,14 @@ def qiskit_circuits_to_pulla(
|
|
|
83
61
|
qiskit_circuits = [qiskit_circuits]
|
|
84
62
|
|
|
85
63
|
return [
|
|
86
|
-
|
|
64
|
+
Circuit(
|
|
87
65
|
name=qiskit_circuit.name,
|
|
88
66
|
instructions=tuple(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
custom_gates,
|
|
95
|
-
),
|
|
96
|
-
)
|
|
67
|
+
serialize_instructions(
|
|
68
|
+
qiskit_circuit,
|
|
69
|
+
qubit_idx_to_name,
|
|
70
|
+
custom_gates,
|
|
71
|
+
),
|
|
97
72
|
),
|
|
98
73
|
)
|
|
99
74
|
for qiskit_circuit in qiskit_circuits
|
|
@@ -104,7 +79,7 @@ def qiskit_to_pulla(
|
|
|
104
79
|
pulla: Pulla,
|
|
105
80
|
backend: IQMBackend,
|
|
106
81
|
qiskit_circuits: QuantumCircuit | Sequence[QuantumCircuit],
|
|
107
|
-
) -> tuple[list[
|
|
82
|
+
) -> tuple[list[Circuit], Compiler]:
|
|
108
83
|
"""Convert transpiled Qiskit quantum circuits to IQM Pulse quantum circuits.
|
|
109
84
|
|
|
110
85
|
Also provides the Compiler object for compiling them, with the correct
|
|
@@ -140,8 +115,7 @@ def qiskit_to_pulla(
|
|
|
140
115
|
|
|
141
116
|
# We can be certain run_request contains only Circuit objects, because we created it
|
|
142
117
|
# right in this method with qiskit.QuantumCircuit objects
|
|
143
|
-
|
|
144
|
-
circuits = [_circuit_to_dataclass(c) for c in run_request_iqm_circuits]
|
|
118
|
+
circuits: list[Circuit] = [c for c in run_request.circuits if isinstance(c, Circuit)]
|
|
145
119
|
return circuits, compiler
|
|
146
120
|
|
|
147
121
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: iqm-pulla
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.1.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
|
|
@@ -218,29 +218,29 @@ License-File: LICENSE.txt
|
|
|
218
218
|
License-File: AUTHORS.rst
|
|
219
219
|
Requires-Dist: iqm-exa-common <27,>=26
|
|
220
220
|
Requires-Dist: iqm-station-control-client <10,>=9
|
|
221
|
-
Requires-Dist: iqm-pulse <12
|
|
221
|
+
Requires-Dist: iqm-pulse <13,>=12
|
|
222
222
|
Requires-Dist: iqm-data-definitions <3.0,>=2.13
|
|
223
223
|
Requires-Dist: pylatexenc ==2.10
|
|
224
224
|
Requires-Dist: pydantic <3.0,>=2.10.4
|
|
225
225
|
Provides-Extra: notebook
|
|
226
226
|
Requires-Dist: iqm-exa-common <27,>=26 ; extra == 'notebook'
|
|
227
227
|
Requires-Dist: iqm-station-control-client <10,>=9 ; extra == 'notebook'
|
|
228
|
-
Requires-Dist: iqm-pulse <12
|
|
228
|
+
Requires-Dist: iqm-pulse <13,>=12 ; extra == 'notebook'
|
|
229
229
|
Requires-Dist: notebook <7,>=6.4.11 ; extra == 'notebook'
|
|
230
230
|
Requires-Dist: matplotlib <4,>=3.6.3 ; extra == 'notebook'
|
|
231
231
|
Requires-Dist: nbclient ~=0.5.10 ; extra == 'notebook'
|
|
232
232
|
Provides-Extra: qir
|
|
233
233
|
Requires-Dist: iqm-exa-common <27,>=26 ; extra == 'qir'
|
|
234
234
|
Requires-Dist: iqm-station-control-client <10,>=9 ; extra == 'qir'
|
|
235
|
-
Requires-Dist: iqm-pulse <12
|
|
235
|
+
Requires-Dist: iqm-pulse <13,>=12 ; extra == 'qir'
|
|
236
236
|
Requires-Dist: iqm-pyqir ==0.12.0 ; extra == 'qir'
|
|
237
237
|
Requires-Dist: iqm-qiskit-qir ==0.8.0 ; extra == 'qir'
|
|
238
238
|
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
|
-
Requires-Dist: iqm-pulse <12
|
|
242
|
-
Requires-Dist: iqm-client
|
|
243
|
-
Requires-Dist: iqm-client <31
|
|
241
|
+
Requires-Dist: iqm-pulse <13,>=12 ; extra == 'qiskit'
|
|
242
|
+
Requires-Dist: iqm-client <32,>=31 ; extra == 'qiskit'
|
|
243
|
+
Requires-Dist: iqm-client[qiskit] <32,>=31 ; extra == 'qiskit'
|
|
244
244
|
|
|
245
245
|
IQM Pulla
|
|
246
246
|
#########
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
iqm/cpc/__init__.py,sha256=
|
|
1
|
+
iqm/cpc/__init__.py,sha256=mml8qMgjIQcfcfumrYu2lIfl30ZPSwaN3adn8CdRd3w,1079
|
|
2
2
|
iqm/cpc/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
3
|
iqm/cpc/compiler/__init__.py,sha256=ieYyHzb2IyevDm5swU--rPMsh5GdUtLrw8773Cd0ens,678
|
|
4
|
-
iqm/cpc/compiler/compiler.py,sha256=
|
|
4
|
+
iqm/cpc/compiler/compiler.py,sha256=YKCD_5xXJ8l_XCZftRFHmoqCpuCgqTGpgOLsz6srmQc,22398
|
|
5
5
|
iqm/cpc/compiler/dd.py,sha256=j4onTod24RPxRwwsM3EMBBgX4hDO0k_nW9R762AocXo,21674
|
|
6
6
|
iqm/cpc/compiler/errors.py,sha256=tz-8g1QtDvCAPmAjjCYK3FoULrazkpSTmXIvyqukaT4,1949
|
|
7
7
|
iqm/cpc/compiler/standard_stages.py,sha256=j7xSfmV-qgXAnQg21GbvUIbNnBznafQgSc5RrHOWbRA,34560
|
|
8
8
|
iqm/cpc/compiler/station_settings.py,sha256=l4cJYcNtMar_BoChJaUbmVfpXv7liTCeLWpSv7fAipg,16903
|
|
9
9
|
iqm/cpc/interface/__init__.py,sha256=mvhNx1I9K5Sg40CwPntWj35M3Bni__23PWEw_qYaXtQ,611
|
|
10
|
-
iqm/cpc/interface/compiler.py,sha256=
|
|
10
|
+
iqm/cpc/interface/compiler.py,sha256=zxUyalyiBIQA9EUK_fDGNq0SZ5OwfxQdB6Xk5BDDMVk,9797
|
|
11
11
|
iqm/pulla/__init__.py,sha256=fj5Qh8R9K-z6q5g9-CySBZsG8d33nU7hCHrqIIB8_-0,901
|
|
12
12
|
iqm/pulla/calibration.py,sha256=c_SNlTxXC0y-ahDY7JY53N7SofU5WUWMrNBogtdfHl4,4523
|
|
13
|
-
iqm/pulla/interface.py,sha256=
|
|
13
|
+
iqm/pulla/interface.py,sha256=QquVKhOl2fs2V03fqQJq5sIEaIGiYvetPKKNz_fWH54,3570
|
|
14
14
|
iqm/pulla/pulla.py,sha256=RWsUgtCy_wAgm8TDk6uZEmaG_v-lTBFzx43qpA1CfQU,14243
|
|
15
15
|
iqm/pulla/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
iqm/pulla/quantum_architecture.py,sha256=mJH9e9fdkblg6LrgN7qd-Ui3Igawf-hGd2Z7ZclQg04,6260
|
|
17
17
|
iqm/pulla/utils.py,sha256=xVu4jLlSHX-_YQT1kB-zBiGy4wNy0YyOKZg4AGMB5DE,24748
|
|
18
18
|
iqm/pulla/utils_cirq.py,sha256=VtdO356D2RAh2lSVdaPm3ClJ9-nvC4jzhR9hP5QSQhI,793
|
|
19
19
|
iqm/pulla/utils_dd.py,sha256=SxYAuRBgvYELKjeXpFbP4mM0xCCivDk7WUHw7oEXfMo,1695
|
|
20
|
-
iqm/pulla/utils_qir.py,sha256=
|
|
21
|
-
iqm/pulla/utils_qiskit.py,sha256=
|
|
22
|
-
iqm_pulla-
|
|
23
|
-
iqm_pulla-
|
|
24
|
-
iqm_pulla-
|
|
25
|
-
iqm_pulla-
|
|
26
|
-
iqm_pulla-
|
|
27
|
-
iqm_pulla-
|
|
20
|
+
iqm/pulla/utils_qir.py,sha256=uNEiqBczv7rX8tAqcg7TX-si0P-ZdDcPTMOVfi5eb28,11567
|
|
21
|
+
iqm/pulla/utils_qiskit.py,sha256=pbb2fEJAdxqd6hW9_Qgvpvy0P2H81zTJ1QLahe4Tx6U,9482
|
|
22
|
+
iqm_pulla-11.1.0.dist-info/AUTHORS.rst,sha256=iCStz7WP5Jk7uMnn9jRA4ybS14X4yeUW2SsWE-OTaRk,328
|
|
23
|
+
iqm_pulla-11.1.0.dist-info/LICENSE.txt,sha256=cCj_biRA4Q8A77vxR8AuvAf-DZ5G79yxR_3lYY6TrmA,11333
|
|
24
|
+
iqm_pulla-11.1.0.dist-info/METADATA,sha256=TCrfN86y-VD9EyR7t5rrwsB7RM-MltOQ0gpDdYXyqEg,17696
|
|
25
|
+
iqm_pulla-11.1.0.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
|
|
26
|
+
iqm_pulla-11.1.0.dist-info/top_level.txt,sha256=NB4XRfyDS6_wG9gMsyX-9LTU7kWnTQxNvkbzIxGv3-c,4
|
|
27
|
+
iqm_pulla-11.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|