qiskit 2.1.0rc1__cp39-abi3-win_amd64.whl → 2.1.1__cp39-abi3-win_amd64.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 CHANGED
@@ -1 +1 @@
1
- 2.1.0rc1
1
+ 2.1.1
qiskit/__init__.py CHANGED
@@ -50,6 +50,7 @@ if sys.version_info < (3, 10):
50
50
  "Support for running Qiskit with Python 3.9 will be removed in the "
51
51
  "2.3.0 release, which coincides with when Python 3.9 goes end of life.",
52
52
  DeprecationWarning,
53
+ stacklevel=2,
53
54
  )
54
55
 
55
56
  from . import _accelerate
qiskit/_accelerate.pyd CHANGED
Binary file
@@ -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:`ForLoopOp`) all have specific state that defines the branching
719
- conditions and strategies, but contain all the different subcircuit blocks that might be entered in
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
@@ -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.arcsin(1 / x), 2, 2, [2, 4]
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 z_feature_map function as a replacement. Note that this will no longer "
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
- seed = seed.integers(0, dtype=np.uint64)
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.name
687
- sympy_binds[old.name] = new
686
+ new = new.sympify()
687
+ sympy_binds[old.sympify()] = new
688
688
  output = output.subs(sympy_binds, simultaneous=True)
689
689
  continue
690
690
 
@@ -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
- out[self.get_parameter(parameter)] = value
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
@@ -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 DAGOpNode, DAGCircuit, DAGDependency
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
- in a DAG (direct acyclic graph). It works both with the
342
- :class:`~qiskit.dagcircuit.DAGCircuit` and
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
@@ -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
- 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.
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``
@@ -91,6 +91,7 @@ Optimizations
91
91
  Split2QUnitaries
92
92
  RemoveIdentityEquivalent
93
93
  ContractIdleWiresInControlFlow
94
+ OptimizeCliffordT
94
95
 
95
96
  Scheduling
96
97
  =============
@@ -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 not layout:
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
- algo = high_level_object.synthesis
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 = high_level_object.num_qubits
1984
- pauli_network = algo.expand(high_level_object)
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
  --------------------
@@ -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 qubits.
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.0rc1
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,17 +1,17 @@
1
- qiskit/VERSION.txt,sha256=k4VDWCtbEl0UJkaMvTcBeg8VhuKR6Yq7WN3_lkdNRi0,10
2
- qiskit/__init__.py,sha256=Tcku0QS9PAt7pESh6u7rzwRHU1LS5soqUoIs69CNYUU,8393
3
- qiskit/_accelerate.pyd,sha256=q5wAIkDhYGyFu_Y5ZoMnWVRViAIGm8gSP3AZuY3h7ns,14058496
1
+ qiskit/VERSION.txt,sha256=-VJsShQDijvpzExKq2UCu3hTEeBaCBF3aCRP5ckYOBY,7
2
+ qiskit/__init__.py,sha256=CTIRKbS91SpTCICg-o-KeJrGYn9f-9PNG4vK4w6fakM,8416
3
+ qiskit/_accelerate.pyd,sha256=IU_Enb9ciuCIxTtKIry3uVbAD-jS6IH_JjyEeJVlfko,14186496
4
4
  qiskit/_numpy_compat.py,sha256=EV1RihNRJnvWzjb57z8sjMbv9EeRPzk8Mnegzw7ItR0,2888
5
5
  qiskit/exceptions.py,sha256=UamBNQmDJTx6ruzmj7iXgcsrBcvkfE-bZ4TH2-K_ngw,5772
6
6
  qiskit/user_config.py,sha256=yPpq2_vI1OXdUA6NS2e86qJHTU60MDSH68PzCdHVZCs,10591
7
7
  qiskit/version.py,sha256=u7eouPkCe1SPRPFL2cf0J_DIAXMbyBmMRYSwD57LliA,2582
8
- qiskit/circuit/__init__.py,sha256=pBaNFiQAoqX9ivPM5_b02-1w7p8zetC4b6LOh5PesmY,63532
8
+ qiskit/circuit/__init__.py,sha256=wYm9zY0cdFd05OjCPw_TwiGv-9t4xVEDIl3qtx0im90,67312
9
9
  qiskit/circuit/_add_control.py,sha256=tNcw5m0rDIZZxV2tjRzxEftsVmZjVeVEhwh9ywCW6JE,12155
10
10
  qiskit/circuit/_classical_resource_map.py,sha256=kMv_OlCOApt1ZsQ2trfaeS9XYW7Q0AyrqtXBhmUGIm4,7423
