qiskit 1.4.1__cp39-abi3-win_amd64.whl → 2.0.0__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.
Files changed (462) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +3 -9
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/circuit/__init__.py +35 -10
  5. qiskit/circuit/{add_control.py → _add_control.py} +32 -12
  6. qiskit/circuit/_classical_resource_map.py +5 -3
  7. qiskit/circuit/barrier.py +3 -7
  8. qiskit/circuit/classical/expr/__init__.py +31 -3
  9. qiskit/circuit/classical/expr/constructors.py +236 -28
  10. qiskit/circuit/classical/expr/expr.py +104 -3
  11. qiskit/circuit/classical/expr/visitors.py +75 -0
  12. qiskit/circuit/classical/types/__init__.py +12 -8
  13. qiskit/circuit/classical/types/ordering.py +14 -7
  14. qiskit/circuit/classical/types/types.py +36 -0
  15. qiskit/circuit/commutation_checker.py +34 -7
  16. qiskit/circuit/controlflow/__init__.py +32 -1
  17. qiskit/circuit/controlflow/_builder_utils.py +9 -5
  18. qiskit/circuit/controlflow/box.py +163 -0
  19. qiskit/circuit/controlflow/break_loop.py +1 -1
  20. qiskit/circuit/controlflow/builder.py +139 -39
  21. qiskit/circuit/controlflow/continue_loop.py +1 -3
  22. qiskit/circuit/controlflow/control_flow.py +10 -0
  23. qiskit/circuit/controlflow/for_loop.py +2 -1
  24. qiskit/circuit/controlflow/if_else.py +3 -16
  25. qiskit/circuit/controlflow/switch_case.py +2 -8
  26. qiskit/circuit/controlflow/while_loop.py +2 -7
  27. qiskit/circuit/controlledgate.py +2 -4
  28. qiskit/circuit/delay.py +40 -11
  29. qiskit/circuit/duration.py +0 -15
  30. qiskit/circuit/gate.py +2 -4
  31. qiskit/circuit/instruction.py +2 -141
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +469 -154
  34. qiskit/circuit/library/arithmetic/__init__.py +16 -10
  35. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  36. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
  37. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
  38. qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
  39. qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
  40. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
  41. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
  42. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
  43. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
  44. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
  45. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
  46. qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
  47. qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
  48. qiskit/circuit/library/bit_flip_oracle.py +130 -0
  49. qiskit/circuit/library/blueprintcircuit.py +52 -16
  50. qiskit/circuit/library/data_preparation/initializer.py +1 -1
  51. qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
  52. qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
  53. qiskit/circuit/library/generalized_gates/gms.py +1 -1
  54. qiskit/circuit/library/generalized_gates/isometry.py +1 -1
  55. qiskit/circuit/library/generalized_gates/pauli.py +1 -2
  56. qiskit/circuit/library/generalized_gates/uc.py +97 -7
  57. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
  58. qiskit/circuit/library/generalized_gates/unitary.py +4 -2
  59. qiskit/circuit/library/graph_state.py +1 -0
  60. qiskit/circuit/library/hamiltonian_gate.py +1 -1
  61. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  62. qiskit/circuit/library/n_local/n_local.py +1 -1
  63. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  64. qiskit/circuit/library/overlap.py +2 -2
  65. qiskit/circuit/library/pauli_evolution.py +39 -24
  66. qiskit/circuit/library/phase_oracle.py +130 -51
  67. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  68. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  69. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  70. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  71. qiskit/circuit/library/standard_gates/h.py +4 -9
  72. qiskit/circuit/library/standard_gates/i.py +2 -2
  73. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  74. qiskit/circuit/library/standard_gates/p.py +15 -34
  75. qiskit/circuit/library/standard_gates/r.py +7 -10
  76. qiskit/circuit/library/standard_gates/rx.py +5 -15
  77. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  78. qiskit/circuit/library/standard_gates/ry.py +5 -17
  79. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  80. qiskit/circuit/library/standard_gates/rz.py +5 -17
  81. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  82. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  83. qiskit/circuit/library/standard_gates/s.py +6 -15
  84. qiskit/circuit/library/standard_gates/swap.py +4 -11
  85. qiskit/circuit/library/standard_gates/sx.py +7 -12
  86. qiskit/circuit/library/standard_gates/t.py +6 -7
  87. qiskit/circuit/library/standard_gates/u.py +2 -10
  88. qiskit/circuit/library/standard_gates/u1.py +5 -16
  89. qiskit/circuit/library/standard_gates/u2.py +2 -6
  90. qiskit/circuit/library/standard_gates/u3.py +3 -11
  91. qiskit/circuit/library/standard_gates/x.py +14 -62
  92. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  94. qiskit/circuit/library/standard_gates/y.py +4 -9
  95. qiskit/circuit/library/standard_gates/z.py +5 -15
  96. qiskit/circuit/measure.py +11 -2
  97. qiskit/circuit/parameterexpression.py +11 -0
  98. qiskit/circuit/quantumcircuit.py +890 -564
  99. qiskit/circuit/random/utils.py +12 -6
  100. qiskit/circuit/reset.py +5 -2
  101. qiskit/circuit/singleton.py +5 -11
  102. qiskit/circuit/store.py +0 -8
  103. qiskit/circuit/tools/pi_check.py +3 -0
  104. qiskit/compiler/__init__.py +1 -7
  105. qiskit/compiler/transpiler.py +38 -196
  106. qiskit/converters/circuit_to_dag.py +6 -4
  107. qiskit/converters/circuit_to_dagdependency.py +0 -2
  108. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  109. qiskit/converters/circuit_to_gate.py +1 -1
  110. qiskit/converters/circuit_to_instruction.py +16 -29
  111. qiskit/converters/dag_to_circuit.py +7 -8
  112. qiskit/converters/dag_to_dagdependency.py +0 -1
  113. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  114. qiskit/converters/dagdependency_to_circuit.py +0 -6
  115. qiskit/converters/dagdependency_to_dag.py +0 -6
  116. qiskit/dagcircuit/collect_blocks.py +32 -20
  117. qiskit/dagcircuit/dagdependency.py +3 -37
  118. qiskit/dagcircuit/dagdependency_v2.py +5 -82
  119. qiskit/dagcircuit/dagnode.py +14 -2
  120. qiskit/passmanager/__init__.py +24 -6
  121. qiskit/passmanager/passmanager.py +26 -24
  122. qiskit/primitives/__init__.py +44 -35
  123. qiskit/primitives/backend_estimator_v2.py +102 -23
  124. qiskit/primitives/backend_sampler_v2.py +5 -20
  125. qiskit/primitives/base/__init__.py +4 -4
  126. qiskit/primitives/base/base_estimator.py +77 -82
  127. qiskit/primitives/base/base_primitive_job.py +2 -2
  128. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  129. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  130. qiskit/primitives/base/base_sampler.py +52 -60
  131. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  132. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  133. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  134. qiskit/primitives/containers/bindings_array.py +3 -1
  135. qiskit/primitives/containers/bit_array.py +23 -0
  136. qiskit/primitives/containers/data_bin.py +3 -1
  137. qiskit/primitives/containers/observables_array.py +19 -2
  138. qiskit/primitives/statevector_sampler.py +6 -8
  139. qiskit/primitives/utils.py +14 -189
  140. qiskit/providers/__init__.py +4 -130
  141. qiskit/providers/backend.py +11 -314
  142. qiskit/providers/basic_provider/__init__.py +3 -1
  143. qiskit/providers/basic_provider/basic_provider.py +29 -9
  144. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  145. qiskit/providers/exceptions.py +0 -33
  146. qiskit/providers/fake_provider/__init__.py +0 -37
  147. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  148. qiskit/qasm2/__init__.py +21 -6
  149. qiskit/qasm2/export.py +2 -10
  150. qiskit/qasm2/parse.py +11 -25
  151. qiskit/qasm3/__init__.py +5 -1
  152. qiskit/qasm3/ast.py +44 -0
  153. qiskit/qasm3/exporter.py +65 -27
  154. qiskit/qasm3/printer.py +35 -4
  155. qiskit/qpy/__init__.py +162 -19
  156. qiskit/qpy/binary_io/__init__.py +0 -1
  157. qiskit/qpy/binary_io/circuits.py +96 -116
  158. qiskit/qpy/binary_io/parse_sympy_repr.py +121 -0
  159. qiskit/qpy/binary_io/schedules.py +61 -388
  160. qiskit/qpy/binary_io/value.py +159 -33
  161. qiskit/qpy/common.py +10 -7
  162. qiskit/qpy/formats.py +41 -0
  163. qiskit/qpy/interface.py +29 -62
  164. qiskit/qpy/type_keys.py +58 -221
  165. qiskit/quantum_info/analysis/distance.py +3 -1
  166. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  167. qiskit/quantum_info/operators/operator.py +6 -2
  168. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  169. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  170. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  171. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  172. qiskit/quantum_info/states/densitymatrix.py +16 -6
  173. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  174. qiskit/quantum_info/states/statevector.py +16 -6
  175. qiskit/result/__init__.py +5 -17
  176. qiskit/result/models.py +18 -11
  177. qiskit/result/result.py +38 -134
  178. qiskit/result/sampled_expval.py +1 -2
  179. qiskit/result/utils.py +3 -4
  180. qiskit/synthesis/__init__.py +21 -1
  181. qiskit/synthesis/arithmetic/__init__.py +3 -1
  182. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  183. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  184. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  185. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  186. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  187. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  188. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  189. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  190. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  191. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  192. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  193. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  194. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  195. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -0
  196. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  197. qiskit/synthesis/evolution/product_formula.py +44 -35
  198. qiskit/synthesis/evolution/qdrift.py +17 -24
  199. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  200. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  201. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  202. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  203. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  204. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  205. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  206. qiskit/synthesis/two_qubit/__init__.py +1 -0
  207. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  208. qiskit/transpiler/__init__.py +32 -232
  209. qiskit/transpiler/basepasses.py +20 -51
  210. qiskit/transpiler/layout.py +1 -1
  211. qiskit/transpiler/passes/__init__.py +4 -40
  212. qiskit/transpiler/passes/basis/basis_translator.py +5 -4
  213. qiskit/transpiler/passes/basis/decompose.py +1 -15
  214. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  215. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  216. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  217. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  218. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
  219. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  220. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  221. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  222. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  223. qiskit/transpiler/passes/optimization/__init__.py +2 -3
  224. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  225. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  226. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  227. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  228. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  229. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  230. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  231. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  232. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  233. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  234. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  235. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  236. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  237. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  238. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +3 -2
  239. qiskit/transpiler/passes/routing/__init__.py +0 -1
  240. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  241. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  242. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  243. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  244. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  245. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  246. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  247. qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
  248. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
  249. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
  250. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  251. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  252. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  253. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
  254. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  255. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  256. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  257. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  258. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  259. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  260. qiskit/transpiler/passes/utils/__init__.py +0 -1
  261. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  262. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  263. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  264. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  265. qiskit/transpiler/passmanager.py +13 -0
  266. qiskit/transpiler/passmanager_config.py +5 -81
  267. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  268. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  269. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
  270. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  272. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  273. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  274. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  275. qiskit/transpiler/target.py +78 -524
  276. qiskit/user_config.py +8 -4
  277. qiskit/utils/__init__.py +13 -12
  278. qiskit/utils/deprecation.py +4 -112
  279. qiskit/utils/optionals.py +11 -4
  280. qiskit/utils/parallel.py +214 -87
  281. qiskit/utils/units.py +4 -1
  282. qiskit/visualization/__init__.py +3 -7
  283. qiskit/visualization/array.py +4 -1
  284. qiskit/visualization/bloch.py +1 -1
  285. qiskit/visualization/circuit/_utils.py +19 -19
  286. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  287. qiskit/visualization/circuit/matplotlib.py +13 -23
  288. qiskit/visualization/circuit/text.py +7 -3
  289. qiskit/visualization/counts_visualization.py +4 -0
  290. qiskit/visualization/dag_visualization.py +2 -1
  291. qiskit/visualization/gate_map.py +39 -154
  292. qiskit/visualization/library.py +4 -1
  293. qiskit/visualization/pass_manager_visualization.py +6 -2
  294. qiskit/visualization/state_visualization.py +19 -2
  295. qiskit/visualization/timeline/core.py +19 -13
  296. qiskit/visualization/timeline/interface.py +19 -18
  297. qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
  298. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
  299. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/RECORD +303 -449
  300. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/WHEEL +1 -1
  301. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
  302. qiskit/assembler/__init__.py +0 -42
  303. qiskit/assembler/assemble_circuits.py +0 -451
  304. qiskit/assembler/assemble_schedules.py +0 -367
  305. qiskit/assembler/disassemble.py +0 -310
  306. qiskit/assembler/run_config.py +0 -77
  307. qiskit/circuit/bit.py +0 -106
  308. qiskit/circuit/classicalfunction/__init__.py +0 -152
  309. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  310. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  311. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  312. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  313. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  314. qiskit/circuit/classicalfunction/types.py +0 -18
  315. qiskit/circuit/classicalfunction/utils.py +0 -91
  316. qiskit/circuit/classicalregister.py +0 -57
  317. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  318. qiskit/circuit/quantumregister.py +0 -75
  319. qiskit/circuit/register.py +0 -246
  320. qiskit/compiler/assembler.py +0 -689
  321. qiskit/compiler/scheduler.py +0 -109
  322. qiskit/compiler/sequencer.py +0 -71
  323. qiskit/primitives/backend_estimator.py +0 -486
  324. qiskit/primitives/backend_sampler.py +0 -222
  325. qiskit/primitives/estimator.py +0 -172
  326. qiskit/primitives/sampler.py +0 -162
  327. qiskit/providers/backend_compat.py +0 -507
  328. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  329. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  330. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  333. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  335. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  336. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  337. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  338. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  339. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  341. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  343. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  344. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  345. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  346. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  347. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  348. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  349. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  350. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  351. qiskit/providers/fake_provider/fake_1q.py +0 -91
  352. qiskit/providers/fake_provider/fake_backend.py +0 -165
  353. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  354. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  355. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  356. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  357. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  358. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  359. qiskit/providers/models/__init__.py +0 -89
  360. qiskit/providers/models/backendconfiguration.py +0 -1040
  361. qiskit/providers/models/backendproperties.py +0 -535
  362. qiskit/providers/models/backendstatus.py +0 -104
  363. qiskit/providers/models/jobstatus.py +0 -77
  364. qiskit/providers/models/pulsedefaults.py +0 -305
  365. qiskit/providers/provider.py +0 -95
  366. qiskit/pulse/__init__.py +0 -158
  367. qiskit/pulse/builder.py +0 -2262
  368. qiskit/pulse/calibration_entries.py +0 -381
  369. qiskit/pulse/channels.py +0 -227
  370. qiskit/pulse/configuration.py +0 -245
  371. qiskit/pulse/exceptions.py +0 -45
  372. qiskit/pulse/filters.py +0 -309
  373. qiskit/pulse/instruction_schedule_map.py +0 -424
  374. qiskit/pulse/instructions/__init__.py +0 -67
  375. qiskit/pulse/instructions/acquire.py +0 -150
  376. qiskit/pulse/instructions/delay.py +0 -71
  377. qiskit/pulse/instructions/directives.py +0 -154
  378. qiskit/pulse/instructions/frequency.py +0 -135
  379. qiskit/pulse/instructions/instruction.py +0 -270
  380. qiskit/pulse/instructions/phase.py +0 -152
  381. qiskit/pulse/instructions/play.py +0 -99
  382. qiskit/pulse/instructions/reference.py +0 -100
  383. qiskit/pulse/instructions/snapshot.py +0 -82
  384. qiskit/pulse/library/__init__.py +0 -97
  385. qiskit/pulse/library/continuous.py +0 -430
  386. qiskit/pulse/library/pulse.py +0 -148
  387. qiskit/pulse/library/samplers/__init__.py +0 -15
  388. qiskit/pulse/library/samplers/decorators.py +0 -295
  389. qiskit/pulse/library/samplers/strategies.py +0 -71
  390. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  391. qiskit/pulse/library/waveform.py +0 -136
  392. qiskit/pulse/macros.py +0 -262
  393. qiskit/pulse/parameter_manager.py +0 -445
  394. qiskit/pulse/parser.py +0 -314
  395. qiskit/pulse/reference_manager.py +0 -58
  396. qiskit/pulse/schedule.py +0 -1854
  397. qiskit/pulse/transforms/__init__.py +0 -106
  398. qiskit/pulse/transforms/alignments.py +0 -406
  399. qiskit/pulse/transforms/base_transforms.py +0 -71
  400. qiskit/pulse/transforms/canonicalization.py +0 -498
  401. qiskit/pulse/transforms/dag.py +0 -122
  402. qiskit/pulse/utils.py +0 -149
  403. qiskit/qobj/__init__.py +0 -75
  404. qiskit/qobj/common.py +0 -81
  405. qiskit/qobj/converters/__init__.py +0 -18
  406. qiskit/qobj/converters/lo_config.py +0 -177
  407. qiskit/qobj/converters/pulse_instruction.py +0 -897
  408. qiskit/qobj/pulse_qobj.py +0 -709
  409. qiskit/qobj/qasm_qobj.py +0 -708
  410. qiskit/qobj/utils.py +0 -46
  411. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  412. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  413. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  414. qiskit/result/mitigation/utils.py +0 -217
  415. qiskit/scheduler/__init__.py +0 -40
  416. qiskit/scheduler/config.py +0 -37
  417. qiskit/scheduler/lowering.py +0 -187
  418. qiskit/scheduler/methods/__init__.py +0 -15
  419. qiskit/scheduler/methods/basic.py +0 -140
  420. qiskit/scheduler/schedule_circuit.py +0 -69
  421. qiskit/scheduler/sequence.py +0 -104
  422. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  423. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  424. qiskit/transpiler/passes/calibration/builders.py +0 -20
  425. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  426. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  427. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  428. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  429. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  430. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  431. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  432. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  433. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  434. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  435. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  436. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  437. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  438. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  439. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  440. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  441. qiskit/utils/deprecate_pulse.py +0 -119
  442. qiskit/utils/multiprocessing.py +0 -56
  443. qiskit/visualization/pulse_v2/__init__.py +0 -21
  444. qiskit/visualization/pulse_v2/core.py +0 -901
  445. qiskit/visualization/pulse_v2/device_info.py +0 -173
  446. qiskit/visualization/pulse_v2/drawings.py +0 -253
  447. qiskit/visualization/pulse_v2/events.py +0 -254
  448. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  449. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  450. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  451. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  452. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  453. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  454. qiskit/visualization/pulse_v2/interface.py +0 -459
  455. qiskit/visualization/pulse_v2/layouts.py +0 -387
  456. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  457. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  458. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  459. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  460. qiskit/visualization/pulse_v2/types.py +0 -242
  461. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
  462. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/top_level.txt +0 -0
