qiskit 1.1.0rc1__cp38-abi3-win_amd64.whl → 1.1.2__cp38-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.
Files changed (69) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/_accelerate.pyd +0 -0
  3. qiskit/assembler/__init__.py +5 -10
  4. qiskit/circuit/__init__.py +21 -153
  5. qiskit/circuit/_classical_resource_map.py +3 -0
  6. qiskit/circuit/classical/expr/__init__.py +1 -1
  7. qiskit/circuit/classical/types/__init__.py +5 -4
  8. qiskit/circuit/classicalfunction/__init__.py +9 -0
  9. qiskit/circuit/library/__init__.py +3 -19
  10. qiskit/circuit/library/data_preparation/pauli_feature_map.py +1 -1
  11. qiskit/circuit/library/n_local/two_local.py +1 -1
  12. qiskit/circuit/library/standard_gates/x.py +2 -0
  13. qiskit/circuit/parameterexpression.py +3 -0
  14. qiskit/circuit/parametervector.py +22 -16
  15. qiskit/circuit/quantumcircuit.py +1100 -200
  16. qiskit/converters/__init__.py +17 -2
  17. qiskit/dagcircuit/dagcircuit.py +8 -1
  18. qiskit/passmanager/passmanager.py +11 -11
  19. qiskit/primitives/__init__.py +15 -9
  20. qiskit/primitives/containers/__init__.py +1 -0
  21. qiskit/primitives/containers/bit_array.py +6 -2
  22. qiskit/primitives/containers/shape.py +3 -3
  23. qiskit/providers/__init__.py +49 -17
  24. qiskit/providers/backend.py +0 -6
  25. qiskit/providers/basic_provider/__init__.py +2 -23
  26. qiskit/providers/fake_provider/__init__.py +1 -1
  27. qiskit/providers/fake_provider/generic_backend_v2.py +5 -0
  28. qiskit/providers/models/__init__.py +2 -2
  29. qiskit/pulse/builder.py +2 -2
  30. qiskit/pulse/schedule.py +3 -3
  31. qiskit/qasm2/parse.py +8 -0
  32. qiskit/qasm3/exporter.py +2 -2
  33. qiskit/qobj/converters/pulse_instruction.py +6 -6
  34. qiskit/qpy/__init__.py +60 -62
  35. qiskit/qpy/binary_io/value.py +1 -1
  36. qiskit/quantum_info/operators/symplectic/pauli.py +18 -13
  37. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +8 -4
  38. qiskit/result/__init__.py +6 -0
  39. qiskit/scheduler/__init__.py +10 -1
  40. qiskit/scheduler/methods/__init__.py +1 -8
  41. qiskit/synthesis/__init__.py +1 -6
  42. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +1 -1
  43. qiskit/synthesis/discrete_basis/solovay_kitaev.py +22 -12
  44. qiskit/transpiler/__init__.py +5 -5
  45. qiskit/transpiler/layout.py +3 -3
  46. qiskit/transpiler/passes/__init__.py +4 -2
  47. qiskit/transpiler/passes/basis/basis_translator.py +2 -2
  48. qiskit/transpiler/passes/layout/vf2_layout.py +10 -4
  49. qiskit/transpiler/passes/layout/vf2_utils.py +2 -2
  50. qiskit/transpiler/passes/optimization/collect_cliffords.py +6 -15
  51. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +8 -1
  52. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/pauli_2q_evolution_commutation.py +5 -1
  53. qiskit/transpiler/passes/routing/star_prerouting.py +5 -5
  54. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +3 -0
  55. qiskit/transpiler/preset_passmanagers/__init__.py +29 -3
  56. qiskit/transpiler/target.py +1 -1
  57. qiskit/utils/__init__.py +3 -2
  58. qiskit/utils/parallel.py +24 -15
  59. qiskit/visualization/bloch.py +44 -1
  60. qiskit/visualization/dag_visualization.py +10 -3
  61. qiskit/visualization/gate_map.py +9 -1
  62. qiskit/visualization/pass_manager_visualization.py +9 -9
  63. qiskit/visualization/pulse_v2/device_info.py +58 -31
  64. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/METADATA +18 -18
  65. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/RECORD +69 -69
  66. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/WHEEL +1 -1
  67. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/LICENSE.txt +0 -0
  68. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/entry_points.txt +0 -0
  69. {qiskit-1.1.0rc1.dist-info → qiskit-1.1.2.dist-info}/top_level.txt +0 -0