11
11
  qiskit/circuit/_standard_gates_commutations.py,sha256=AvuXIxBhO1OmMB3FOhxOJGi25t-ID2SBBMdPbFgrbjA,102855
12
12
  qiskit/circuit/_utils.py,sha256=MxIpuBs6ZsdfMDxT6ZCFgskp_32FbK7zVHp7sxmzoCQ,6614
13
13
  qiskit/circuit/annotated_operation.py,sha256=RNxov21cwV6HiQRE5-wD2svq1wUuwNwrvsC8bSY1ME4,10766
14
- qiskit/circuit/annotation.py,sha256=aRhcW7b5dc_iUL75cj_ip4M9vfxhIbi21g2LT8kL0d0,17962
14
+ qiskit/circuit/annotation.py,sha256=XZ1E0cjQhfYokW0Vs8WT9WHP1FATNUtA8-ReaWk_2ZA,21212
15
15
  qiskit/circuit/barrier.py,sha256=BYIxFTmS4UYJF8lZAnOwG708l86baR44_gJJ9DR5Db0,1632
16
16
  qiskit/circuit/commutation_checker.py,sha256=k7ecgMWvwwytIva2PzYMXvn1DFzeXZgbo51fGrmcCfE,5028
17
17
  qiskit/circuit/commutation_library.py,sha256=CCIJAuBtdX2Q7HipwfjLNeAOQlBcZ3mkFJavNsmHtT0,870
@@ -27,10 +27,10 @@ qiskit/circuit/instructionset.py,sha256=jMo1446qm5J1YCVLvzykDRDpA-zDpGM588WH-Yq8
27
27
  qiskit/circuit/measure.py,sha256=4xwwPXAeM9pyttSRed7wdCanDBeVwo1i_UG7fbLKiAo,1864
28
28
  qiskit/circuit/operation.py,sha256=85i2oVIhvEF5mh4TTlpyEXdhfqKwver7LKD0ac2YLRQ,2145
29
29
  qiskit/circuit/parameter.py,sha256=Lyw2BmplPOZzNX8II46d8hESAivWr51nK4VvDd3roKA,7515
30
- qiskit/circuit/parameterexpression.py,sha256=1ojMcfxKlKiEXDB1rRCzz1mtJN9M3YJjDcMvo5vauVc,29150
30
+ qiskit/circuit/parameterexpression.py,sha256=BckioMeuDBNOScxpdgMpMTZd-iCXmaip-5A3kRDofUo,29160
31
31
  qiskit/circuit/parametertable.py,sha256=4u7EuKAiVskcnWQW8dnfU8jgYKZ92KdH2g6PeTvvjjA,3388
32
32
  qiskit/circuit/parametervector.py,sha256=NgNAy0Tzvy0fdfLIhTI6Bg0kqckevhKVPBP9ONMF3uU,4907
33
- qiskit/circuit/quantumcircuit.py,sha256=12_XTm-8BTRukCzyD2t1g-N6NN5tWtiox2Y19OuCxwc,330935
33
+ qiskit/circuit/quantumcircuit.py,sha256=mObvtAeQiVJA3zjSWRtoqsGV7g6AMh9ggKwHbm8qlCg,331126
34
34
  qiskit/circuit/quantumcircuitdata.py,sha256=Z0qntRoQyOg-UUzM5Z9kEcFeCfQ0HwPeP3C3iz1ntR8,5060
35
35
  qiskit/circuit/reset.py,sha256=XkV4a0UdCDjKBxlv7O5tPsYtq8lIB2DF-gyLpWAkv9E,1233
36
36
  qiskit/circuit/singleton.py,sha256=ik-Jo6E4RU8GA2NoRG9RnW4CWsI_t6iU1D3xLIsBMDI,30907
@@ -68,14 +68,14 @@ qiskit/circuit/library/overlap.py,sha256=jI8dpcws_bJMivfW31sWdZYiPmueUAz-z2ilaJF
68
68
  qiskit/circuit/library/pauli_evolution.py,sha256=GhnbAzbM3Orzla13TdbMGY8dw53Q8DYJ7chJ46v_cBM,7198
69
69
  qiskit/circuit/library/phase_estimation.py,sha256=z0_0ZakOItk5GbVc_ON20MpoNlJTiwQqYrMRZncXars,6787
70
70
  qiskit/circuit/library/phase_oracle.py,sha256=z5VBuCgjT14yWbrvdBubBoZtbwuccFebRvu6m6s6e14,10372
