qiskit 1.2.2__cp38-abi3-macosx_10_9_universal2.whl → 1.2.4__cp38-abi3-macosx_10_9_universal2.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/_accelerate.abi3.so +0 -0
- qiskit/circuit/__init__.py +1 -1
- qiskit/circuit/library/blueprintcircuit.py +64 -0
- qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -24
- qiskit/circuit/library/data_preparation/z_feature_map.py +35 -33
- qiskit/circuit/library/data_preparation/zz_feature_map.py +60 -38
- qiskit/circuit/library/standard_gates/rxx.py +1 -1
- qiskit/circuit/library/standard_gates/ryy.py +1 -1
- qiskit/circuit/library/standard_gates/rzx.py +1 -1
- qiskit/qpy/__init__.py +24 -0
- qiskit/qpy/binary_io/schedules.py +1 -4
- qiskit/qpy/binary_io/value.py +1 -4
- qiskit/qpy/common.py +45 -1
- qiskit/qpy/interface.py +11 -0
- qiskit/visualization/circuit/circuit_visualization.py +1 -1
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/METADATA +2 -2
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/RECORD +22 -22
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/WHEEL +1 -1
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/LICENSE.txt +0 -0
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/entry_points.txt +0 -0
- {qiskit-1.2.2.dist-info → qiskit-1.2.4.dist-info}/top_level.txt +0 -0
qiskit/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.4
|
qiskit/_accelerate.abi3.so
CHANGED
Binary file
|
qiskit/circuit/__init__.py
CHANGED
@@ -455,7 +455,7 @@ attempt to "close over" outer circuit registers, or use hidden parameters inside
|
|
455
455
|
:class:`Instruction`\ s can be related to other circuits to provide a decompositions by using
|
456
456
|
their :attr:`Instruction.definition` attribute, which provides a local, one-off decomposition. This
|
457
457
|
can be in whatever basis set of operations is most convenient to you, as long as the definitions of
|
458
|
-
all contained gates have some topological order; that is, you cannot use a gate in a definition
|
458
|
+
all contained gates have some topological order; that is, you cannot use a gate in a definition if
|
459
459
|
its own definition depends on the parent. If the :class:`Instruction` should be considered entirely
|
460
460
|
opaque to optimizers, its :attr:`~Instruction.definition` can be ``None``. See
|
461
461
|
:ref:`circuit-custom-gates` for more detail.
|
@@ -94,6 +94,12 @@ class BlueprintCircuit(QuantumCircuit, ABC):
|
|
94
94
|
|
95
95
|
@property
|
96
96
|
def data(self):
|
97
|
+
"""The circuit data (instructions and context).
|
98
|
+
|
99
|
+
Returns:
|
100
|
+
QuantumCircuitData: a list-like object containing the :class:`.CircuitInstruction`\\ s
|
101
|
+
for each instruction.
|
102
|
+
"""
|
97
103
|
if not self._is_built:
|
98
104
|
self._build()
|
99
105
|
return super().data
|
@@ -110,12 +116,70 @@ class BlueprintCircuit(QuantumCircuit, ABC):
|
|
110
116
|
|
111
117
|
@property
|
112
118
|
def num_parameters(self) -> int:
|
119
|
+
"""The number of parameter objects in the circuit."""
|
113
120
|
if not self._is_built:
|
114
121
|
self._build()
|
115
122
|
return super().num_parameters
|
116
123
|
|
117
124
|
@property
|
118
125
|
def parameters(self) -> ParameterView:
|
126
|
+
"""The parameters defined in the circuit.
|
127
|
+
|
128
|
+
This attribute returns the :class:`.Parameter` objects in the circuit sorted
|
129
|
+
alphabetically. Note that parameters instantiated with a :class:`.ParameterVector`
|
130
|
+
are still sorted numerically.
|
131
|
+
|
132
|
+
Examples:
|
133
|
+
|
134
|
+
The snippet below shows that insertion order of parameters does not matter.
|
135
|
+
|
136
|
+
.. code-block:: python
|
137
|
+
|
138
|
+
>>> from qiskit.circuit import QuantumCircuit, Parameter
|
139
|
+
>>> a, b, elephant = Parameter("a"), Parameter("b"), Parameter("elephant")
|
140
|
+
>>> circuit = QuantumCircuit(1)
|
141
|
+
>>> circuit.rx(b, 0)
|
142
|
+
>>> circuit.rz(elephant, 0)
|
143
|
+
>>> circuit.ry(a, 0)
|
144
|
+
>>> circuit.parameters # sorted alphabetically!
|
145
|
+
ParameterView([Parameter(a), Parameter(b), Parameter(elephant)])
|
146
|
+
|
147
|
+
Bear in mind that alphabetical sorting might be unintuitive when it comes to numbers.
|
148
|
+
The literal "10" comes before "2" in strict alphabetical sorting.
|
149
|
+
|
150
|
+
.. code-block:: python
|
151
|
+
|
152
|
+
>>> from qiskit.circuit import QuantumCircuit, Parameter
|
153
|
+
>>> angles = [Parameter("angle_1"), Parameter("angle_2"), Parameter("angle_10")]
|
154
|
+
>>> circuit = QuantumCircuit(1)
|
155
|
+
>>> circuit.u(*angles, 0)
|
156
|
+
>>> circuit.draw()
|
157
|
+
┌─────────────────────────────┐
|
158
|
+
q: ┤ U(angle_1,angle_2,angle_10) ├
|
159
|
+
└─────────────────────────────┘
|
160
|
+
>>> circuit.parameters
|
161
|
+
ParameterView([Parameter(angle_1), Parameter(angle_10), Parameter(angle_2)])
|
162
|
+
|
163
|
+
To respect numerical sorting, a :class:`.ParameterVector` can be used.
|
164
|
+
|
165
|
+
.. code-block:: python
|
166
|
+
|
167
|
+
>>> from qiskit.circuit import QuantumCircuit, Parameter, ParameterVector
|
168
|
+
>>> x = ParameterVector("x", 12)
|
169
|
+
>>> circuit = QuantumCircuit(1)
|
170
|
+
>>> for x_i in x:
|
171
|
+
... circuit.rx(x_i, 0)
|
172
|
+
>>> circuit.parameters
|
173
|
+
ParameterView([
|
174
|
+
ParameterVectorElement(x[0]), ParameterVectorElement(x[1]),
|
175
|
+
ParameterVectorElement(x[2]), ParameterVectorElement(x[3]),
|
176
|
+
..., ParameterVectorElement(x[11])
|
177
|
+
])
|
178
|
+
|
179
|
+
|
180
|
+
Returns:
|
181
|
+
The sorted :class:`.Parameter` objects in the circuit.
|
182
|
+
"""
|
119
183
|
if not self._is_built:
|
120
184
|
self._build()
|
121
185
|
return super().parameters
|
@@ -57,11 +57,11 @@ class PauliFeatureMap(NLocal):
|
|
57
57
|
|
58
58
|
.. parsed-literal::
|
59
59
|
|
60
|
-
|
61
|
-
┤ H ├┤
|
62
|
-
|
63
|
-
┤ H ├┤
|
64
|
-
|
60
|
+
┌───┐┌─────────────┐┌──────────┐ ┌───────────┐
|
61
|
+
┤ H ├┤ P(2.0*x[0]) ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
|
62
|
+
├───┤├─────────────┤├──────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───────────┤
|
63
|
+
┤ H ├┤ P(2.0*x[1]) ├┤ RX(pi/2) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ RX(-pi/2) ├
|
64
|
+
└───┘└─────────────┘└──────────┘└───┘└────────────────────────────────┘└───┘└───────────┘
|
65
65
|
|
66
66
|
The circuit contains ``reps`` repetitions of this transformation.
|
67
67
|
|
@@ -71,37 +71,37 @@ class PauliFeatureMap(NLocal):
|
|
71
71
|
Examples:
|
72
72
|
|
73
73
|
>>> prep = PauliFeatureMap(2, reps=1, paulis=['ZZ'])
|
74
|
-
>>> print(prep)
|
74
|
+
>>> print(prep.decompose())
|
75
75
|
┌───┐
|
76
|
-
q_0: ┤ H
|
77
|
-
|
78
|
-
q_1: ┤ H ├┤ X ├┤
|
79
|
-
|
76
|
+
q_0: ┤ H ├──■──────────────────────────────────────■──
|
77
|
+
├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
|
78
|
+
q_1: ┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
|
79
|
+
└───┘└───┘└────────────────────────────────┘└───┘
|
80
80
|
|
81
81
|
>>> prep = PauliFeatureMap(2, reps=1, paulis=['Z', 'XX'])
|
82
|
-
>>> print(prep)
|
83
|
-
|
84
|
-
q_0: ┤ H ├┤
|
85
|
-
|
86
|
-
q_1: ┤ H ├┤
|
87
|
-
|
82
|
+
>>> print(prep.decompose())
|
83
|
+
┌───┐┌─────────────┐┌───┐ ┌───┐
|
84
|
+
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ H ├──■──────────────────────────────────────■──┤ H ├
|
85
|
+
├───┤├─────────────┤├───┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐├───┤
|
86
|
+
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├┤ H ├
|
87
|
+
└───┘└─────────────┘└───┘└───┘└────────────────────────────────┘└───┘└───┘
|
88
88
|
|
89
89
|
>>> prep = PauliFeatureMap(2, reps=1, paulis=['ZY'])
|
90
|
-
>>> print(prep)
|
91
|
-
┌───┐┌──────────┐
|
92
|
-
q_0: ┤ H ├┤ RX(pi/2)
|
93
|
-
|
94
|
-
q_1: ┤ H ├────────────┤ X ├┤
|
95
|
-
└───┘
|
90
|
+
>>> print(prep.decompose())
|
91
|
+
┌───┐┌──────────┐ ┌───────────┐
|
92
|
+
q_0: ┤ H ├┤ RX(pi/2) ├──■──────────────────────────────────────■──┤ RX(-pi/2) ├
|
93
|
+
├───┤└──────────┘┌─┴─┐┌────────────────────────────────┐┌─┴─┐└───────────┘
|
94
|
+
q_1: ┤ H ├────────────┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├─────────────
|
95
|
+
└───┘ └───┘└────────────────────────────────┘└───┘
|
96
96
|
|
97
97
|
>>> from qiskit.circuit.library import EfficientSU2
|
98
98
|
>>> prep = PauliFeatureMap(3, reps=3, paulis=['Z', 'YY', 'ZXZ'])
|
99
99
|
>>> wavefunction = EfficientSU2(3)
|
100
|
-
>>> classifier = prep.compose(wavefunction)
|
100
|
+
>>> classifier = prep.compose(wavefunction).decompose()
|
101
101
|
>>> classifier.num_parameters
|
102
102
|
27
|
103
103
|
>>> classifier.count_ops()
|
104
|
-
OrderedDict([('cx', 39), ('rx', 36), ('
|
104
|
+
OrderedDict([('cx', 39), ('rx', 36), ('p', 21), ('h', 15), ('ry', 12), ('rz', 12)])
|
105
105
|
|
106
106
|
References:
|
107
107
|
|
@@ -209,6 +209,11 @@ class PauliFeatureMap(NLocal):
|
|
209
209
|
|
210
210
|
@property
|
211
211
|
def entanglement_blocks(self):
|
212
|
+
"""The blocks in the entanglement layers.
|
213
|
+
|
214
|
+
Returns:
|
215
|
+
The blocks in the entanglement layers.
|
216
|
+
"""
|
212
217
|
return [self.pauli_block(pauli) for pauli in self._paulis]
|
213
218
|
|
214
219
|
@entanglement_blocks.setter
|
@@ -25,13 +25,13 @@ class ZFeatureMap(PauliFeatureMap):
|
|
25
25
|
|
26
26
|
.. parsed-literal::
|
27
27
|
|
28
|
-
|
29
|
-
┤ H ├┤
|
30
|
-
|
31
|
-
┤ H ├┤
|
32
|
-
|
33
|
-
┤ H ├┤
|
34
|
-
|
28
|
+
┌───┐┌─────────────┐┌───┐┌─────────────┐
|
29
|
+
┤ H ├┤ P(2.0*x[0]) ├┤ H ├┤ P(2.0*x[0]) ├
|
30
|
+
├───┤├─────────────┤├───┤├─────────────┤
|
31
|
+
┤ H ├┤ P(2.0*x[1]) ├┤ H ├┤ P(2.0*x[1]) ├
|
32
|
+
├───┤├─────────────┤├───┤├─────────────┤
|
33
|
+
┤ H ├┤ P(2.0*x[2]) ├┤ H ├┤ P(2.0*x[2]) ├
|
34
|
+
└───┘└─────────────┘└───┘└─────────────┘
|
35
35
|
|
36
36
|
This is a sub-class of :class:`~qiskit.circuit.library.PauliFeatureMap` where the Pauli
|
37
37
|
strings are fixed as `['Z']`. As a result the first order expansion will be a circuit without
|
@@ -39,36 +39,38 @@ class ZFeatureMap(PauliFeatureMap):
|
|
39
39
|
|
40
40
|
Examples:
|
41
41
|
|
42
|
+
>>> from qiskit.circuit.library import ZFeatureMap
|
42
43
|
>>> prep = ZFeatureMap(3, reps=3, insert_barriers=True)
|
43
|
-
>>> print(prep)
|
44
|
-
┌───┐ ░
|
45
|
-
q_0: ┤ H ├─░─┤
|
46
|
-
├───┤ ░
|
47
|
-
q_1: ┤ H ├─░─┤
|
48
|
-
├───┤ ░
|
49
|
-
q_2: ┤ H ├─░─┤
|
50
|
-
└───┘ ░
|
44
|
+
>>> print(prep.decompose())
|
45
|
+
┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐ ░ ┌───┐ ░ ┌─────────────┐
|
46
|
+
q_0: ┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├─░─┤ H ├─░─┤ P(2.0*x[0]) ├
|
47
|
+
├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
|
48
|
+
q_1: ┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├─░─┤ H ├─░─┤ P(2.0*x[1]) ├
|
49
|
+
├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤ ░ ├───┤ ░ ├─────────────┤
|
50
|
+
q_2: ┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├─░─┤ H ├─░─┤ P(2.0*x[2]) ├
|
51
|
+
└───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘ ░ └───┘ ░ └─────────────┘
|
51
52
|
|
52
53
|
>>> data_map = lambda x: x[0]*x[0] + 1 # note: input is an array
|
53
54
|
>>> prep = ZFeatureMap(3, reps=1, data_map_func=data_map)
|
54
|
-
>>> print(prep)
|
55
|
-
|
56
|
-
q_0: ┤ H ├┤
|
57
|
-
|
58
|
-
q_1: ┤ H ├┤
|
59
|
-
|
60
|
-
q_2: ┤ H ├┤
|
61
|
-
|
62
|
-
|
63
|
-
>>>
|
64
|
-
>>>
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
55
|
+
>>> print(prep.decompose())
|
56
|
+
┌───┐┌──────────────────────┐
|
57
|
+
q_0: ┤ H ├┤ P(2.0*x[0]**2 + 2.0) ├
|
58
|
+
├───┤├──────────────────────┤
|
59
|
+
q_1: ┤ H ├┤ P(2.0*x[1]**2 + 2.0) ├
|
60
|
+
├───┤├──────────────────────┤
|
61
|
+
q_2: ┤ H ├┤ P(2.0*x[2]**2 + 2.0) ├
|
62
|
+
└───┘└──────────────────────┘
|
63
|
+
|
64
|
+
>>> from qiskit.circuit.library import RealAmplitudes
|
65
|
+
>>> classifier = ZFeatureMap(3, reps=1).compose(RealAmplitudes(3, reps=1))
|
66
|
+
>>> print(classifier.decompose())
|
67
|
+
┌───┐┌─────────────┐┌──────────┐ ┌──────────┐
|
68
|
+
q_0: ┤ H ├┤ P(2.0*x[0]) ├┤ RY(θ[0]) ├─■──■─┤ RY(θ[3]) ├────────────
|
69
|
+
├───┤├─────────────┤├──────────┤ │ │ └──────────┘┌──────────┐
|
70
|
+
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ RY(θ[1]) ├─■──┼──────■──────┤ RY(θ[4]) ├
|
71
|
+
├───┤├─────────────┤├──────────┤ │ │ ├──────────┤
|
72
|
+
q_2: ┤ H ├┤ P(2.0*x[2]) ├┤ RY(θ[2]) ├────■──────■──────┤ RY(θ[5]) ├
|
73
|
+
└───┘└─────────────┘└──────────┘ └──────────┘
|
72
74
|
|
73
75
|
"""
|
74
76
|
|
@@ -24,51 +24,73 @@ class ZZFeatureMap(PauliFeatureMap):
|
|
24
24
|
|
25
25
|
.. parsed-literal::
|
26
26
|
|
27
|
-
|
28
|
-
┤ H ├┤
|
29
|
-
|
30
|
-
┤ H ├┤
|
31
|
-
|
32
|
-
┤ H ├┤
|
33
|
-
|
27
|
+
┌───┐┌────────────────┐
|
28
|
+
┤ H ├┤ P(2.0*φ(x[0])) ├──■───────────────────────────■───────────────────────────────────
|
29
|
+
├───┤├────────────────┤┌─┴─┐┌─────────────────────┐┌─┴─┐
|
30
|
+
┤ H ├┤ P(2.0*φ(x[1])) ├┤ X ├┤ P(2.0*φ(x[0],x[1])) ├┤ X ├──■───────────────────────────■──
|
31
|
+
├───┤├────────────────┤└───┘└─────────────────────┘└───┘┌─┴─┐┌─────────────────────┐┌─┴─┐
|
32
|
+
┤ H ├┤ P(2.0*φ(x[2])) ├─────────────────────────────────┤ X ├┤ P(2.0*φ(x[1],x[2])) ├┤ X ├
|
33
|
+
└───┘└────────────────┘ └───┘└─────────────────────┘└───┘
|
34
34
|
|
35
35
|
where :math:`\varphi` is a classical non-linear function, which defaults to :math:`\varphi(x) = x`
|
36
36
|
if and :math:`\varphi(x,y) = (\pi - x)(\pi - y)`.
|
37
37
|
|
38
38
|
Examples:
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
40
|
+
.. code-block::
|
41
|
+
|
42
|
+
from qiskit.circuit.library import ZZFeatureMap
|
43
|
+
prep = ZZFeatureMap(2, reps=1)
|
44
|
+
print(prep.decompose())
|
45
|
+
|
46
|
+
.. parsed-literal::
|
47
|
+
┌───┐┌─────────────┐
|
48
|
+
q_0: ┤ H ├┤ P(2.0*x[0]) ├──■──────────────────────────────────────■──
|
49
|
+
├───┤├─────────────┤┌─┴─┐┌────────────────────────────────┐┌─┴─┐
|
50
|
+
q_1: ┤ H ├┤ P(2.0*x[1]) ├┤ X ├┤ P(2.0*(pi - x[0])*(pi - x[1])) ├┤ X ├
|
51
|
+
└───┘└─────────────┘└───┘└────────────────────────────────┘└───┘
|
52
|
+
|
53
|
+
.. code-block::
|
54
|
+
|
55
|
+
from qiskit.circuit.library import EfficientSU2
|
56
|
+
classifier = ZZFeatureMap(3).compose(EfficientSU2(3))
|
57
|
+
classifier.num_parameters
|
58
|
+
|
59
|
+
.. parsed-literal::
|
60
|
+
|
61
|
+
27
|
62
|
+
|
63
|
+
.. code-block::
|
64
|
+
|
65
|
+
classifier.parameters # 'x' for the data preparation, 'θ' for the SU2 parameters
|
66
|
+
|
67
|
+
.. parsed-literal::
|
68
|
+
|
69
|
+
ParameterView([
|
70
|
+
ParameterVectorElement(x[0]), ParameterVectorElement(x[1]),
|
71
|
+
ParameterVectorElement(x[2]), ParameterVectorElement(θ[0]),
|
72
|
+
ParameterVectorElement(θ[1]), ParameterVectorElement(θ[2]),
|
73
|
+
ParameterVectorElement(θ[3]), ParameterVectorElement(θ[4]),
|
74
|
+
ParameterVectorElement(θ[5]), ParameterVectorElement(θ[6]),
|
75
|
+
ParameterVectorElement(θ[7]), ParameterVectorElement(θ[8]),
|
76
|
+
ParameterVectorElement(θ[9]), ParameterVectorElement(θ[10]),
|
77
|
+
ParameterVectorElement(θ[11]), ParameterVectorElement(θ[12]),
|
78
|
+
ParameterVectorElement(θ[13]), ParameterVectorElement(θ[14]),
|
79
|
+
ParameterVectorElement(θ[15]), ParameterVectorElement(θ[16]),
|
80
|
+
ParameterVectorElement(θ[17]), ParameterVectorElement(θ[18]),
|
81
|
+
ParameterVectorElement(θ[19]), ParameterVectorElement(θ[20]),
|
82
|
+
ParameterVectorElement(θ[21]), ParameterVectorElement(θ[22]),
|
83
|
+
ParameterVectorElement(θ[23])
|
84
|
+
])
|
85
|
+
|
86
|
+
.. code-block::
|
87
|
+
|
88
|
+
classifier.count_ops()
|
89
|
+
|
90
|
+
.. parsed-literal::
|
91
|
+
|
71
92
|
OrderedDict([('ZZFeatureMap', 1), ('EfficientSU2', 1)])
|
93
|
+
|
72
94
|
"""
|
73
95
|
|
74
96
|
def __init__(
|
qiskit/qpy/__init__.py
CHANGED
@@ -116,6 +116,30 @@ and how the feature will be internally handled.
|
|
116
116
|
|
117
117
|
.. autoexception:: QPYLoadingDeprecatedFeatureWarning
|
118
118
|
|
119
|
+
.. note::
|
120
|
+
|
121
|
+
With versions of Qiskit before 1.2.4, the ``use_symengine=True`` argument to :func:`.qpy.dump`
|
122
|
+
could cause problems with backwards compatibility if there were :class:`.ParameterExpression`
|
123
|
+
objects to serialize. In particular:
|
124
|
+
|
125
|
+
* When the loading version of Qiskit is 1.2.4 or greater, QPY files generated with any version
|
126
|
+
of Qiskit >= 0.46.0 can be loaded. If a version of Qiskit between 0.45.0 and 0.45.3 was used
|
127
|
+
to generate the files, and the non-default argument ``use_symengine=True`` was given to
|
128
|
+
:func:`.qpy.dump`, the file can only be read if the version of ``symengine`` used in the
|
129
|
+
generating environment was in the 0.11 or 0.13 series. However, if the environment was created
|
130
|
+
during the support window of Qiskit 0.45, it is likely that ``symengine==0.9.2`` was used.
|
131
|
+
|
132
|
+
* When the loading version of Qiskit is between 0.46.0 and 1.2.2 inclusive, the file can only be
|
133
|
+
read if the installed version of ``symengine`` in the loading environment matches the version
|
134
|
+
used in the generating environment.
|
135
|
+
|
136
|
+
To recover a QPY file that fails with ``symengine`` version-related errors during a call to
|
137
|
+
:func:`.qpy.load`, first attempt to use Qiskit >= 1.2.4 to load the file. If this still fails,
|
138
|
+
it is likely because Qiskit 0.45.x was used to generate the file with ``use_symengine=True``.
|
139
|
+
In this case, use Qiskit 0.45.3 with ``symengine==0.9.2`` to load the file, and then re-export
|
140
|
+
it to QPY setting ``use_symengine=False``. The resulting file can then be loaded by any later
|
141
|
+
version of Qiskit.
|
142
|
+
|
119
143
|
QPY format version history
|
120
144
|
--------------------------
|
121
145
|
|
@@ -20,9 +20,6 @@ from io import BytesIO
|
|
20
20
|
|
21
21
|
import numpy as np
|
22
22
|
import symengine as sym
|
23
|
-
from symengine.lib.symengine_wrapper import ( # pylint: disable = no-name-in-module
|
24
|
-
load_basic,
|
25
|
-
)
|
26
23
|
|
27
24
|
from qiskit.exceptions import QiskitError
|
28
25
|
from qiskit.pulse import library, channels, instructions
|
@@ -106,7 +103,7 @@ def _loads_symbolic_expr(expr_bytes, use_symengine=False):
|
|
106
103
|
return None
|
107
104
|
expr_bytes = zlib.decompress(expr_bytes)
|
108
105
|
if use_symengine:
|
109
|
-
return
|
106
|
+
return common.load_symengine_payload(expr_bytes)
|
110
107
|
else:
|
111
108
|
from sympy import parse_expr
|
112
109
|
|
qiskit/qpy/binary_io/value.py
CHANGED
@@ -20,9 +20,6 @@ import uuid
|
|
20
20
|
|
21
21
|
import numpy as np
|
22
22
|
import symengine
|
23
|
-
from symengine.lib.symengine_wrapper import ( # pylint: disable = no-name-in-module
|
24
|
-
load_basic,
|
25
|
-
)
|
26
23
|
|
27
24
|
|
28
25
|
from qiskit.circuit import CASE_DEFAULT, Clbit, ClassicalRegister
|
@@ -290,7 +287,7 @@ def _read_parameter_expression_v3(file_obj, vectors, use_symengine):
|
|
290
287
|
|
291
288
|
payload = file_obj.read(data.expr_size)
|
292
289
|
if use_symengine:
|
293
|
-
expr_ =
|
290
|
+
expr_ = common.load_symengine_payload(payload)
|
294
291
|
else:
|
295
292
|
from sympy.parsing.sympy_parser import parse_expr
|
296
293
|
|
qiskit/qpy/common.py
CHANGED
@@ -18,7 +18,12 @@ Common functions across several serialization and deserialization modules.
|
|
18
18
|
import io
|
19
19
|
import struct
|
20
20
|
|
21
|
-
|
21
|
+
import symengine
|
22
|
+
from symengine.lib.symengine_wrapper import ( # pylint: disable = no-name-in-module
|
23
|
+
load_basic,
|
24
|
+
)
|
25
|
+
|
26
|
+
from qiskit.qpy import formats, exceptions
|
22
27
|
|
23
28
|
QPY_VERSION = 12
|
24
29
|
QPY_COMPATIBILITY_VERSION = 10
|
@@ -304,3 +309,42 @@ def mapping_from_binary(binary_data, deserializer, **kwargs):
|
|
304
309
|
mapping = read_mapping(container, deserializer, **kwargs)
|
305
310
|
|
306
311
|
return mapping
|
312
|
+
|
313
|
+
|
314
|
+
def load_symengine_payload(payload: bytes) -> symengine.Expr:
|
315
|
+
"""Load a symengine expression from its serialized cereal payload."""
|
316
|
+
# This is a horrible hack to workaround the symengine version checking
|
317
|
+
# it's deserialization does. There were no changes to the serialization
|
318
|
+
# format between 0.11 and 0.13 but the deserializer checks that it can't
|
319
|
+
# load across a major or minor version boundary. This works around it
|
320
|
+
# by just lying about the generating version.
|
321
|
+
symengine_version = symengine.__version__.split(".")
|
322
|
+
major = payload[2]
|
323
|
+
minor = payload[3]
|
324
|
+
if int(symengine_version[1]) != minor:
|
325
|
+
if major != 0:
|
326
|
+
raise exceptions.QpyError(
|
327
|
+
"Qiskit doesn't support loading a symengine payload generated with symengine >= 1.0"
|
328
|
+
)
|
329
|
+
if minor == 9:
|
330
|
+
raise exceptions.QpyError(
|
331
|
+
"Qiskit doesn't support loading a historical QPY file with `use_symengine=True` "
|
332
|
+
"generated in an environment using symengine 0.9.0. If you need to load this file "
|
333
|
+
"you can do so with Qiskit 0.45.x or 0.46.x and re-export the QPY file using "
|
334
|
+
"`use_symengine=False`."
|
335
|
+
)
|
336
|
+
if minor not in (11, 13):
|
337
|
+
raise exceptions.QpyError(
|
338
|
+
f"Incompatible symengine version {major}.{minor} used to generate the QPY "
|
339
|
+
"payload"
|
340
|
+
)
|
341
|
+
minor_version = int(symengine_version[1])
|
342
|
+
if minor_version not in (11, 13):
|
343
|
+
raise exceptions.QpyError(
|
344
|
+
f"Incompatible installed symengine version {symengine.__version__} to load "
|
345
|
+
"this QPY payload"
|
346
|
+
)
|
347
|
+
payload = bytearray(payload)
|
348
|
+
payload[3] = minor_version
|
349
|
+
payload = bytes(payload)
|
350
|
+
return load_basic(payload)
|
qiskit/qpy/interface.py
CHANGED
@@ -144,6 +144,17 @@ def dump(
|
|
144
144
|
from the QPY format at that version will persist. This should only be used if
|
145
145
|
compatibility with loading the payload with an older version of Qiskit is necessary.
|
146
146
|
|
147
|
+
.. note::
|
148
|
+
|
149
|
+
If serializing a :class:`.QuantumCircuit` or :class:`.ScheduleBlock` that contain
|
150
|
+
:class:`.ParameterExpression` objects with ``version`` set low with the intent to
|
151
|
+
load the payload using a historical release of Qiskit, it is safest to set the
|
152
|
+
``use_symengine`` flag to ``False``. Versions of Qiskit prior to 1.2.4 cannot load
|
153
|
+
QPY files containing ``symengine``-serialized :class:`.ParameterExpression` objects
|
154
|
+
unless the version of ``symengine`` used between the loading and generating
|
155
|
+
environments matches.
|
156
|
+
|
157
|
+
|
147
158
|
Raises:
|
148
159
|
QpyError: When multiple data format is mixed in the output.
|
149
160
|
TypeError: When invalid data type is input.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: qiskit
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.4
|
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
|
@@ -36,7 +36,7 @@ Requires-Dist: dill>=0.3
|
|
36
36
|
Requires-Dist: python-dateutil>=2.8.0
|
37
37
|
Requires-Dist: stevedore>=3.0.0
|
38
38
|
Requires-Dist: typing-extensions
|
39
|
-
Requires-Dist: symengine
|
39
|
+
Requires-Dist: symengine<0.14,>=0.11
|
40
40
|
Provides-Extra: all
|
41
41
|
Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
|
42
42
|
Provides-Extra: crosstalk-pass
|
@@ -1,10 +1,10 @@
|
|
1
1
|
qiskit/version.py,sha256=MiraFeJt5GQEspFyvP3qJedHen2C1e8dNEttzg0u7YU,2498
|
2
2
|
qiskit/__init__.py,sha256=h_3PcAndCRLW2AhP-GzbxjFzpwd4RpSZ-cQg062et_w,5420
|
3
|
-
qiskit/_accelerate.abi3.so,sha256=
|
3
|
+
qiskit/_accelerate.abi3.so,sha256=eB3kRsCLLmwZJqvEh_6JGCRytrRGKxybgUYM-xiAJuw,12273680
|
4
4
|
qiskit/user_config.py,sha256=I7QCF9W2IDpleWunxDjgYGySsVUlq57gfj_137o0Dac,10109
|
5
5
|
qiskit/_numpy_compat.py,sha256=ZlnDTF2KBTKcVF489ZuxoBk6r9KLsMuhAlozFhOn0a8,2815
|
6
6
|
qiskit/exceptions.py,sha256=78bbfww9680_v4CaNgepavY5DwGTN7_j47Ckob3lLPM,5619
|
7
|
-
qiskit/VERSION.txt,sha256=
|
7
|
+
qiskit/VERSION.txt,sha256=VjoLTuw8d7vDSsYw1PpSFPXGcmrgFGhAT9cERzEQCE4,6
|
8
8
|
qiskit/visualization/circuit_visualization.py,sha256=6R-A96Uwb_RZOovsSB0LGVsC7lP5IhtLNp6VP2yVBwE,698
|
9
9
|
qiskit/visualization/counts_visualization.py,sha256=rgoEqV0gucL9Auz33wf1LiRWR3yFQzjK94zzBF830iY,16791
|
10
10
|
qiskit/visualization/pass_manager_visualization.py,sha256=19m4pUdYG0csZgQbuxfFP-zfoVGnk0pJr0HVToD1Y04,10886
|
@@ -36,7 +36,7 @@ qiskit/visualization/pulse_v2/generators/__init__.py,sha256=wbrSLBT-R1BeDDkCdk75
|
|
36
36
|
qiskit/visualization/pulse_v2/generators/chart.py,sha256=Y2na3oCE4--YbZ802VC6LhV0QG3f8X_eelSrbbcjsq8,6147
|
37
37
|
qiskit/visualization/pulse_v2/generators/frame.py,sha256=sCqwaXoY99lNclGmK4GwiBckHOXezfLVKhPz7w7tPII,13932
|
38
38
|
qiskit/visualization/pulse_v2/generators/snapshot.py,sha256=pJxWrZQQ67qaM4aChcrTJNh0xxKfaZ9e0q6SGXIO9G8,4128
|
39
|
-
qiskit/visualization/circuit/circuit_visualization.py,sha256=
|
39
|
+
qiskit/visualization/circuit/circuit_visualization.py,sha256=XGDeeFx9MR_tjblQ1GrcB9mIq9XgAnPtvHensQnnnqw,29011
|
40
40
|
qiskit/visualization/circuit/matplotlib.py,sha256=jMDl-I7mCmlFKc1eafr5SruvXgOcjJTme6N_GVtg6Rw,79426
|
41
41
|
qiskit/visualization/circuit/__init__.py,sha256=nsSvXY3I5Htg52GHr2SyXMx9cb__jrX7dWj9x5esyTw,573
|
42
42
|
qiskit/visualization/circuit/text.py,sha256=U-rCvw9X-d64POxx_I9lWMt7pQgXA9BLeuHp_0XGPH8,71164
|
@@ -260,7 +260,7 @@ qiskit/circuit/annotated_operation.py,sha256=9TPDzb_iFHjz1Qb-zekywdwD2FIe1J2kZM1
|
|
260
260
|
qiskit/circuit/barrier.py,sha256=e9rOI-2o_ydpS4H6U5xsnuWhvRts58mMiEzsPZLqbgE,1612
|
261
261
|
qiskit/circuit/reset.py,sha256=gaUpq_mgDh6eYN6N90cXGG1zuq6Yck06Rgh2wCEp7a8,1128
|
262
262
|
qiskit/circuit/duration.py,sha256=JtMbAdMGIPXg2xSf2LJXcmtyVUwdMQ95SScYC5XRUdA,2952
|
263
|
-
qiskit/circuit/__init__.py,sha256=
|
263
|
+
qiskit/circuit/__init__.py,sha256=Vp2EnPcpL9feXaPOZlzGzRlbV9C-BE1KaaN9xgB2ai0,58957
|
264
264
|
qiskit/circuit/classicalregister.py,sha256=oLKotR8jFREs6i2M1K7Jrvm5rrfG7TzLgaB0-PGa040,1691
|
265
265
|
qiskit/circuit/operation.py,sha256=ecfuw_bkQYFsHyEPdf1z-vJhY99NYSFLYps_X1DF3jc,2015
|
266
266
|
qiskit/circuit/quantumregister.py,sha256=S_4lTalKmDI0LiVq3WJUyqDQwrx7-7mVDOMO-YIs4qI,2032
|
@@ -294,7 +294,7 @@ qiskit/circuit/tools/pi_check.py,sha256=6gwDvgfhud2I9nW3UikG4w4GFzPF-na0w6AoPevY
|
|
294
294
|
qiskit/circuit/tools/__init__.py,sha256=_Rpdz9Yqiksplpw9CSGq0gOAJDIxoXQ26BRkHi1x0HY,540
|
295
295
|
qiskit/circuit/library/pauli_evolution.py,sha256=FaOisdii-aAUVUfHWX60UEwqcAoE-CjwtY3U7xeAyRQ,6547
|
296
296
|
qiskit/circuit/library/hidden_linear_function.py,sha256=Mr5EP9KI96NSvQJWyh4aRh5QPijnbc2-bIWvGv_4w5M,3531
|
297
|
-
qiskit/circuit/library/blueprintcircuit.py,sha256=
|
297
|
+
qiskit/circuit/library/blueprintcircuit.py,sha256=Iqh8gGTfAHwBzeCW1Iy1foUnBBCLAD_wDMWw77LKjeI,9938
|
298
298
|
qiskit/circuit/library/graph_state.py,sha256=6XZC3YfhKb65-9poGAkY26w63Ggkle8Hi4H6lYLeTPM,3153
|
299
299
|
qiskit/circuit/library/iqp.py,sha256=MAQZQZ5UTetDSPkin1cRdjOXkie_JCMH1Y--v-1etRw,3265
|
300
300
|
qiskit/circuit/library/fourier_checking.py,sha256=VTCOhfzEqfyLJaV5iceRoK9wm5LPwyzT9YNHCC5U4b8,3543
|
@@ -325,9 +325,9 @@ qiskit/circuit/library/generalized_gates/mcmt.py,sha256=LtaUhbBBXOWB_TKwNryHcMch
|
|
325
325
|
qiskit/circuit/library/basis_change/qft.py,sha256=qE3t_0WQq6I8NbuhLoXuQy1bbROuDZ9ykbLdkOgEGs4,11772
|
326
326
|
qiskit/circuit/library/basis_change/__init__.py,sha256=JFOleW2bg9vOFdWs2RbrFDpUPx47DWmPP6pG1spSS7s,548
|
327
327
|
qiskit/circuit/library/data_preparation/state_preparation.py,sha256=2TL97DdkliXwRlOc-ETOidGc_zVZRu9E9VOUFEal1JE,14150
|
328
|
-
qiskit/circuit/library/data_preparation/z_feature_map.py,sha256=
|
329
|
-
qiskit/circuit/library/data_preparation/zz_feature_map.py,sha256=
|
330
|
-
qiskit/circuit/library/data_preparation/pauli_feature_map.py,sha256=
|
328
|
+
qiskit/circuit/library/data_preparation/z_feature_map.py,sha256=0f3I2VuUIQceIjNvgdT8ETaRk2Oa3VQBsMaJaTWIKmI,6418
|
329
|
+
qiskit/circuit/library/data_preparation/zz_feature_map.py,sha256=gZArFjYLOC-DDhlB-XwrxBHrA1NRv4BSg_K-5pFSKOc,6553
|
330
|
+
qiskit/circuit/library/data_preparation/pauli_feature_map.py,sha256=sTREVDZDI50ASdRUTLfSp-J3y_tTDrMf5imvyZBk4cc,12718
|
331
331
|
qiskit/circuit/library/data_preparation/__init__.py,sha256=NYQYKqo_y2H9S5JlAcmyKGys_72PCe8G6auMrf8if-s,2336
|
332
332
|
qiskit/circuit/library/data_preparation/initializer.py,sha256=0MGo6PVqXachVpr-YEWqR2HeJq6qvPhSV5AQbEOCWYo,4453
|
333
333
|
qiskit/circuit/library/boolean_logic/quantum_xor.py,sha256=mE7NEFn792_VNSe9R-v-qLXsgsISMyNbpI5m_CHbdHI,2311
|
@@ -367,10 +367,10 @@ qiskit/circuit/library/standard_gates/x.py,sha256=iQ_PRR_E3icz2-_akhblVRAbF4jZs7
|
|
367
367
|
qiskit/circuit/library/standard_gates/global_phase.py,sha256=eXHt_02D8-MbEiCFTybG2d2Z8OdQnazYm-W4Weyjl0E,2913
|
368
368
|
qiskit/circuit/library/standard_gates/rzz.py,sha256=46WHinS80c5vqmEgDChGpqS2X54inMMIhcTRoD9y5vQ,6518
|
369
369
|
qiskit/circuit/library/standard_gates/xx_minus_yy.py,sha256=ycgJutNYMkQpX3hhmMZyIoZQXj_M-Boo_jn6oZAQUeg,8131
|
370
|
-
qiskit/circuit/library/standard_gates/ryy.py,sha256=
|
370
|
+
qiskit/circuit/library/standard_gates/ryy.py,sha256=6UdgcVoO_NCOxSt2f9eto0Jd6GNUxQW_c8s01NpIbNs,6865
|
371
371
|
qiskit/circuit/library/standard_gates/z.py,sha256=Xw4sRo-3I-MrVfXSv0Ka--rbmYRkgQ7DI---n0hWons,10344
|
372
|
-
qiskit/circuit/library/standard_gates/rzx.py,sha256=
|
373
|
-
qiskit/circuit/library/standard_gates/rxx.py,sha256=
|
372
|
+
qiskit/circuit/library/standard_gates/rzx.py,sha256=dvQGdWE6mFqW9UbmxEydZgEhuhoQAanFa-aIXlaRnuU,8298
|
373
|
+
qiskit/circuit/library/standard_gates/rxx.py,sha256=Vm5YekAUAfqNRPTOnnuIiLoduo4USLUyQiNJIptr_9o,6686
|
374
374
|
qiskit/circuit/library/standard_gates/dcx.py,sha256=MXoUBZpNEz-bqkI_9AMwYUDeRlEGolZXEw33Lr1wPYs,2512
|
375
375
|
qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py,sha256=XmR0HhlcozZWLaTBd0z8qW3nG_injZVHijnMtLqGwaI,14931
|
376
376
|
qiskit/circuit/library/standard_gates/u.py,sha256=jc11FMYjBNiz7NxmrSlw6vPDnKJebFrlgVoPsZifKTo,15170
|
@@ -721,16 +721,16 @@ qiskit/primitives/base/base_result.py,sha256=eG0KLfVRNOBp6HqmjLJ1ADF7iVL8yt4ruRj
|
|
721
721
|
qiskit/primitives/base/estimator_result.py,sha256=YUNMS8uKaHVGBn4j2QKJBijh3nsQkE0nvgqOsNFV9V0,1478
|
722
722
|
qiskit/primitives/base/base_primitive_job.py,sha256=E9JZPlHeDU-Zx2ccje73dpEAkt0rCYD1yrMb-WEmgbk,2834
|
723
723
|
qiskit/primitives/base/validation.py,sha256=KMWbPhGUSyr1XYSoh11YgNBabjgtgVpbTFYu9-0TvjU,8846
|
724
|
-
qiskit/qpy/interface.py,sha256=
|
725
|
-
qiskit/qpy/__init__.py,sha256=
|
726
|
-
qiskit/qpy/common.py,sha256=
|
724
|
+
qiskit/qpy/interface.py,sha256=vbCxqs12ra0lp_jyKTsvHG_Ho9290mcxCwvCRYZ7gWI,13020
|
725
|
+
qiskit/qpy/__init__.py,sha256=bJVt7Y7MW1H9ibYtZlRialbEJq74F0Xcy7zm_2t26X4,58059
|
726
|
+
qiskit/qpy/common.py,sha256=TRrtOTxjMn2s59qktUFlSCbT5JUdSKuR0R2VdYtZrZk,12257
|
727
727
|
qiskit/qpy/type_keys.py,sha256=_2FKRgX1H6B5L6UOt3RCBzbeecNh0LPISZUr75felQg,15761
|
728
728
|
qiskit/qpy/formats.py,sha256=88GCscjzqnU8LTZ5yf0a1BiA0_wjjWVGpC3qVkhEa_k,11269
|
729
729
|
qiskit/qpy/exceptions.py,sha256=YOwVSKR74VYOrXS5hBdln7EZ0ett0qsSQSALJDoJxwA,1847
|
730
730
|
qiskit/qpy/binary_io/circuits.py,sha256=ZKBrCiNdodbaLk3bv6n82ILpBR-89PAs2j-oaTFEAcY,57115
|
731
731
|
qiskit/qpy/binary_io/__init__.py,sha256=1RUijiS9HbWuiCER5Hkkqg1Dlutap-ZhbIwK958qK-o,1073
|
732
|
-
qiskit/qpy/binary_io/value.py,sha256=
|
733
|
-
qiskit/qpy/binary_io/schedules.py,sha256=
|
732
|
+
qiskit/qpy/binary_io/value.py,sha256=Ge5YN5MPo2_N8EVTH7_RwzMMJ65hRLKsjpcIKnLDKzs,28483
|
733
|
+
qiskit/qpy/binary_io/schedules.py,sha256=trhEhMDzTpvLAuLk85qXRByd_ZAz_CjLa5VGfRkVM4A,23830
|
734
734
|
qiskit/qasm/libs/stdgates.inc,sha256=UvFVDcEVQUrsHh3VBiUZ5JgoqkbnsSUtgqdSnEzI6Ko,2328
|
735
735
|
qiskit/qasm/libs/qelib1.inc,sha256=2CddZ7ogjAwbU1pKvxfcp4YRGXW-1CHF47e1FFLrf2M,4820
|
736
736
|
qiskit/qasm/libs/dummy/stdgates.inc,sha256=P-k26UtYNXkqZMHknr4ExkGXIgS3Q71AcmqCKSVNrjA,1392
|
@@ -812,9 +812,9 @@ qiskit/compiler/__init__.py,sha256=Far4-zXOyDGCqdNmFP4Q8zV47meApMw6sbIdd1t_wM4,9
|
|
812
812
|
qiskit/compiler/assembler.py,sha256=e6LEZ5gZKj5YkFvEUQswmgg5Q5z0wC1BsN-22Su-W-4,26709
|
813
813
|
qiskit/compiler/transpiler.py,sha256=LZYdnfqb2UDufn_Tdl1tVgT-_BY_zzEF7YDW182-FuE,24018
|
814
814
|
qiskit/compiler/scheduler.py,sha256=wjIqDBNkspcLMEuHxHxCUREKiq3FMx9xfo0Ug_QPBYA,4411
|
815
|
-
qiskit-1.2.
|
816
|
-
qiskit-1.2.
|
817
|
-
qiskit-1.2.
|
818
|
-
qiskit-1.2.
|
819
|
-
qiskit-1.2.
|
820
|
-
qiskit-1.2.
|
815
|
+
qiskit-1.2.4.dist-info/RECORD,,
|
816
|
+
qiskit-1.2.4.dist-info/WHEEL,sha256=9DIIBb2tgWMKudTFkR4mtJw_7f-Z0kFUVrhe3NnWRgA,112
|
817
|
+
qiskit-1.2.4.dist-info/entry_points.txt,sha256=dCqiF7i6g_s6cYnXX7UUO1MM63xFFb5DCHYEYyGAeCc,3556
|
818
|
+
qiskit-1.2.4.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
|
819
|
+
qiskit-1.2.4.dist-info/LICENSE.txt,sha256=IXrBXbzaJ4LgBPUVKIbYR5iMY2eqoMT8jDVTY8Ib0iQ,11416
|
820
|
+
qiskit-1.2.4.dist-info/METADATA,sha256=FgL3OFv3K24kIO1CvFT1R6IMmGc88RRtZe0ERwSr5M0,12873
|
File without changes
|
File without changes
|
File without changes
|