qiskit 2.1.0rc1__cp39-abi3-macosx_11_0_arm64.whl → 2.1.1__cp39-abi3-macosx_11_0_arm64.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.
- qiskit/VERSION.txt +1 -1
- qiskit/__init__.py +1 -0
- qiskit/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +96 -4
- qiskit/circuit/annotation.py +100 -0
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +1 -1
- qiskit/circuit/library/data_preparation/_zz_feature_map.py +1 -1
- qiskit/circuit/library/quantum_volume.py +2 -1
- qiskit/circuit/parameterexpression.py +2 -2
- qiskit/circuit/quantumcircuit.py +6 -3
- qiskit/dagcircuit/__init__.py +11 -0
- qiskit/dagcircuit/collect_blocks.py +10 -6
- qiskit/dagcircuit/dagnode.py +1 -0
- qiskit/primitives/containers/bit_array.py +3 -3
- qiskit/transpiler/passes/__init__.py +1 -0
- qiskit/transpiler/passes/layout/apply_layout.py +2 -2
- qiskit/transpiler/passes/synthesis/hls_plugins.py +36 -6
- qiskit/transpiler/passes/synthesis/plugin.py +4 -0
- qiskit/transpiler/target.py +15 -2
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/METADATA +1 -1
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/RECORD +25 -25
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/WHEEL +0 -0
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/entry_points.txt +0 -0
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/licenses/LICENSE.txt +0 -0
- {qiskit-2.1.0rc1.dist-info → qiskit-2.1.1.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1.
|
1
|
+
2.1.1
|
qiskit/__init__.py
CHANGED
qiskit/_accelerate.abi3.so
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -562,11 +562,16 @@ happen incoherently and to collapse any entanglement.
|
|
562
562
|
|
563
563
|
Hardware can be instructed to apply a real-time idle period on a given qubit. A scheduled circuit
|
564
564
|
(see :mod:`qiskit.transpiler`) will include all the idle times on qubits explicitly in terms of this
|
565
|
-
:class:`Delay`.
|
565
|
+
:class:`Delay`. :class:`.BoxOp` can also have an explicit duration attached, in its
|
566
|
+
:attr:`.BoxOp.duration` field.
|
566
567
|
|
567
568
|
.. autoclass:: Delay
|
568
569
|
:show-inheritance:
|
569
570
|
|
571
|
+
Delay durations can be specified either with concrete, constant times, or with delayed-resolution
|
572
|
+
"duration expressions" built out of :class:`.expr.Stretch` objects. See :ref:`circuit-stretches`
|
573
|
+
for more on this.
|
574
|
+
|
570
575
|
The :class:`Barrier` instruction can span an arbitrary number of qubits and clbits, and is a no-op
|
571
576
|
in hardware. During transpilation and optimization, however, it blocks any optimizations from
|
572
577
|
"crossing" the barrier; that is, in:
|
@@ -715,9 +720,9 @@ classes associated to each name.
|
|
715
720
|
.. autofunction:: get_control_flow_name_mapping
|
716
721
|
|
717
722
|
These control-flow operations (:class:`IfElseOp`, :class:`WhileLoopOp`,
|
718
|
-
:class:`SwitchCaseOp` and :class
|
719
|
-
conditions and strategies, but contain all the different subcircuit blocks that might
|
720
|
-
their :attr:`~ControlFlowOp.blocks` property.
|
723
|
+
:class:`SwitchCaseOp`, :class:`ForLoopOp` and :class:`.BoxOp`) all have specific state that defines
|
724
|
+
the branching conditions and strategies, but contain all the different subcircuit blocks that might
|
725
|
+
be entered in their :attr:`~ControlFlowOp.blocks` property.
|
721
726
|
|
722
727
|
.. autosummary::
|
723
728
|
:toctree: ../stubs/
|
@@ -726,6 +731,7 @@ their :attr:`~ControlFlowOp.blocks` property.
|
|
726
731
|
WhileLoopOp
|
727
732
|
SwitchCaseOp
|
728
733
|
ForLoopOp
|
734
|
+
BoxOp
|
729
735
|
|
730
736
|
The :class:`.SwitchCaseOp` also understands a special value:
|
731
737
|
|
@@ -799,6 +805,28 @@ automatically.
|
|
799
805
|
Consult :ref:`the control-flow construction documentation <circuit-control-flow-methods>` for more
|
800
806
|
information on how to build circuits with control flow.
|
801
807
|
|
808
|
+
|
809
|
+
Instruction-local annotations
|
810
|
+
-----------------------------
|
811
|
+
|
812
|
+
.. seealso::
|
813
|
+
|
814
|
+
:mod:`qiskit.circuit.annotation`
|
815
|
+
The module-level discussion of the annotation framework, including how to defined custom
|
816
|
+
annotations, and how the system interacts with the compiler and with serialization to other
|
817
|
+
formats.
|
818
|
+
|
819
|
+
|
820
|
+
Certain circuit instructions can be "annotated" with instruction-local annotations. As of Qiskit
|
821
|
+
2.1.0, this is limited to :class:`.BoxOp`. All annotations are subclasses of one base
|
822
|
+
interface-defining object, but typically represent entirely custom analyses and commands.
|
823
|
+
|
824
|
+
.. autosummary::
|
825
|
+
:toctree: ../stubs
|
826
|
+
|
827
|
+
Annotation
|
828
|
+
|
829
|
+
|
802
830
|
Investigating commutation relations
|
803
831
|
-----------------------------------
|
804
832
|
|
@@ -823,6 +851,70 @@ are available in the :class:`CommutationChecker`.
|
|
823
851
|
CommutationChecker
|
824
852
|
|
825
853
|
|
854
|
+
.. _circuit-stretches:
|
855
|
+
|
856
|
+
Delayed-resolution scheduling
|
857
|
+
-----------------------------
|
858
|
+
|
859
|
+
Typically, the output of Qiskit's compiler cannot be directly executed on a QPU. First, it is
|
860
|
+
likely to pass through some vendor-specific pulse-level compiler, which converts the gates and
|
861
|
+
measurements into signals to the controlling electronics of the QPU. While Qiskit's
|
862
|
+
:class:`.Target` can represent *some* of the timing constraints that these pulses will have, it is
|
863
|
+
generally not entirely complete. This is especially true when dynamic circuits (feed-forward
|
864
|
+
operations) are involved; the delays induced by the classical components are often dependent on
|
865
|
+
low-level post-optimization details of backend compilers, and cannot be known by Qiskit.
|
866
|
+
|
867
|
+
In these situations, a user can still exert control over the relative scheduling of pulses, such as
|
868
|
+
for dynamical decoupling, by using "stretch" durations. These are constructed by
|
869
|
+
:meth:`.QuantumCircuit.add_stretch`, and interact with the classical-expression system described in
|
870
|
+
:mod:`qiskit.circuit.classical`, although they are not real-time mutable.
|
871
|
+
|
872
|
+
For example, we can add stretches and boxes to set up a system where two separate dynamic-decoupling
|
873
|
+
sequences are applied to the same qubit, while a pair of other qubits undergoes a delay of unknown
|
874
|
+
duration. The two sequences are constrained to have the same length, even though internally the
|
875
|
+
concrete DD pulses have differing lengths.
|
876
|
+
|
877
|
+
.. code-block:: python
|
878
|
+
|
879
|
+
from qiskit import QuantumCircuit
|
880
|
+
from qiskit.circuit.classical import expr
|
881
|
+
|
882
|
+
qc = QuantumCircuit(3, 3)
|
883
|
+
# This sets up three duration "degrees of freedom" that will
|
884
|
+
# be resolved later by a backend compiler.
|
885
|
+
a = qc.add_stretch("a")
|
886
|
+
b = qc.add_stretch("b")
|
887
|
+
c = qc.add_stretch("c")
|
888
|
+
|
889
|
+
# This set of operations involves feed-forward operations that
|
890
|
+
# Qiskit cannot know the length of.
|
891
|
+
with qc.box():
|
892
|
+
qc.h(1)
|
893
|
+
qc.cx(1, 2)
|
894
|
+
qc.measure([1, 2], [1, 2])
|
895
|
+
with qc.if_test(expr.equal(qc.clbits[1], qc.clbits[2])):
|
896
|
+
qc.h(1)
|
897
|
+
|
898
|
+
# While that stuff is happening to qubits (1, 2), we want
|
899
|
+
# qubit 0 to do two different DD sequences. The two DD
|
900
|
+
# sequences are fixed to be the same length as each other,
|
901
|
+
# even though they're both internally stretchy.
|
902
|
+
with qc.box(duration=a):
|
903
|
+
# Textbook NMRish XX DD.
|
904
|
+
qc.delay(b, 0)
|
905
|
+
qc.x(0)
|
906
|
+
qc.delay(expr.mul(2, b), 0)
|
907
|
+
qc.x(0)
|
908
|
+
qc.delay(b, 0)
|
909
|
+
with qc.box(duration=a):
|
910
|
+
# XY4-like DD.
|
911
|
+
for _ in range(2):
|
912
|
+
qc.delay(c, 0)
|
913
|
+
qc.y(0)
|
914
|
+
qc.delay(expr.mul(2, c), 0)
|
915
|
+
qc.x(0)
|
916
|
+
qc.delay(c, 0)
|
917
|
+
|
826
918
|
.. _circuit-custom-gates:
|
827
919
|
|
828
920
|
Creating custom instructions
|
qiskit/circuit/annotation.py
CHANGED
@@ -84,6 +84,106 @@ used to pass serializers.
|
|
84
84
|
.. autoclass:: QPYSerializer
|
85
85
|
.. autoclass:: QPYFromOpenQASM3Serializer
|
86
86
|
.. autoclass:: OpenQASM3Serializer
|
87
|
+
|
88
|
+
|
89
|
+
Examples
|
90
|
+
========
|
91
|
+
|
92
|
+
A block-collection transpiler pass
|
93
|
+
----------------------------------
|
94
|
+
|
95
|
+
A principal goal of the annotation framework is to allow custom analyses and commands to be stored
|
96
|
+
on circuits in an instruction-local manner, either by the user on entry to the compiler, or for one
|
97
|
+
compiler pass to store information for later consumption.
|
98
|
+
|
99
|
+
For example, we can write a simple transpiler pass that collects runs of single-qubit operations,
|
100
|
+
and puts each run into a :class:`.BoxOp`, the calculates the total unitary action and attaches it as
|
101
|
+
a custom annotation, so the same analysis does not need to be repeated later, even if the internals
|
102
|
+
of each block are optimized.
|
103
|
+
|
104
|
+
.. code-block:: python
|
105
|
+
|
106
|
+
from qiskit.circuit import annotation, QuantumCircuit, BoxOp
|
107
|
+
from qiskit.quantum_info import Operator
|
108
|
+
from qiskit.transpiler import TransformationPass
|
109
|
+
|
110
|
+
class PerformsUnitary(annotation.Annotation):
|
111
|
+
namespace = "unitary"
|
112
|
+
def __init__(self, matrix):
|
113
|
+
self.matrix = matrix
|
114
|
+
|
115
|
+
class Collect1qRuns(TransformationPass):
|
116
|
+
def run(self, dag):
|
117
|
+
for run in dag.collect_1q_runs():
|
118
|
+
block = QuantumCircuit(1)
|
119
|
+
for node in run:
|
120
|
+
block.append(node.op, [0], [])
|
121
|
+
box = BoxOp(block, annotations=[PerformsUnitary(Operator(block).data)])
|
122
|
+
dag.replace_block_with_op(run, box, {run[0].qargs[0]: 0})
|
123
|
+
return dag
|
124
|
+
|
125
|
+
In order to serialize the annotation to OpenQASM 3, we must define custom logic, since the analysis
|
126
|
+
itself is entirely custom. The serialization is separate to the annotation; there may be
|
127
|
+
circumstances in which serialization should be done differently.
|
128
|
+
|
129
|
+
.. code-block:: python
|
130
|
+
|
131
|
+
import ast
|
132
|
+
import numpy as np
|
133
|
+
|
134
|
+
class Serializer(annotation.OpenQASM3Serializer):
|
135
|
+
def dump(self, annotation):
|
136
|
+
if annotation.namespace != "unitary":
|
137
|
+
return NotImplemented
|
138
|
+
line = lambda row: "[" + ", ".join(repr(x) for x in row) + "]"
|
139
|
+
return "[" + ", ".join(line(row) for row in annotation.matrix.tolist()) + "]"
|
140
|
+
|
141
|
+
def load(self, namespace, payload):
|
142
|
+
if namespace != "unitary":
|
143
|
+
return NotImplemented
|
144
|
+
return PerformsUnitary(np.array(ast.literal_eval(payload), dtype=complex))
|
145
|
+
|
146
|
+
Finally, this can be put together, showing the output OpenQASM 3.
|
147
|
+
|
148
|
+
.. code-block:: python
|
149
|
+
|
150
|
+
from qiskit import qasm3
|
151
|
+
|
152
|
+
qc = QuantumCircuit(3)
|
153
|
+
qc.s(0)
|
154
|
+
qc.t(0)
|
155
|
+
qc.y(1)
|
156
|
+
qc.x(1)
|
157
|
+
qc.h(2)
|
158
|
+
qc.s(2)
|
159
|
+
collected = Collect1qRuns()(qc)
|
160
|
+
|
161
|
+
handlers = {"unitary": Serializer()}
|
162
|
+
dumped = qasm3.dumps(collected, annotation_handlers=handlers)
|
163
|
+
print(dumped)
|
164
|
+
|
165
|
+
.. code-block:: openqasm3
|
166
|
+
|
167
|
+
OPENQASM 3.0;
|
168
|
+
include "stdgates.inc";
|
169
|
+
qubit[3] q;
|
170
|
+
@unitary [[(1+0j), 0j], [0j, (-0.7071067811865475+0.7071067811865475j)]]
|
171
|
+
box {
|
172
|
+
s q[0];
|
173
|
+
t q[0];
|
174
|
+
}
|
175
|
+
@unitary [[1j, 0j], [0j, -1j]]
|
176
|
+
box {
|
177
|
+
y q[1];
|
178
|
+
x q[1];
|
179
|
+
}
|
180
|
+
@unitary [[(0.7071067811865475+0j), (0.7071067811865475+0j)], [0.7071067811865475j, \
|
181
|
+
-0.7071067811865475j]]
|
182
|
+
box {
|
183
|
+
h q[2];
|
184
|
+
s q[2];
|
185
|
+
}
|
186
|
+
|
87
187
|
"""
|
88
188
|
|
89
189
|
from __future__ import annotations
|
@@ -377,7 +377,7 @@ class PiecewiseChebyshevGate(Gate):
|
|
377
377
|
from qiskit import QuantumCircuit
|
378
378
|
from qiskit.circuit.library.arithmetic import PiecewiseChebyshevGate
|
379
379
|
|
380
|
-
f_x, num_state_qubits, degree, breakpoints = lambda x: np.
|
380
|
+
f_x, num_state_qubits, degree, breakpoints = lambda x: np.sin(1 / x), 2, 2, [2, 4]
|
381
381
|
pw_approximation = PiecewiseChebyshevGate(f_x, num_state_qubits, degree, breakpoints)
|
382
382
|
|
383
383
|
qc = QuantumCircuit(pw_approximation.num_qubits)
|
@@ -98,7 +98,7 @@ class ZZFeatureMap(PauliFeatureMap):
|
|
98
98
|
@deprecate_func(
|
99
99
|
since="2.1",
|
100
100
|
additional_msg=(
|
101
|
-
"Use the
|
101
|
+
"Use the zz_feature_map function as a replacement. Note that this will no longer "
|
102
102
|
"return a BlueprintCircuit, but just a plain QuantumCircuit."
|
103
103
|
),
|
104
104
|
removal_timeline="in Qiskit 3.0",
|
@@ -174,6 +174,7 @@ def quantum_volume(
|
|
174
174
|
`arXiv:1811.12926 <https://arxiv.org/abs/1811.12926>`__
|
175
175
|
"""
|
176
176
|
if isinstance(seed, np.random.Generator):
|
177
|
-
|
177
|
+
max_value = np.iinfo(np.int64).max
|
178
|
+
seed = seed.integers(max_value, dtype=np.int64)
|
178
179
|
depth = depth or num_qubits
|
179
180
|
return QuantumCircuit._from_circuit_data(qv_rs(num_qubits, depth, seed))
|
@@ -683,8 +683,8 @@ class ParameterExpression:
|
|
683
683
|
sympy_binds = {}
|
684
684
|
for old, new in inst.binds.items():
|
685
685
|
if isinstance(new, ParameterExpression):
|
686
|
-
new = new.
|
687
|
-
sympy_binds[old.
|
686
|
+
new = new.sympify()
|
687
|
+
sympy_binds[old.sympify()] = new
|
688
688
|
output = output.subs(sympy_binds, simultaneous=True)
|
689
689
|
continue
|
690
690
|
|
qiskit/circuit/quantumcircuit.py
CHANGED
@@ -4810,7 +4810,7 @@ class QuantumCircuit:
|
|
4810
4810
|
target._name_update()
|
4811
4811
|
|
4812
4812
|
if isinstance(parameters, collections.abc.Mapping):
|
4813
|
-
raw_mapping = parameters if flat_input else self._unroll_param_dict(parameters)
|
4813
|
+
raw_mapping = parameters if flat_input else self._unroll_param_dict(parameters, strict)
|
4814
4814
|
if strict and (
|
4815
4815
|
extras := [
|
4816
4816
|
parameter for parameter in raw_mapping if not self.has_parameter(parameter)
|
@@ -4833,7 +4833,7 @@ class QuantumCircuit:
|
|
4833
4833
|
return self._data.has_control_flow_op()
|
4834
4834
|
|
4835
4835
|
def _unroll_param_dict(
|
4836
|
-
self, parameter_binds: Mapping[Parameter, ParameterValueType]
|
4836
|
+
self, parameter_binds: Mapping[Parameter, ParameterValueType], strict: bool = True
|
4837
4837
|
) -> Mapping[Parameter, ParameterValueType]:
|
4838
4838
|
out = {}
|
4839
4839
|
for parameter, value in parameter_binds.items():
|
@@ -4845,7 +4845,10 @@ class QuantumCircuit:
|
|
4845
4845
|
)
|
4846
4846
|
out.update(zip(parameter, value))
|
4847
4847
|
elif isinstance(parameter, str):
|
4848
|
-
|
4848
|
+
if strict:
|
4849
|
+
out[self.get_parameter(parameter)] = value
|
4850
|
+
if not strict and self.has_parameter(parameter):
|
4851
|
+
out[self.get_parameter(parameter)] = value
|
4849
4852
|
else:
|
4850
4853
|
out[parameter] = value
|
4851
4854
|
return out
|
qiskit/dagcircuit/__init__.py
CHANGED
@@ -36,7 +36,18 @@ Exceptions
|
|
36
36
|
|
37
37
|
.. autoexception:: DAGCircuitError
|
38
38
|
.. autoexception:: DAGDependencyError
|
39
|
+
|
40
|
+
Utilities
|
41
|
+
=========
|
42
|
+
|
43
|
+
.. autosummary::
|
44
|
+
:toctree: ../stubs/
|
45
|
+
|
46
|
+
BlockCollapser
|
47
|
+
BlockCollector
|
48
|
+
BlockSplitter
|
39
49
|
"""
|
50
|
+
from .collect_blocks import BlockCollapser, BlockCollector, BlockSplitter
|
40
51
|
from .dagcircuit import DAGCircuit
|
41
52
|
from .dagnode import DAGNode, DAGOpNode, DAGInNode, DAGOutNode
|
42
53
|
from .dagdepnode import DAGDepNode
|
@@ -17,11 +17,12 @@ from __future__ import annotations
|
|
17
17
|
|
18
18
|
from collections.abc import Iterable, Callable
|
19
19
|
|
20
|
-
from qiskit.dagcircuit import DAGDepNode
|
21
|
-
|
22
20
|
from qiskit.circuit import QuantumCircuit, CircuitInstruction, ClassicalRegister, Bit
|
23
21
|
from qiskit.circuit.controlflow import condition_resources
|
24
|
-
from . import
|
22
|
+
from qiskit.dagcircuit.dagcircuit import DAGCircuit
|
23
|
+
from qiskit.dagcircuit.dagdependency import DAGDependency
|
24
|
+
from qiskit.dagcircuit.dagnode import DAGOpNode
|
25
|
+
from qiskit.dagcircuit.dagdepnode import DAGDepNode
|
25
26
|
from .exceptions import DAGCircuitError
|
26
27
|
|
27
28
|
|
@@ -338,15 +339,18 @@ def split_block_into_layers(block: list[DAGOpNode | DAGDepNode]):
|
|
338
339
|
|
339
340
|
class BlockCollapser:
|
340
341
|
"""This class implements various strategies of consolidating blocks of nodes
|
341
|
-
|
342
|
-
:class:`~qiskit.dagcircuit.DAGCircuit`
|
343
|
-
:class:`~qiskit.dagcircuit.DAGDependency` DAG representations.
|
342
|
+
in a DAG (direct acyclic graph). It works both with
|
343
|
+
the :class:`~qiskit.dagcircuit.DAGCircuit`
|
344
|
+
and :class:`~qiskit.dagcircuit.DAGDependency` DAG representations.
|
344
345
|
"""
|
345
346
|
|
346
347
|
def __init__(self, dag):
|
347
348
|
"""
|
348
349
|
Args:
|
349
350
|
dag (Union[DAGCircuit, DAGDependency]): The input DAG.
|
351
|
+
|
352
|
+
Raises:
|
353
|
+
DAGCircuitError: the input object is not a DAG.
|
350
354
|
"""
|
351
355
|
|
352
356
|
self.dag = dag
|
qiskit/dagcircuit/dagnode.py
CHANGED
@@ -174,6 +174,7 @@ def _for_loop_eq(node1, node2, bit_indices1, bit_indices2):
|
|
174
174
|
def _box_eq(node1, node2, bit_indices1, bit_indices2):
|
175
175
|
return (
|
176
176
|
(node1.op.duration == node2.op.duration)
|
177
|
+
and (node1.op.unit == node2.op.unit)
|
177
178
|
and (
|
178
179
|
_circuit_to_dag(node1.op.blocks[0], node1.qargs, node1.cargs, bit_indices1)
|
179
180
|
== _circuit_to_dag(node2.op.blocks[0], node2.qargs, node2.cargs, bit_indices2)
|
@@ -601,9 +601,9 @@ class BitArray(ShapedMixin):
|
|
601
601
|
|
602
602
|
Args:
|
603
603
|
observables: The observable(s) to take the expectation value of.
|
604
|
-
|
605
|
-
|
606
|
-
|
604
|
+
Must have a shape broadcastable with with this bit array and
|
605
|
+
the same number of qubits as the number of bits of this bit array.
|
606
|
+
The observables must be diagonal (I, Z, 0 or 1) too.
|
607
607
|
|
608
608
|
Returns:
|
609
609
|
An array of expectation values whose shape is the broadcast shape of ``observables``
|
@@ -48,11 +48,11 @@ class ApplyLayout(TransformationPass):
|
|
48
48
|
TranspilerError: if no layout is found in ``property_set`` or no full physical qubits.
|
49
49
|
"""
|
50
50
|
layout = self.property_set["layout"]
|
51
|
-
if
|
51
|
+
if layout is None:
|
52
52
|
raise TranspilerError(
|
53
53
|
"No 'layout' is found in property_set. Please run a Layout pass in advance."
|
54
54
|
)
|
55
|
-
if len(layout) != (1 + max(layout.get_physical_bits())):
|
55
|
+
if len(layout) != (1 + max(layout.get_physical_bits(), default=-1)):
|
56
56
|
raise TranspilerError("The 'layout' must be full (with ancilla).")
|
57
57
|
|
58
58
|
post_layout = self.property_set["post_layout"]
|
@@ -1254,7 +1254,9 @@ class MCXSynthesis2DirtyKG24(HighLevelSynthesisPlugin):
|
|
1254
1254
|
return None
|
1255
1255
|
|
1256
1256
|
num_ctrl_qubits = high_level_object.num_ctrl_qubits
|
1257
|
-
num_dirty_ancillas = options.get("num_dirty_ancillas", 0)
|
1257
|
+
num_dirty_ancillas = options.get("num_dirty_ancillas", 0) + options.get(
|
1258
|
+
"num_clean_ancillas", 0
|
1259
|
+
)
|
1258
1260
|
|
1259
1261
|
if num_dirty_ancillas < 2:
|
1260
1262
|
return None
|
@@ -1338,7 +1340,9 @@ class MCXSynthesis1DirtyKG24(HighLevelSynthesisPlugin):
|
|
1338
1340
|
return None
|
1339
1341
|
|
1340
1342
|
num_ctrl_qubits = high_level_object.num_ctrl_qubits
|
1341
|
-
num_dirty_ancillas = options.get("num_dirty_ancillas", 0)
|
1343
|
+
num_dirty_ancillas = options.get("num_dirty_ancillas", 0) + options.get(
|
1344
|
+
"num_clean_ancillas", 0
|
1345
|
+
)
|
1342
1346
|
|
1343
1347
|
if num_dirty_ancillas < 1:
|
1344
1348
|
return None
|
@@ -1966,7 +1970,34 @@ class PauliEvolutionSynthesisRustiq(HighLevelSynthesisPlugin):
|
|
1966
1970
|
# actual PauliEvolutionGate
|
1967
1971
|
return None
|
1968
1972
|
|
1969
|
-
|
1973
|
+
from qiskit.quantum_info import SparsePauliOp, SparseObservable
|
1974
|
+
|
1975
|
+
# The synthesis function synth_pauli_network_rustiq does not support SparseObservables,
|
1976
|
+
# so we need to convert them to SparsePauliOps.
|
1977
|
+
if isinstance(high_level_object.operator, SparsePauliOp):
|
1978
|
+
pauli_op = high_level_object.operator
|
1979
|
+
|
1980
|
+
elif isinstance(high_level_object.operator, SparseObservable):
|
1981
|
+
pauli_op = SparsePauliOp.from_sparse_observable(high_level_object.operator)
|
1982
|
+
|
1983
|
+
elif isinstance(high_level_object.operator, list):
|
1984
|
+
pauli_op = []
|
1985
|
+
for op in high_level_object.operator:
|
1986
|
+
if isinstance(op, SparseObservable):
|
1987
|
+
pauli_op.append(SparsePauliOp.from_sparse_observable(op))
|
1988
|
+
else:
|
1989
|
+
pauli_op.append(op)
|
1990
|
+
|
1991
|
+
else:
|
1992
|
+
raise TranspilerError("Invalid PauliEvolutionGate.")
|
1993
|
+
|
1994
|
+
evo = PauliEvolutionGate(
|
1995
|
+
pauli_op,
|
1996
|
+
time=high_level_object.time,
|
1997
|
+
label=high_level_object.label,
|
1998
|
+
synthesis=high_level_object.synthesis,
|
1999
|
+
)
|
2000
|
+
algo = evo.synthesis
|
1970
2001
|
|
1971
2002
|
if not isinstance(algo, ProductFormula):
|
1972
2003
|
warnings.warn(
|
@@ -1980,9 +2011,8 @@ class PauliEvolutionSynthesisRustiq(HighLevelSynthesisPlugin):
|
|
1980
2011
|
if "preserve_order" in options:
|
1981
2012
|
algo.preserve_order = options["preserve_order"]
|
1982
2013
|
|
1983
|
-
num_qubits =
|
1984
|
-
pauli_network = algo.expand(
|
1985
|
-
|
2014
|
+
num_qubits = evo.num_qubits
|
2015
|
+
pauli_network = algo.expand(evo)
|
1986
2016
|
optimize_count = options.get("optimize_count", True)
|
1987
2017
|
preserve_order = options.get("preserve_order", True)
|
1988
2018
|
upto_clifford = options.get("upto_clifford", False)
|
@@ -361,6 +361,10 @@ Unitary Synthesis Plugins
|
|
361
361
|
:no-inherited-members:
|
362
362
|
:no-special-members:
|
363
363
|
|
364
|
+
.. automodule:: qiskit.transpiler.passes.synthesis.clifford_unitary_synth_plugin
|
365
|
+
:no-inherited-members:
|
366
|
+
:no-special-members:
|
367
|
+
|
364
368
|
|
365
369
|
High Level Synthesis
|
366
370
|
--------------------
|
qiskit/transpiler/target.py
CHANGED
@@ -159,6 +159,13 @@ class Target(BaseTarget):
|
|
159
159
|
angle :class:`~qiskit.circuit.library.RXGate` while ``rx`` will get the
|
160
160
|
parameterized :class:`~qiskit.circuit.library.RXGate`.
|
161
161
|
|
162
|
+
This class can be queried via the mapping protocol, using the
|
163
|
+
instruction's name as a key. You can modify any property for an
|
164
|
+
instruction via the :meth:`.update_instruction_properties` method.
|
165
|
+
Modification via the mapping protocol or mutating the attributes of
|
166
|
+
a :class:`.InstructionProperties` object is **not** supported and
|
167
|
+
doing so will invalidate the internal state of the object.
|
168
|
+
|
162
169
|
.. note::
|
163
170
|
|
164
171
|
This class assumes that qubit indices start at 0 and are a contiguous
|
@@ -167,7 +174,7 @@ class Target(BaseTarget):
|
|
167
174
|
|
168
175
|
.. note::
|
169
176
|
|
170
|
-
This class only supports additions of gates, qargs, and
|
177
|
+
This class only supports additions of gates, qargs, and properties.
|
171
178
|
If you need to remove one of these the best option is to iterate over
|
172
179
|
an existing object and create a new subset (or use one of the methods
|
173
180
|
to do this). The object internally caches different views and these
|
@@ -373,7 +380,13 @@ class Target(BaseTarget):
|
|
373
380
|
self._instruction_schedule_map = None
|
374
381
|
|
375
382
|
def update_instruction_properties(self, instruction, qargs, properties):
|
376
|
-
"""Update the property object for an instruction qarg pair already in the Target
|
383
|
+
"""Update the property object for an instruction qarg pair already in the Target.
|
384
|
+
|
385
|
+
For ease of access, a user is able to obtain the mapping between an instruction's
|
386
|
+
applicable qargs and its instruction properties via the mapping protocol (using ``__getitem__``),
|
387
|
+
with the instruction's name as the key. This method is the only way to
|
388
|
+
modify/update the properties of an instruction in the ``Target``. Usage of the mapping protocol
|
389
|
+
for modifications is not supported.
|
377
390
|
|
378
391
|
Args:
|
379
392
|
instruction (str): The instruction name to update
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qiskit
|
3
|
-
Version: 2.1.
|
3
|
+
Version: 2.1.1
|
4
4
|
Summary: An open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
|
5
5
|
Author-email: Qiskit Development Team <qiskit@us.ibm.com>
|
6
6
|
License: Apache 2.0
|
@@ -1,10 +1,16 @@
|
|
1
|
+
qiskit-2.1.1.dist-info/RECORD,,
|
2
|
+
qiskit-2.1.1.dist-info/WHEEL,sha256=ABbCLNyMOjk3G47ycAleK7GxTLgTblZV1QN66WnLOkk,134
|
3
|
+
qiskit-2.1.1.dist-info/entry_points.txt,sha256=LgecGP9Htt6gU4ye0nHfANDekQtXNqWb3I8DtkhSGGg,6787
|
4
|
+
qiskit-2.1.1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
|
5
|
+
qiskit-2.1.1.dist-info/METADATA,sha256=RCShuNmGcrLYc2oX2cluUcaeZQ6XfIyZd3tug1WapIg,12881
|
6
|
+
qiskit-2.1.1.dist-info/licenses/LICENSE.txt,sha256=IXrBXbzaJ4LgBPUVKIbYR5iMY2eqoMT8jDVTY8Ib0iQ,11416
|
1
7
|
qiskit/version.py,sha256=MiraFeJt5GQEspFyvP3qJedHen2C1e8dNEttzg0u7YU,2498
|
2
|
-
qiskit/__init__.py,sha256=
|
3
|
-
qiskit/_accelerate.abi3.so,sha256=
|
8
|
+
qiskit/__init__.py,sha256=2hYX4-3IYwKs91dhsSzmh8u6LRkYU41LhQdaM39p-ZE,8256
|
9
|
+
qiskit/_accelerate.abi3.so,sha256=ltXnxvTsB6ZrdqAiwAoD-_1FWf9W7W6ZfkMwXFlWEWw,11732032
|
4
10
|
qiskit/user_config.py,sha256=3ez0XDwu0WKnjdHB-LNk4XRTQl9Eu-WgqkXOC771pTs,10325
|
5
11
|
qiskit/_numpy_compat.py,sha256=ZlnDTF2KBTKcVF489ZuxoBk6r9KLsMuhAlozFhOn0a8,2815
|
6
12
|
qiskit/exceptions.py,sha256=78bbfww9680_v4CaNgepavY5DwGTN7_j47Ckob3lLPM,5619
|
7
|
-
qiskit/VERSION.txt,sha256=
|
13
|
+
qiskit/VERSION.txt,sha256=ez_ycfE3PPuX6eUzSXlOFFDzeU5MB4jFSiBgx1ltqCE,6
|
8
14
|
qiskit/visualization/circuit_visualization.py,sha256=6R-A96Uwb_RZOovsSB0LGVsC7lP5IhtLNp6VP2yVBwE,698
|
9
15
|
qiskit/visualization/counts_visualization.py,sha256=Gy-rPzK5lWVMmX7ZSYUlAFvxcnlI59ym_5LnfJkSHSQ,16979
|
10
16
|
qiskit/visualization/pass_manager_visualization.py,sha256=hJIvex7i-DQuOOq73TbPMzsQZDOaoElqrJO000v51ck,10972
|
@@ -56,9 +62,9 @@ qiskit/transpiler/basepasses.py,sha256=ecLZAg1lCHb58EMufMTJsZTQBUFDL6AFufjcII2jV
|
|
56
62
|
qiskit/transpiler/passmanager.py,sha256=sYcP_7B3wwfbpuUSAAZiPBCuHu9tCSHDWDWQXPYtggw,21179
|
57
63
|
qiskit/transpiler/passmanager_config.py,sha256=hAgKVbYbFOCQ1dCyh1SLX_MOc9BjTOPoadH2W4WVdRs,7447
|
58
64
|
qiskit/transpiler/exceptions.py,sha256=ZxZk41x0T3pCcaEsDmpDg25SwIbCLQ6T1D-V54vwb1A,1710
|
59
|
-
qiskit/transpiler/target.py,sha256=
|
65
|
+
qiskit/transpiler/target.py,sha256=aIVg90Kcf37IvCFs5pjs5PbSq3WLTRaPaHXMaygIs8s,41802
|
60
66
|
qiskit/transpiler/instruction_durations.py,sha256=b2LPBdNRB6TJ6zEGfiYe9oFvil0v5q8Vtp1Vpcpcwwo,10412
|
61
|
-
qiskit/transpiler/passes/__init__.py,sha256=
|
67
|
+
qiskit/transpiler/passes/__init__.py,sha256=eKoDdAdm7EfNnmMzIT_hSO_KlpwdUKMq3W3fsAuQOOk,7164
|
62
68
|
qiskit/transpiler/passes/analysis/dag_longest_path.py,sha256=bOUWUR_2Y91pyvtXjEmAQxSgWyXaqo3XhSysn-3L-4E,957
|
63
69
|
qiskit/transpiler/passes/analysis/num_tensor_factors.py,sha256=KK5DcFja8JsO0pfYvmYGnyEAPMZPYUTJpT9xWhwiYWI,950
|
64
70
|
qiskit/transpiler/passes/analysis/__init__.py,sha256=zFkmqBW9ZfrVg0Ol6krRE7D0h-S5sF89qkfDdW_t5Eg,875
|
@@ -97,7 +103,7 @@ qiskit/transpiler/passes/layout/dense_layout.py,sha256=eA-ASTs2igO26T5IJwRo55LQq
|
|
97
103
|
qiskit/transpiler/passes/layout/disjoint_utils.py,sha256=cgcCIxg5S1-S3wcuq9bytF8YHR79hSI_fOOuQ5Uf1z8,2270
|
98
104
|
qiskit/transpiler/passes/layout/sabre_pre_layout.py,sha256=-jTQvS5fn1mbjFNf_ZpmLlyk_qm8Ki9XcmMhrgZn5-Q,9430
|
99
105
|
qiskit/transpiler/passes/layout/csp_layout.py,sha256=J_IHZIYsZkEw0M5WcP-Rub9o6McJbYKyhycaxsMgPU4,5421
|
100
|
-
qiskit/transpiler/passes/layout/apply_layout.py,sha256=
|
106
|
+
qiskit/transpiler/passes/layout/apply_layout.py,sha256=C0FHcngUS2Ep7IczqwV1B5CzfCdznBAxwiiHfcJE7Js,5656
|
101
107
|
qiskit/transpiler/passes/layout/vf2_post_layout.py,sha256=p8qAG1KQ8fn0ruGpleBgnCnFtA0ae8h-AhyZ--TjUZI,17286
|
102
108
|
qiskit/transpiler/passes/layout/trivial_layout.py,sha256=vLtp3gr4-KRrEwtw2NEVrY5LKuFrMKOY0Cr7LhdoMBs,2379
|
103
109
|
qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py,sha256=lAhs8RbLAMua2sJ5xQlMU1C8vJfa_n2y4zoqnoQAgVc,3024
|
@@ -156,9 +162,9 @@ qiskit/transpiler/passes/utils/barrier_before_final_measurements.py,sha256=1N8OM
|
|
156
162
|
qiskit/transpiler/passes/utils/fixed_point.py,sha256=AiwkNvu-SLHvodddJRKfFEl7FPC62u1f3CB9lRne9eY,1773
|
157
163
|
qiskit/transpiler/passes/synthesis/clifford_unitary_synth_plugin.py,sha256=5G3m9fi8iAlMM6vFdXlslqkpXqAxKVb07YfEZ9t1aWI,3532
|
158
164
|
qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py,sha256=9Uxy6oh3H4-vKaGRGf_A6s4z5FeKJ4KmAn7n007NigA,12447
|
159
|
-
qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=
|
165
|
+
qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=k-4tvt0XnuA-Nhx-pfh54-wGx7oGi2JM30Kx0yxnsz0,90679
|
160
166
|
qiskit/transpiler/passes/synthesis/__init__.py,sha256=W_8NiMU1IJJcgfEsBoWa4vJ9BkktLjevxRb0K54663A,993
|
161
|
-
qiskit/transpiler/passes/synthesis/plugin.py,sha256=
|
167
|
+
qiskit/transpiler/passes/synthesis/plugin.py,sha256=TGC8hJS5dA9xhQVLMYoY7lJCpL3J6Jj9XaAXoZDJKV0,31098
|
162
168
|
qiskit/transpiler/passes/synthesis/linear_functions_synthesis.py,sha256=Q1r-52HMETK_7iWTMmJKGU39rNws-MrmGDHh7TgQVj4,1407
|
163
169
|
qiskit/transpiler/passes/synthesis/high_level_synthesis.py,sha256=8RgceAqPgTJYCc5uBhQpyfWr39hF6EHd2HKyUMTawdY,19932
|
164
170
|
qiskit/transpiler/passes/synthesis/unitary_synthesis.py,sha256=U0JZOEuVCjAfeCk4jkrBLuwQ6wppP6zAMTA6A57VTAg,18999
|
@@ -219,7 +225,7 @@ qiskit/qasm2/parse.py,sha256=zaCMS0xX45MpVlNGS_4PN2acMDyw-nuJhAoxdcWEBMI,18556
|
|
219
225
|
qiskit/circuit/store.py,sha256=3s_Xala9bdnw79Ya145EnNu_zDACCDLrESx7YmtIOEw,3171
|
220
226
|
qiskit/circuit/measure.py,sha256=eJZ_cRyOyogSyo2eQD8I0Q3uJ1QKZk1w9fTIyJzebhk,1811
|
221
227
|
qiskit/circuit/parametertable.py,sha256=6sT2UO-U4MoHoz-w6UabDgdAZtpqdVfmJ-gb1uyVbqg,3269
|
222
|
-
qiskit/circuit/annotation.py,sha256=
|
228
|
+
qiskit/circuit/annotation.py,sha256=w6_rCQnoXSIkU2R7KxCMuhzAYSrV8SlfBrp-B9KyLIo,20708
|
223
229
|
qiskit/circuit/commutation_checker.py,sha256=TqxY7LuB7dqfFb7mPnXzRfkXKd8MXiyWKOp61bzIn6M,4895
|
224
230
|
qiskit/circuit/_classical_resource_map.py,sha256=V_rYxYKSEp8sIraKGILSCIgkeINd14ZumWuSURJGA6s,7269
|
225
231
|
qiskit/circuit/parametervector.py,sha256=2YfNejcpqiKPHFOVQP7MME3jqSRrjpXcBBQ7HCuqumA,4767
|
@@ -227,10 +233,10 @@ qiskit/circuit/annotated_operation.py,sha256=9TPDzb_iFHjz1Qb-zekywdwD2FIe1J2kZM1
|
|
227
233
|
qiskit/circuit/barrier.py,sha256=4dhN4lie1DhcHrlwi5OJ8ghJ_xmdb75PDzmEm173vKk,1586
|
228
234
|
qiskit/circuit/reset.py,sha256=ZN1fPET4Lqsw8N03kyp4JVdM6auxnsiS1Hy_u_JHn24,1196
|
229
235
|
qiskit/circuit/duration.py,sha256=_nN8cP9vjjurDXu74a_wiFOsP7bDmDcQgbjmzkQadGo,2439
|
230
|
-
qiskit/circuit/__init__.py,sha256=
|
236
|
+
qiskit/circuit/__init__.py,sha256=vICDD3M3gZKNkmAyjZNwUCHjht8RHbqU3bmoF6dYH0g,65885
|
231
237
|
qiskit/circuit/operation.py,sha256=5SrIb_ap6EVKRHMNud5t-Iu7RU3Hz_KFSFjUUfHuf9w,2077
|
232
238
|
qiskit/circuit/_add_control.py,sha256=I8tmfyUfR_D0YMKOsrYIR0XTHavI2Yben3V59b8lD0Y,11817
|
233
|
-
qiskit/circuit/parameterexpression.py,sha256=
|
239
|
+
qiskit/circuit/parameterexpression.py,sha256=27Tqr7VXYxjgzcfMzkT3UX-FxYHaEl8CY8QX7Q1Pulc,28423
|
234
240
|
qiskit/circuit/delay.py,sha256=PcJ2DFo4HaFxr8BAoHEsH3gsVxb_G5N9Ai3DnB1uuuk,6583
|
235
241
|
qiskit/circuit/twirling.py,sha256=HmpR4EzfKEkI5hW50gstzg2S6f464jF6MbtGquyGbG8,6213
|
236
242
|
qiskit/circuit/gate.py,sha256=YPmZEWYDmsheKjSLOYg2GgYGqJEMnKUM5ngisA_n3oQ,10171
|
@@ -239,7 +245,7 @@ qiskit/circuit/singleton.py,sha256=NCs1BeOkFwThKU3GIyT3AwW8Z81aW_jCoRemYswii7Q,3
|
|
239
245
|
qiskit/circuit/controlledgate.py,sha256=AimgMwjGI5xnr13-1pzJJix7B5bfBaOhDfRJ4eFSYyo,9792
|
240
246
|
qiskit/circuit/exceptions.py,sha256=QoT6kFuoVLe6lWUlTKkSMWufVtyfDCgaUe1kyv79WAY,691
|
241
247
|
qiskit/circuit/equivalence_library.py,sha256=7f2T6c7sbDWaVQNVALNJL0olLVFZmHgA9xzcy7_FdDQ,708
|
242
|
-
qiskit/circuit/quantumcircuit.py,sha256=
|
248
|
+
qiskit/circuit/quantumcircuit.py,sha256=x3NyUO5a3jHvSyZOwwLDSDFjCmCC-vJXqJE6z0KKw6A,323513
|
243
249
|
qiskit/circuit/_standard_gates_commutations.py,sha256=1E6i6Atz3PkHGpguFFfTOcD9ffXCncCE1Jx6AlafMww,99006
|
244
250
|
qiskit/circuit/instruction.py,sha256=jWu4tCkrKoXaePFVrObgMebLhRO_Zb4wXT4f7QB38BY,20884
|
245
251
|
qiskit/circuit/equivalence.py,sha256=8KmspRNLHbMx3OYG76ESA5_nXZJRDfvoDb3mhy7eV4A,3436
|
@@ -256,7 +262,7 @@ qiskit/circuit/library/graph_state.py,sha256=trwjzOzATVTa6vMnfjdVfknQtbMXg79bOL_
|
|
256
262
|
qiskit/circuit/library/iqp.py,sha256=d1QWeyF_AaToE9N1xCos4Kwp2sS6TdjWTZl17jJ_2U8,6112
|
257
263
|
qiskit/circuit/library/fourier_checking.py,sha256=B3EOoLvLaLoGqp_I6l6XcDE2XK7wGLl7v6Vxx1MlxWQ,6406
|
258
264
|
qiskit/circuit/library/__init__.py,sha256=_7FYcalYqgpA10NPTHzXXKhrzLlksgLY9i1EkxSohpE,25512
|
259
|
-
qiskit/circuit/library/quantum_volume.py,sha256=
|
265
|
+
qiskit/circuit/library/quantum_volume.py,sha256=DWRWqNeiO0E_50XLFce1npeyntp1miE2o5HKxSnmyR4,7361
|
260
266
|
qiskit/circuit/library/phase_estimation.py,sha256=4PIYeoshsTlWNBcXYMCFwNCf-kamTK_iGrNWA98Kwvc,6610
|
261
267
|
qiskit/circuit/library/overlap.py,sha256=7LjlpPO7lQgNyZB1WCP5jKF-WYfe8kDcBuMC1YOoV8E,7166
|
262
268
|
qiskit/circuit/library/grover_operator.py,sha256=VjNqwQ8MPYoc2Z6ngZ293QoYOLbOT74SYr0D0fdOzl8,28490
|
@@ -285,7 +291,7 @@ qiskit/circuit/library/basis_change/__init__.py,sha256=JFOleW2bg9vOFdWs2RbrFDpUP
|
|
285
291
|
qiskit/circuit/library/data_preparation/state_preparation.py,sha256=YifBW_HCP5Jj4ndBAAmmJho687DVOfKmQLOk-MkA1d8,14134
|
286
292
|
qiskit/circuit/library/data_preparation/pauli_feature_map.py,sha256=l6ldD4SRrRfODV45ZJZVCsTTJNtEHZaBkMZL2eIWRSE,32948
|
287
293
|
qiskit/circuit/library/data_preparation/__init__.py,sha256=LZbf6BAV4JDDlD83b-0og5SDeQGPKQas0qOid87n06g,2456
|
288
|
-
qiskit/circuit/library/data_preparation/_zz_feature_map.py,sha256=
|
294
|
+
qiskit/circuit/library/data_preparation/_zz_feature_map.py,sha256=pjS8Hn7TXG6BaGiYXLp1UrUd1iOLjrfhr9DQvqXojoI,7017
|
289
295
|
qiskit/circuit/library/data_preparation/initializer.py,sha256=HBUHg-8KfJTEGzbO47rKqKtx5hWPnObVxREScgHx8Fk,4437
|
290
296
|
qiskit/circuit/library/data_preparation/_z_feature_map.py,sha256=MAabXV7w_8tQy3Wdbhytr3LwX-x28VxCCXVsIwodWQk,6719
|
291
297
|
qiskit/circuit/library/boolean_logic/quantum_xor.py,sha256=MD15OdsCkXU-NB_Aln_Xvn-es3qEMnd4YYjWIfHefgA,5456
|
@@ -293,7 +299,7 @@ qiskit/circuit/library/boolean_logic/__init__.py,sha256=qww1AAl07NvNvz15GOvuj15G
|
|
293
299
|
qiskit/circuit/library/boolean_logic/quantum_and.py,sha256=pJk2eMFLDk0bJH9kqaU-BtcEBYuPtNWe4DTdlDxmy9Y,8224
|
294
300
|
qiskit/circuit/library/boolean_logic/inner_product.py,sha256=Sz_OXPDF4qFVn3TtE9EOFN7Er92T6ZP00RwOZGUDz50,5431
|
295
301
|
qiskit/circuit/library/boolean_logic/quantum_or.py,sha256=k425IrSDtDtH6zVu09kEeN8TF2qxmT-yj7-dTA-9qx8,8075
|
296
|
-
qiskit/circuit/library/arithmetic/piecewise_chebyshev.py,sha256=
|
302
|
+
qiskit/circuit/library/arithmetic/piecewise_chebyshev.py,sha256=96734kELTdaXe_QnYdLM7S56ZtY719nOxEU4MJB2Zsg,19479
|
297
303
|
qiskit/circuit/library/arithmetic/exact_reciprocal.py,sha256=XTfydNy0veTks3mRnbsq_7wtTYLRGOzBLsPxxvrOnAI,5317
|
298
304
|
qiskit/circuit/library/arithmetic/quadratic_form.py,sha256=wt3MR7VGqywzsozyNhqhakdyVJHh3mDJk8KZm1YU2jc,14543
|
299
305
|
qiskit/circuit/library/arithmetic/integer_comparator.py,sha256=cuwXfNcRSxcViEeb3jS4hGJhPoSwtKqzMCj1gK6oOKc,6674
|
@@ -476,13 +482,13 @@ qiskit/converters/dagdependency_to_circuit.py,sha256=hBbcGS37UjgV3pCvKn20cPKJeVG
|
|
476
482
|
qiskit/converters/dag_to_circuit.py,sha256=cryxjYwHdDJmKD5IlteXGBiorfufS_ColziOE4-gfqs,2922
|
477
483
|
qiskit/converters/dag_to_dagdependency_v2.py,sha256=6dUYmBovXxZt3Ka-O2jWRT5PAYw0KWsBan1OqD85-is,1441
|
478
484
|
qiskit/converters/dag_to_dagdependency.py,sha256=KUB5KtUs5n_hBy_FJXbPBISnWasLL8HqL4pwRAiiZ-k,1778
|
479
|
-
qiskit/dagcircuit/collect_blocks.py,sha256=
|
485
|
+
qiskit/dagcircuit/collect_blocks.py,sha256=JUp0rWzLB9bi2tFKE4hOHepJRAEoMD1curnUpJXGvig,17157
|
480
486
|
qiskit/dagcircuit/dagdependency.py,sha256=12UExCdmyNPEHItjde9mHLveEcMBhZc5COvc6VAL7PQ,23083
|
481
487
|
qiskit/dagcircuit/dagdepnode.py,sha256=gdZAyL9eZQPTMj4ZDKxz_bXd57QJbRB3RIi-dhBkHH0,5255
|
482
488
|
qiskit/dagcircuit/dagdependency_v2.py,sha256=idiwpCFwktngNjDgBNKUJzj_DYM2xenpRN0OH0ZA90o,22148
|
483
|
-
qiskit/dagcircuit/__init__.py,sha256=
|
489
|
+
qiskit/dagcircuit/__init__.py,sha256=2lsl-xcOwgV9FuDwHcgBPIMSwr4UfVslnTPCRRIW0S4,1382
|
484
490
|
qiskit/dagcircuit/exceptions.py,sha256=Jy8-MnQBLRphHwwE1PAeDfj9HOY70qp7r0k1sC_CiZE,1234
|
485
|
-
qiskit/dagcircuit/dagnode.py,sha256=
|
491
|
+
qiskit/dagcircuit/dagnode.py,sha256=hidpSXBYCUGahqca7WNDKcSHeyfjkT_d_kV_mi8MoiM,6884
|
486
492
|
qiskit/dagcircuit/dagcircuit.py,sha256=5Q-E4j-SmDU3ysdW50Iw5Wdww94HaSW3JZ8ov1XslKo,1041
|
487
493
|
qiskit/utils/units.py,sha256=uIu9F3cVgF7DdPPypTplO_DvZFhrPt7ZzF3Y_7i_bac,4123
|
488
494
|
qiskit/utils/deprecation.py,sha256=vCVqW_xcFupFWjR1zPAaalGuH5QrhRnwzE4xq5BJzzA,15603
|
@@ -596,7 +602,7 @@ qiskit/primitives/containers/bindings_array.py,sha256=Rm3h_F6DQNtHqfQlb_N0Wuc_b_
|
|
596
602
|
qiskit/primitives/containers/__init__.py,sha256=KT3UeYEkPel9vCyYwQeVmsgovX9wqCr0PZqGlnPU3UE,924
|
597
603
|
qiskit/primitives/containers/estimator_pub.py,sha256=hr4B-q4cctt32NT_DLWDM7Q_zeMxR-qbGkYWljXsVSQ,8130
|
598
604
|
qiskit/primitives/containers/sampler_pub_result.py,sha256=LIU3h3C5-fdnVwtTaWKM-7LurtFLfeaHF5yNSiR9O04,2790
|
599
|
-
qiskit/primitives/containers/bit_array.py,sha256=
|
605
|
+
qiskit/primitives/containers/bit_array.py,sha256=i28MEr3iGgX2QK2rKOjTaGHBDBv62xx8_Rp6OPTGZSQ,32125
|
600
606
|
qiskit/primitives/containers/shape.py,sha256=x1efHbvXKMGDfANboE3UGVK08uNVxWj2koxYc3YSgHI,3866
|
601
607
|
qiskit/primitives/containers/pub_result.py,sha256=IIM3jKczU2N4appeY1kh0BftssVD4LcwhbD2J791DTQ,1420
|
602
608
|
qiskit/primitives/containers/observables_array.py,sha256=3yJgiBxTajS_69Z6yaiWyuylypbfvhh2NA0mjJWq9ZY,14601
|
@@ -691,9 +697,3 @@ qiskit/quantum_info/states/densitymatrix.py,sha256=Xc21mIvH2WM-u_XxMbQImjgzGILH8
|
|
691
697
|
qiskit/quantum_info/states/quantum_state.py,sha256=v__EAFkAu2aJwafAfaVDce5_525fTkTrTaJdrdQhAr0,17774
|
692
698
|
qiskit/compiler/__init__.py,sha256=oDzbHDFJQlrjnwsRZFfJJ5m_2ioDP6untCZP-8S_2os,802
|
693
699
|
qiskit/compiler/transpiler.py,sha256=vuobTz2HqV4H-fJ54_E8ZrxAYtOClg0lqR3SJ2b7-BU,18048
|
694
|
-
qiskit-2.1.0rc1.dist-info/RECORD,,
|
695
|
-
qiskit-2.1.0rc1.dist-info/WHEEL,sha256=ABbCLNyMOjk3G47ycAleK7GxTLgTblZV1QN66WnLOkk,134
|
696
|
-
qiskit-2.1.0rc1.dist-info/entry_points.txt,sha256=LgecGP9Htt6gU4ye0nHfANDekQtXNqWb3I8DtkhSGGg,6787
|
697
|
-
qiskit-2.1.0rc1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
|
698
|
-
qiskit-2.1.0rc1.dist-info/METADATA,sha256=LcIfyZkd8opLJ2Q37ZSMMCpo5RzjDng6DTxz4QjTrAk,12884
|
699
|
-
qiskit-2.1.0rc1.dist-info/licenses/LICENSE.txt,sha256=IXrBXbzaJ4LgBPUVKIbYR5iMY2eqoMT8jDVTY8Ib0iQ,11416
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|