71
- qiskit/circuit/library/quantum_volume.py,sha256=3yXmq9lDZhb_DT0O4qSfSNbGTVeR_VngfCO8llXkz3M,7490
71
+ qiskit/circuit/library/quantum_volume.py,sha256=LL3rU81shLfgjcVr-Izxz9jAI_jFzBm0rzS6F2-9xaA,7541
72
72
  qiskit/circuit/library/arithmetic/__init__.py,sha256=ewUjjwy0BuTi-gD3rzc62bL5Ss3lQyaHYirJT8ozQX4,1725
73
73
  qiskit/circuit/library/arithmetic/exact_reciprocal.py,sha256=A7tBGLLObgsGXa2_fRxBg8LMAC4tQJwH6XRwOj_nLO8,5448
74
74
  qiskit/circuit/library/arithmetic/functional_pauli_rotations.py,sha256=4iNr7sNKMD6Ah9aWcUg-Ca_12rr1m3U2LYdpxGe9YYs,3729
75
75
  qiskit/circuit/library/arithmetic/integer_comparator.py,sha256=e0dgBDpgWDcVy_QxcAxo8z0buA7714Vpi3uWdC-6A2M,6874
76
76
  qiskit/circuit/library/arithmetic/linear_amplitude_function.py,sha256=-h6b2OEyd8ZBlnX1-8XDHmoX9LQA-tWuQ209AT6y57g,14962
77
77
  qiskit/circuit/library/arithmetic/linear_pauli_rotations.py,sha256=BZCEeWiAEaf-lhEd6nESlfBK3TkrB6eza0juYZ7T5As,9671
78
- qiskit/circuit/library/arithmetic/piecewise_chebyshev.py,sha256=lFNedMoXIpNhupbb3kFk0jKPO97-EI5EUc9k4hUaBtg,19988
78
+ qiskit/circuit/library/arithmetic/piecewise_chebyshev.py,sha256=btF4qyrgnJkTn01Iqx5xQ-5A3DEdd7DeYMM0nbd3U-A,19985
79
79
  qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py,sha256=bu7zhp6uCnlTTQVC0YrxBodP57-wuKadba2GSFgG40Y,15144
80
80
  qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py,sha256=fP7-RsNLZ_TIj9r0PHr9qIgMiYmhGCoXo1RdcIFgcBs,19839
81
81
  qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py,sha256=mARVdvBS0IWrR7v-waNDmLDU5MKTFoahQj22yNCv6d4,13024
@@ -99,7 +99,7 @@ qiskit/circuit/library/boolean_logic/quantum_or.py,sha256=c9K-acK3zcCstkAeCU_FUm
99
99
  qiskit/circuit/library/boolean_logic/quantum_xor.py,sha256=yjawOZdPmFIA1uQCQ3ogJZBUxBySDoJPMICae6Jc-nM,5623
100
100
  qiskit/circuit/library/data_preparation/__init__.py,sha256=PhWw5aWZzw85dLdi9hFMEWOjVYNudtImfXWxjfXQ6fQ,2513
101
101
  qiskit/circuit/library/data_preparation/_z_feature_map.py,sha256=GBCew43gNQr1r5BtXeityMeumBzXGQXqLrOkWJ4r5NM,6834
102
- qiskit/circuit/library/data_preparation/_zz_feature_map.py,sha256=acjFMfoMrG3KRLmTv7nbXSswqJxy-797xuEvzmbhIqw,7166
102
+ qiskit/circuit/library/data_preparation/_zz_feature_map.py,sha256=SsWxUCBBnO1i5AYB3rP9UJ7TanY1K-5DDQLZFXTHPD8,7167
103
103
  qiskit/circuit/library/data_preparation/initializer.py,sha256=immDB43eAbBd0srlaDC6wDmPnksH4VgXJ2T-edHaV40,4544
104
104
  qiskit/circuit/library/data_preparation/pauli_feature_map.py,sha256=W5-MKGivm8BJcub7HIILFDPP-PerXAVXS2zNTMKy7pc,33604
105
105
  qiskit/circuit/library/data_preparation/state_preparation.py,sha256=ZJ1xAp56BEKVLeGUKbNXZLR-0AdCAgQ1_WxDaDsXsfY,14470