qiskit/qpy/type_keys.py CHANGED
@@ -30,6 +30,7 @@ from qiskit.circuit import (
30
30
  CASE_DEFAULT,
31
31
  Clbit,
32
32
  ClassicalRegister,
33
+ Duration,
33
34
  )
34
35
  from qiskit.circuit.annotated_operation import AnnotatedOperation, Modifier
35
36
  from qiskit.circuit.classical import expr, types
@@ -37,36 +38,6 @@ from qiskit.circuit.library import PauliEvolutionGate
37
38
  from qiskit.circuit.parameter import Parameter
38
39
  from qiskit.circuit.parameterexpression import ParameterExpression
39
40
  from qiskit.circuit.parametervector import ParameterVectorElement
40
- from qiskit.pulse.channels import (
41
- Channel,
42
- DriveChannel,
43
- MeasureChannel,
44
- ControlChannel,
45
- AcquireChannel,
46
- MemorySlot,
47
- RegisterSlot,
48
- )
49
- from qiskit.pulse.configuration import Discriminator, Kernel
50
- from qiskit.pulse.instructions import (
51
- Acquire,
52
- Play,
53
- Delay,
54
- SetFrequency,
55
- ShiftFrequency,
56
- SetPhase,
57
- ShiftPhase,
58
- RelativeBarrier,
59
- TimeBlockade,
60
- Reference,
61
- )
62
- from qiskit.pulse.library import Waveform, SymbolicPulse
63
- from qiskit.pulse.schedule import ScheduleBlock
64
- from qiskit.pulse.transforms.alignments import (
65
- AlignLeft,
66
- AlignRight,
67
- AlignSequential,
68
- AlignEquispaced,
69
- )
70
41
  from qiskit.qpy import exceptions
