qiskit 1.4.2__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0__cp39-abi3-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (459) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +3 -9
  3. qiskit/_accelerate.abi3.so +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 +7 -1
  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/compiler/__init__.py +1 -7
  104. qiskit/compiler/transpiler.py +38 -196
  105. qiskit/converters/circuit_to_dag.py +6 -4
  106. qiskit/converters/circuit_to_dagdependency.py +0 -2
  107. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  108. qiskit/converters/circuit_to_gate.py +1 -1
  109. qiskit/converters/circuit_to_instruction.py +16 -29
  110. qiskit/converters/dag_to_circuit.py +7 -8
  111. qiskit/converters/dag_to_dagdependency.py +0 -1
  112. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  113. qiskit/converters/dagdependency_to_circuit.py +0 -6
  114. qiskit/converters/dagdependency_to_dag.py +0 -6
  115. qiskit/dagcircuit/collect_blocks.py +32 -20
  116. qiskit/dagcircuit/dagdependency.py +3 -37
  117. qiskit/dagcircuit/dagdependency_v2.py +5 -82
  118. qiskit/dagcircuit/dagnode.py +14 -2
  119. qiskit/passmanager/__init__.py +24 -6
  120. qiskit/passmanager/passmanager.py +26 -24
  121. qiskit/primitives/__init__.py +44 -35
  122. qiskit/primitives/backend_estimator_v2.py +102 -23
  123. qiskit/primitives/backend_sampler_v2.py +5 -20
  124. qiskit/primitives/base/__init__.py +4 -4
  125. qiskit/primitives/base/base_estimator.py +77 -82
  126. qiskit/primitives/base/base_primitive_job.py +2 -2
  127. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  128. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  129. qiskit/primitives/base/base_sampler.py +52 -60
  130. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  131. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  132. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  133. qiskit/primitives/containers/bindings_array.py +3 -1
  134. qiskit/primitives/containers/bit_array.py +23 -0
  135. qiskit/primitives/containers/data_bin.py +3 -1
  136. qiskit/primitives/containers/observables_array.py +19 -2
  137. qiskit/primitives/statevector_sampler.py +6 -8
  138. qiskit/primitives/utils.py +14 -189
  139. qiskit/providers/__init__.py +4 -130
  140. qiskit/providers/backend.py +11 -314
  141. qiskit/providers/basic_provider/__init__.py +3 -1
  142. qiskit/providers/basic_provider/basic_provider.py +29 -9
  143. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  144. qiskit/providers/exceptions.py +0 -33
  145. qiskit/providers/fake_provider/__init__.py +0 -37
  146. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  147. qiskit/qasm2/__init__.py +21 -6
  148. qiskit/qasm2/export.py +2 -10
  149. qiskit/qasm2/parse.py +11 -25
  150. qiskit/qasm3/__init__.py +5 -1
  151. qiskit/qasm3/ast.py +44 -0
  152. qiskit/qasm3/exporter.py +65 -27
  153. qiskit/qasm3/printer.py +35 -4
  154. qiskit/qpy/__init__.py +162 -19
  155. qiskit/qpy/binary_io/__init__.py +0 -1
  156. qiskit/qpy/binary_io/circuits.py +98 -130
  157. qiskit/qpy/binary_io/schedules.py +69 -439
  158. qiskit/qpy/binary_io/value.py +154 -31
  159. qiskit/qpy/common.py +10 -7
  160. qiskit/qpy/formats.py +41 -0
  161. qiskit/qpy/interface.py +34 -81
  162. qiskit/qpy/type_keys.py +58 -221
  163. qiskit/quantum_info/analysis/distance.py +3 -1
  164. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  165. qiskit/quantum_info/operators/operator.py +6 -2
  166. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  167. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  168. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  169. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  170. qiskit/quantum_info/states/densitymatrix.py +16 -6
  171. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  172. qiskit/quantum_info/states/statevector.py +16 -6
  173. qiskit/result/__init__.py +5 -17
  174. qiskit/result/models.py +18 -11
  175. qiskit/result/result.py +38 -134
  176. qiskit/result/sampled_expval.py +1 -2
  177. qiskit/result/utils.py +3 -4
  178. qiskit/synthesis/__init__.py +21 -1
  179. qiskit/synthesis/arithmetic/__init__.py +3 -1
  180. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  182. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  183. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  184. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  185. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  186. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  188. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  189. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  190. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  191. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  192. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  193. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  194. qiskit/synthesis/evolution/product_formula.py +44 -35
  195. qiskit/synthesis/evolution/qdrift.py +17 -24
  196. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  197. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  198. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  199. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  200. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  201. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  202. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  203. qiskit/synthesis/two_qubit/__init__.py +1 -0
  204. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  205. qiskit/transpiler/__init__.py +32 -232
  206. qiskit/transpiler/basepasses.py +20 -51
  207. qiskit/transpiler/layout.py +1 -1
  208. qiskit/transpiler/passes/__init__.py +4 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +5 -4
  210. qiskit/transpiler/passes/basis/decompose.py +1 -15
  211. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  212. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  213. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
  216. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  217. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  218. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  219. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  220. qiskit/transpiler/passes/optimization/__init__.py +2 -3
  221. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  222. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  224. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  225. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  226. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  227. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  228. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  229. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  230. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  231. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  232. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  233. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  234. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  235. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  236. qiskit/transpiler/passes/routing/__init__.py +0 -1
  237. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  238. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  239. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  240. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  241. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  242. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  243. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  244. qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
  247. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  248. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  249. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  250. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
  251. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  252. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  253. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  254. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  255. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  256. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  257. qiskit/transpiler/passes/utils/__init__.py +0 -1
  258. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  259. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  260. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  261. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  262. qiskit/transpiler/passmanager.py +13 -0
  263. qiskit/transpiler/passmanager_config.py +5 -81
  264. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  265. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  266. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
  267. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  268. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  269. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  270. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  272. qiskit/transpiler/target.py +78 -524
  273. qiskit/user_config.py +8 -4
  274. qiskit/utils/__init__.py +13 -12
  275. qiskit/utils/deprecation.py +4 -112
  276. qiskit/utils/optionals.py +11 -4
  277. qiskit/utils/parallel.py +214 -87
  278. qiskit/utils/units.py +4 -1
  279. qiskit/visualization/__init__.py +3 -7
  280. qiskit/visualization/array.py +4 -1
  281. qiskit/visualization/bloch.py +1 -1
  282. qiskit/visualization/circuit/_utils.py +19 -19
  283. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  284. qiskit/visualization/circuit/matplotlib.py +13 -23
  285. qiskit/visualization/circuit/text.py +7 -3
  286. qiskit/visualization/counts_visualization.py +4 -0
  287. qiskit/visualization/dag_visualization.py +2 -1
  288. qiskit/visualization/gate_map.py +39 -154
  289. qiskit/visualization/library.py +4 -1
  290. qiskit/visualization/pass_manager_visualization.py +6 -2
  291. qiskit/visualization/state_visualization.py +19 -2
  292. qiskit/visualization/timeline/core.py +19 -13
  293. qiskit/visualization/timeline/interface.py +19 -18
  294. qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
  295. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
  296. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/RECORD +300 -447
  297. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/WHEEL +2 -1
  298. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
  299. qiskit/assembler/__init__.py +0 -42
  300. qiskit/assembler/assemble_circuits.py +0 -451
  301. qiskit/assembler/assemble_schedules.py +0 -367
  302. qiskit/assembler/disassemble.py +0 -310
  303. qiskit/assembler/run_config.py +0 -77
  304. qiskit/circuit/bit.py +0 -106
  305. qiskit/circuit/classicalfunction/__init__.py +0 -152
  306. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  307. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  308. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  309. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  310. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  311. qiskit/circuit/classicalfunction/types.py +0 -18
  312. qiskit/circuit/classicalfunction/utils.py +0 -91
  313. qiskit/circuit/classicalregister.py +0 -57
  314. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  315. qiskit/circuit/quantumregister.py +0 -75
  316. qiskit/circuit/register.py +0 -246
  317. qiskit/compiler/assembler.py +0 -689
  318. qiskit/compiler/scheduler.py +0 -109
  319. qiskit/compiler/sequencer.py +0 -71
  320. qiskit/primitives/backend_estimator.py +0 -486
  321. qiskit/primitives/backend_sampler.py +0 -222
  322. qiskit/primitives/estimator.py +0 -172
  323. qiskit/primitives/sampler.py +0 -162
  324. qiskit/providers/backend_compat.py +0 -507
  325. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  330. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  333. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  337. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  338. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  340. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  341. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  342. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  346. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  347. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  348. qiskit/providers/fake_provider/fake_1q.py +0 -91
  349. qiskit/providers/fake_provider/fake_backend.py +0 -165
  350. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  351. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  352. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  353. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  354. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  355. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  356. qiskit/providers/models/__init__.py +0 -89
  357. qiskit/providers/models/backendconfiguration.py +0 -1040
  358. qiskit/providers/models/backendproperties.py +0 -535
  359. qiskit/providers/models/backendstatus.py +0 -104
  360. qiskit/providers/models/jobstatus.py +0 -77
  361. qiskit/providers/models/pulsedefaults.py +0 -305
  362. qiskit/providers/provider.py +0 -95
  363. qiskit/pulse/__init__.py +0 -158
  364. qiskit/pulse/builder.py +0 -2262
  365. qiskit/pulse/calibration_entries.py +0 -381
  366. qiskit/pulse/channels.py +0 -227
  367. qiskit/pulse/configuration.py +0 -245
  368. qiskit/pulse/exceptions.py +0 -45
  369. qiskit/pulse/filters.py +0 -309
  370. qiskit/pulse/instruction_schedule_map.py +0 -424
  371. qiskit/pulse/instructions/__init__.py +0 -67
  372. qiskit/pulse/instructions/acquire.py +0 -150
  373. qiskit/pulse/instructions/delay.py +0 -71
  374. qiskit/pulse/instructions/directives.py +0 -154
  375. qiskit/pulse/instructions/frequency.py +0 -135
  376. qiskit/pulse/instructions/instruction.py +0 -270
  377. qiskit/pulse/instructions/phase.py +0 -152
  378. qiskit/pulse/instructions/play.py +0 -99
  379. qiskit/pulse/instructions/reference.py +0 -100
  380. qiskit/pulse/instructions/snapshot.py +0 -82
  381. qiskit/pulse/library/__init__.py +0 -97
  382. qiskit/pulse/library/continuous.py +0 -430
  383. qiskit/pulse/library/pulse.py +0 -148
  384. qiskit/pulse/library/samplers/__init__.py +0 -15
  385. qiskit/pulse/library/samplers/decorators.py +0 -295
  386. qiskit/pulse/library/samplers/strategies.py +0 -71
  387. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  388. qiskit/pulse/library/waveform.py +0 -136
  389. qiskit/pulse/macros.py +0 -262
  390. qiskit/pulse/parameter_manager.py +0 -445
  391. qiskit/pulse/parser.py +0 -314
  392. qiskit/pulse/reference_manager.py +0 -58
  393. qiskit/pulse/schedule.py +0 -1854
  394. qiskit/pulse/transforms/__init__.py +0 -106
  395. qiskit/pulse/transforms/alignments.py +0 -406
  396. qiskit/pulse/transforms/base_transforms.py +0 -71
  397. qiskit/pulse/transforms/canonicalization.py +0 -498
  398. qiskit/pulse/transforms/dag.py +0 -122
  399. qiskit/pulse/utils.py +0 -149
  400. qiskit/qobj/__init__.py +0 -75
  401. qiskit/qobj/common.py +0 -81
  402. qiskit/qobj/converters/__init__.py +0 -18
  403. qiskit/qobj/converters/lo_config.py +0 -177
  404. qiskit/qobj/converters/pulse_instruction.py +0 -897
  405. qiskit/qobj/pulse_qobj.py +0 -709
  406. qiskit/qobj/qasm_qobj.py +0 -708
  407. qiskit/qobj/utils.py +0 -46
  408. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  409. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  410. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  411. qiskit/result/mitigation/utils.py +0 -217
  412. qiskit/scheduler/__init__.py +0 -40
  413. qiskit/scheduler/config.py +0 -37
  414. qiskit/scheduler/lowering.py +0 -187
  415. qiskit/scheduler/methods/__init__.py +0 -15
  416. qiskit/scheduler/methods/basic.py +0 -140
  417. qiskit/scheduler/schedule_circuit.py +0 -69
  418. qiskit/scheduler/sequence.py +0 -104
  419. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  420. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  421. qiskit/transpiler/passes/calibration/builders.py +0 -20
  422. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  423. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  424. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  425. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  426. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  427. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  428. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  429. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  430. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  431. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  432. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  433. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  434. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  435. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  436. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  437. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  438. qiskit/utils/deprecate_pulse.py +0 -119
  439. qiskit/utils/multiprocessing.py +0 -56
  440. qiskit/visualization/pulse_v2/__init__.py +0 -21
  441. qiskit/visualization/pulse_v2/core.py +0 -901
  442. qiskit/visualization/pulse_v2/device_info.py +0 -173
  443. qiskit/visualization/pulse_v2/drawings.py +0 -253
  444. qiskit/visualization/pulse_v2/events.py +0 -254
  445. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  446. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  447. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  448. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  449. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  450. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  451. qiskit/visualization/pulse_v2/interface.py +0 -459
  452. qiskit/visualization/pulse_v2/layouts.py +0 -387
  453. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  454. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  455. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  456. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  457. qiskit/visualization/pulse_v2/types.py +0 -242
  458. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
  459. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/top_level.txt +0 -0