@@ -251,13 +251,13 @@ qiskit/converters/dag_to_dagdependency.py,sha256=cfMWYZ4wv3FIV2mjC0sTw1GTP5JQ9Yq
251
251
  qiskit/converters/dag_to_dagdependency_v2.py,sha256=lrRG95XVDxTrC2W3GG09FEMbCwFT33nVNuu6Pq_h58Y,1484
252
252
  qiskit/converters/dagdependency_to_circuit.py,sha256=Epos3tsSEb94Pm4hWT9E89kJOjMmVequJEfbf3NzXTo,1356
253
253
  qiskit/converters/dagdependency_to_dag.py,sha256=OCFDJG2yRKqS8j5PKJXBEtEhakJeNkrCdvt-LgUMahA,1606
254
- qiskit/dagcircuit/__init__.py,sha256=28PM2IY8dnLbOFsWnNJ8qYh8bmJNs9mRqfCJLXZDx6Q,1236
255
- qiskit/dagcircuit/collect_blocks.py,sha256=wImzpcoxxqIvCfrWeU_8IVultlOY7dJOMRYOtnQsCiw,17367
254
+ qiskit/dagcircuit/__init__.py,sha256=hc6r6HxQybczypx3-_09kX28Dq7RooX2GECKaZD_CKM,1437
255
+ qiskit/dagcircuit/collect_blocks.py,sha256=UGG4zYSAyaBp0KLb7F1VNz5R2Yq8oD8p-59MRx5m9yg,17564
256
256
  qiskit/dagcircuit/dagcircuit.py,sha256=uheD2R2pbwvZ2TKn9GVuS_c06hhsU10JnO_UZLvuZSg,1065
257
257
  qiskit/dagcircuit/dagdependency.py,sha256=G1FVH0RhYWfKvHYQI9XjqflAho8ii29_OeYk7dAcTmw,23695
258
258
  qiskit/dagcircuit/dagdependency_v2.py,sha256=rImvOItj7-QU38xEuTRC9ceA3eVeDRYcwgUD6wPQj3I,22714
259
259
  qiskit/dagcircuit/dagdepnode.py,sha256=sIgafYfSl9RpMevWkFYUHgWv8GYpNMnH0VLTrTVbIsY,5415
260
- qiskit/dagcircuit/dagnode.py,sha256=qf9Ld-7zFuLMwGHGaUgp2N_suCzYXTRuResl6ev22DU,7032
260
+ qiskit/dagcircuit/dagnode.py,sha256=r8zRXYB4MfUGekKXbPESs4NDmKNdbU833ws_qeVTnqc,7078
261
261
  qiskit/dagcircuit/exceptions.py,sha256=BnUiInyLFV37xbHgn6GCUvnHLHBNO0uq-3mkNSEN9Mk,1276
262
262
  qiskit/passmanager/__init__.py,sha256=QB7r-1AbUnE2t-XWbDpW5o1_x2lIcHE5vmM9QHiankc,8855
263
263
  qiskit/passmanager/base_tasks.py,sha256=mfoiNH5XDpLdTwrkvKKlIwuLZh_dgDB8dQc3A-VCQm8,7771
@@ -283,7 +283,7 @@ qiskit/primitives/base/sampler_result_v1.py,sha256=SL-9bs-kAk6crFryxkaXjFGq0Ms0Z
283
283
  qiskit/primitives/base/validation_v1.py,sha256=9SjqZnmcU-50LuzYgr5M9T878XH1iHbVPQXeLONdJ00,9874
284
284
  qiskit/primitives/containers/__init__.py,sha256=sRqnNeUDNhzUoGE6uaZz3otFX7_cKnRUcSjgCWqSfLw,950
285
285
  qiskit/primitives/containers/bindings_array.py,sha256=LsEWn-uiY6xEhhZfVB6s5e4mXy9bkEGH77nTCea7hxs,16154
286
- qiskit/primitives/containers/bit_array.py,sha256=hsNOMsXE-sYaWbvO2HtBBqNyozjQydmrOOg-Wq0IzV8,32877
286
+ qiskit/primitives/containers/bit_array.py,sha256=j748kbsAPH7Dg3WdxXSCp9d0iKCO5rnlF51rtdbf5ls,32889
287
287
  qiskit/primitives/containers/data_bin.py,sha256=Cmp9sbeeS4UnQn-q0M7weHOQh0y4l4_Dx_18dTLPF1g,5563
288
288
  qiskit/primitives/containers/estimator_pub.py,sha256=npFzw9LQhEBumvb-T8GlsGdrwKn6pAoGn2N8eytYLDk,8352
