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
qiskit/qasm3/ast.py CHANGED
@@ -15,14 +15,12 @@
15
15
  """QASM3 AST Nodes"""
16
16
 
17
17
  import enum
18
- from typing import Optional, List, Union, Iterable, Tuple, Sequence
18
+ from typing import Optional, List, Union, Iterable, Tuple
19
19
 
20
20
 
21
21
  class ASTNode:
22
22
  """Base abstract class for AST nodes"""
23
23
 
24
- __slots__ = ()
25
-
26
24
 
27
25
  class Statement(ASTNode):
28
26
  """
@@ -37,8 +35,6 @@ class Statement(ASTNode):
37
35
  | quantumStatement
38
36
  """
39
37
 
40
- __slots__ = ()
41
-
42
38
 
43
39
  class Pragma(ASTNode):
44
40
  """
@@ -46,8 +42,6 @@ class Pragma(ASTNode):
46
42
  : '#pragma' LBRACE statement* RBRACE // match any valid openqasm statement
47
43
  """
48
44
 
49
- __slots__ = ("content",)
50
-
51
45
  def __init__(self, content):
52
46
  self.content = content
53
47
 
@@ -58,8 +52,6 @@ class CalibrationGrammarDeclaration(Statement):
58
52
  : 'defcalgrammar' calibrationGrammar SEMICOLON
59
53
  """
60
54
 
61
- __slots__ = ("name",)
62
-
63
55
  def __init__(self, name):
64
56
  self.name = name
65
57
 
@@ -70,11 +62,9 @@ class Program(ASTNode):
70
62
  : header (globalStatement | statement)*
71
63
  """
72
64
 
73
- __slots__ = ("header", "statements")
74
-
75
- def __init__(self, header, statements=()):
65
+ def __init__(self, header, statements=None):
76
66
  self.header = header
77
- self.statements = statements
67
+ self.statements = statements or []
78
68
 
79
69
 
80
70
  class Header(ASTNode):
@@ -83,8 +73,6 @@ class Header(ASTNode):
83
73
  : version? include*
84
74
  """
85
75
 
86
- __slots__ = ("version", "includes")
87
-
88
76
  def __init__(self, version, includes):
89
77
  self.version = version
90
78
  self.includes = includes
@@ -96,8 +84,6 @@ class Include(ASTNode):
96
84
  : 'include' StringLiteral SEMICOLON
97
85
  """
98
86
 
99
- __slots__ = ("filename",)
100
-
101
87
  def __init__(self, filename):
102
88
  self.filename = filename
103
89
 
@@ -108,8 +94,6 @@ class Version(ASTNode):
108
94
  : 'OPENQASM'(Integer | RealNumber) SEMICOLON
109
95
  """
110
96
 
111
- __slots__ = ("version_number",)
112
-
113
97
  def __init__(self, version_number):
114
98
  self.version_number = version_number
115
99
 
@@ -124,14 +108,10 @@ class QuantumInstruction(ASTNode):
124
108
  | quantumBarrier
125
109
  """
126
110
 
127
- __slots__ = ()
128
-
129
111
 
130
112
  class ClassicalType(ASTNode):
131
113
  """Information about a classical type. This is just an abstract base for inheritance tests."""
132
114
 
133
- __slots__ = ()
134
-
135
115
 
136
116
  class FloatType(ClassicalType, enum.Enum):
137
117
  """Allowed values for the width of floating-point types."""
@@ -146,14 +126,10 @@ class FloatType(ClassicalType, enum.Enum):
146
126
  class BoolType(ClassicalType):
147
127
  """Type information for a Boolean."""
148
128
 
149
- __slots__ = ()
150
-
151
129
 
152
130
  class IntType(ClassicalType):
153
131
  """Type information for a signed integer."""
154
132
 
155
- __slots__ = ("size",)
156
-
157
133
  def __init__(self, size: Optional[int] = None):
158
134
  self.size = size
159
135
 
@@ -161,8 +137,6 @@ class IntType(ClassicalType):
161
137
  class UintType(ClassicalType):
162
138
  """Type information for an unsigned integer."""
163
139
 
164
- __slots__ = ("size",)
165
-
166
140
  def __init__(self, size: Optional[int] = None):
167
141
  self.size = size
168
142
 
