qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__cp39-abi3-win32.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 (361) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +1 -20
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +0 -2
  5. qiskit/circuit/__init__.py +1 -44
  6. qiskit/circuit/_standard_gates_commutations.py +0 -585
  7. qiskit/circuit/barrier.py +0 -2
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +5 -13
  10. qiskit/circuit/controlflow/while_loop.py +2 -10
  11. qiskit/circuit/delay.py +3 -20
  12. qiskit/circuit/equivalence.py +214 -13
  13. qiskit/circuit/gate.py +1 -3
  14. qiskit/circuit/instruction.py +11 -32
  15. qiskit/circuit/instructionset.py +0 -2
  16. qiskit/circuit/library/__init__.py +14 -110
  17. qiskit/circuit/library/arithmetic/__init__.py +2 -9
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
  19. qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +38 -20
  30. qiskit/circuit/library/blueprintcircuit.py +0 -64
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
  36. qiskit/circuit/library/data_preparation/__init__.py +3 -6
  37. qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
  38. qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
  39. qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
  40. qiskit/circuit/library/fourier_checking.py +11 -72
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
  43. qiskit/circuit/library/generalized_gates/gms.py +14 -67
  44. qiskit/circuit/library/generalized_gates/gr.py +4 -4
  45. qiskit/circuit/library/generalized_gates/isometry.py +2 -2
  46. qiskit/circuit/library/generalized_gates/linear_function.py +6 -12
  47. qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
  48. qiskit/circuit/library/generalized_gates/permutation.py +6 -8
  49. qiskit/circuit/library/generalized_gates/rv.py +9 -8
  50. qiskit/circuit/library/graph_state.py +10 -93
  51. qiskit/circuit/library/grover_operator.py +2 -270
  52. qiskit/circuit/library/hidden_linear_function.py +20 -83
  53. qiskit/circuit/library/iqp.py +20 -99
  54. qiskit/circuit/library/n_local/__init__.py +7 -19
  55. qiskit/circuit/library/n_local/efficient_su2.py +5 -118
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
  57. qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
  58. qiskit/circuit/library/n_local/n_local.py +5 -406
  59. qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
  61. qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
  62. qiskit/circuit/library/n_local/two_local.py +7 -14
  63. qiskit/circuit/library/overlap.py +26 -91
  64. qiskit/circuit/library/pauli_evolution.py +15 -17
  65. qiskit/circuit/library/phase_estimation.py +4 -80
  66. qiskit/circuit/library/quantum_volume.py +20 -72
  67. qiskit/circuit/library/standard_gates/__init__.py +1 -20
  68. qiskit/circuit/library/standard_gates/dcx.py +1 -2
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +3 -4
  71. qiskit/circuit/library/standard_gates/i.py +1 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +12 -20
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +3 -4
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +3 -4
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +12 -13
  80. qiskit/circuit/library/standard_gates/rzx.py +6 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +1 -1
  82. qiskit/circuit/library/standard_gates/s.py +4 -4
  83. qiskit/circuit/library/standard_gates/swap.py +3 -3
  84. qiskit/circuit/library/standard_gates/sx.py +3 -4
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +3 -11
  87. qiskit/circuit/library/standard_gates/u1.py +15 -65
  88. qiskit/circuit/library/standard_gates/u2.py +1 -4
  89. qiskit/circuit/library/standard_gates/u3.py +3 -31
  90. qiskit/circuit/library/standard_gates/x.py +5 -7
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
  93. qiskit/circuit/library/standard_gates/y.py +3 -4
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
  166. qiskit/circuit/parameter.py +0 -4
  167. qiskit/circuit/parameterexpression.py +34 -167
  168. qiskit/circuit/quantumcircuit.py +126 -162
  169. qiskit/circuit/singleton.py +0 -2
  170. qiskit/circuit/store.py +0 -2
  171. qiskit/compiler/assembler.py +4 -17
  172. qiskit/compiler/scheduler.py +0 -2
  173. qiskit/compiler/sequencer.py +0 -2
  174. qiskit/compiler/transpiler.py +26 -81
  175. qiskit/converters/circuit_to_dag.py +2 -2
  176. qiskit/converters/circuit_to_dagdependency.py +1 -1
  177. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  178. qiskit/converters/circuit_to_instruction.py +1 -1
  179. qiskit/converters/dag_to_circuit.py +5 -7
  180. qiskit/converters/dag_to_dagdependency.py +1 -1
  181. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  182. qiskit/converters/dagdependency_to_circuit.py +1 -5
  183. qiskit/converters/dagdependency_to_dag.py +1 -6
  184. qiskit/dagcircuit/collect_blocks.py +3 -3
  185. qiskit/dagcircuit/dagdependency.py +5 -18
  186. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  187. qiskit/dagcircuit/dagnode.py +2 -2
  188. qiskit/passmanager/__init__.py +2 -2
  189. qiskit/primitives/backend_estimator.py +2 -5
  190. qiskit/primitives/backend_sampler_v2.py +18 -61
  191. qiskit/primitives/base/base_estimator.py +2 -2
  192. qiskit/primitives/containers/data_bin.py +1 -9
  193. qiskit/primitives/statevector_sampler.py +1 -1
  194. qiskit/primitives/utils.py +1 -1
  195. qiskit/providers/__init__.py +3 -3
  196. qiskit/providers/backend.py +1 -12
  197. qiskit/providers/backend_compat.py +3 -23
  198. qiskit/providers/basic_provider/basic_simulator.py +2 -12
  199. qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
  200. qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
  201. qiskit/providers/models/pulsedefaults.py +0 -2
  202. qiskit/pulse/builder.py +18 -59
  203. qiskit/pulse/calibration_entries.py +1 -4
  204. qiskit/pulse/channels.py +0 -2
  205. qiskit/pulse/exceptions.py +0 -2
  206. qiskit/pulse/instruction_schedule_map.py +6 -21
  207. qiskit/pulse/instructions/acquire.py +0 -2
  208. qiskit/pulse/instructions/delay.py +0 -2
  209. qiskit/pulse/instructions/directives.py +0 -8
  210. qiskit/pulse/instructions/frequency.py +0 -3
  211. qiskit/pulse/instructions/instruction.py +0 -2
  212. qiskit/pulse/instructions/phase.py +0 -3
  213. qiskit/pulse/instructions/play.py +0 -2
  214. qiskit/pulse/instructions/reference.py +0 -2
  215. qiskit/pulse/instructions/snapshot.py +0 -2
  216. qiskit/pulse/library/pulse.py +0 -2
  217. qiskit/pulse/library/symbolic_pulses.py +0 -28
  218. qiskit/pulse/library/waveform.py +0 -2
  219. qiskit/pulse/macros.py +1 -1
  220. qiskit/pulse/schedule.py +13 -12
  221. qiskit/pulse/transforms/alignments.py +3 -5
  222. qiskit/pulse/transforms/dag.py +0 -7
  223. qiskit/qasm2/export.py +3 -5
  224. qiskit/qasm2/parse.py +2 -46
  225. qiskit/qasm3/__init__.py +0 -1
  226. qiskit/qasm3/ast.py +15 -123
  227. qiskit/qasm3/exporter.py +77 -103
  228. qiskit/qobj/converters/pulse_instruction.py +4 -6
  229. qiskit/qpy/__init__.py +0 -181
  230. qiskit/qpy/binary_io/circuits.py +5 -20
  231. qiskit/qpy/binary_io/schedules.py +4 -3
  232. qiskit/qpy/binary_io/value.py +13 -310
  233. qiskit/qpy/common.py +2 -46
  234. qiskit/qpy/formats.py +0 -7
  235. qiskit/qpy/interface.py +4 -40
  236. qiskit/quantum_info/__init__.py +0 -4
  237. qiskit/quantum_info/operators/channel/transformations.py +21 -28
  238. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  239. qiskit/quantum_info/operators/operator.py +8 -54
  240. qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
  241. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  242. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
  244. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  245. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
  246. qiskit/quantum_info/states/densitymatrix.py +5 -5
  247. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  248. qiskit/quantum_info/states/statevector.py +6 -6
  249. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  250. qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
  251. qiskit/result/mitigation/local_readout_mitigator.py +1 -9
  252. qiskit/result/mitigation/utils.py +0 -57
  253. qiskit/scheduler/config.py +0 -2
  254. qiskit/scheduler/methods/basic.py +0 -3
  255. qiskit/scheduler/schedule_circuit.py +0 -2
  256. qiskit/scheduler/sequence.py +0 -2
  257. qiskit/synthesis/__init__.py +0 -25
  258. qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
  259. qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
  260. qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
  261. qiskit/synthesis/evolution/__init__.py +0 -1
  262. qiskit/synthesis/evolution/lie_trotter.py +42 -16
  263. qiskit/synthesis/evolution/product_formula.py +238 -165
  264. qiskit/synthesis/evolution/qdrift.py +29 -36
  265. qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
  266. qiskit/synthesis/multi_controlled/__init__.py +0 -1
  267. qiskit/synthesis/qft/qft_decompose_full.py +1 -19
  268. qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
  269. qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
  270. qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
  271. qiskit/synthesis/two_qubit/weyl.py +97 -0
  272. qiskit/synthesis/unitary/qsd.py +5 -5
  273. qiskit/transpiler/__init__.py +14 -21
  274. qiskit/transpiler/basepasses.py +1 -1
  275. qiskit/transpiler/passes/__init__.py +0 -2
  276. qiskit/transpiler/passes/basis/basis_translator.py +565 -9
  277. qiskit/transpiler/passes/basis/decompose.py +12 -45
  278. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  279. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  280. qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
  281. qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
  282. qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
  283. qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
  284. qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
  285. qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
  286. qiskit/transpiler/passes/optimization/__init__.py +0 -1
  287. qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
  288. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  289. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  290. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  291. qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
  292. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
  293. qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
  294. qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
  295. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
  296. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  297. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  298. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  299. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  300. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  301. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  302. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  303. qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
  304. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  305. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  306. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  307. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  308. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
  309. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  310. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  311. qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
  312. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
  313. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  314. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
  315. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
  316. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
  317. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
  318. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
  319. qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
  320. qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
  321. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  322. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
  323. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
  324. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
  325. qiskit/transpiler/passes/utils/gate_direction.py +275 -12
  326. qiskit/transpiler/passes/utils/gates_basis.py +30 -7
  327. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
  328. qiskit/transpiler/passmanager_config.py +4 -22
  329. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
  330. qiskit/transpiler/preset_passmanagers/common.py +3 -5
  331. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
  332. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  333. qiskit/transpiler/target.py +16 -74
  334. qiskit/visualization/circuit/_utils.py +2 -2
  335. qiskit/visualization/circuit/circuit_visualization.py +2 -3
  336. qiskit/visualization/circuit/matplotlib.py +1 -1
  337. qiskit/visualization/dag_visualization.py +1 -1
  338. qiskit/visualization/pass_manager_visualization.py +14 -3
  339. qiskit/visualization/pulse_v2/interface.py +1 -3
  340. qiskit/visualization/timeline/core.py +2 -25
  341. qiskit/visualization/timeline/interface.py +0 -12
  342. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
  343. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
  344. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
  345. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
  346. qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
  347. qiskit/circuit/twirling.py +0 -145
  348. qiskit/synthesis/arithmetic/__init__.py +0 -16
  349. qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
  350. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
  351. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
  352. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
  353. qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
  354. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
  355. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
  356. qiskit/synthesis/evolution/pauli_network.py +0 -80
  357. qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
  358. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
  359. qiskit/utils/deprecate_pulse.py +0 -119
  360. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
  361. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