71
42
 
72
43
 
@@ -168,7 +139,7 @@ class Condition(IntEnum):
168
139
 
169
140
 
170
141
  class Container(TypeKeyBase):
171
- """Typle key enum for container-like object."""
142
+ """Type key enum for container-like object."""
172
143
 
173
144
  RANGE = b"r"
174
145
  TUPLE = b"t"
@@ -220,125 +191,13 @@ class CircuitInstruction(TypeKeyBase):
220
191
  raise NotImplementedError
221
192
 
222
193
 
223
- class ScheduleAlignment(TypeKeyBase):
224
- """Type key enum for schedule block alignment context object."""
225
-
226
- LEFT = b"l"
227
- RIGHT = b"r"
228
- SEQUENTIAL = b"s"
229
- EQUISPACED = b"e"
230
-
231
- # AlignFunc is not serializable due to the callable in context parameter
232
-
233
- @classmethod
234
- def assign(cls, obj):
235
- if isinstance(obj, AlignLeft):
236
- return cls.LEFT
237
- if isinstance(obj, AlignRight):
238
- return cls.RIGHT
239
- if isinstance(obj, AlignSequential):
240
- return cls.SEQUENTIAL
241
- if isinstance(obj, AlignEquispaced):
242
- return cls.EQUISPACED
243
-
244
- raise exceptions.QpyError(
245
- f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
246
- )
247
-
248
- @classmethod
249
- def retrieve(cls, type_key):
250
- if type_key == cls.LEFT:
251
- return AlignLeft
252
- if type_key == cls.RIGHT:
253
- return AlignRight
254
- if type_key == cls.SEQUENTIAL:
255
- return AlignSequential
256
- if type_key == cls.EQUISPACED:
257
- return AlignEquispaced
258
-
259
- raise exceptions.QpyError(
260
- f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace."
261
- )
262
-
263
-
264
- class ScheduleInstruction(TypeKeyBase):
265
- """Type key enum for schedule instruction object."""
266
-
267
- ACQUIRE = b"a"
268
- PLAY = b"p"
269
- DELAY = b"d"
270
- SET_FREQUENCY = b"f"
271
- SHIFT_FREQUENCY = b"g"
272
- SET_PHASE = b"q"
273
- SHIFT_PHASE = b"r"
274
- BARRIER = b"b"
275
- TIME_BLOCKADE = b"t"
276
- REFERENCE = b"y"
277
-
278
- # 's' is reserved by ScheduleBlock, i.e. block can be nested as an element.
279
- # Call instruction is not supported by QPY.
280
- # This instruction has been excluded from ScheduleBlock instructions with
281
- # qiskit-terra/#8005 and new instruction Reference will be added instead.
282
- # Call is only applied to Schedule which is not supported by QPY.
283
- # Also snapshot is not suppored because of its limited usecase.
284
-
285
- @classmethod
286
- def assign(cls, obj):
287
- if isinstance(obj, Acquire):
288
- return cls.ACQUIRE
289
- if isinstance(obj, Play):
290
- return cls.PLAY
291
- if isinstance(obj, Delay):
292
- return cls.DELAY
293
- if isinstance(obj, SetFrequency):
294
- return cls.SET_FREQUENCY
295
- if isinstance(obj, ShiftFrequency):
296
- return cls.SHIFT_FREQUENCY
297
- if isinstance(obj, SetPhase):
298
- return cls.SET_PHASE
299
- if isinstance(obj, ShiftPhase):
300
- return cls.SHIFT_PHASE
301
- if isinstance(obj, RelativeBarrier):
302
- return cls.BARRIER
303
- if isinstance(obj, TimeBlockade):
304
- return cls.TIME_BLOCKADE
305
- if isinstance(obj, Reference):
306
- return cls.REFERENCE
307
-
308
- raise exceptions.QpyError(
309
- f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
310
- )
311
-
312
- @classmethod
313
- def retrieve(cls, type_key):
314
- if type_key == cls.ACQUIRE:
315
- return Acquire
316
- if type_key == cls.PLAY:
317
- return Play
318
- if type_key == cls.DELAY:
319
- return Delay
320
- if type_key == cls.SET_FREQUENCY:
321
- return SetFrequency
322
- if type_key == cls.SHIFT_FREQUENCY:
323
- return ShiftFrequency
324
- if type_key == cls.SET_PHASE:
325
- return SetPhase
326
- if type_key == cls.SHIFT_PHASE:
327
- return ShiftPhase
328
- if type_key == cls.BARRIER:
329
- return RelativeBarrier
330
- if type_key == cls.TIME_BLOCKADE:
331
- return TimeBlockade
332
- if type_key == cls.REFERENCE:
333
- return Reference
334
-
335
- raise exceptions.QpyError(
336
- f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace."
337
- )
338
-
339
-
340
194
  class ScheduleOperand(TypeKeyBase):