@@ -24,7 +24,7 @@ import numpy as np
24
24
  from qiskit.exceptions import QiskitError
25
25
  from qiskit.quantum_info.operators.op_shape import OpShape
26
26
  from qiskit.quantum_info.operators.operator import Operator
27
- from qiskit.quantum_info.operators.symplectic import Clifford, Pauli, PauliList
27
+ from qiskit.quantum_info.operators.symplectic import Clifford, Pauli, PauliList, SparsePauliOp
28
28
  from qiskit.quantum_info.operators.symplectic.clifford_circuits import _append_x
29
29
  from qiskit.quantum_info.states.quantum_state import QuantumState
30
30
  from qiskit.circuit import QuantumCircuit, Instruction
@@ -38,7 +38,9 @@ class StabilizerState(QuantumState):
38
38
  Stabilizer simulator using the convention from reference [1].
39
39
  Based on the internal class :class:`~qiskit.quantum_info.Clifford`.
40
40
 
41
- .. code-block::
41
+ .. plot::
42
+ :include-source:
43
+ :nofigs:
42
44
 
43
45
  from qiskit import QuantumCircuit
44
46
  from qiskit.quantum_info import StabilizerState, Pauli
@@ -67,7 +69,9 @@ class StabilizerState(QuantumState):
67
69
  Given a list of stabilizers, :meth:`qiskit.quantum_info.StabilizerState.from_stabilizer_list`
