qiskit 1.4.1__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0rc1__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 (456) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +24 -5
  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 +248 -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 +34 -5
  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/hamiltonian_gate.py +1 -1
  60. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  61. qiskit/circuit/library/n_local/n_local.py +1 -1
  62. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  63. qiskit/circuit/library/overlap.py +2 -2
  64. qiskit/circuit/library/pauli_evolution.py +39 -24
  65. qiskit/circuit/library/phase_oracle.py +130 -51
  66. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  67. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  68. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  69. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  70. qiskit/circuit/library/standard_gates/h.py +4 -9
  71. qiskit/circuit/library/standard_gates/i.py +2 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  73. qiskit/circuit/library/standard_gates/p.py +15 -34
  74. qiskit/circuit/library/standard_gates/r.py +2 -6
  75. qiskit/circuit/library/standard_gates/rx.py +5 -15
  76. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  77. qiskit/circuit/library/standard_gates/ry.py +5 -17
  78. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  79. qiskit/circuit/library/standard_gates/rz.py +5 -17
  80. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  82. qiskit/circuit/library/standard_gates/s.py +6 -15
  83. qiskit/circuit/library/standard_gates/swap.py +4 -11
  84. qiskit/circuit/library/standard_gates/sx.py +7 -12
  85. qiskit/circuit/library/standard_gates/t.py +6 -7
  86. qiskit/circuit/library/standard_gates/u.py +2 -10
  87. qiskit/circuit/library/standard_gates/u1.py +5 -16
  88. qiskit/circuit/library/standard_gates/u2.py +2 -6
  89. qiskit/circuit/library/standard_gates/u3.py +3 -11
  90. qiskit/circuit/library/standard_gates/x.py +13 -60
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/y.py +4 -9
  94. qiskit/circuit/library/standard_gates/z.py +5 -15
  95. qiskit/circuit/measure.py +11 -2
  96. qiskit/circuit/parameterexpression.py +4 -0
  97. qiskit/circuit/quantumcircuit.py +881 -555
  98. qiskit/circuit/random/utils.py +12 -6
  99. qiskit/circuit/reset.py +5 -2
  100. qiskit/circuit/singleton.py +5 -11
  101. qiskit/circuit/store.py +0 -8
  102. qiskit/compiler/__init__.py +1 -7
  103. qiskit/compiler/transpiler.py +38 -196
  104. qiskit/converters/circuit_to_dag.py +4 -2
  105. qiskit/converters/circuit_to_dagdependency.py +0 -2
  106. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  107. qiskit/converters/circuit_to_gate.py +1 -1
  108. qiskit/converters/circuit_to_instruction.py +16 -29
  109. qiskit/converters/dag_to_circuit.py +5 -5
  110. qiskit/converters/dag_to_dagdependency.py +0 -1
  111. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  112. qiskit/converters/dagdependency_to_circuit.py +0 -6
  113. qiskit/converters/dagdependency_to_dag.py +0 -6
  114. qiskit/dagcircuit/collect_blocks.py +32 -20
  115. qiskit/dagcircuit/dagdependency.py +3 -37
  116. qiskit/dagcircuit/dagdependency_v2.py +2 -80
  117. qiskit/dagcircuit/dagnode.py +14 -2
  118. qiskit/passmanager/__init__.py +24 -6
  119. qiskit/passmanager/passmanager.py +26 -24
  120. qiskit/primitives/__init__.py +44 -35
  121. qiskit/primitives/backend_estimator_v2.py +102 -23
  122. qiskit/primitives/backend_sampler_v2.py +5 -20
  123. qiskit/primitives/base/__init__.py +4 -4
  124. qiskit/primitives/base/base_estimator.py +77 -82
  125. qiskit/primitives/base/base_primitive_job.py +2 -2
  126. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  127. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  128. qiskit/primitives/base/base_sampler.py +52 -60
  129. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  130. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  131. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  132. qiskit/primitives/containers/bindings_array.py +3 -1
  133. qiskit/primitives/containers/bit_array.py +23 -0
  134. qiskit/primitives/containers/data_bin.py +3 -1
  135. qiskit/primitives/containers/observables_array.py +19 -2
  136. qiskit/primitives/statevector_sampler.py +6 -8
  137. qiskit/primitives/utils.py +14 -189
  138. qiskit/providers/__init__.py +4 -130
  139. qiskit/providers/backend.py +11 -314
  140. qiskit/providers/basic_provider/__init__.py +3 -1
  141. qiskit/providers/basic_provider/basic_provider.py +29 -9
  142. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  143. qiskit/providers/exceptions.py +0 -33
  144. qiskit/providers/fake_provider/__init__.py +0 -37
  145. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  146. qiskit/qasm2/__init__.py +21 -6
  147. qiskit/qasm2/export.py +2 -10
  148. qiskit/qasm2/parse.py +11 -25
  149. qiskit/qasm3/__init__.py +5 -1
  150. qiskit/qasm3/ast.py +44 -0
  151. qiskit/qasm3/exporter.py +65 -27
  152. qiskit/qasm3/printer.py +35 -4
  153. qiskit/qpy/__init__.py +141 -19
  154. qiskit/qpy/binary_io/__init__.py +0 -1
  155. qiskit/qpy/binary_io/circuits.py +91 -116
  156. qiskit/qpy/binary_io/schedules.py +61 -388
  157. qiskit/qpy/binary_io/value.py +154 -28
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +29 -62
  161. qiskit/qpy/type_keys.py +58 -221
  162. qiskit/quantum_info/analysis/distance.py +3 -1
  163. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  164. qiskit/quantum_info/operators/operator.py +6 -2
  165. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  166. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  167. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  168. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  169. qiskit/quantum_info/states/densitymatrix.py +16 -6
  170. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  171. qiskit/quantum_info/states/statevector.py +16 -6
  172. qiskit/result/__init__.py +5 -17
  173. qiskit/result/models.py +18 -10
  174. qiskit/result/result.py +28 -126
  175. qiskit/result/sampled_expval.py +1 -2
  176. qiskit/result/utils.py +3 -4
  177. qiskit/synthesis/__init__.py +21 -1
  178. qiskit/synthesis/arithmetic/__init__.py +3 -1
  179. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  180. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  182. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  183. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  184. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  185. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  186. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  188. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  189. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  190. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  191. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  192. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -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 +2 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  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 +4 -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 +1 -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 +30 -2
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  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 +127 -59
  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 +101 -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 +67 -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/dag_visualization.py +2 -1
  287. qiskit/visualization/gate_map.py +39 -154
  288. qiskit/visualization/pass_manager_visualization.py +6 -2
  289. qiskit/visualization/state_visualization.py +6 -0
  290. qiskit/visualization/timeline/core.py +18 -12
  291. qiskit/visualization/timeline/interface.py +19 -18
  292. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
  293. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
  294. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
  295. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
  296. qiskit/assembler/__init__.py +0 -42
  297. qiskit/assembler/assemble_circuits.py +0 -451
  298. qiskit/assembler/assemble_schedules.py +0 -367
  299. qiskit/assembler/disassemble.py +0 -310
  300. qiskit/assembler/run_config.py +0 -77
  301. qiskit/circuit/bit.py +0 -106
  302. qiskit/circuit/classicalfunction/__init__.py +0 -152
  303. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  304. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  305. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  306. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  307. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  308. qiskit/circuit/classicalfunction/types.py +0 -18
  309. qiskit/circuit/classicalfunction/utils.py +0 -91
  310. qiskit/circuit/classicalregister.py +0 -57
  311. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  312. qiskit/circuit/quantumregister.py +0 -75
  313. qiskit/circuit/register.py +0 -246
  314. qiskit/compiler/assembler.py +0 -689
  315. qiskit/compiler/scheduler.py +0 -109
  316. qiskit/compiler/sequencer.py +0 -71
  317. qiskit/primitives/backend_estimator.py +0 -486
  318. qiskit/primitives/backend_sampler.py +0 -222
  319. qiskit/primitives/estimator.py +0 -172
  320. qiskit/primitives/sampler.py +0 -162
  321. qiskit/providers/backend_compat.py +0 -507
  322. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  330. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/fake_1q.py +0 -91
  346. qiskit/providers/fake_provider/fake_backend.py +0 -165
  347. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  348. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  349. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  350. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  351. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  352. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  353. qiskit/providers/models/__init__.py +0 -89
  354. qiskit/providers/models/backendconfiguration.py +0 -1040
  355. qiskit/providers/models/backendproperties.py +0 -535
  356. qiskit/providers/models/backendstatus.py +0 -104
  357. qiskit/providers/models/jobstatus.py +0 -77
  358. qiskit/providers/models/pulsedefaults.py +0 -305
  359. qiskit/providers/provider.py +0 -95
  360. qiskit/pulse/__init__.py +0 -158
  361. qiskit/pulse/builder.py +0 -2262
  362. qiskit/pulse/calibration_entries.py +0 -381
  363. qiskit/pulse/channels.py +0 -227
  364. qiskit/pulse/configuration.py +0 -245
  365. qiskit/pulse/exceptions.py +0 -45
  366. qiskit/pulse/filters.py +0 -309
  367. qiskit/pulse/instruction_schedule_map.py +0 -424
  368. qiskit/pulse/instructions/__init__.py +0 -67
  369. qiskit/pulse/instructions/acquire.py +0 -150
  370. qiskit/pulse/instructions/delay.py +0 -71
  371. qiskit/pulse/instructions/directives.py +0 -154
  372. qiskit/pulse/instructions/frequency.py +0 -135
  373. qiskit/pulse/instructions/instruction.py +0 -270
  374. qiskit/pulse/instructions/phase.py +0 -152
  375. qiskit/pulse/instructions/play.py +0 -99
  376. qiskit/pulse/instructions/reference.py +0 -100
  377. qiskit/pulse/instructions/snapshot.py +0 -82
  378. qiskit/pulse/library/__init__.py +0 -97
  379. qiskit/pulse/library/continuous.py +0 -430
  380. qiskit/pulse/library/pulse.py +0 -148
  381. qiskit/pulse/library/samplers/__init__.py +0 -15
  382. qiskit/pulse/library/samplers/decorators.py +0 -295
  383. qiskit/pulse/library/samplers/strategies.py +0 -71
  384. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  385. qiskit/pulse/library/waveform.py +0 -136
  386. qiskit/pulse/macros.py +0 -262
  387. qiskit/pulse/parameter_manager.py +0 -445
  388. qiskit/pulse/parser.py +0 -314
  389. qiskit/pulse/reference_manager.py +0 -58
  390. qiskit/pulse/schedule.py +0 -1854
  391. qiskit/pulse/transforms/__init__.py +0 -106
  392. qiskit/pulse/transforms/alignments.py +0 -406
  393. qiskit/pulse/transforms/base_transforms.py +0 -71
  394. qiskit/pulse/transforms/canonicalization.py +0 -498
  395. qiskit/pulse/transforms/dag.py +0 -122
  396. qiskit/pulse/utils.py +0 -149
  397. qiskit/qobj/__init__.py +0 -75
  398. qiskit/qobj/common.py +0 -81
  399. qiskit/qobj/converters/__init__.py +0 -18
  400. qiskit/qobj/converters/lo_config.py +0 -177
  401. qiskit/qobj/converters/pulse_instruction.py +0 -897
  402. qiskit/qobj/pulse_qobj.py +0 -709
  403. qiskit/qobj/qasm_qobj.py +0 -708
  404. qiskit/qobj/utils.py +0 -46
  405. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  406. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  407. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  408. qiskit/result/mitigation/utils.py +0 -217
  409. qiskit/scheduler/__init__.py +0 -40
  410. qiskit/scheduler/config.py +0 -37
  411. qiskit/scheduler/lowering.py +0 -187
  412. qiskit/scheduler/methods/__init__.py +0 -15
  413. qiskit/scheduler/methods/basic.py +0 -140
  414. qiskit/scheduler/schedule_circuit.py +0 -69
  415. qiskit/scheduler/sequence.py +0 -104
  416. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  417. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  418. qiskit/transpiler/passes/calibration/builders.py +0 -20
  419. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  420. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  421. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  422. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  423. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  424. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  425. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  426. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  427. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  428. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  429. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  430. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  431. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  432. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  433. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  434. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  435. qiskit/utils/deprecate_pulse.py +0 -119
  436. qiskit/utils/multiprocessing.py +0 -56
  437. qiskit/visualization/pulse_v2/__init__.py +0 -21
  438. qiskit/visualization/pulse_v2/core.py +0 -901
  439. qiskit/visualization/pulse_v2/device_info.py +0 -173
  440. qiskit/visualization/pulse_v2/drawings.py +0 -253
  441. qiskit/visualization/pulse_v2/events.py +0 -254
  442. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  443. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  444. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  445. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  446. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  447. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  448. qiskit/visualization/pulse_v2/interface.py +0 -459
  449. qiskit/visualization/pulse_v2/layouts.py +0 -387
  450. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  451. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  452. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  453. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  454. qiskit/visualization/pulse_v2/types.py +0 -242
  455. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
  456. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.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,7 +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