@@ -17,7 +17,6 @@ from qiskit.circuit.parameterexpression import ParameterExpression
17
17
  from qiskit.pulse.channels import Channel
18
18
  from qiskit.pulse.exceptions import PulseError, UnassignedReferenceError
19
19
  from qiskit.pulse.instructions import instruction
20
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
21
20
 
22
21
 
23
22
  class Reference(instruction.Instruction):
@@ -41,7 +40,6 @@ class Reference(instruction.Instruction):
41
40
  # Delimiter for tuple keys.
42
41
  key_delimiter = ","
43
42
 
44
- @deprecate_pulse_func
45
43
  def __init__(self, name: str, *extra_keys: str):
46
44
  """Create new reference.
47
45
 
@@ -18,13 +18,11 @@ from typing import Optional, Tuple
18
18
  from qiskit.pulse.channels import SnapshotChannel
19
19
  from qiskit.pulse.exceptions import PulseError
20
20
  from qiskit.pulse.instructions.instruction import Instruction
21
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
22
21
 
23
22
 
24
23
  class Snapshot(Instruction):
25
24
  """An instruction targeted for simulators, to capture a moment in the simulation."""
26
25
 
27
- @deprecate_pulse_func
28
26
  def __init__(self, label: str, snapshot_type: str = "statevector", name: Optional[str] = None):
29
27
  """Create new snapshot.