@@ -176,7 +176,7 @@ def staged_pass_manager_drawer(pass_manager, filename=None, style=None, raw=Fals
176
176
  stage = getattr(pass_manager, st)
177
177
 
178
178
  if stage is not None:
179
- stagegraph = pydot.Cluster(str(st), label=str(st), fontname="helvetica", labeljust="l")
179
+ stagegraph = pydot.Cluster(str(st), fontname="helvetica", label=str(st), labeljust="l")
180
180
  for controller_group in stage.to_flow_controller().tasks:
181
181
  subgraph, component_id, prev_node = draw_subgraph(
182
182
  controller_group, component_id, style, prev_node, idx
@@ -201,7 +201,7 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
201
201
  label += f"{controller_group.__class__.__name__}"
202
202
 
203
203
  # create the subgraph for this controller
204
- subgraph = pydot.Cluster(str(component_id), label=label, fontname="helvetica", labeljust="l")
204
+ subgraph = pydot.Cluster(str(component_id), fontname="helvetica", label=label, labeljust="l")
205
205
  component_id += 1
206
206
 
207
207
  if isinstance(controller_group, BaseController):
@@ -233,19 +233,19 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
233
233
  # TODO recursively inject subgraph into subgraph
234
234
  node = pydot.Node(
235
235
  str(component_id),
236
- label="Nested flow controller",
237
236
  color="k",
238
- shape="rectangle",
239
237
  fontname="helvetica",
238
+ label="Nested flow controller",
239
+ shape="rectangle",
240
240
  )
241
241
  else:
242
242
  # label is the name of the pass
243
243
  node = pydot.Node(
244
244
  str(component_id),
245
- label=str(type(task).__name__),
246
245
  color=_get_node_color(task, style),
247
- shape="rectangle",
248
246
  fontname="helvetica",
247
+ label=str(type(task).__name__),
248
+ shape="rectangle",
249
249
  )
250
250
 
251
251
  subgraph.add_node(node)
@@ -268,12 +268,12 @@ def draw_subgraph(controller_group, component_id, style, prev_node, idx):
268
268
 
269
269
  input_node = pydot.Node(
270
270
  component_id,
271
- label=arg,
272
271
  color="black",
273
- shape="ellipse",
272
+ fontname="helvetica",
274
273
  fontsize=10,
274
+ label=arg,
275
+ shape="ellipse",
275
276
  style=nd_style,
276
- fontname="helvetica",
277
277
  )
278
278
  subgraph.add_node(input_node)
279
279
  component_id += 1
@@ -40,7 +40,7 @@ from typing import Dict, List, Union, Optional
40
40
 
41
41
  from qiskit import pulse
42
42
  from qiskit.providers import BackendConfigurationError
43
- from qiskit.providers.backend import Backend
43
+ from qiskit.providers.backend import Backend, BackendV2
44
44
 
45
45
 
46
46
  class DrawerBackendInfo(ABC):
@@ -106,40 +106,67 @@ class OpenPulseBackendInfo(DrawerBackendInfo):
106
106
  Returns:
107
107
  OpenPulseBackendInfo: New configured instance.
108
108
  """
109
- configuration = backend.configuration()
110
- defaults = backend.defaults()
111
-
112
- # load name
113
- name = backend.name()
114
-
115
- # load cycle time
116
- dt = configuration.dt
117
-
118
- # load frequencies
119
109
  chan_freqs = {}
120
-
121
- chan_freqs.update(
122
- {pulse.DriveChannel(qind): freq for qind, freq in enumerate(defaults.qubit_freq_est)}
123
- )
124
- chan_freqs.update(
125
- {pulse.MeasureChannel(qind): freq for qind, freq in enumerate(defaults.meas_freq_est)}
126
- )
127
- for qind, u_lo_mappers in enumerate(configuration.u_channel_lo):
128
- temp_val = 0.0 + 0.0j
129
- for u_lo_mapper in u_lo_mappers:
130
- temp_val += defaults.qubit_freq_est[u_lo_mapper.q] * u_lo_mapper.scale
131
- chan_freqs[pulse.ControlChannel(qind)] = temp_val.real
132
-
133
- # load qubit channel mapping
134
110
  qubit_channel_map = defaultdict(list)
135
- for qind in range(configuration.n_qubits):
136
- qubit_channel_map[qind].append(configuration.drive(qubit=qind))
137
- qubit_channel_map[qind].append(configuration.measure(qubit=qind))
138
- for tind in range(configuration.n_qubits):
111
+
112
+ if hasattr(backend, "configuration") and hasattr(backend, "defaults"):
113
+ configuration = backend.configuration()
114
+ defaults = backend.defaults()
115
+
116
+ name = configuration.backend_name
117
+ dt = configuration.dt
118
+
119
+ # load frequencies
120
+ chan_freqs.update(
121
+ {
122
+ pulse.DriveChannel(qind): freq
123
+ for qind, freq in enumerate(defaults.qubit_freq_est)
124
+ }
125
+ )
126
+ chan_freqs.update(
127
+ {
128
+ pulse.MeasureChannel(qind): freq
129
+ for qind, freq in enumerate(defaults.meas_freq_est)
130
+ }
131
+ )
132
+ for qind, u_lo_mappers in enumerate(configuration.u_channel_lo):
133
+ temp_val = 0.0 + 0.0j
134
+ for u_lo_mapper in u_lo_mappers:
135
+ temp_val += defaults.qubit_freq_est[u_lo_mapper.q] * u_lo_mapper.scale
136
+ chan_freqs[pulse.ControlChannel(qind)] = temp_val.real
137
+
138
+ # load qubit channel mapping
139
+ for qind in range(configuration.n_qubits):
140
+ qubit_channel_map[qind].append(configuration.drive(qubit=qind))
141
+ qubit_channel_map[qind].append(configuration.measure(qubit=qind))
142
+ for tind in range(configuration.n_qubits):
143
+ try:
144
+ qubit_channel_map[qind].extend(configuration.control(qubits=(qind, tind)))
145
+ except BackendConfigurationError:
146
+ pass
147
+ elif isinstance(backend, BackendV2):
148
+ # Pure V2 model doesn't contain channel frequency information.
149
+ name = backend.name
150
+ dt = backend.dt
151
+
152
+ # load qubit channel mapping
153
+ for qind in range(backend.num_qubits):
154
+ # channels are NotImplemented by default so we must catch arbitrary error.
155
+ try:
156
+ qubit_channel_map[qind].append(backend.drive_channel(qind))
157
+ except Exception: # pylint: disable=broad-except
158
+ pass
139
159
  try:
140
- qubit_channel_map[qind].extend(configuration.control(qubits=(qind, tind)))
141
- except BackendConfigurationError:
160
+ qubit_channel_map[qind].append(backend.measure_channel(qind))
161
+ except Exception: # pylint: disable=broad-except
142
162
  pass
163
+ for tind in range(backend.num_qubits):
164
+ try:
165
+ qubit_channel_map[qind].extend(backend.control_channel(qubits=(qind, tind)))
166
+ except Exception: # pylint: disable=broad-except
167
+ pass
168
+ else:
169
+ raise RuntimeError("Backend object not yet supported")
143
170
 
144
171
  return OpenPulseBackendInfo(
145
172
  name=name, dt=dt, channel_frequency_map=chan_freqs, qubit_channel_map=qubit_channel_map
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qiskit
3
- Version: 1.1.0rc1
3
+ Version: 1.1.2
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
@@ -28,29 +28,29 @@ Classifier: Topic :: Scientific/Engineering
28
28
  Requires-Python: >=3.8
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE.txt
31
- Requires-Dist: rustworkx >=0.14.0
32
- Requires-Dist: numpy <3,>=1.17
33
- Requires-Dist: scipy >=1.5
34
- Requires-Dist: sympy >=1.3
35
- Requires-Dist: dill >=0.3
36
- Requires-Dist: python-dateutil >=2.8.0
37
- Requires-Dist: stevedore >=3.0.0
31
+ Requires-Dist: rustworkx>=0.14.0
32
+ Requires-Dist: numpy<3,>=1.17
33
+ Requires-Dist: scipy>=1.5
34
+ Requires-Dist: sympy>=1.3
35
+ Requires-Dist: dill>=0.3
36
+ Requires-Dist: python-dateutil>=2.8.0
37
+ Requires-Dist: stevedore>=3.0.0
38
38
  Requires-Dist: typing-extensions
39
- Requires-Dist: symengine >=0.11
39
+ Requires-Dist: symengine>=0.11
40
40
  Provides-Extra: all
41
- Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization] ; extra == 'all'
41
+ Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
42
42
  Provides-Extra: crosstalk-pass
43
- Requires-Dist: z3-solver >=4.7 ; extra == 'crosstalk-pass'
43
+ Requires-Dist: z3-solver>=4.7; extra == "crosstalk-pass"
44
44
  Provides-Extra: csp-layout-pass
45
- Requires-Dist: python-constraint >=1.4 ; extra == 'csp-layout-pass'
45
+ Requires-Dist: python-constraint>=1.4; extra == "csp-layout-pass"
46
46
  Provides-Extra: qasm3-import
47
- Requires-Dist: qiskit-qasm3-import >=0.1.0 ; extra == 'qasm3-import'
47
+ Requires-Dist: qiskit-qasm3-import>=0.1.0; extra == "qasm3-import"
48
48
  Provides-Extra: visualization
49
- Requires-Dist: matplotlib >=3.3 ; extra == 'visualization'
50
- Requires-Dist: pydot ; extra == 'visualization'
51
- Requires-Dist: Pillow >=4.2.1 ; extra == 'visualization'
52
- Requires-Dist: pylatexenc >=1.4 ; extra == 'visualization'
53
- Requires-Dist: seaborn >=0.9.0 ; extra == 'visualization'
49
+ Requires-Dist: matplotlib>=3.3; extra == "visualization"
50
+ Requires-Dist: pydot; extra == "visualization"
51
+ Requires-Dist: Pillow>=4.2.1; extra == "visualization"
52
+ Requires-Dist: pylatexenc>=1.4; extra == "visualization"
53
+ Requires-Dist: seaborn>=0.9.0; extra == "visualization"
54
54
 
55
55
  # Qiskit
56
56