68
70
  returns a state stabilized by the list
69
71
 
70
- .. code-block:: python
72
+ .. plot::
73
+ :include-source:
74
+ :nofigs:
71
75
 
72
76
  from qiskit.quantum_info import StabilizerState
73
77
 
@@ -255,7 +259,34 @@ class StabilizerState(QuantumState):
255
259
  ret._data = self.clifford.compose(other.clifford, qargs=qargs)
256
260
  return ret
257
261
 
258
- def expectation_value(self, oper: Pauli, qargs: None | list = None) -> complex:
262
+ def expectation_value(self, oper: Pauli | SparsePauliOp, qargs: None | list = None) -> complex:
263
+ """Compute the expectation value of a Pauli or SparsePauliOp operator.
264
+
265
+ Args:
266
+ oper: A Pauli or SparsePauliOp operator to evaluate the expectation value.
267
+ qargs: Subsystems to apply the operator on.
268
+
269
+ Returns:
270
+ The expectation value.
271
+
272
+ Raises:
273
+ QiskitError: if oper is not a Pauli or SparsePauliOp operator.
274
+ """
275
+ if isinstance(oper, Pauli):
276
+ return self._expectation_value_pauli(oper, qargs)
277
+
278
+ if isinstance(oper, SparsePauliOp):
279
+ return sum(
280
+ coeff * self._expectation_value_pauli(Pauli((z, x)), qargs)
281
+ for z, x, coeff in zip(oper.paulis.z, oper.paulis.x, oper.coeffs)
282
+ )
283
+
284
+ raise QiskitError(
285
+ "Operator for expectation value is not a Pauli or SparsePauliOp operator, "
286
+ f"but {type(oper)}."
287
+ )
288
+
289
+ def _expectation_value_pauli(self, oper: Pauli, qargs: None | list = None) -> complex:
259
290
  """Compute the expectation value of a Pauli operator.
260
291
 
261
292
  Args:
@@ -198,7 +198,7 @@ class Statevector(QuantumState, TolerancesMixin):
198
198
  def _ipython_display_(self):
199
199
  out = self.draw()
200
200
  if isinstance(out, str):
201
- print(out)
201
+ print(out) # pylint: disable=bad-builtin
202
202
  else:
203
203
  from IPython.display import display
204
204
 
@@ -545,7 +545,9 @@ class Statevector(QuantumState, TolerancesMixin):
545
545
  Consider a 2-qubit product state
546
546
  :math:`|\\psi\\rangle=|+\\rangle\\otimes|0\\rangle`.
547
547
 
548
- .. code-block::
548
+ .. plot::
549
+ :include-source:
550
+ :nofigs:
549
551
 
550
552
  from qiskit.quantum_info import Statevector
551
553
 
@@ -572,7 +574,9 @@ class Statevector(QuantumState, TolerancesMixin):
572
574
  We can also permute the order of qubits in the ``qargs`` list
573
575
  to change the qubit position in the probabilities output
574
576
 
575
- .. code-block::
577
+ .. plot::
578
+ :include-source:
579
+ :nofigs:
576
580
 
577
581
  from qiskit.quantum_info import Statevector
578
582
 
@@ -796,7 +800,9 @@ class Statevector(QuantumState, TolerancesMixin):
796
800
  The ket-form of a 2-qubit statevector
797
801
  :math:`|\psi\rangle = |-\rangle\otimes |0\rangle`
798
802
 
799
- .. code-block::
803
+ .. plot::
804
+ :include-source:
805
+ :nofigs:
800
806
 
801
807
  from qiskit.quantum_info import Statevector
802
808
 
@@ -810,7 +816,9 @@ class Statevector(QuantumState, TolerancesMixin):
810
816
  For non-qubit subsystems the integer range can go from 0 to 9. For
811
817
  example in a qutrit system
812
818
 
813
- .. code-block::
819
+ .. plot::
820
+ :include-source:
821
+ :nofigs:
814
822
 
815
823
  import numpy as np
816
824
  from qiskit.quantum_info import Statevector
@@ -829,7 +837,9 @@ class Statevector(QuantumState, TolerancesMixin):
829
837
  following example is for a 20-dimensional system consisting of
830
838
  a qubit and 10-dimensional qudit.
831
839
 
832
- .. code-block::
840
+ .. plot::
841
+ :include-source:
842
+ :nofigs:
833
843
 
834
844
  import numpy as np
835
845
  from qiskit.quantum_info import Statevector
qiskit/result/__init__.py CHANGED
@@ -48,26 +48,14 @@ Expectation values
48
48
 
49
49
  .. autofunction:: sampled_expectation_value
50
50
 
51
- Mitigation
52
- ==========
53
- .. autosummary::
54
- :toctree: ../stubs/
55
-
56
- BaseReadoutMitigator
57
- CorrelatedReadoutMitigator
58
- LocalReadoutMitigator
59
-
60
51
  """