289
289
  qiskit/primitives/containers/object_array.py,sha256=A5yppo38ZFzwQuoQVf2YZKJrZHEXonaNr__0uc_GTyQ,3469
@@ -502,9 +502,9 @@ qiskit/transpiler/instruction_durations.py,sha256=0avO10PR7PzOStoeDILKuNHrxYrQb_
502
502
  qiskit/transpiler/layout.py,sha256=Dg-a7spwZ2UPU4atzlJr0EFIIijuOl8YWuNnwB-LJEw,29061
503
503
  qiskit/transpiler/passmanager.py,sha256=9OaiGCamOySCSSVyED_dieUNoeQzfKgWru9JO5M3NtY,21682
504
504
  qiskit/transpiler/passmanager_config.py,sha256=nLIBWaWLD1GbgB0YRhWGtxok4tGn5qKSjOAv6AFKhLE,7601
505
- qiskit/transpiler/target.py,sha256=AHH-Og0O9_nk9jXySuV7aWkOrhleCYbCoXd8PUpequ0,41867
505
+ qiskit/transpiler/target.py,sha256=Wwx340tERp-bw33CNwgSgz9Q2ghr8mmKI9iBeWBB83w,42720
506
506
  qiskit/transpiler/timing_constraints.py,sha256=YMwO31Im7h0Wxgu11ZPyp5uy60l5Ys24Oepa66M4sD8,2441
507
- qiskit/transpiler/passes/__init__.py,sha256=A3-hzmHrPCEkB_vAGxWq62Nlhs_YqF6r6xBPSX5f8NE,7421
507
+ qiskit/transpiler/passes/__init__.py,sha256=YnhcoDW_ZAGeSMFRat3dYIWu9Q1HzTSV72R22tT4o6U,7443
508
508
  qiskit/transpiler/passes/analysis/__init__.py,sha256=ygrX-YFaHzfMLqf53ftQ-2DXO4_4PwSEOHkYZkOuMXg,898
509
509
  qiskit/transpiler/passes/analysis/count_ops.py,sha256=PAALTyNJIRXP-QwiE3H2WhER-nlgf52iro9izZCRLt0,1021
510
510
  qiskit/transpiler/passes/analysis/count_ops_longest_path.py,sha256=DEgzeOLG1OBw0xDPx-hb6E6xQyYjoP7E7c9iLhsR72U,1006
@@ -523,7 +523,7 @@ qiskit/transpiler/passes/basis/unroll_3q_or_more.py,sha256=pPL4DrjC3KivLrfcoruuw
523
523
  qiskit/transpiler/passes/basis/unroll_custom_definitions.py,sha256=PG9mboSrR5Wbbt8gMqtjaiRz9qBjqxsAwjGyvvQkP2k,4519
524
524
  qiskit/transpiler/passes/layout/__init__.py,sha256=BHZJXEnfbSQ404Hh65pbtOqkoD_H6yy9dok1u1_v-P8,1068
525
525
  qiskit/transpiler/passes/layout/_csp_custom_solver.py,sha256=38KoabU0j3br4ArNrjQEw-L08aeN3MNtWK2hTTLLbeM,2813
526
- qiskit/transpiler/passes/layout/apply_layout.py,sha256=tZp2xDr5cC1O1Yi-6uIN121NT1YPTlCDaJUQVHksftU,5768
526
+ qiskit/transpiler/passes/layout/apply_layout.py,sha256=bJmEUk5wosii1T2vgbk29cTXmoHvy7Uky2DI9SOR8Wk,5784
527
527
  qiskit/transpiler/passes/layout/csp_layout.py,sha256=ca9OAncR3kFWzuve88i5MR-F1hrytUDs01ra6oCPsdo,5553
528
528
  qiskit/transpiler/passes/layout/dense_layout.py,sha256=QvET7e1K_tbymmQQd52KymeVvcw1qwbNAjUSvROP79U,7397
529
529
  qiskit/transpiler/passes/layout/disjoint_utils.py,sha256=xKmXMwzs4nwFWNJWQTs0Bz1VLGTh_jMHDpQr9VsNnVw,2324
@@ -610,9 +610,9 @@ qiskit/transpiler/passes/synthesis/aqc_plugin.py,sha256=y3eoBqsHfugseAa2wYvY-5eW
610
610
  qiskit/transpiler/passes/synthesis/clifford_unitary_synth_plugin.py,sha256=nlS9G-YeRnHVmTBG3Jvbz6R4zvCNLVFN83c957nuCY8,3655
