iqm-pulla 9.1.0__tar.gz → 9.3.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 (75) hide show
  1. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/CHANGELOG.rst +16 -0
  2. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/PKG-INFO +2 -2
  3. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/qiskit.txt +2 -2
  4. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/utils_qir.py +2 -2
  5. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/utils_qiskit.py +6 -2
  6. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm_pulla.egg-info/PKG-INFO +2 -2
  7. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm_pulla.egg-info/SOURCES.txt +0 -1
  8. iqm_pulla-9.3.0/version.txt +1 -0
  9. iqm_pulla-9.1.0/src/iqm/cpc/compiler/circuit_compilation_request_handler.py +0 -100
  10. iqm_pulla-9.1.0/version.txt +0 -1
  11. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/AUTHORS.rst +0 -0
  12. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/LICENSE.txt +0 -0
  13. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/MANIFEST.in +0 -0
  14. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/README.rst +0 -0
  15. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/API.rst +0 -0
  16. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Compilation Stages.ipynb +0 -0
  17. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Configuration and Usage.ipynb +0 -0
  18. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Custom Gates and Implementations.ipynb +0 -0
  19. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Example - Compilation With Local Calibration Set.ipynb +0 -0
  20. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Example - Executing QIR programs.ipynb +0 -0
  21. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Example - Measuring T1.ipynb +0 -0
  22. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Example - Randomized Benchmarking.ipynb +0 -0
  23. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Example - Simple Dynamical Decoupling.ipynb +0 -0
  24. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/Quick Start.ipynb +0 -0
  25. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/_static/images/favicon.ico +0 -0
  26. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/_static/images/logo.png +0 -0
  27. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/_templates/autosummary-class-template.rst +0 -0
  28. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/_templates/autosummary-module-template.rst +0 -0
  29. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/authors.rst +0 -0
  30. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/changelog.rst +0 -0
  31. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/common_errors.rst +0 -0
  32. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/conf.py +0 -0
  33. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/examples.rst +0 -0
  34. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/index.rst +0 -0
  35. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/license.rst +0 -0
  36. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/migration_guide.rst +0 -0
  37. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/readme.rst +0 -0
  38. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/references.bib +0 -0
  39. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/references.rst +0 -0
  40. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/docs/user_guides.rst +0 -0
  41. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/pyproject.toml +0 -0
  42. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/base.in +0 -0
  43. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/base.txt +0 -0
  44. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/notebook.in +0 -0
  45. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/notebook.txt +0 -0
  46. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/qir.in +0 -0
  47. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/qir.txt +0 -0
  48. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/requirements/qiskit.in +0 -0
  49. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/setup.cfg +0 -0
  50. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/setup.py +0 -0
  51. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/__init__.py +0 -0
  52. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/__init__.py +0 -0
  53. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/compiler.py +0 -0
  54. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/dd.py +0 -0
  55. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/errors.py +0 -0
  56. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/standard_stages.py +0 -0
  57. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/compiler/station_settings.py +0 -0
  58. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/interface/__init__.py +0 -0
  59. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/interface/compiler.py +0 -0
  60. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/cpc/py.typed +0 -0
  61. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/__init__.py +0 -0
  62. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/calibration.py +0 -0
  63. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/interface.py +0 -0
  64. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/pulla.py +0 -0
  65. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/py.typed +0 -0
  66. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/quantum_architecture.py +0 -0
  67. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/utils.py +0 -0
  68. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/utils_cirq.py +0 -0
  69. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm/pulla/utils_dd.py +0 -0
  70. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm_pulla.egg-info/dependency_links.txt +0 -0
  71. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm_pulla.egg-info/requires.txt +1 -1
  72. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/src/iqm_pulla.egg-info/top_level.txt +0 -0
  73. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/tests/.pylintrc +0 -0
  74. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/tests/__init__.py +0 -0
  75. {iqm_pulla-9.1.0 → iqm_pulla-9.3.0}/tests/conftest.py +0 -0
@@ -2,6 +2,22 @@
2
2
  Changelog
3
3
  =========
4
4
 
5
+ Version 9.3.0 (2025-08-05)
6
+ ==========================
7
+
8
+ Features
9
+ --------
10
+
11
+ - Require compiler instead of Pulla in qir_to_pulla
12
+
13
+ Version 9.2.0 (2025-07-31)
14
+ ==========================
15
+
16
+ Features
17
+ --------
18
+
19
+ - Support iqm-client with QIR support
20
+
5
21
  Version 9.1.0 (2025-07-30)