@@ -170,25 +144,19 @@ class UintType(ClassicalType):
170
144
  class BitType(ClassicalType):
171
145
  """Type information for a single bit."""
172
146
 
173
- __slots__ = ()
174
-
175
147
 
176
148
  class BitArrayType(ClassicalType):
177
149
  """Type information for a sized number of classical bits."""
178
150
 
179
- __slots__ = ("size",)
180
-
181
151
  def __init__(self, size: int):
182
152
  self.size = size
183
153
 
184
154
 
185
155
  class Expression(ASTNode):
186
- __slots__ = ()
156
+ pass
187
157
 
188
158
 
189
159
  class StringifyAndPray(Expression):
190
- __slots__ = ("obj",)
191
-
192
160
  # This is not a real AST node, yet is somehow very common. It's used when there are
193
161
  # `ParameterExpression` instances; instead of actually visiting the Sympy expression tree into
194
162
  # an OQ3 AST, we just convert it to a string, cross our fingers, and hope.
@@ -197,8 +165,6 @@ class StringifyAndPray(Expression):
197
165
 
198
166
 
199
167
  class Range(Expression):
200
- __slots__ = ("start", "step", "end")
201
-
202
168
  def __init__(
203
169
  self,
204
170
  start: Optional[Expression] = None,
@@ -211,8 +177,6 @@ class Range(Expression):
211
177
 
212
178
 
213
179
  class Identifier(Expression):
214
- __slots__ = ("string",)
215
-
216
180
  def __init__(self, string):
217
181
  self.string = string
218
182
 
@@ -220,8 +184,6 @@ class Identifier(Expression):
220
184
  class SubscriptedIdentifier(Identifier):
221
185
  """An identifier with subscripted access."""
222
186
 
223
- __slots__ = ("subscript",)
224
-
225
187
  def __init__(self, string: str, subscript: Union[Range, Expression]):
226
188
  super().__init__(string)
227
189
  self.subscript = subscript
@@ -236,22 +198,16 @@ class Constant(Expression, enum.Enum):
236
198
 
237
199
 
238
200
  class IntegerLiteral(Expression):
239
- __slots__ = ("value",)
240
-
241
201
  def __init__(self, value):
242
202
  self.value = value
243
203
 
244
204
 
245
205
  class BooleanLiteral(Expression):
246
- __slots__ = ("value",)
247
-
248
206
  def __init__(self, value):
249
207
  self.value = value
250
208
 
251
209
 
252
210
  class BitstringLiteral(Expression):
253
- __slots__ = ("value", "width")
254
-
255
211
  def __init__(self, value, width):
256
212
  self.value = value
257
213
  self.width = width
@@ -268,16 +224,12 @@ class DurationUnit(enum.Enum):
268
224
 
269
225
 
270
226
  class DurationLiteral(Expression):
271
- __slots__ = ("value", "unit")
272
-
273
227
  def __init__(self, value: float, unit: DurationUnit):
274
228
  self.value = value
275
229
  self.unit = unit
276
230
 
277
231
 
278
232
  class Unary(Expression):
279
- __slots__ = ("op", "operand")
280
-
281
233
  class Op(enum.Enum):
282
234
  LOGIC_NOT = "!"
283
235
  BIT_NOT = "~"
@@ -288,8 +240,6 @@ class Unary(Expression):
288
240
 
289
241
 
290
242
  class Binary(Expression):
291
- __slots__ = ("op", "left", "right")
292
-
293
243
  class Op(enum.Enum):
294
244
  BIT_AND = "&"
295
245
  BIT_OR = "|"
@@ -312,16 +262,12 @@ class Binary(Expression):
312
262
 
313
263
 
314
264
  class Cast(Expression):
315
- __slots__ = ("type", "operand")
316
-
317
265
  def __init__(self, type: ClassicalType, operand: Expression):
318
266
  self.type = type
319
267
  self.operand = operand
320
268
 
321
269
 
322
270
  class Index(Expression):
323
- __slots__ = ("target", "index")
324
-
325
271
  def __init__(self, target: Expression, index: Expression):
326
272
  self.target = target
327
273
  self.index = index
@@ -334,8 +280,6 @@ class IndexSet(ASTNode):
334
280
  { Expression (, Expression)* }
335
281
  """
336
282
 
337
- __slots__ = ("values",)
338
-
339
283
  def __init__(self, values: List[Expression]):
340
284
  self.values = values
341
285
 
@@ -346,8 +290,6 @@ class QuantumMeasurement(ASTNode):
346
290
  : 'measure' indexIdentifierList
347
291
  """
348
292
 
349
- __slots__ = ("identifierList",)
350
-
351
293
  def __init__(self, identifierList: List[Identifier]):
352
294
  self.identifierList = identifierList
353
295
 
@@ -359,8 +301,6 @@ class QuantumMeasurementAssignment(Statement):
359
301
  | indexIdentifier EQUALS quantumMeasurement # eg: bits = measure qubits;
360
302
  """
361
303
 
362
- __slots__ = ("identifier", "quantumMeasurement")
363
-
364
304
  def __init__(self, identifier: Identifier, quantumMeasurement: QuantumMeasurement):
365
305
  self.identifier = identifier
366
306
  self.quantumMeasurement = quantumMeasurement
@@ -372,8 +312,6 @@ class Designator(ASTNode):
372
312
  : LBRACKET expression RBRACKET
373
313
  """
374
314
 
375
- __slots__ = ("expression",)
376
-
377
315
  def __init__(self, expression: Expression):
378
316
  self.expression = expression
379
317
 
@@ -381,8 +319,6 @@ class Designator(ASTNode):
381
319
  class ClassicalDeclaration(Statement):
382
320
  """Declaration of a classical type, optionally initializing it to a value."""
383
321
 
384
- __slots__ = ("type", "identifier", "initializer")
385
-
386
322
  def __init__(self, type_: ClassicalType, identifier: Identifier, initializer=None):
387
323
  self.type = type_
388
324
  self.identifier = identifier
@@ -392,8 +328,6 @@ class ClassicalDeclaration(Statement):
392
328
  class AssignmentStatement(Statement):
393
329
  """Assignment of an expression to an l-value."""
394
330
 
395
- __slots__ = ("lvalue", "rvalue")
396
-
397
331
  def __init__(self, lvalue: SubscriptedIdentifier, rvalue: Expression):
398
332
  self.lvalue = lvalue
399
333
  self.rvalue = rvalue
@@ -406,8 +340,6 @@ class QuantumDeclaration(ASTNode):
406
340
  'qubit' designator? Identifier
407
341
  """
408
342
 
409
- __slots__ = ("identifier", "designator")
410
-
411
343
  def __init__(self, identifier: Identifier, designator=None):
412
344
  self.identifier = identifier
413
345
  self.designator = designator
@@ -419,8 +351,6 @@ class AliasStatement(ASTNode):
419
351
  : 'let' Identifier EQUALS indexIdentifier SEMICOLON
420
352
  """
421
353
 
422
- __slots__ = ("identifier", "value")
423
-
424
354
  def __init__(self, identifier: Identifier, value: Expression):
425
355
  self.identifier = identifier
426
356
  self.value = value
@@ -438,8 +368,6 @@ class QuantumGateModifierName(enum.Enum):
438
368
  class QuantumGateModifier(ASTNode):
439
369
  """A modifier of a gate. For example, in ``ctrl @ x $0``, the ``ctrl @`` is the modifier."""
440
370
 
441
- __slots__ = ("modifier", "argument")
442
-
443
371
  def __init__(self, modifier: QuantumGateModifierName, argument: Optional[Expression] = None):
444
372
  self.modifier = modifier
445
373
  self.argument = argument
@@ -451,19 +379,17 @@ class QuantumGateCall(QuantumInstruction):
451
379
  : quantumGateModifier* quantumGateName ( LPAREN expressionList? RPAREN )? indexIdentifierList
452
380
  """
453
381
 
454
- __slots__ = ("quantumGateName", "indexIdentifierList", "parameters", "modifiers")
455
-
456
382
  def __init__(
457
383
  self,
458
384
  quantumGateName: Identifier,
459
385
  indexIdentifierList: List[Identifier],
460
- parameters: Sequence[Expression] = (),
461
- modifiers: Sequence[QuantumGateModifier] = (),
386
+ parameters: List[Expression] = None,
387
+ modifiers: Optional[List[QuantumGateModifier]] = None,
462
388
  ):
463
389
  self.quantumGateName = quantumGateName
464
390
  self.indexIdentifierList = indexIdentifierList
465
- self.parameters = parameters
466
- self.modifiers = modifiers
391
+ self.parameters = parameters or []
392
+ self.modifiers = modifiers or []
467
393
 
468
394
 
469
395
  class QuantumBarrier(QuantumInstruction):
@@ -472,8 +398,6 @@ class QuantumBarrier(QuantumInstruction):
472
398
  : 'barrier' indexIdentifierList
473
399
  """
474
400
 
475
- __slots__ = ("indexIdentifierList",)
476
-
477
401
  def __init__(self, indexIdentifierList: List[Identifier]):
478
402
  self.indexIdentifierList = indexIdentifierList
479
403
 
@@ -481,8 +405,6 @@ class QuantumBarrier(QuantumInstruction):
481
405
  class QuantumReset(QuantumInstruction):
482
406
  """A built-in ``reset q0;`` statement."""
483
407
 
484
- __slots__ = ("identifier",)
485
-
486
408
  def __init__(self, identifier: Identifier):
487
409
  self.identifier = identifier
488
410
 
@@ -490,8 +412,6 @@ class QuantumReset(QuantumInstruction):
490
412
  class QuantumDelay(QuantumInstruction):
491
413
  """A built-in ``delay[duration] q0;`` statement."""
492
414
 
493
- __slots__ = ("duration", "qubits")
494
-
495
415
  def __init__(self, duration: Expression, qubits: List[Identifier]):
496
416
  self.duration = duration
497
417
  self.qubits = qubits
@@ -504,8 +424,6 @@ class ProgramBlock(ASTNode):
504
424
  | LBRACE(statement | controlDirective) * RBRACE
505
425
  """
506
426
 
507
- __slots__ = ("statements",)
508
-
509
427
  def __init__(self, statements: List[Statement]):
510
428
  self.statements = statements
511
429
 
@@ -516,8 +434,6 @@ class ReturnStatement(ASTNode): # TODO probably should be a subclass of Control
516
434
  : 'return' ( expression | quantumMeasurement )? SEMICOLON;
517
435
  """
518
436
 
519
- __slots__ = ("expression",)
520
-
521
437
  def __init__(self, expression=None):
522
438
  self.expression = expression
523
439
 
@@ -528,7 +444,7 @@ class QuantumBlock(ProgramBlock):
528
444
  : LBRACE ( quantumStatement | quantumLoop )* RBRACE
529
445
  """
530
446
 
531
- __slots__ = ()
447
+ pass
532
448
 
533
449
 
534
450
  class SubroutineBlock(ProgramBlock):
@@ -537,7 +453,7 @@ class SubroutineBlock(ProgramBlock):
537
453
  : LBRACE statement* returnStatement? RBRACE
538
454
  """
539
455
 
540
- __slots__ = ()
456
+ pass
541
457
 
542
458
 
543
459
  class QuantumGateDefinition(Statement):
@@ -546,8 +462,6 @@ class QuantumGateDefinition(Statement):
546
462
  : 'gate' quantumGateSignature quantumBlock
547
463
  """
548
464
 
549
- __slots__ = ("name", "params", "qubits", "body")
550
-
551
465
  def __init__(
552
466
  self,
553
467
  name: Identifier,
@@ -568,16 +482,14 @@ class SubroutineDefinition(Statement):
568
482
  returnSignature? subroutineBlock
569
483
  """
570
484
 
571
- __slots__ = ("identifier", "arguments", "subroutineBlock")
572
-
573
485
  def __init__(
574
486
  self,
575
487
  identifier: Identifier,
576
488
  subroutineBlock: SubroutineBlock,
577
- arguments=(), # [ClassicalArgument]
489
+ arguments=None, # [ClassicalArgument]
578
490
  ):
579
491
  self.identifier = identifier
580
- self.arguments = arguments
492
+ self.arguments = arguments or []
581
493
  self.subroutineBlock = subroutineBlock
582
494
 
583
495
 
@@ -587,7 +499,7 @@ class CalibrationArgument(ASTNode):
587
499
  : classicalArgumentList | expressionList
588
500
  """
589
501
 
590
- __slots__ = ()
502
+ pass
591
503
 
592
504
 
593
505
  class CalibrationDefinition(Statement):
@@ -599,17 +511,15 @@ class CalibrationDefinition(Statement):
599
511
  ;
600
512
  """
601
513
 
602
- __slots__ = ("name", "identifierList", "calibrationArgumentList")
603
-
604
514
  def __init__(
605
515
  self,
606
516
  name: Identifier,
607
517
  identifierList: List[Identifier],
608
- calibrationArgumentList: Sequence[CalibrationArgument] = (),
518
+ calibrationArgumentList: Optional[List[CalibrationArgument]] = None,
609
519
  ):
610
520
  self.name = name
611
521
  self.identifierList = identifierList
612
- self.calibrationArgumentList = calibrationArgumentList
522
+ self.calibrationArgumentList = calibrationArgumentList or []
613
523
 
614
524
 
615
525
  class BranchingStatement(Statement):
@@ -618,8 +528,6 @@ class BranchingStatement(Statement):
618
528
  : 'if' LPAREN booleanExpression RPAREN programBlock ( 'else' programBlock )?
619
529
  """
620
530
 
621
- __slots__ = ("condition", "true_body", "false_body")
622
-
623
531
  def __init__(self, condition: Expression, true_body: ProgramBlock, false_body=None):
624
532
  self.condition = condition
625
533
  self.true_body = true_body
@@ -639,8 +547,6 @@ class ForLoopStatement(Statement):
639
547
  | "[" Range "]"
640
548
  """
641
549
 
642
- __slots__ = ("indexset", "parameter", "body")
643
-
644
550
  def __init__(
645
551
  self,
646
552
  indexset: Union[Identifier, IndexSet, Range],
@@ -661,8 +567,6 @@ class WhileLoopStatement(Statement):
661
567
  WhileLoop: "while" "(" Expression ")" ProgramBlock
662
568
  """
663
569
 
664
- __slots__ = ("condition", "body")
665
-
666
570
  def __init__(self, condition: Expression, body: ProgramBlock):
667
571
  self.condition = condition
668
572
  self.body = body
@@ -671,14 +575,10 @@ class WhileLoopStatement(Statement):
671
575
  class BreakStatement(Statement):
672
576
  """AST node for ``break`` statements. Has no associated information."""
673
577
 
674
- __slots__ = ()
675
-
676
578
 
677
579
  class ContinueStatement(Statement):
678
580
  """AST node for ``continue`` statements. Has no associated information."""
679
581
 
680
- __slots__ = ()
681
-
682
582
 
683
583
  class IOModifier(enum.Enum):
684
584
  """IO Modifier object"""
@@ -690,8 +590,6 @@ class IOModifier(enum.Enum):
690
590
  class IODeclaration(ClassicalDeclaration):
691
591
  """A declaration of an IO variable."""
692
592
 
693
- __slots__ = ("modifier",)
694
-
695
593
  def __init__(self, modifier: IOModifier, type_: ClassicalType, identifier: Identifier):
696
594
  super().__init__(type_, identifier)
697
595
  self.modifier = modifier
@@ -700,8 +598,6 @@ class IODeclaration(ClassicalDeclaration):
700
598
  class DefaultCase(Expression):
701
599
  """An object representing the `default` special label in switch statements."""
702
600
 
703
- __slots__ = ()
704
-
705
601
 
706
602
  class SwitchStatementPreview(Statement):
707
603
  """AST node for the proposed 'switch-case' extension to OpenQASM 3, before the syntax was
@@ -709,8 +605,6 @@ class SwitchStatementPreview(Statement):
709
605
 
710
606
  The stabilized form of the syntax instead uses :class:`.SwitchStatement`."""
711
607
 
712
- __slots__ = ("target", "cases")
713
-
714
608
  def __init__(
715
609
  self, target: Expression, cases: Iterable[Tuple[Iterable[Expression], ProgramBlock]]
716
610
  ):
@@ -725,8 +619,6 @@ class SwitchStatement(Statement):
725
619
  cannot be joined with other cases (even though that's meaningless, the V1 syntax permitted it).
726
620
  """
727
621
 
728
- __slots__ = ("target", "cases", "default")
729
-
730
622
  def __init__(
731
623
  self,
732
624
  target: Expression,