61
52
 
62
- from .result import Result
53
+ from .counts import Counts
54
+ from .distributions import QuasiDistribution, ProbDistribution
63
55
  from .exceptions import ResultError
56
+ from .models import MeasLevel, MeasReturnType
57
+ from .result import Result
58
+ from .sampled_expval import sampled_expectation_value
64
59
  from .utils import marginal_counts
65
60
  from .utils import marginal_distribution
66
61
  from .utils import marginal_memory
67
- from .counts import Counts
68
-
69
- from .distributions import QuasiDistribution, ProbDistribution
70
- from .sampled_expval import sampled_expectation_value
71
- from .mitigation.base_readout_mitigator import BaseReadoutMitigator
72
- from .mitigation.correlated_readout_mitigator import CorrelatedReadoutMitigator
73
- from .mitigation.local_readout_mitigator import LocalReadoutMitigator
qiskit/result/models.py CHANGED
@@ -13,13 +13,26 @@
13
13
  """Schema and helper models for schema-conformant Results."""
14
14
 
15
15
  import copy
16
- import warnings
16
+ from enum import Enum, IntEnum
17
17
 
18
- from qiskit.qobj.utils import MeasReturnType, MeasLevel
19
- from qiskit.qobj import QobjExperimentHeader
20
18
  from qiskit.exceptions import QiskitError
21
19
 
22
20
 
21
+ class MeasReturnType(str, Enum):
22
+ """meas_return allowed values defined by legacy PulseQobjConfig object but still used by Result."""
23
+
24
+ AVERAGE = "avg"
25
+ SINGLE = "single"
26
+
27
+
28
+ class MeasLevel(IntEnum):
29
+ """MeasLevel allowed values defined by legacy PulseQobjConfig object but still used by Result."""
30
+
31
+ RAW = 0
32
+ KERNELED = 1
33
+ CLASSIFIED = 2
34
+
35
+
23
36
  class ExperimentResultData:
24
37
  """Class representing experiment result data"""
25
38
 
@@ -132,8 +145,7 @@ class ExperimentResult:
132
145
  status (str): The status of the experiment
133
146
  seed (int): The seed used for simulation (if run on a simulator)
134
147
  meas_return (str): The type of measurement returned
135
- header (qiskit.qobj.QobjExperimentHeader): A free form dictionary
136
- header for the experiment
148
+ header (dict): A free form dictionary header for the experiment
137
149
  kwargs: Arbitrary extra fields
138
150
 
139
151
  Raises:
@@ -197,7 +209,7 @@ class ExperimentResult:
197
209
  "meas_level": self.meas_level,
198
210
  }
199
211
  if hasattr(self, "header"):
200
- out_dict["header"] = self.header.to_dict()
212
+ out_dict["header"] = self.header
201
213
  if hasattr(self, "status"):
202
214
  out_dict["status"] = self.status
203
215
  if hasattr(self, "seed"):
@@ -223,11 +235,6 @@ class ExperimentResult:
223
235
 
224
236
  in_data = copy.copy(data)
225
237
  data_obj = ExperimentResultData.from_dict(in_data.pop("data"))
226
- if "header" in in_data:
227
- with warnings.catch_warnings():
228
- # The class QobjExperimentHeader is deprecated
229
- warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
230
- in_data["header"] = QobjExperimentHeader.from_dict(in_data.pop("header"))
231
238
  shots = in_data.pop("shots")
232
239
  success = in_data.pop("success")
233
240
 
qiskit/result/result.py CHANGED
@@ -12,154 +12,63 @@
12
12
 
13
13
  """Model for schema-conformant Results."""
14
14
 
15
- from collections.abc import Iterable
16
15
  import copy
17
16
  import warnings
18
17
 
19
18
  from qiskit.circuit.quantumcircuit import QuantumCircuit
20
- from qiskit.pulse.schedule import Schedule
21
19
  from qiskit.exceptions import QiskitError
22
20
  from qiskit.quantum_info.states import statevector
23
- from qiskit.result.models import ExperimentResult
21
+ from qiskit.result.models import ExperimentResult, MeasLevel
24
22
  from qiskit.result import postprocess
25
23
  from qiskit.result.counts import Counts
26
- from qiskit.qobj.utils import MeasLevel
27
- from qiskit.qobj import QobjHeader
28
-
29
- _MISSING = object()
30
24
 
31
25
 
32
26
  class Result:
33
27
  """Model for Results.
34
28
 
35
- .. deprecated:: 1.4
36
- The use of positional arguments in the constructor of :class:`.Result`
37
- is deprecated as of Qiskit 1.4, and will be disabled in Qiskit 2.0.
38
- Please set all arguments using kwarg syntax, i.e: ``Result(backend_name="name", ....)``.
39
- In addition to this, the ``qobj_id`` argument is deprecated and will no longer
40
- be used in Qiskit 2.0. It will, however, still be possible to set ``qobj_id`` as a
41
- generic kwarg, which will land in the metadata field with the other generic kwargs.
42
-
43
- Args:
44
- backend_name (str): (REQUIRED) backend name.
45
- backend_version (str): (REQUIRED) backend version, in the form X.Y.Z.
46
- qobj_id (str): (REQUIRED) user-generated Qobj id.
47
- job_id (str): (REQUIRED) unique execution id from the backend.
48
- success (bool): (REQUIRED) True if complete input qobj executed correctly. (Implies
29
+ Attributes:
30
+ backend_name (str): backend name.
31
+ backend_version (str): backend version, in the form X.Y.Z.
32
+ job_id (str): unique execution id from the backend.
33
+ success (bool): True if complete input executed correctly. (Implies
49
34
  each experiment success)
50
- results (list[ExperimentResult]): (REQUIRED) corresponding results for array of
51
- experiments of the input qobj
52
- date (str): (OPTIONAL) date of the experiment
53
- header(dict): (OPTIONAL)experiment header
54
- kwargs: generic keyword arguments. (OPTIONAL) These will be stored in the metadata field.
35
+ results (list[ExperimentResult]): corresponding results for array of
36
+ experiments of the input
37
+ date (str): optional date field
38
+ status (str): optional status field
39
+ header (dict): an optional free form dictionary header
55
40
  """
56
41
 
57
42
  _metadata = {}
58
43
 
59
44
  def __init__(
60
45
  self,
61
- *args,
46
+ *,
47
+ backend_name=None,
48
+ backend_version=None,
49
+ job_id=None,
50
+ success=None,
51
+ results=None,
62
52
  date=None,
63
53
  status=None,
64
54
  header=None,
65
55
  **kwargs,
66
56
  ):