6
22
  ==========================
7
23
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulla
3
- Version: 9.1.0
3
+ Version: 9.3.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
@@ -239,8 +239,8 @@ 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
241
  Requires-Dist: iqm-pulse<11,>=10; extra == "qiskit"
242
- Requires-Dist: iqm-client<30,>=29; extra == "qiskit"
243
242
  Requires-Dist: iqm-client[qiskit]<30,>=29; extra == "qiskit"
243
+ Requires-Dist: iqm-client<30,>=29; extra == "qiskit"
244
244
 
245
245
  IQM Pulla
246
246
  #########
@@ -1,5 +1,5 @@
1
1
  iqm-exa-common>=26,<27
2
2
  iqm-station-control-client>=9,<10
3
3
  iqm-pulse>=10,<11
4
- iqm-client>=29,<30
5
- iqm-client[qiskit]>=29,<30
4
+ iqm-client[qiskit]>=29,<30
5
+ iqm-client>=29,<30
@@ -263,8 +263,8 @@ def generate_qiskit_qir_qubit_mapping(qiskit_circuit: QuantumCircuit, qiskit_bac
263
263
  Then we assign qiskit-qir index to the qiskit logic qubit idx.
264
264
 
265
265
  Args:
266
- qiskit_circuit: Qiskit circuit to generate the mapping for.
267
- qiskit_backend: Qiskit backend object to be used for qubit name generation.
266
+ qiskit_circuit: The Qiskit circuit to generate the mapping for.
267
+ qiskit_backend: The Qiskit backend object to be used for qubit name generation.
268
268
 
269
269
  Returns:
270
270
  A dictionary mapping Qiskit qubit indices to QIR qubit pointers.
@@ -19,6 +19,7 @@ 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
22
23
  from iqm.qiskit_iqm.iqm_backend import IQMBackendBase
23
24
  from iqm.qiskit_iqm.iqm_job import IQMJob
24
25
  from iqm.qiskit_iqm.qiskit_to_iqm import serialize_instructions
@@ -32,7 +33,7 @@ from iqm.pulla.interface import StationControlResult, TaskStatus
32
33
  from iqm.pulse.builder import CircuitOperation
33
34
 
34
35
  if TYPE_CHECKING:
35
- from iqm.iqm_client import Circuit, Instruction
36
+ from iqm.iqm_client import Instruction
36
37
  from iqm.qiskit_iqm.iqm_backend import DynamicQuantumArchitecture
37
38
  from iqm.qiskit_iqm.iqm_provider import IQMBackend
38
39
 
@@ -137,7 +138,10 @@ def qiskit_to_pulla(
137
138
  else {m.logical_name: m.physical_name for m in run_request.qubit_mapping}
138
139
  )
139
140
 
140
- circuits = [_circuit_to_dataclass(c) for c in run_request.circuits]
141
+ # We can be certain run_request contains only Circuit objects, because we created it
142
+ # right in this method with qiskit.QuantumCircuit objects
143
+ run_request_iqm_circuits: list[Circuit] = [c for c in run_request.circuits if isinstance(c, (Circuit))]
144
+ circuits = [_circuit_to_dataclass(c) for c in run_request_iqm_circuits]
141
145
  return circuits, compiler
142
146
 
143
147
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: iqm-pulla
3
- Version: 9.1.0
3
+ Version: 9.3.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
@@ -239,8 +239,8 @@ 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
241
  Requires-Dist: iqm-pulse<11,>=10; extra == "qiskit"
242
- Requires-Dist: iqm-client<30,>=29; extra == "qiskit"
243
242
  Requires-Dist: iqm-client[qiskit]<30,>=29; extra == "qiskit"
243
+ Requires-Dist: iqm-client<30,>=29; extra == "qiskit"
244
244
 
245
245
  IQM Pulla
246
246
  #########
@@ -43,7 +43,6 @@ requirements/qiskit.txt
43
43
  src/iqm/cpc/__init__.py
44
44
  src/iqm/cpc/py.typed
45
45
  src/iqm/cpc/compiler/__init__.py
46
- src/iqm/cpc/compiler/circuit_compilation_request_handler.py
47
46
  src/iqm/cpc/compiler/compiler.py
48
47
  src/iqm/cpc/compiler/dd.py
49
48
  src/iqm/cpc/compiler/errors.py
@@ -0,0 +1 @@
1
+ 9.3.0
@@ -1,100 +0,0 @@
1
- # Copyright 2024-2025 IQM
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- """Convert quantum circuits into instruction schedules.
15
-
16
- This is the entry-point for integrations, e.g. for a server-side component performing circuit-to-pulse compilation.
17
- """
18
-
19
- import logging
20
- from typing import Any
21
-
22
- from opentelemetry import context as telemetry_context
23
- from opentelemetry import propagate
24
-
25
- from exa.common.data.setting_node import SettingNode
26
- from exa.common.qcm_data.chip_topology import ChipTopology
27
- from iqm.cpc.compiler.compiler import Compiler, cpc_logger, tracer
28
- from iqm.cpc.compiler.standard_stages import get_standard_stages
29
- from iqm.cpc.interface.compiler import CircuitBatch, CircuitCompilationResult, CircuitExecutionOptions
30
- from iqm.pulla.interface import CalibrationSet
31
- from iqm.pulse.playlist.channel import ChannelProperties
32
-
33
-
34
- def handle_circuit_compilation_request( # noqa: PLR0913
35
- job_id: str,
36
- circuits: CircuitBatch,
37
- shots: int,
38
- calibration_set: CalibrationSet,
39
- chip_topology: ChipTopology,
40
- channel_properties: dict[str, ChannelProperties],
41
- component_channels: dict[str, dict[str, str]],
42
- options: CircuitExecutionOptions,
43
- custom_settings: SettingNode | None,
44
- qubit_mapping: dict[str, str] | None,
45
- trace_context: dict[str, Any] | None,
46
- ) -> CircuitCompilationResult:
47
- """Compile a batch of quantum circuits into a form that can be executed by Station Control.
48
-
49
- Args:
50
- job_id: ID of the job requesting compilation, used in logging
51
- circuits: quantum circuits to compile into schedules
52
- shots: number of times to repeat the execution of each circuit
53
- calibration_set: calibration data for the station the circuits are executed on
54
- chip_topology: topology of the QPU the circuits are executed on
55
- channel_properties: properties of control channels on the station
56
- component_channels: QPU component to function to channel mapping
57
- options: various discrete options for circuit execution that affect compilation
58
- custom_settings: additional Station Control settings to override generated settings
59
- qubit_mapping: Mapping of logical qubit names to physical qubit names. ``None`` means the identity mapping.
60
- trace_context: telemetry context to be propagated during circuit compilation
61
-
62
- Returns:
63
- circuit compilation result
64
-
65
- """
66
- if trace_context:
67
- telemetry_context.attach(propagate.extract(trace_context))
68
- cpc_logger.debug("Compiling circuits for job %s", job_id)
69
-
70
- with tracer.start_as_current_span("prepare_compilation"):
71
- if cpc_logger.isEnabledFor(logging.DEBUG):
72
- cpc_logger.debug(
73
- "calibration set contents:\n%s",
74
- "".join(f" {k:60s}: {v}\n" for k, v in calibration_set.items()),
75
- )
76
- compiler = Compiler(
77
- calibration_set=calibration_set,
78
- chip_topology=chip_topology,
79
- channel_properties=channel_properties,
80
- component_channels=component_channels,
81
- component_mapping=qubit_mapping,
82
- options=options,
83
- stages=get_standard_stages(idempotent=False),
84
- strict=True,
85
- )
86
-
87
- with tracer.start_as_current_span("compile_circuits", attributes={"len(circuits)": len(circuits)}):
88
- playlist, compilation_context = compiler.compile(circuits)
89
-
90
- with tracer.start_as_current_span("build_settings"):
91
- compilation_context["custom_settings"] = custom_settings
92
- settings, compilation_context = compiler.build_settings(compilation_context, shots)
93
-
94
- with tracer.start_as_current_span("prepare_compilation_results"):
95
- return CircuitCompilationResult(
96
- playlist=playlist,
97
- readout_mappings=compilation_context["readout_mappings"],
98
- settings=settings,
99
- circuit_metrics=compilation_context["circuit_metrics"],
100
- )
@@ -1 +0,0 @@
1
- 9.1.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
@@ -24,5 +24,5 @@ iqm-qiskit-qir==0.8.0
24
24
  iqm-exa-common<27,>=26
25
25
  iqm-station-control-client<10,>=9
26
26
  iqm-pulse<11,>=10
27
- iqm-client<30,>=29
28
27
  iqm-client[qiskit]<30,>=29
28
+ iqm-client<30,>=29
File without changes
File without changes
File without changes