341
- """Type key enum for schedule instruction operand object."""
195
+ """Type key enum for schedule instruction operand object.
196
+
197
+ Note: This class is kept post pulse-removal to allow reading of
198
+ legacy payloads containing pulse gates without breaking the entire
199
+ load flow.
200
+ """
342
201
 
343
202
  WAVEFORM = b"w"
344
203
  SYMBOLIC_PULSE = b"s"
@@ -353,92 +212,27 @@ class ScheduleOperand(TypeKeyBase):
353
212
  OPERAND_STR = b"o"
354
213
 
355
214
  @classmethod
356
- def assign(cls, obj):
357
- if isinstance(obj, Waveform):
358
- return cls.WAVEFORM
359
- if isinstance(obj, SymbolicPulse):
360
- return cls.SYMBOLIC_PULSE
361
- if isinstance(obj, Channel):
362
- return cls.CHANNEL
363
- if isinstance(obj, str):
364
- return cls.OPERAND_STR
365
- if isinstance(obj, Kernel):
366
- return cls.KERNEL
367
- if isinstance(obj, Discriminator):
368
- return cls.DISCRIMINATOR
369
-
370
- raise exceptions.QpyError(
371
- f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
372
- )
373
-
374
- @classmethod
375
- def retrieve(cls, type_key):
215
+ def assign(cls, _):
376
216
  raise NotImplementedError