67
- # The following arguments are required.
68
- required_args = {
69
- "backend_name": _MISSING,
70
- "backend_version": _MISSING,
71
- "qobj_id": _MISSING,
72
- "job_id": _MISSING,
73
- "success": _MISSING,
74
- "results": _MISSING,
75
- }
76
- # Step 1: iterate over kwargs.
77
- # An item from required_args might be set as a kwarg, so we must separate
78
- # true kwargs from "required_args" kwargs.
79
- true_kwargs = {}
80
- for key, value in kwargs.items():
81
- if key in required_args:
82
- required_args[key] = value
83
- else:
84
- true_kwargs[key] = value
85
- # Step 2: iterate over args, which are expected in the order of the index_map below.
86
- index_map = ["backend_name", "backend_version", "qobj_id", "job_id", "success", "results"]
87
- raise_qobj = False
88
- missing_args = []
89
- for index, name in enumerate(index_map):
90
- try:
91
- value = args[index]
92
- required_args[name] = value
93
- # The use of args is deprecated in 1.4 and will be removed in 2.0.
94
- # Furthermore, qobj_id will be ignored if set as a kwarg in 2.0.
95
- if name == "qobj_id":
96
- warnings.warn(
97
- "The use of positional arguments in `qiskit.result.result.Result.__init__()` "
98
- "is deprecated as of Qiskit 1.4, and will be disabled in Qiskit 2.0. "
99
- "Please set this value using kwarg syntax, "
100
- f"i.e: `Result(...,{name}={name}_value)`. "
101
- "The `qobj_id` argument will no longer be used in Qiskit 2.0, "
102
- "but it will still be possible to "
103
- "set as a kwarg that will land in the metadata field.",
104
- category=DeprecationWarning,
105
- stacklevel=2,
106
- )
107
- else:
108
- warnings.warn(
109
- "The use of positional arguments in `qiskit.result.result.Result.__init__()` "
110
- "is deprecated as of Qiskit 1.4, and will be disabled in Qiskit 2.0. "
111
- "Please set this value using kwarg syntax, "
112
- f"i.e: `Result(...,{name}={name}_value)`. ",
113
- category=DeprecationWarning,
114
- stacklevel=2,
115
- )
116
- except IndexError:
117
- if required_args[name] is _MISSING:
118
- missing_args = [
119
- key for (key, value) in required_args.items() if value is _MISSING
120
- ]
121
- elif name == "qobj_id":
122
- raise_qobj = True
123
- break
124
-
125
- # The deprecation warning should be raised outside of the try-except,
126
- # not to show a confusing trace that points to the IndexError
127
- if len(missing_args) > 1:
128
- raise TypeError(
129
- f"Result.__init__() missing {len(missing_args)} required arguments: {missing_args}"
130
- )
131
- if len(missing_args) == 1:
132
- raise TypeError(f"Result.__init__() missing a required argument: {missing_args[0]}")
133
- if raise_qobj:
134
- # qobj_id will be ignored if set as a kwarg in 2.0.
135
- warnings.warn(
136
- "The `qobj_id` argument will no longer be used in Qiskit 2.0, "
137
- "but it will still be possible to "
138
- "set as a kwarg that will land in the metadata field.",
139
- category=DeprecationWarning,
140
- stacklevel=2,
141
- )
142
-
143
57
  self._metadata = {}
144
- self.backend_name = required_args["backend_name"]
145
- self.backend_version = required_args["backend_version"]
146
- self.qobj_id = required_args["qobj_id"]
147
- self.job_id = required_args["job_id"]
148
- self.success = required_args["success"]
149
- self.results = (
150
- [required_args["results"]]
151
- if not isinstance(required_args["results"], Iterable)
152
- else required_args["results"]
153
- )
58
+ self.backend_name = backend_name
59
+ self.backend_version = backend_version
60
+ self.job_id = job_id
61
+ self.success = success
62
+ self.results = results
154
63
  self.date = date
155
64
  self.status = status
156
65
  self.header = header
157
- self._metadata.update(true_kwargs)
66
+ self._metadata.update(kwargs)
158
67
 
159
68
  def __repr__(self):
160
69
  out = (
161
70
  f"Result(backend_name='{self.backend_name}', backend_version='{self.backend_version}',"
162
- f" qobj_id='{self.qobj_id}', job_id='{self.job_id}', success={self.success},"
71
+ f" job_id='{self.job_id}', success={self.success},"
163
72
  f" results={self.results}"
164
73
  )
165
74
  out += f", date={self.date}, status={self.status}, header={self.header}"
@@ -182,8 +91,7 @@ class Result:
182
91
  "backend_name": self.backend_name,
183
92
  "backend_version": self.backend_version,
184
93
  "date": self.date,
185
- "header": None if self.header is None else self.header.to_dict(),
186
- "qobj_id": self.qobj_id,
94
+ "header": self.header,
187
95
  "job_id": self.job_id,
188
96
  "status": self.status,
189
97
  "success": self.success,
@@ -213,10 +121,6 @@ class Result:
213
121
 
214
122
  in_data = copy.copy(data)
215
123
  in_data["results"] = [ExperimentResult.from_dict(x) for x in in_data.pop("results")]
216
- if in_data.get("header") is not None:
217
- with warnings.catch_warnings():
218
- warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
219
- in_data["header"] = QobjHeader.from_dict(in_data.pop("header"))
220
124
  return cls(**in_data)
221
125
 
222
126
  def data(self, experiment=None):
@@ -227,11 +131,10 @@ class Result:
227
131
  the get_xxx method, and the data will be post-processed for the data type.
228
132
 
229
133
  Args:
230
- experiment (str or QuantumCircuit or Schedule or int or None): the index of the
134
+ experiment (str or QuantumCircuit or int or None): the index of the
231
135
  experiment. Several types are accepted for convenience::
232
136
  * str: the name of the experiment.
233
137
  * QuantumCircuit: the name of the circuit instance will be used.