611
611
  qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py,sha256=4g3vPCfLeFn3hG2oG-TBmi4khEcPCIU328VkLbRKw84,26453
612
612
  qiskit/transpiler/passes/synthesis/high_level_synthesis.py,sha256=Iq6_PenaX1vhqfO_eA3TS8thIN8jGf29NKgd4ChUsFs,20361
613
- qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=fs6SxEIpK13KCDBCx3PtP2toN0S4bZMEjZAwTWohexI,91826
613
+ qiskit/transpiler/passes/synthesis/hls_plugins.py,sha256=zSK5b8cvrrzBzSidYFzw_q4tfd8szBQMcIvbYgvaajA,93047
614
614
  qiskit/transpiler/passes/synthesis/linear_functions_synthesis.py,sha256=Sit6NoTlFXNBDrDxlyMar9ro7VunRJQxWb5NeG2JTZc,1448
615
- qiskit/transpiler/passes/synthesis/plugin.py,sha256=f8NXKnSgWW6rLLsfzYaBiCqXXpG3REF3lSVRLZWUVOQ,31704
615
+ qiskit/transpiler/passes/synthesis/plugin.py,sha256=Ac3kp-0Bo_FhcVbcLLWVFWrC8co19QVwq1zF7onVC3g,31840
616
616
  qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py,sha256=FYtAnFO1CCP0CdZ3MdC_6tcXpGwQfzd0yzpD4AeraoQ,12765
617
617
  qiskit/transpiler/passes/synthesis/unitary_synthesis.py,sha256=Tbu59DjhviuiQrbENGuA0Y2R7MKrojq1H5PRBomqAtQ,19424
618
618
  qiskit/transpiler/passes/utils/__init__.py,sha256=8QuJZb9g0o2I9j7v8eYmVXcAsFWq3_kUyF4-kh_uArY,1322
@@ -691,9 +691,9 @@ qiskit/visualization/timeline/types.py,sha256=jtpipQWUpahayNPQYKUst4GG6BqauovO0q
691
691
  qiskit/visualization/timeline/plotters/__init__.py,sha256=Klg9a1cSUIQhc815g8OpnD5vO1hcI51L9KlFfKzcuRg,588
692
692
  qiskit/visualization/timeline/plotters/base_plotter.py,sha256=taRkL2ZbyorRUEf6nJS8egdzKW2eznQ3w5oBLtMG_U8,1805
693
693
  qiskit/visualization/timeline/plotters/matplotlib.py,sha256=dreQmQx2lVP5oPfTnF8Dm3x-vGjA4WHHtTIROm4WxDc,7188
694
- qiskit-2.1.0rc1.dist-info/licenses/LICENSE.txt,sha256=pUbmRuPr1gJTTTWZu2c8UmNSntz-pDdKfGR-86NRkok,11619
695
- qiskit-2.1.0rc1.dist-info/METADATA,sha256=1QGMZgtEfDzvKdkkgAJBEdQfon7r9_yQGOzHcCpsHR8,13105
696
- qiskit-2.1.0rc1.dist-info/WHEEL,sha256=DbN7S3h4YQA-y-B21gLEqncqJu4AuNAIA-Y5RA5Bkg0,99
697
- qiskit-2.1.0rc1.dist-info/entry_points.txt,sha256=LgecGP9Htt6gU4ye0nHfANDekQtXNqWb3I8DtkhSGGg,6787
698
- qiskit-2.1.0rc1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
699
- qiskit-2.1.0rc1.dist-info/RECORD,,
694
+ qiskit-2.1.1.dist-info/licenses/LICENSE.txt,sha256=pUbmRuPr1gJTTTWZu2c8UmNSntz-pDdKfGR-86NRkok,11619
695
+ qiskit-2.1.1.dist-info/METADATA,sha256=Ta00-GsQini_sLFuM2iyYm3sgbMU9iv4-xrh0pzZsCM,13102
696
+ qiskit-2.1.1.dist-info/WHEEL,sha256=DbN7S3h4YQA-y-B21gLEqncqJu4AuNAIA-Y5RA5Bkg0,99
697
+ qiskit-2.1.1.dist-info/entry_points.txt,sha256=LgecGP9Htt6gU4ye0nHfANDekQtXNqWb3I8DtkhSGGg,6787
698
+ qiskit-2.1.1.dist-info/top_level.txt,sha256=_vjFXLv7qrHyJJOC2-JXfG54o4XQygW9GuQPxgtSt9Q,7
699
+ qiskit-2.1.1.dist-info/RECORD,,