377
217
 
378
-
379
- class ScheduleChannel(TypeKeyBase):
380
- """Type key enum for schedule channel object."""
381
-
382
- DRIVE = b"d"
383
- CONTROL = b"c"
384
- MEASURE = b"m"
385
- ACQURE = b"a"
386
- MEM_SLOT = b"e"
387
- REG_SLOT = b"r"
388
-
389
- # SnapShot channel is not defined because of its limited usecase.
390
-
391
- @classmethod
392
- def assign(cls, obj):
393
- if isinstance(obj, DriveChannel):
394
- return cls.DRIVE
395
- if isinstance(obj, ControlChannel):
396
- return cls.CONTROL
397
- if isinstance(obj, MeasureChannel):
398
- return cls.MEASURE
399
- if isinstance(obj, AcquireChannel):
400
- return cls.ACQURE
401
- if isinstance(obj, MemorySlot):
402
- return cls.MEM_SLOT
403
- if isinstance(obj, RegisterSlot):
404
- return cls.REG_SLOT
405
-
406
- raise exceptions.QpyError(
407
- f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
408
- )
409
-
410
218
  @classmethod
411
- def retrieve(cls, type_key):
412
- if type_key == cls.DRIVE:
413
- return DriveChannel
414
- if type_key == cls.CONTROL:
415
- return ControlChannel
416
- if type_key == cls.MEASURE:
417
- return MeasureChannel
418
- if type_key == cls.ACQURE:
419
- return AcquireChannel
420
- if type_key == cls.MEM_SLOT:
421
- return MemorySlot
422
- if type_key == cls.REG_SLOT:
423
- return RegisterSlot
424
-
425
- raise exceptions.QpyError(
426
- f"A class corresponding to type key '{type_key}' is not found in {cls.__name__} namespace."
427
- )
219
+ def retrieve(cls, _):
220
+ raise NotImplementedError
428
221
 