30
28
 
@@ -18,7 +18,6 @@ from __future__ import annotations
18
18
  import typing
19
19
  from abc import ABC, abstractmethod
20
20
  from typing import Any
21
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
22
21
 
23
22
  from qiskit.circuit.parameterexpression import ParameterExpression
24
23
 
@@ -37,7 +36,6 @@ class Pulse(ABC):
37
36
  limit_amplitude = True
38
37
 
39
38
  @abstractmethod
40
- @deprecate_pulse_func
41
39
  def __init__(
42
40
  self,
43
41
  duration: int | ParameterExpression,
@@ -31,7 +31,6 @@ from qiskit.circuit.parameterexpression import ParameterExpression, ParameterVal
31
31
  from qiskit.pulse.exceptions import PulseError
32
32
  from qiskit.pulse.library.pulse import Pulse
33
33
  from qiskit.pulse.library.waveform import Waveform
34
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
35
34
 
36
35
 
37
36
  def _lifted_gaussian(
@@ -404,7 +403,6 @@ class SymbolicPulse(Pulse):
404
403
  _constraints_lam = LambdifiedExpression("_constraints")
405
404
  _valid_amp_conditions_lam = LambdifiedExpression("_valid_amp_conditions")
406
405
 
407
- @deprecate_pulse_func
408
406
  def __init__(
409
407
  self,
410
408
  pulse_type: str,
@@ -782,10 +780,6 @@ class Gaussian(metaclass=_PulseType):
782
780
  valid_amp_conditions=valid_amp_conditions_expr,
783
781
  )
784
782
 
785
- @deprecate_pulse_func
786
- def __init__(self):
787
- pass
788
-
789
783
 
790
784
  class GaussianSquare(metaclass=_PulseType):
791
785
  """A square pulse with a Gaussian shaped risefall on both sides lifted such that
@@ -914,12 +908,7 @@ class GaussianSquare(metaclass=_PulseType):
914
908
  valid_amp_conditions=valid_amp_conditions_expr,
915
909
  )
916
910
 
917
- @deprecate_pulse_func
918
- def __init__(self):
919
- pass
920
-
921
911
 
922
- @deprecate_pulse_func
923
912
  def GaussianSquareDrag(
924
913
  duration: int | ParameterExpression,
925
914
  amp: float | ParameterExpression,
@@ -1072,7 +1061,6 @@ def GaussianSquareDrag(
1072
1061
  )
1073
1062
 
1074
1063
 
1075
- @deprecate_pulse_func
1076
1064
  def gaussian_square_echo(
1077
1065
  duration: int | ParameterValueType,
1078
1066
  amp: float | ParameterExpression,
@@ -1276,7 +1264,6 @@ def gaussian_square_echo(
1276
1264
  )
1277
1265
 
1278
1266
 
1279
- @deprecate_pulse_func
1280
1267
  def GaussianDeriv(
1281
1268
  duration: int | ParameterValueType,
1282
1269
  amp: float | ParameterExpression,
@@ -1437,10 +1424,6 @@ class Drag(metaclass=_PulseType):
1437
1424
  valid_amp_conditions=valid_amp_conditions_expr,
1438
1425
  )
1439
1426
 
1440
- @deprecate_pulse_func
1441
- def __init__(self):
1442
- pass
1443
-
1444
1427
 
1445
1428
  class Constant(metaclass=_PulseType):
1446
1429
  """A simple constant pulse, with an amplitude value and a duration:
@@ -1502,12 +1485,7 @@ class Constant(metaclass=_PulseType):
1502
1485
  valid_amp_conditions=valid_amp_conditions_expr,
1503
1486
  )
1504
1487
 
1505
- @deprecate_pulse_func
1506
- def __init__(self):
1507
- pass
1508
-
1509
1488
 
1510
- @deprecate_pulse_func
1511
1489
  def Sin(
1512
1490
  duration: int | ParameterExpression,
1513
1491
  amp: float | ParameterExpression,
@@ -1572,7 +1550,6 @@ def Sin(
1572
1550
  )
1573
1551
 
1574
1552
 
1575
- @deprecate_pulse_func
1576
1553
  def Cos(
1577
1554
  duration: int | ParameterExpression,
1578
1555
  amp: float | ParameterExpression,
@@ -1637,7 +1614,6 @@ def Cos(
1637
1614
  )
1638
1615
 
1639
1616
 
1640
- @deprecate_pulse_func
1641
1617
  def Sawtooth(
1642
1618
  duration: int | ParameterExpression,
1643
1619
  amp: float | ParameterExpression,
@@ -1706,7 +1682,6 @@ def Sawtooth(
1706
1682
  )
1707
1683
 
1708
1684
 
1709
- @deprecate_pulse_func
1710
1685
  def Triangle(
1711
1686
  duration: int | ParameterExpression,
1712
1687
  amp: float | ParameterExpression,
@@ -1775,7 +1750,6 @@ def Triangle(
1775
1750
  )
1776
1751
 
1777
1752
 
1778
- @deprecate_pulse_func
1779
1753
  def Square(
1780
1754
  duration: int | ParameterValueType,
1781
1755
  amp: float | ParameterExpression,
@@ -1847,7 +1821,6 @@ def Square(
1847
1821
  )
1848
1822
 
1849
1823
 
1850
- @deprecate_pulse_func
1851
1824
  def Sech(
1852
1825
  duration: int | ParameterValueType,
1853
1826
  amp: float | ParameterExpression,
@@ -1924,7 +1897,6 @@ def Sech(
1924
1897
  )
1925
1898
 
1926
1899
 
1927
- @deprecate_pulse_func
1928
1900
  def SechDeriv(
1929
1901
  duration: int | ParameterValueType,
1930
1902
  amp: float | ParameterExpression,
@@ -18,7 +18,6 @@ import numpy as np
18
18
 
19
19
  from qiskit.pulse.exceptions import PulseError
20
20
  from qiskit.pulse.library.pulse import Pulse
21
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
22
21
 
23
22
 
24
23
  class Waveform(Pulse):
@@ -26,7 +25,6 @@ class Waveform(Pulse):
26
25
  duration of the backend cycle-time, dt.
27
26
  """
28
27
 
29
- @deprecate_pulse_func
30
28
  def __init__(
31
29
  self,
32
30
  samples: np.ndarray | list[complex],
qiskit/pulse/macros.py CHANGED
@@ -194,7 +194,7 @@ def _measure_v2(
194
194
  for measure_qubit in meas_group:
195
195
  try:
196
196
  if measure_qubit in qubits:
197
- default_sched = target._get_calibration(measure_name, (measure_qubit,)).filter(
197
+ default_sched = target.get_calibration(measure_name, (measure_qubit,)).filter(
198
198
  channels=[
199
199
  channels.MeasureChannel(measure_qubit),
200
200
  channels.AcquireChannel(measure_qubit),
qiskit/pulse/schedule.py CHANGED
@@ -54,7 +54,6 @@ from qiskit.pulse.utils import instruction_duration_validation
54
54
  from qiskit.pulse.reference_manager import ReferenceManager
55
55
  from qiskit.utils.multiprocessing import is_main_process
56
56
  from qiskit.utils import deprecate_arg
57
- from qiskit.utils.deprecate_pulse import deprecate_pulse_func
58
57
 
59
58
 
60
59
  Interval = Tuple[int, int]
@@ -82,7 +81,6 @@ class Schedule:
82
81
 
83
82
  .. code-block:: python
84
83
 
85
- from qiskit.pulse import Schedule, Gaussian, DriveChannel, Play
86
84
  sched = Schedule()
87
85
  sched += Play(Gaussian(160, 0.1, 40), DriveChannel(0))
88
86
 
@@ -122,7 +120,6 @@ class Schedule:
122
120
  # Counter to count instance number.
123
121
  instances_counter = itertools.count()
124
122
 
125
- @deprecate_pulse_func
126
123
  def __init__(
127
124
  self,
128
125
  *schedules: "ScheduleComponent" | tuple[int, "ScheduleComponent"],
@@ -656,6 +653,8 @@ class Schedule:
656
653
 
657
654
  sched += pulse.Schedule(old)
658
655
 
656
+ sched = sched.flatten()
657
+
659
658
  sched = sched.replace(old, new)
660
659
 
661
660
  assert sched == pulse.Schedule(new)
@@ -900,11 +899,14 @@ class ScheduleBlock:
900
899
  pulse.reference("grand_child")
901
900
  pulse.play(pulse.Constant(200, amp2), pulse.DriveChannel(0))
902
901
 
903
- # Now assign the inner pulse program to this reference
904
- sched_outer.assign_references({("grand_child",): sched_inner})
902
+ Now you assign the inner pulse program to this reference.
903
+
904
+ .. code-block::
905
+
906
+ sched_outer.assign_references({("grand_child", ): sched_inner})
905
907
  print(sched_outer.parameters)
906
908
 
907
- .. code-block:: text
909
+ .. parsed-literal::
908
910
 
909
911
  {Parameter(amp1), Parameter(amp2)}
910
912
 
@@ -918,7 +920,7 @@ class ScheduleBlock:
918
920
 
919
921
  print(sched_outer.references)
920
922
 
921
- .. code-block:: text
923
+ .. parsed-literal::
922
924
 
923
925
  ReferenceManager:
924
926
  - ('grand_child',): ScheduleBlock(Play(Constant(duration=100, amp=amp1,...
@@ -937,7 +939,7 @@ class ScheduleBlock:
937
939
 
938
940
  print(main.parameters)
939
941
 
940
- .. code-block:: text
942
+ .. parsed-literal::
941
943
 
942
944
  {Parameter(amp1), Parameter(amp2), Parameter(amp3}
943
945
 
@@ -950,7 +952,7 @@ class ScheduleBlock:
950
952
 
951
953
  print(main.references)
952
954
 
953
- .. code-block:: text
955
+ .. parsed-literal::
954
956
 
955
957
  ReferenceManager:
956
958
  - ('child',): ScheduleBlock(ScheduleBlock(ScheduleBlock(Play(Con...
@@ -984,7 +986,6 @@ class ScheduleBlock:
984
986
  # Counter to count instance number.
985
987
  instances_counter = itertools.count()
986
988
 
987
- @deprecate_pulse_func
988
989
  def __init__(
989
990
  self, name: str | None = None, metadata: dict | None = None, alignment_context=None
990
991
  ):
@@ -1458,7 +1459,7 @@ class ScheduleBlock:
1458
1459
 
1459
1460
  from qiskit import pulse
1460
1461
 
1461
- with pulse.build() as nested_prog:
1462
+ with pulse.build() as subroutine:
1462
1463
  pulse.delay(10, pulse.DriveChannel(0))
1463
1464
 
1464
1465
  with pulse.build() as sub_prog:
@@ -1489,7 +1490,7 @@ class ScheduleBlock:
1489
1490
  .. code-block:: python
1490
1491
 
1491
1492
  main_prog.assign_references({("B", ): sub_prog}, inplace=True)
1492
- main_prog.references[("B", )].assign_references({("A", ): nested_prog}, inplace=True)
1493
+ main_prog.references[("B", )].assign_references({"A": nested_prog}, inplace=True)
1493
1494
 
1494
1495
  Here :attr:`.references` returns a dict-like object, and you can
1495
1496
  mutably update the nested reference of the particular subroutine.
@@ -53,7 +53,7 @@ class AlignmentKind(abc.ABC):
53
53
  When the context has two pulses in different channels,
54
54
  a sequential context subtype intends to return following scheduling outcome.
55
55
 
56
- .. code-block:: text
56
+ .. parsed-literal::
57
57
 
58
58
  ┌────────┐
59
59
  D0: ┤ pulse1 ├────────────
@@ -63,7 +63,7 @@ class AlignmentKind(abc.ABC):
63
63
 
64
64
  On the other hand, parallel context with ``is_sequential=False`` returns
65
65
 
66
- .. code-block:: text
66
+ .. parsed-literal::
67
67
 
68
68
  ┌────────┐
69
69
  D0: ┤ pulse1 ├
@@ -338,10 +338,8 @@ class AlignFunc(AlignmentKind):
338
338
 
339
339
  .. code-block:: python
340
340
 
341
- import numpy as np
342
-
343
341
  def udd10_pos(j):
344
- return np.sin(np.pi*j/(2*10 + 2))**2
342
+ return np.sin(np.pi*j/(2*10 + 2))**2
345
343
 
346
344
  .. note::
347
345
 
@@ -32,11 +32,6 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG:
32
32
 
33
33
  .. code-block:: python
34
34
 
35
- from qiskit import pulse
36
-
37
- my_gaussian0 = pulse.Gaussian(100, 0.5, 20)
38
- my_gaussian1 = pulse.Gaussian(100, 0.3, 10)
39
-
40
35
  with pulse.build() as sched1:
41
36
  with pulse.align_left():
42
37
  pulse.play(my_gaussian0, pulse.DriveChannel(0))
@@ -56,8 +51,6 @@ def block_to_dag(block: ScheduleBlock) -> rx.PyDAG:
56
51
 
57
52
  .. code-block:: python
58
53
 
59
- from qiskit import pulse
60
-
61
54
  with pulse.build() as sched:
62
55
  with pulse.align_left():
63
56
  pulse.shift_phase(1.57, pulse.DriveChannel(1))
qiskit/qasm2/export.py CHANGED
@@ -246,14 +246,12 @@ def _instruction_call_site(operation):
246
246
  if operation.params:
247
247
  params = ",".join([pi_check(i, output="qasm", eps=1e-12) for i in operation.params])
248
248
  qasm2_call = f"{qasm2_call}({params})"
249
- if operation._condition is not None:
250
- if not isinstance(operation._condition[0], ClassicalRegister):
249
+ if operation.condition is not None:
250
+ if not isinstance(operation.condition[0], ClassicalRegister):
251
251
  raise QASM2ExportError(
252
252
  "OpenQASM 2 can only condition on registers, but got '{operation.condition[0]}'"
253
253
  )
254
- qasm2_call = (
255
- f"if({operation._condition[0].name}=={operation._condition[1]:d}) " + qasm2_call
256
- )
254
+ qasm2_call = f"if({operation.condition[0].name}=={operation.condition[1]:d}) " + qasm2_call
257
255
  return qasm2_call
258
256
 
259
257
 
qiskit/qasm2/parse.py CHANGED
@@ -11,7 +11,7 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
  """Python-space bytecode interpreter for the output of the main Rust parser logic."""
14
- import warnings
14
+
15
15
  import dataclasses
16
16
  import math
17
17
  from typing import Iterable, Callable
@@ -89,35 +89,6 @@ class CustomInstruction:
89
89
  There is a final ``builtin`` field. This is optional, and if set true will cause the
90
90
  instruction to be defined and available within the parsing, even if there is no definition in
91
91
  any included OpenQASM 2 file.
92
-
93
- Examples:
94
-
95
- Instruct the importer to use Qiskit's :class:`.ECRGate` and :class:`.RZXGate` objects to
96
- interpret ``gate`` statements that are known to have been created from those same objects
97
- during OpenQASM 2 export::
98
-
99
- from qiskit import qasm2
100
- from qiskit.circuit import QuantumCircuit, library
101
-
102
- qc = QuantumCircuit(2)
103
- qc.ecr(0, 1)
104
- qc.rzx(0.3, 0, 1)
105
- qc.rzx(0.7, 1, 0)
106
- qc.rzx(1.5, 0, 1)
107
- qc.ecr(1, 0)
108
-
109
- # This output string includes `gate ecr q0, q1 { ... }` and `gate rzx(p) q0, q1 { ... }`
110
- # statements, since `ecr` and `rzx` are neither built-in gates nor in ``qelib1.inc``.
111
- dumped = qasm2.dumps(qc)
112
-
113
- # Tell the importer how to interpret the `gate` statements, which we know are safe
114
- # because we controlled the input OpenQASM 2 source.
115
- custom = [
116
- qasm2.CustomInstruction("ecr", 0, 2, library.ECRGate),
117
- qasm2.CustomInstruction("rzx", 1, 2, library.RZXGate),
118
- ]
119
-
120
- loaded = qasm2.loads(dumped, custom_instructions=custom)
121
92
  """
122
93
 
123
94
  name: str
@@ -255,11 +226,6 @@ def from_bytecode(bytecode, custom_instructions: Iterable[CustomInstruction]):
255
226
  CircuitInstruction(gates[gate_id](*parameters), [qubits[q] for q in op_qubits])
256
227
  )
257
228
  elif opcode == OpCode.ConditionedGate:
258
- warnings.warn(
259
- "Conditioned gates in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
260
- FutureWarning,
261
- stacklevel=3,
262
- )
263
229
  gate_id, parameters, op_qubits, creg, value = op.operands
264
230
  gate = gates[gate_id](*parameters).c_if(qc.cregs[creg], value)
265
231
  qc._append(CircuitInstruction(gate, [qubits[q] for q in op_qubits]))
@@ -267,22 +233,12 @@ def from_bytecode(bytecode, custom_instructions: Iterable[CustomInstruction]):
267
233
  qubit, clbit = op.operands
268
234
  qc._append(CircuitInstruction(Measure(), (qubits[qubit],), (clbits[clbit],)))
269
235
  elif opcode == OpCode.ConditionedMeasure:
270
- warnings.warn(
271
- "Conditioned measurements in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
272
- FutureWarning,
273
- stacklevel=3,
274
- )
275
236
  qubit, clbit, creg, value = op.operands
276
237
  measure = Measure().c_if(qc.cregs[creg], value)
277
238
  qc._append(CircuitInstruction(measure, (qubits[qubit],), (clbits[clbit],)))
278
239
  elif opcode == OpCode.Reset:
279
240
  qc._append(CircuitInstruction(Reset(), (qubits[op.operands[0]],)))
280
241
  elif opcode == OpCode.ConditionedReset:
281
- warnings.warn(
282
- "Conditioned resets in qasm2 will be loaded as an IfElseOp starting in Qiskit 2.0",
283
- FutureWarning,
284
- stacklevel=3,
285
- )
286
242
  qubit, creg, value = op.operands
287
243
  reset = Reset().c_if(qc.cregs[creg], value)
288
244
  qc._append(CircuitInstruction(reset, (qubits[qubit],)))
@@ -371,7 +327,7 @@ class _DefinedGate(Gate):
371
327
  # to pickle ourselves, we just eagerly create the definition and pickle that.
372
328
 
373
329
  def __getstate__(self):
374
- return (self.name, self.num_qubits, self.params, self.definition, self._condition)
330
+ return (self.name, self.num_qubits, self.params, self.definition, self.condition)
375
331
 
376
332
  def __setstate__(self, state):
377
333
  name, num_qubits, params, definition, condition = state
qiskit/qasm3/__init__.py CHANGED
@@ -209,7 +209,6 @@ custom Python constructors to use for particular gates. These custom constructo
209
209
  using the :class:`CustomGate` object:
210
210
 
211
211
  .. autoclass:: CustomGate
212
- :members:
213
212
 
214
213
  In ``custom_gates`` is not given, Qiskit will attempt to use its standard-library gate objects for
215
214
  the gates defined in OpenQASM 3 standard library file ``stdgates.inc``. This sequence of gates is