234
- * Schedule: the name of the schedule instance will be used.
235
138
  * int: the position of the experiment.
236
139
  * None: if there is only one experiment, returns it.
237
140
 
@@ -278,7 +181,7 @@ class Result:
278
181
  ['00000', '01000', '10100', '10100', '11101', '11100', '00101', ..., '01010']
279
182
 
280
183
  Args:
281
- experiment (str or QuantumCircuit or Schedule or int or None): the index of the
184
+ experiment (str or QuantumCircuit or int or None): the index of the
282
185
  experiment, as specified by ``data()``.
283
186
 
284
187
  Returns:
@@ -301,7 +204,7 @@ class Result:
301
204
  exp_result = self._get_experiment(experiment)
302
205
  try:
303
206
  try: # header is not available
304
- header = exp_result.header.to_dict()
207
+ header = exp_result.header
305
208
  except (AttributeError, QiskitError):
306
209
  header = None
307
210
 
@@ -330,7 +233,7 @@ class Result:
330
233
  """Get the histogram data of an experiment.
331
234
 
332
235
  Args:
333
- experiment (str or QuantumCircuit or Schedule or int or None): the index of the
236
+ experiment (str or QuantumCircuit or int or None): the index of the
334
237
  experiment, as specified by ``data([experiment])``.
335
238
 
336
239
  Returns:
@@ -352,7 +255,7 @@ class Result:
352
255
  for key in exp_keys:
353
256
  exp = self._get_experiment(key)
354
257
  try:
355
- header = exp.header.to_dict()
258
+ header = exp.header
356
259
  except (AttributeError, QiskitError): # header is not available
357
260
  header = None
358
261
 
@@ -382,7 +285,7 @@ class Result:
382
285
  """Get the final statevector of an experiment.
383
286
 
384
287
  Args:
385
- experiment (str or QuantumCircuit or Schedule or int or None): the index of the
288
+ experiment (str or QuantumCircuit or int or None): the index of the
386
289
  experiment, as specified by ``data()``.
387
290
  decimals (int): the number of decimals in the statevector.
388
291
  If None, does not round.
@@ -404,7 +307,7 @@ class Result:
404
307
  """Get the final unitary of an experiment.
405
308
 
406
309
  Args:
407
- experiment (str or QuantumCircuit or Schedule or int or None): the index of the
310
+ experiment (str or QuantumCircuit or int or None): the index of the
408
311
  experiment, as specified by ``data()``.
409
312
  decimals (int): the number of decimals in the unitary.
410
313
  If None, does not round.
@@ -425,7 +328,7 @@ class Result:
425
328
  """Return a single experiment result from a given key.
426
329
 
427
330
  Args:
428
- key (str or QuantumCircuit or Schedule or int or None): the index of the
331
+ key (str or QuantumCircuit or int or None): the index of the
429
332
  experiment, as specified by ``data()``.
430
333
 
431
334
  Returns:
@@ -443,8 +346,8 @@ class Result:
443
346
  )
444
347
  key = 0
445
348
 
446
- # Key is a QuantumCircuit/Schedule or str: retrieve result by name.
447
- if isinstance(key, (QuantumCircuit, Schedule)):
349
+ # Key is a QuantumCircuit or str: retrieve result by name.
350
+ if isinstance(key, QuantumCircuit):
448
351
  key = key.name
449
352
  # Key is an integer: return result by index.
450
353
  if isinstance(key, int):
@@ -453,11 +356,12 @@ class Result:
453
356
  except IndexError as ex:
454
357
  raise QiskitError(f'Result for experiment "{key}" could not be found.') from ex
455
358
  else:
456
- # Look into `result[x].header.name` for the names.
359
+ # Look into `result[x].header["name"]` for the names.
457
360
  exp = [
458
361
  result
459
362
  for result in self.results
460
- if getattr(getattr(result, "header", None), "name", "") == key
363
+ if getattr(result, "header", None) is not None
364
+ and getattr(result, "header").get("name", "") == key
461
365
  ]
462
366
 
463
367
  if len(exp) == 0:
@@ -30,8 +30,7 @@ def sampled_expectation_value(dist, oper):
30
30
 
31
31
  Parameters:
32
32
  dist (Counts or QuasiDistribution or ProbDistribution or dict): Input sampled distribution
33
- oper (str or Pauli or PauliOp or PauliSumOp or SparsePauliOp): The operator for
34
- the observable
33
+ oper (str or Pauli or SparsePauliOp): The operator for the observable
35
34
 
36
35
  Returns:
37
36
  float: The expectation value
qiskit/result/utils.py CHANGED
@@ -24,7 +24,6 @@ from qiskit.result.result import Result
24
24
  from qiskit.result.counts import Counts
25
25
  from qiskit.result.distributions.probability import ProbDistribution
26
26
  from qiskit.result.distributions.quasi import QuasiDistribution
27
-
28
27
  from qiskit.result.postprocess import _bin_to_hex
29
28
 
30
29
  from qiskit._accelerate import results as results_rs # pylint: disable=no-name-in-module