429
222
 
430
223
  class Program(TypeKeyBase):
431
- """Typle key enum for program that QPY supports."""
224
+ """Type key enum for program that QPY supports."""
432
225
 
433
226
  CIRCUIT = b"q"
227
+ # This is left for backward compatibility, for identifying payloads of type `ScheduleBlock`
228
+ # and raising accordingly. `ScheduleBlock` support has been removed in Qiskit 2.0 as part
229
+ # of the pulse package removal in that version.
434
230
  SCHEDULE_BLOCK = b"s"
435
231
 
436
232
  @classmethod
437
233
  def assign(cls, obj):
438
234
  if isinstance(obj, QuantumCircuit):
439
235
  return cls.CIRCUIT
440
- if isinstance(obj, ScheduleBlock):
441
- return cls.SCHEDULE_BLOCK
442
236
 
443
237
  raise exceptions.QpyError(
444
238
  f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
@@ -453,6 +247,7 @@ class Expression(TypeKeyBase):
453
247
  """Type keys for the ``EXPRESSION`` QPY item."""
454
248
 
455
249
  VAR = b"x"
250
+ STRETCH = b"s"
456
251
  VALUE = b"v"
457
252
  CAST = b"c"
458
253
  UNARY = b"u"
@@ -479,6 +274,8 @@ class ExprVarDeclaration(TypeKeyBase):
479
274
  INPUT = b"I"
480
275
  CAPTURE = b"C"
481
276
  LOCAL = b"L"
277
+ STRETCH_CAPTURE = b"A"
278
+ STRETCH_LOCAL = b"O"
482
279
 
483
280
  @classmethod
484
281
  def assign(cls, obj):
@@ -494,6 +291,8 @@ class ExprType(TypeKeyBase):
494
291
 
495
292
  BOOL = b"b"
496
293
  UINT = b"u"
294
+ FLOAT = b"f"
295
+ DURATION = b"d"
497
296
 
498
297
  @classmethod
499
298
  def assign(cls, obj):
@@ -538,6 +337,8 @@ class ExprValue(TypeKeyBase):
538
337
 
539
338
  BOOL = b"b"
540
339
  INT = b"i"
340
+ FLOAT = b"f"
341
+ DURATION = b"t"
541
342
 
542
343
  @classmethod
543
344
  def assign(cls, obj):
@@ -545,6 +346,42 @@ class ExprValue(TypeKeyBase):
545
346
  return cls.BOOL
546
347
  if isinstance(obj, int):
547
348
  return cls.INT
349
+ if isinstance(obj, float):
350
+ return cls.FLOAT
351
+ if isinstance(obj, Duration):
352
+ return cls.DURATION
353
+ raise exceptions.QpyError(
354
+ f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
355
+ )
356
+
357
+ @classmethod
358
+ def retrieve(cls, type_key):
359
+ raise NotImplementedError
360
+
361
+
362
+ class CircuitDuration(TypeKeyBase):
363
+ """Type keys for the ``DURATION`` QPY item."""
364
+
365
+ DT = b"t"
366
+ NS = b"n"
367
+ US = b"u"
368
+ MS = b"m"
369
+ S = b"s"
370
+
371
+ @classmethod
372
+ def assign(cls, obj):
373
+ if isinstance(obj, Duration):
374
+ unit = obj.unit()
375
+ if unit == "dt":
376
+ return cls.DT
377
+ if unit == "ns":
378
+ return cls.NS
379
+ if unit == "us":
380
+ return cls.US
381
+ if unit == "ms":
382
+ return cls.MS
383
+ if unit == "s":
384
+ return cls.S
548
385
  raise exceptions.QpyError(
549
386
  f"Object type '{type(obj)}' is not supported in {cls.__name__} namespace."
550
387
  )
@@ -74,7 +74,9 @@ def hellinger_fidelity(dist_p: dict, dist_q: dict) -> float:
74
74
 
75
75
  Example:
76
76
 
77
- .. code-block::
77
+ .. plot::
78
+ :include-source:
79
+ :nofigs:
78
80
 
79
81
  from qiskit import QuantumCircuit
80
82
  from qiskit.quantum_info.analysis import hellinger_fidelity
@@ -46,7 +46,9 @@ class CNOTDihedral(BaseOperator, AdjointMixin):
46
46
  The phase polynomial is a polynomial of degree at most 3,
47
47
  in :math:`N` variables, whose coefficients are in the ring Z_8 with 8 elements.
48
48
 
49
- .. code-block::
49
+ .. plot::
50
+ :include-source:
51
+ :nofigs:
50
52
 
51
53
  from qiskit import QuantumCircuit
52
54
  from qiskit.quantum_info import CNOTDihedral
@@ -61,7 +61,9 @@ class Operator(LinearOp):
61
61
  :math:`|\psi\rangle=|0\rangle (\rho = |0\rangle\langle 0|)` changes it to the
62
62
  one state :math:`|\psi\rangle=|1\rangle (\rho = |1\rangle\langle 1|)`:
63
63
 
64
- .. code-block:: python
64
+ .. plot::
65
+ :include-source:
66
+ :nofigs:
65
67
 
66
68
  >>> import numpy as np
67
69
  >>> from qiskit.quantum_info import Operator
@@ -204,6 +206,8 @@ class Operator(LinearOp):
204
206
 
205
207
  Raises:
206
208
  ValueError: when an invalid output method is selected.
209
+ MissingOptionalLibrary: If SymPy isn't installed and ``'latex'`` or
210
+ ``'latex_source'`` is selected for ``output``.
207
211
 
208
212
  """
209
213
  # pylint: disable=cyclic-import
@@ -236,7 +240,7 @@ class Operator(LinearOp):
236
240
  def _ipython_display_(self):
237
241
  out = self.draw()
238
242
  if isinstance(out, str):
239
- print(out)
243
+ print(out) # pylint: disable=bad-builtin
240
244
  else:
241
245
  from IPython.display import display
242
246
 
@@ -72,7 +72,9 @@ class Clifford(BaseOperator, AdjointMixin, Operation):
72
72
  be obtained by calling the :meth:`to_dict` method. This representation is
73
73
  also used if a Clifford object is printed as in the following example
74
74
 
75
- .. code-block::
75
+ .. plot::
76
+ :include-source:
77
+ :nofigs:
76
78
 
77
79
  from qiskit import QuantumCircuit
78
80
  from qiskit.quantum_info import Clifford
@@ -142,7 +142,9 @@ class Pauli(BasePauli):
142
142
 
143
143
  For example
144
144
 
145
- .. code-block:: python
145
+ .. plot::
146
+ :include-source:
147
+ :nofigs:
146
148
 
147
149
  from qiskit.quantum_info import Pauli
148
150
 
@@ -583,7 +585,7 @@ class Pauli(BasePauli):
583
585
  other (Pauli or Clifford or QuantumCircuit): The Clifford operator to evolve by.
584
586
  qargs (list): a list of qubits to apply the Clifford to.
585
587
  frame (string): ``'h'`` for Heisenberg (default) or ``'s'`` for
586
- Schrödinger framework.
588
+ Schrödinger framework.
587
589
 
588
590
  Returns:
589
591
  Pauli: the Pauli :math:`C^\dagger.P.C` (Heisenberg picture)
@@ -54,7 +54,10 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
54
54
 
55
55
  For example,
56
56
 
57
- .. code-block::
57
+ .. plot::
58
+ :include-source:
59
+ :nofigs:
60
+ :context: reset
58
61
 
59
62
  import numpy as np
60
63
 
@@ -93,7 +96,10 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
93
96
  operator which accepts integer, lists, or slices for selecting subsets
94
97
  of PauliList. If integer is given, it returns Pauli not PauliList.
95
98
 
96
- .. code-block::
99
+ .. plot::
100
+ :include-source:
101
+ :nofigs:
102
+ :context:
97
103
 
98
104
  pauli_list = PauliList(["XX", "ZZ", "IZ"])
99
105
  print("Integer: ", repr(pauli_list[1]))
@@ -542,7 +548,9 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
542
548
 
543
549
  Consider sorting all a random ordering of all 2-qubit Paulis
544
550
 
545
- .. code-block::
551
+ .. plot::
552
+ :include-source:
553
+ :nofigs:
546
554
 
547
555
  from numpy.random import shuffle
548
556
  from qiskit.quantum_info.operators import PauliList
@@ -593,7 +601,9 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
593
601
 
594
602
  **Example**
595
603
 
596
- .. code-block::
604
+ .. plot::
605
+ :include-source:
606
+ :nofigs:
597
607
 
598
608
  from qiskit.quantum_info.operators import PauliList
599
609
 
@@ -1214,7 +1224,9 @@ class PauliList(BasePauli, LinearMixin, GroupMixin):
1214
1224
  qubit_wise (bool): whether the commutation rule is applied to the whole operator,
1215
1225
  or on a per-qubit basis. For example:
1216
1226
 
1217
- .. code-block:: python
1227
+ .. plot::
1228
+ :include-source:
1229
+ :nofigs:
1218
1230
 
1219
1231
  >>> from qiskit.quantum_info import PauliList
1220
1232
  >>> op = PauliList(["XX", "YY", "IZ", "ZZ"])
@@ -30,6 +30,7 @@ from qiskit._accelerate.sparse_pauli_op import (
30
30
  to_matrix_sparse,
31
31
  unordered_unique,
32
32
  )
33
+ from qiskit._accelerate.sparse_observable import SparseObservable
33
34
  from qiskit.circuit.parameter import Parameter
34
35
  from qiskit.circuit.parameterexpression import ParameterExpression
35
36
  from qiskit.circuit.parametertable import ParameterView
@@ -69,7 +70,9 @@ class SparsePauliOp(LinearOp):
69
70
  configure this by passing ``np.ndarray`` with a different dtype. For example, a parameterized
70
71
  :class:`SparsePauliOp` can be made as follows:
71
72
 
72
- .. code-block:: python
73
+ .. plot::
74
+ :include-source:
75
+ :nofigs:
73
76
 
74
77
  >>> import numpy as np
75
78
  >>> from qiskit.circuit import ParameterVector
@@ -539,7 +542,9 @@ class SparsePauliOp(LinearOp):
539
542
 
540
543
  Here is an example of how to use SparsePauliOp argsort.
541
544
 
542
- .. code-block::
545
+ .. plot::
546
+ :include-source:
547
+ :nofigs:
543
548
 
544
549
  import numpy as np
545
550
  from qiskit.quantum_info import SparsePauliOp
@@ -608,7 +613,9 @@ class SparsePauliOp(LinearOp):
608
613
 
609
614
  Here is an example of how to use SparsePauliOp sort.
610
615
 
611
- .. code-block::
616
+ .. plot::
617
+ :include-source:
618
+ :nofigs:
612
619
 
613
620
  import numpy as np
614
621
  from qiskit.quantum_info import SparsePauliOp
@@ -801,7 +808,9 @@ class SparsePauliOp(LinearOp):
801
808
 
802
809
  can be constructed as
803
810
 
804
- .. code-block:: python
811
+ .. plot::
812
+ :include-source:
813
+ :nofigs:
805
814
 
806
815
  from qiskit.quantum_info import SparsePauliOp
807
816
 
@@ -867,7 +876,9 @@ class SparsePauliOp(LinearOp):
867
876
 
868
877
  can be constructed as
869
878
 
870
- .. code-block:: python
879
+ .. plot::
880
+ :include-source:
881
+ :nofigs:
871
882
 
872
883
  from qiskit.quantum_info import SparsePauliOp
873
884
 
@@ -919,6 +930,27 @@ class SparsePauliOp(LinearOp):
919
930
  paulis = PauliList(labels)
920
931
  return SparsePauliOp(paulis, coeffs, copy=False)
921
932
 
933
+ @staticmethod
934
+ def from_sparse_observable(obs: SparseObservable) -> SparsePauliOp:
935
+ r"""Initialize from a :class:`.SparseObservable`.
936
+
937
+ .. warning::
938
+
939
+ A :class:`.SparseObservable` can efficiently represent eigenstate projectors
940
+ (such as :math:`|0\langle\rangle 0|`), but a :class:`.SparsePauliOp` **cannot**.
941
+ If the input ``obs`` has :math:`n` single-qubit projectors, the resulting
942
+ :class:`.SparsePauliOp` will use :math:`2^n` terms, which is an exponentially
943
+ expensive representation that can quickly run out of memory.
944
+
945
+ Args:
946
+ obs: The :class:`.SparseObservable` to convert.
947
+
948
+ Returns:
949
+ A :class:`.SparsePauliOp` version of the observable.
950
+ """
951
+ as_sparse_list = obs.as_paulis().to_sparse_list()
952
+ return SparsePauliOp.from_sparse_list(as_sparse_list, obs.num_qubits)
953
+
922
954
  def to_list(self, array: bool = False):
923
955
  """Convert to a list Pauli string labels and coefficients.
924
956
 
@@ -1072,7 +1104,9 @@ class SparsePauliOp(LinearOp):
1072
1104
  qubit_wise (bool): whether the commutation rule is applied to the whole operator,
1073
1105
  or on a per-qubit basis. For example:
1074
1106
 
1075
- .. code-block:: python
1107
+ .. plot::
1108
+ :include-source:
1109
+ :nofigs:
1076
1110
 
1077
1111
  >>> from qiskit.quantum_info import SparsePauliOp
1078
1112
  >>> op = SparsePauliOp.from_list([("XX", 2), ("YY", 1), ("IZ",2j), ("ZZ",1j)])
@@ -180,7 +180,7 @@ class DensityMatrix(QuantumState, TolerancesMixin):
180
180
  def _ipython_display_(self):
181
181
  out = self.draw()
182
182
  if isinstance(out, str):
183
- print(out)
183
+ print(out) # pylint: disable=bad-builtin
184
184
  else:
185
185
  from IPython.display import display
186
186
 
@@ -443,7 +443,9 @@ class DensityMatrix(QuantumState, TolerancesMixin):
443
443
  with :math:`\\rho_1=|+\\rangle\\!\\langle+|`,
444
444
  :math:`\\rho_0=|0\\rangle\\!\\langle0|`.
445
445
 
446
- .. code-block::
446
+ .. plot::
447
+ :include-source:
448
+ :nofigs:
447
449
 
448
450
  from qiskit.quantum_info import DensityMatrix
449
451
 
@@ -470,7 +472,9 @@ class DensityMatrix(QuantumState, TolerancesMixin):
470
472
  We can also permute the order of qubits in the ``qargs`` list
471
473
  to change the qubit position in the probabilities output
472
474
 
473
- .. code-block::
475
+ .. plot::
476
+ :include-source:
477
+ :nofigs:
474
478
 
475
479
  from qiskit.quantum_info import DensityMatrix
476
480
 
@@ -649,7 +653,9 @@ class DensityMatrix(QuantumState, TolerancesMixin):
649
653
  The ket-form of a 2-qubit density matrix
650
654
  :math:`rho = |-\rangle\!\langle -|\otimes |0\rangle\!\langle 0|`
651
655
 
652
- .. code-block::
656
+ .. plot::
657
+ :include-source:
658
+ :nofigs:
653
659
 
654
660
  from qiskit.quantum_info import DensityMatrix
655
661
 
@@ -668,7 +674,9 @@ class DensityMatrix(QuantumState, TolerancesMixin):
668
674
  For non-qubit subsystems the integer range can go from 0 to 9. For
669
675
  example in a qutrit system
670
676
 
671
- .. code-block::
677
+ .. plot::
678
+ :include-source:
679
+ :nofigs:
672
680
 
673
681
  import numpy as np
674
682
  from qiskit.quantum_info import DensityMatrix
@@ -689,7 +697,9 @@ class DensityMatrix(QuantumState, TolerancesMixin):
689
697
  following example is for a 20-dimensional system consisting of
690
698
  a qubit and 10-dimensional qudit.
691
699
 
692
- .. code-block::
700
+ .. plot::
701
+ :include-source:
702
+ :nofigs:
693
703
 
694
704
  import numpy as np
695
705
  from qiskit.quantum_info import DensityMatrix