148
+ header (dict): A free form dictionary
136
149
  header for the experiment
137
150
  kwargs: Arbitrary extra fields
138
151
 
@@ -197,7 +210,7 @@ class ExperimentResult:
197
210
  "meas_level": self.meas_level,
198
211
  }
199
212
  if hasattr(self, "header"):
200
- out_dict["header"] = self.header.to_dict()
213
+ out_dict["header"] = self.header
201
214
  if hasattr(self, "status"):
202
215
  out_dict["status"] = self.status
203
216
  if hasattr(self, "seed"):
@@ -223,11 +236,6 @@ class ExperimentResult:
223
236
 
224
237
  in_data = copy.copy(data)
225
238
  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
239
  shots = in_data.pop("shots")
232
240
  success = in_data.pop("success")
233
241
 
qiskit/result/result.py CHANGED
@@ -12,154 +12,60 @@
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
55
37
  """
56
38
 
57
39
  _metadata = {}
58
40
 
59
41
  def __init__(
60
42
  self,
61
- *args,
43
+ *,
44
+ backend_name=None,
45
+ backend_version=None,
46
+ job_id=None,
47
+ success=None,
48
+ results=None,
62
49
  date=None,
63
50
  status=None,
64
51
  header=None,
65
52
  **kwargs,
66
53
  ):
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
54
  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
- )
55
+ self.backend_name = backend_name
56
+ self.backend_version = backend_version
57
+ self.job_id = job_id
58
+ self.success = success
59
+ self.results = results
154
60
  self.date = date
155
61
  self.status = status
156
62
  self.header = header
157
- self._metadata.update(true_kwargs)
63
+ self._metadata.update(kwargs)
158
64
 
159
65
  def __repr__(self):
160
66
  out = (
161
67
  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},"
68
+ f" job_id='{self.job_id}', success={self.success},"
163
69
  f" results={self.results}"
164
70
  )
165
71
  out += f", date={self.date}, status={self.status}, header={self.header}"
@@ -183,7 +89,6 @@ class Result:
183
89
  "backend_version": self.backend_version,
184
90
  "date": self.date,
185
91
  "header": None if self.header is None else self.header.to_dict(),
186
- "qobj_id": self.qobj_id,
187
92
  "job_id": self.job_id,
188
93
  "status": self.status,
189
94
  "success": self.success,
@@ -213,10 +118,6 @@ class Result:
213
118
 
214
119
  in_data = copy.copy(data)
215
120
  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
121
  return cls(**in_data)
221
122
 
222
123
  def data(self, experiment=None):
@@ -301,7 +202,7 @@ class Result:
301
202
  exp_result = self._get_experiment(experiment)
302
203
  try:
303
204
  try: # header is not available
304
- header = exp_result.header.to_dict()
205
+ header = exp_result.header
305
206
  except (AttributeError, QiskitError):
306
207
  header = None
307
208
 
@@ -352,7 +253,7 @@ class Result:
352
253
  for key in exp_keys:
353
254
  exp = self._get_experiment(key)
354
255
  try:
355
- header = exp.header.to_dict()
256
+ header = exp.header
356
257
  except (AttributeError, QiskitError): # header is not available
357
258
  header = None
358
259
 
@@ -443,8 +344,8 @@ class Result:
443
344
  )
444
345
  key = 0
445
346
 
446
- # Key is a QuantumCircuit/Schedule or str: retrieve result by name.
447
- if isinstance(key, (QuantumCircuit, Schedule)):
347
+ # Key is a QuantumCircuit or str: retrieve result by name.
348
+ if isinstance(key, QuantumCircuit):
448
349
  key = key.name
449
350
  # Key is an integer: return result by index.
450
351
  if isinstance(key, int):
@@ -453,11 +354,12 @@ class Result:
453
354
  except IndexError as ex:
454
355
  raise QiskitError(f'Result for experiment "{key}" could not be found.') from ex
455
356
  else:
456
- # Look into `result[x].header.name` for the names.
357
+ # Look into `result[x].header["name"]` for the names.
457
358
  exp = [
458
359
  result
459
360
  for result in self.results
460
- if getattr(getattr(result, "header", None), "name", "") == key
361
+ if getattr(result, "header", None) is not None
362
+ and getattr(result, "header").get("name", "") == key
461
363
  ]
462
364
 
463
365
  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