@@ -74,10 +73,10 @@ def marginal_counts(
74
73
  experiment_result.data.counts = new_counts_hex
75
74
 
76
75
  if indices is not None:
77
- experiment_result.header.memory_slots = len(indices)
78
- csize = getattr(experiment_result.header, "creg_sizes", None)
76
+ experiment_result.header["memory_slots"] = len(indices)
77
+ csize = experiment_result.header.get("creg_sizes", None)
79
78
  if csize is not None:
80
- experiment_result.header.creg_sizes = _adjust_creg_sizes(csize, indices)
79
+ experiment_result.header["creg_sizes"] = _adjust_creg_sizes(csize, indices)
81
80
 
82
81
  if getattr(experiment_result.data, "memory", None) is not None and indices is not None:
83
82
  if marginalize_memory is False:
@@ -119,6 +119,7 @@ Two-Qubit Synthesis
119
119
  TwoQubitBasisDecomposer
120
120
  XXDecomposer
121
121
  TwoQubitWeylDecomposition
122
+ TwoQubitControlledUDecomposer
122
123
 
123
124
  .. autofunction:: two_qubit_cnot_decompose
124
125
 
@@ -147,9 +148,24 @@ Adders
147
148
  Multipliers
148
149
  -----------
149
150
 
150
- .. autofunction:: multiplier_cumulative_h18
151
+ .. autofunction:: multiplier_cumulative_h18
151
152
  .. autofunction:: multiplier_qft_r17
152
153
 
154
+ Sums
155
+ ----
156
+
157
+ .. autofunction:: synth_weighted_sum_carry
158
+
159
+
160
+ Unary Arithmetic Synthesis
161
+ ==========================
162
+
163
+ Integer comparators
164
+ -------------------
165
+
166
+ .. autofunction:: synth_integer_comparator_2s
167
+ .. autofunction:: synth_integer_comparator_greedy
168
+
153
169
  """
154
170
 
155
171
  from .evolution import (
@@ -200,6 +216,7 @@ from .two_qubit.two_qubit_decompose import (
200
216
  TwoQubitBasisDecomposer,
201
217
  two_qubit_cnot_decompose,
202
218
  TwoQubitWeylDecomposition,
219
+ TwoQubitControlledUDecomposer,
203
220
  )
204
221
  from .multi_controlled import (
205
222
  synth_mcmt_vchain,
@@ -217,4 +234,7 @@ from .arithmetic import (
217
234
  adder_ripple_v95,
218
235
  multiplier_cumulative_h18,
219
236
  multiplier_qft_r17,
237
+ synth_integer_comparator_greedy,
238
+ synth_integer_comparator_2s,
239
+ synth_weighted_sum_carry,
220
240
  )
@@ -10,7 +10,9 @@
10
10
  # copyright notice, and modified files need to carry a notice indicating
11
11
  # that they have been altered from the originals.
12
12
 
13
- """Module containing multi-controlled circuits synthesis"""
13
+ """Synthesis for arithmetic circuits."""
14
14
 
15
+ from .comparators import synth_integer_comparator_2s, synth_integer_comparator_greedy
15
16
  from .adders import adder_qft_d00, adder_ripple_c04, adder_ripple_v95
16
17
  from .multipliers import multiplier_cumulative_h18, multiplier_qft_r17
18
+ from .weighted_sum import synth_weighted_sum_carry
@@ -13,7 +13,7 @@
13
13
  """Compute the sum of two qubit registers using ripple-carry approach."""
14
14
 
15
15
  from qiskit.circuit.quantumcircuit import QuantumCircuit
16
- from qiskit.circuit.quantumregister import QuantumRegister, AncillaRegister
16
+ from qiskit.circuit import QuantumRegister, AncillaRegister
17
17
 
18
18
 
19
19
  def adder_ripple_c04(num_state_qubits: int, kind: str = "half") -> QuantumCircuit:
@@ -15,7 +15,7 @@
15
15
  import numpy as np
16
16
 
17
17
  from qiskit.circuit.quantumcircuit import QuantumCircuit
18
- from qiskit.circuit.quantumregister import QuantumRegister
18
+ from qiskit.circuit import QuantumRegister
19
19
  from qiskit.circuit.library.basis_change import QFTGate
20
20
 
21
21
 
@@ -13,10 +13,10 @@
13
13
  """Compute the sum of two qubit registers using Classical Addition."""
14
14
 
15
15
  from __future__ import annotations
16
- from qiskit.circuit.bit import Bit
16
+ from qiskit.circuit import Bit
17
17
 
18
18
  from qiskit.circuit.quantumcircuit import QuantumCircuit
19
- from qiskit.circuit.quantumregister import QuantumRegister, AncillaRegister
19
+ from qiskit.circuit import QuantumRegister, AncillaRegister
20
20
 
21
21
 
22
22
  def adder_ripple_v95(num_state_qubits: int, kind: str = "half") -> QuantumCircuit:
@@ -1,6 +1,6 @@
1
1
  # This code is part of Qiskit.
2
2
  #
3
- # (C) Copyright IBM 2023.
3
+ # (C) Copyright IBM 2017, 2024.
4
4
  #
5
5
  # This code is licensed under the Apache License, Version 2.0. You may
6
6
  # obtain a copy of this license in the LICENSE.txt file in the root directory
@@ -10,9 +10,7 @@
10
10
  # copyright notice, and modified files need to carry a notice indicating
11
11
  # that they have been altered from the originals.
12
12
 
13
+ """Comparator synthesis algorithms."""
13
14
 
14
- """
15
- A 20 qubit fake :class:`.BackendV1` without pulse capabilities.
16
- """
17
-
18
- from .fake_20q import Fake20QV1
15
+ from .compare_2s import synth_integer_comparator_2s
16
+ from .compare_greedy import synth_integer_comparator_greedy