qiskit 1.3.0b1__cp39-abi3-win32.whl → 1.3.0rc2__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 (360) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +20 -1
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +2 -0
  5. qiskit/circuit/__init__.py +44 -1
  6. qiskit/circuit/_standard_gates_commutations.py +585 -0
  7. qiskit/circuit/barrier.py +2 -0
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +13 -5
  10. qiskit/circuit/controlflow/while_loop.py +10 -2
  11. qiskit/circuit/delay.py +20 -3
  12. qiskit/circuit/equivalence.py +13 -214
  13. qiskit/circuit/gate.py +3 -1
  14. qiskit/circuit/instruction.py +32 -11
  15. qiskit/circuit/instructionset.py +2 -0
  16. qiskit/circuit/library/__init__.py +110 -14
  17. qiskit/circuit/library/arithmetic/__init__.py +9 -2
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +1 -0
  19. qiskit/circuit/library/arithmetic/adders/adder.py +154 -2
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +20 -56
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +14 -1
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +21 -91
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +1 -0
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +8 -1
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +94 -3
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +8 -1
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +20 -38
  30. qiskit/circuit/library/blueprintcircuit.py +64 -0
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +81 -4
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +107 -4
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +107 -3
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +97 -3
  36. qiskit/circuit/library/data_preparation/__init__.py +6 -3
  37. qiskit/circuit/library/data_preparation/{z_feature_map.py → _z_feature_map.py} +45 -34
  38. qiskit/circuit/library/data_preparation/_zz_feature_map.py +150 -0
  39. qiskit/circuit/library/data_preparation/pauli_feature_map.py +342 -29
  40. qiskit/circuit/library/fourier_checking.py +72 -11
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +45 -51
  43. qiskit/circuit/library/generalized_gates/gms.py +67 -14
  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 +12 -6
  47. qiskit/circuit/library/generalized_gates/mcmt.py +167 -107
  48. qiskit/circuit/library/generalized_gates/permutation.py +8 -6
  49. qiskit/circuit/library/generalized_gates/rv.py +8 -9
  50. qiskit/circuit/library/graph_state.py +93 -10
  51. qiskit/circuit/library/grover_operator.py +270 -2
  52. qiskit/circuit/library/hidden_linear_function.py +83 -20
  53. qiskit/circuit/library/iqp.py +99 -20
  54. qiskit/circuit/library/n_local/__init__.py +19 -7
  55. qiskit/circuit/library/n_local/efficient_su2.py +118 -5
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +259 -0
  57. qiskit/circuit/library/n_local/excitation_preserving.py +130 -6
  58. qiskit/circuit/library/n_local/n_local.py +406 -5
  59. qiskit/circuit/library/n_local/pauli_two_design.py +106 -4
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +80 -1
  61. qiskit/circuit/library/n_local/real_amplitudes.py +127 -7
  62. qiskit/circuit/library/n_local/two_local.py +14 -7
  63. qiskit/circuit/library/overlap.py +91 -26
  64. qiskit/circuit/library/pauli_evolution.py +17 -15
  65. qiskit/circuit/library/phase_estimation.py +80 -4
  66. qiskit/circuit/library/quantum_volume.py +72 -20
  67. qiskit/circuit/library/standard_gates/__init__.py +20 -1
  68. qiskit/circuit/library/standard_gates/dcx.py +2 -1
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +4 -3
  71. qiskit/circuit/library/standard_gates/i.py +2 -1
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +20 -12
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +4 -3
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +4 -3
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +13 -12
  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 +4 -3
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +11 -3
  87. qiskit/circuit/library/standard_gates/u1.py +65 -15
  88. qiskit/circuit/library/standard_gates/u2.py +4 -1
  89. qiskit/circuit/library/standard_gates/u3.py +31 -3
  90. qiskit/circuit/library/standard_gates/x.py +7 -5
  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 +4 -3
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +9 -8
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +10 -9
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +9 -7
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +9 -8
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +9 -8
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +10 -9
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +10 -9
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +10 -9
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +10 -9
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +10 -9
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +10 -9
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +10 -9
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +10 -9
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +9 -8
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +10 -9
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +10 -9
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +10 -9
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +10 -9
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +9 -7
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +10 -8
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +12 -10
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +16 -14
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +14 -12
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +12 -10
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +14 -12
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +12 -10
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +12 -10
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +12 -10
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +12 -10
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +11 -9
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +11 -9
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +12 -10
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +12 -10
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +12 -10
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +12 -10
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +12 -10
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +12 -10
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +13 -11
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +13 -11
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +13 -11
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +13 -11
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +13 -11
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +13 -11
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +11 -9
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +12 -10
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +12 -10
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +12 -10
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +12 -10
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +12 -10
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +12 -10
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +12 -10
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +12 -10
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +12 -10
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +12 -10
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +12 -10
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +11 -9
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +12 -10
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +12 -10
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +12 -10
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +12 -10
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +12 -10
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +12 -10
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +12 -10
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +12 -10
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +12 -10
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +11 -10
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +16 -15
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +12 -10
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +22 -20
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +16 -15
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +17 -15
  166. qiskit/circuit/parameter.py +4 -0
  167. qiskit/circuit/parameterexpression.py +167 -34
  168. qiskit/circuit/quantumcircuit.py +162 -126
  169. qiskit/circuit/singleton.py +2 -0
  170. qiskit/circuit/store.py +2 -0
  171. qiskit/circuit/twirling.py +145 -0
  172. qiskit/compiler/assembler.py +17 -4
  173. qiskit/compiler/scheduler.py +2 -0
  174. qiskit/compiler/sequencer.py +2 -0
  175. qiskit/compiler/transpiler.py +81 -26
  176. qiskit/converters/circuit_to_dag.py +2 -2
  177. qiskit/converters/circuit_to_dagdependency.py +1 -1
  178. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  179. qiskit/converters/circuit_to_instruction.py +1 -1
  180. qiskit/converters/dag_to_circuit.py +7 -5
  181. qiskit/converters/dag_to_dagdependency.py +1 -1
  182. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  183. qiskit/converters/dagdependency_to_circuit.py +5 -1
  184. qiskit/converters/dagdependency_to_dag.py +6 -1
  185. qiskit/dagcircuit/collect_blocks.py +3 -3
  186. qiskit/dagcircuit/dagdependency.py +18 -5
  187. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  188. qiskit/dagcircuit/dagnode.py +2 -2
  189. qiskit/passmanager/__init__.py +2 -2
  190. qiskit/primitives/backend_estimator.py +5 -2
  191. qiskit/primitives/backend_sampler_v2.py +61 -18
  192. qiskit/primitives/base/base_estimator.py +2 -2
  193. qiskit/primitives/containers/data_bin.py +9 -1
  194. qiskit/primitives/statevector_sampler.py +1 -1
  195. qiskit/primitives/utils.py +1 -1
  196. qiskit/providers/__init__.py +3 -3
  197. qiskit/providers/backend.py +12 -1
  198. qiskit/providers/backend_compat.py +23 -3
  199. qiskit/providers/basic_provider/basic_simulator.py +12 -2
  200. qiskit/providers/fake_provider/fake_pulse_backend.py +6 -1
  201. qiskit/providers/fake_provider/generic_backend_v2.py +46 -30
  202. qiskit/providers/models/pulsedefaults.py +2 -0
  203. qiskit/pulse/builder.py +59 -18
  204. qiskit/pulse/calibration_entries.py +4 -1
  205. qiskit/pulse/channels.py +2 -0
  206. qiskit/pulse/exceptions.py +2 -0
  207. qiskit/pulse/instruction_schedule_map.py +21 -6
  208. qiskit/pulse/instructions/acquire.py +2 -0
  209. qiskit/pulse/instructions/delay.py +2 -0
  210. qiskit/pulse/instructions/directives.py +8 -0
  211. qiskit/pulse/instructions/frequency.py +3 -0
  212. qiskit/pulse/instructions/instruction.py +2 -0
  213. qiskit/pulse/instructions/phase.py +3 -0
  214. qiskit/pulse/instructions/play.py +2 -0
  215. qiskit/pulse/instructions/reference.py +2 -0
  216. qiskit/pulse/instructions/snapshot.py +2 -0
  217. qiskit/pulse/library/pulse.py +2 -0
  218. qiskit/pulse/library/symbolic_pulses.py +28 -0
  219. qiskit/pulse/library/waveform.py +2 -0
  220. qiskit/pulse/macros.py +1 -1
  221. qiskit/pulse/schedule.py +12 -13
  222. qiskit/pulse/transforms/alignments.py +5 -3
  223. qiskit/pulse/transforms/dag.py +7 -0
  224. qiskit/qasm2/export.py +5 -3
  225. qiskit/qasm2/parse.py +46 -2
  226. qiskit/qasm3/__init__.py +1 -0
  227. qiskit/qasm3/ast.py +123 -15
  228. qiskit/qasm3/exporter.py +103 -77
  229. qiskit/qobj/converters/pulse_instruction.py +6 -4
  230. qiskit/qpy/__init__.py +181 -0
  231. qiskit/qpy/binary_io/circuits.py +20 -5
  232. qiskit/qpy/binary_io/schedules.py +3 -4
  233. qiskit/qpy/binary_io/value.py +310 -13
  234. qiskit/qpy/common.py +46 -2
  235. qiskit/qpy/formats.py +7 -0
  236. qiskit/qpy/interface.py +40 -4
  237. qiskit/quantum_info/__init__.py +4 -0
  238. qiskit/quantum_info/operators/channel/transformations.py +28 -21
  239. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  240. qiskit/quantum_info/operators/operator.py +54 -8
  241. qiskit/quantum_info/operators/symplectic/base_pauli.py +11 -19
  242. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  244. qiskit/quantum_info/operators/symplectic/pauli.py +2 -0
  245. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  246. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +23 -2
  247. qiskit/quantum_info/states/densitymatrix.py +5 -5
  248. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  249. qiskit/quantum_info/states/statevector.py +6 -6
  250. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  251. qiskit/result/mitigation/correlated_readout_mitigator.py +9 -1
  252. qiskit/result/mitigation/local_readout_mitigator.py +9 -1
  253. qiskit/result/mitigation/utils.py +57 -0
  254. qiskit/scheduler/config.py +2 -0
  255. qiskit/scheduler/methods/basic.py +3 -0
  256. qiskit/scheduler/schedule_circuit.py +2 -0
  257. qiskit/scheduler/sequence.py +2 -0
  258. qiskit/synthesis/__init__.py +25 -0
  259. qiskit/synthesis/arithmetic/__init__.py +16 -0
  260. qiskit/synthesis/arithmetic/adders/__init__.py +17 -0
  261. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +154 -0
  262. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +103 -0
  263. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +161 -0
  264. qiskit/synthesis/arithmetic/multipliers/__init__.py +16 -0
  265. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +102 -0
  266. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +99 -0
  267. qiskit/synthesis/clifford/clifford_decompose_bm.py +1 -2
  268. qiskit/synthesis/clifford/clifford_decompose_greedy.py +3 -2
  269. qiskit/synthesis/clifford/clifford_decompose_layers.py +2 -1
  270. qiskit/synthesis/evolution/__init__.py +1 -0
  271. qiskit/synthesis/evolution/lie_trotter.py +16 -42
  272. qiskit/synthesis/evolution/pauli_network.py +80 -0
  273. qiskit/synthesis/evolution/product_formula.py +165 -238
  274. qiskit/synthesis/evolution/qdrift.py +36 -29
  275. qiskit/synthesis/evolution/suzuki_trotter.py +87 -27
  276. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  277. qiskit/synthesis/multi_controlled/mcmt_vchain.py +52 -0
  278. qiskit/synthesis/qft/qft_decompose_full.py +19 -1
  279. qiskit/synthesis/qft/qft_decompose_lnn.py +2 -1
  280. qiskit/synthesis/stabilizer/stabilizer_decompose.py +2 -1
  281. qiskit/synthesis/two_qubit/two_qubit_decompose.py +4 -63
  282. qiskit/synthesis/unitary/qsd.py +5 -5
  283. qiskit/transpiler/__init__.py +21 -14
  284. qiskit/transpiler/basepasses.py +1 -1
  285. qiskit/transpiler/passes/__init__.py +2 -0
  286. qiskit/transpiler/passes/basis/basis_translator.py +9 -565
  287. qiskit/transpiler/passes/basis/decompose.py +45 -12
  288. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  289. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  290. qiskit/transpiler/passes/calibration/pulse_gate.py +4 -2
  291. qiskit/transpiler/passes/calibration/rx_builder.py +11 -7
  292. qiskit/transpiler/passes/calibration/rzx_builder.py +46 -30
  293. qiskit/transpiler/passes/layout/disjoint_utils.py +15 -13
  294. qiskit/transpiler/passes/layout/sabre_layout.py +7 -2
  295. qiskit/transpiler/passes/layout/sabre_pre_layout.py +5 -0
  296. qiskit/transpiler/passes/optimization/__init__.py +1 -0
  297. qiskit/transpiler/passes/optimization/collect_cliffords.py +19 -3
  298. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  299. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  300. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  301. qiskit/transpiler/passes/optimization/consolidate_blocks.py +48 -131
  302. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +4 -2
  303. qiskit/transpiler/passes/optimization/elide_permutations.py +9 -32
  304. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +5 -11
  305. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  306. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  307. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +69 -0
  308. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  309. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  310. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  311. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  312. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  313. qiskit/transpiler/passes/routing/sabre_swap.py +7 -3
  314. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  315. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  316. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  317. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  318. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +2 -0
  319. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  320. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  321. qiskit/transpiler/passes/scheduling/base_scheduler.py +14 -12
  322. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +9 -4
  323. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  324. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +16 -5
  325. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +4 -1
  326. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +6 -2
  327. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +9 -4
  328. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +262 -99
  329. qiskit/transpiler/passes/synthesis/hls_plugins.py +637 -7
  330. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  331. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +55 -34
  332. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +2 -56
  333. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +5 -0
  334. qiskit/transpiler/passes/utils/gate_direction.py +12 -275
  335. qiskit/transpiler/passes/utils/gates_basis.py +7 -30
  336. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +2 -1
  337. qiskit/transpiler/passmanager_config.py +22 -4
  338. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +40 -14
  339. qiskit/transpiler/preset_passmanagers/common.py +5 -3
  340. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +125 -42
  341. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  342. qiskit/transpiler/target.py +74 -16
  343. qiskit/utils/deprecate_pulse.py +119 -0
  344. qiskit/visualization/circuit/_utils.py +2 -2
  345. qiskit/visualization/circuit/circuit_visualization.py +3 -2
  346. qiskit/visualization/circuit/matplotlib.py +1 -1
  347. qiskit/visualization/dag_visualization.py +1 -1
  348. qiskit/visualization/pass_manager_visualization.py +3 -14
  349. qiskit/visualization/pulse_v2/interface.py +3 -1
  350. qiskit/visualization/timeline/core.py +25 -2
  351. qiskit/visualization/timeline/interface.py +12 -0
  352. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/METADATA +9 -8
  353. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/RECORD +357 -346
  354. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/WHEEL +1 -1
  355. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/entry_points.txt +19 -0
  356. qiskit/circuit/library/data_preparation/zz_feature_map.py +0 -118
  357. qiskit/synthesis/two_qubit/weyl.py +0 -97
  358. qiskit/transpiler/passes/synthesis/qubit_tracker.py +0 -132
  359. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/LICENSE.txt +0 -0
  360. {qiskit-1.3.0b1.dist-info → qiskit-1.3.0rc2.dist-info}/top_level.txt +0 -0
qiskit/qasm3/ast.py CHANGED
@@ -15,12 +15,14 @@
15
15
  """QASM3 AST Nodes"""
16
16
 
17
17
  import enum
18
- from typing import Optional, List, Union, Iterable, Tuple
18
+ from typing import Optional, List, Union, Iterable, Tuple, Sequence
19
19
 
20
20
 
21
21
  class ASTNode:
22
22
  """Base abstract class for AST nodes"""
23
23
 
24
+ __slots__ = ()
25
+
24
26
 
25
27
  class Statement(ASTNode):
26
28
  """
@@ -35,6 +37,8 @@ class Statement(ASTNode):
35
37
  | quantumStatement
36
38
  """
37
39
 
40
+ __slots__ = ()
41
+
38
42
 
39
43
  class Pragma(ASTNode):
40
44
  """
@@ -42,6 +46,8 @@ class Pragma(ASTNode):
42
46
  : '#pragma' LBRACE statement* RBRACE // match any valid openqasm statement
43
47
  """
44
48
 
49
+ __slots__ = ("content",)
50
+
45
51
  def __init__(self, content):
46
52
  self.content = content
47
53
 
@@ -52,6 +58,8 @@ class CalibrationGrammarDeclaration(Statement):
52
58
  : 'defcalgrammar' calibrationGrammar SEMICOLON
53
59
  """
54
60
 
61
+ __slots__ = ("name",)
62
+
55
63
  def __init__(self, name):
56
64
  self.name = name
57
65
 
@@ -62,9 +70,11 @@ class Program(ASTNode):
62
70
  : header (globalStatement | statement)*
63
71
  """
64
72
 
65
- def __init__(self, header, statements=None):
73
+ __slots__ = ("header", "statements")
74
+
75
+ def __init__(self, header, statements=()):
66
76
  self.header = header
67
- self.statements = statements or []
77
+ self.statements = statements
68
78
 
69
79
 
70
80
  class Header(ASTNode):
@@ -73,6 +83,8 @@ class Header(ASTNode):
73
83
  : version? include*
74
84
  """
75
85
 
86
+ __slots__ = ("version", "includes")
87
+
76
88
  def __init__(self, version, includes):
77
89
  self.version = version
78
90
  self.includes = includes
@@ -84,6 +96,8 @@ class Include(ASTNode):
84
96
  : 'include' StringLiteral SEMICOLON
85
97
  """
86
98
 
99
+ __slots__ = ("filename",)
100
+
87
101
  def __init__(self, filename):
88
102
  self.filename = filename
89
103
 
@@ -94,6 +108,8 @@ class Version(ASTNode):
94
108
  : 'OPENQASM'(Integer | RealNumber) SEMICOLON
95
109
  """
96
110
 
111
+ __slots__ = ("version_number",)
112
+
97
113
  def __init__(self, version_number):
98
114
  self.version_number = version_number
99
115
 
@@ -108,10 +124,14 @@ class QuantumInstruction(ASTNode):
108
124
  | quantumBarrier
109
125
  """
110
126
 
127
+ __slots__ = ()
128
+
111
129
 
112
130
  class ClassicalType(ASTNode):
113
131
  """Information about a classical type. This is just an abstract base for inheritance tests."""
114
132
 
133
+ __slots__ = ()
134
+
115
135
 
116
136
  class FloatType(ClassicalType, enum.Enum):
117
137
  """Allowed values for the width of floating-point types."""
@@ -126,10 +146,14 @@ class FloatType(ClassicalType, enum.Enum):
126
146
  class BoolType(ClassicalType):
127
147
  """Type information for a Boolean."""
128
148
 
149
+ __slots__ = ()
150
+
129
151
 
130
152
  class IntType(ClassicalType):
131
153
  """Type information for a signed integer."""
132
154
 
155
+ __slots__ = ("size",)
156
+
133
157
  def __init__(self, size: Optional[int] = None):
134
158
  self.size = size
135
159
 
@@ -137,6 +161,8 @@ class IntType(ClassicalType):
137
161
  class UintType(ClassicalType):
138
162
  """Type information for an unsigned integer."""
139
163
 
164
+ __slots__ = ("size",)
165
+
140
166
  def __init__(self, size: Optional[int] = None):
141
167
  self.size = size
142
168
 
@@ -144,19 +170,25 @@ class UintType(ClassicalType):
144
170
  class BitType(ClassicalType):
145
171
  """Type information for a single bit."""
146
172
 
173
+ __slots__ = ()
174
+
147
175
 
148
176
  class BitArrayType(ClassicalType):
149
177
  """Type information for a sized number of classical bits."""
150
178
 
179
+ __slots__ = ("size",)
180
+
151
181
  def __init__(self, size: int):
152
182
  self.size = size
153
183
 
154
184
 
155
185
  class Expression(ASTNode):
156
- pass
186
+ __slots__ = ()
157
187
 
158
188
 
159
189
  class StringifyAndPray(Expression):
190
+ __slots__ = ("obj",)
191
+
160
192
  # This is not a real AST node, yet is somehow very common. It's used when there are
161
193
  # `ParameterExpression` instances; instead of actually visiting the Sympy expression tree into
162
194
  # an OQ3 AST, we just convert it to a string, cross our fingers, and hope.
@@ -165,6 +197,8 @@ class StringifyAndPray(Expression):
165
197
 
166
198
 
167
199
  class Range(Expression):
200
+ __slots__ = ("start", "step", "end")
201
+
168
202
  def __init__(
169
203
  self,
170
204
  start: Optional[Expression] = None,
@@ -177,6 +211,8 @@ class Range(Expression):
177
211
 
178
212
 
179
213
  class Identifier(Expression):
214
+ __slots__ = ("string",)
215
+
180
216
  def __init__(self, string):
181
217
  self.string = string
182
218
 
@@ -184,6 +220,8 @@ class Identifier(Expression):
184
220
  class SubscriptedIdentifier(Identifier):
185
221
  """An identifier with subscripted access."""
186
222
 
223
+ __slots__ = ("subscript",)
224
+
187
225
  def __init__(self, string: str, subscript: Union[Range, Expression]):
188
226
  super().__init__(string)
189
227
  self.subscript = subscript
@@ -198,16 +236,22 @@ class Constant(Expression, enum.Enum):
198
236
 
199
237
 
200
238
  class IntegerLiteral(Expression):
239
+ __slots__ = ("value",)
240
+
201
241
  def __init__(self, value):
202
242
  self.value = value
203
243
 
204
244
 
205
245
  class BooleanLiteral(Expression):
246
+ __slots__ = ("value",)
247
+
206
248
  def __init__(self, value):
207
249
  self.value = value
208
250
 
209
251
 
210
252
  class BitstringLiteral(Expression):
253
+ __slots__ = ("value", "width")
254
+
211
255
  def __init__(self, value, width):
212
256
  self.value = value
213
257
  self.width = width
@@ -224,12 +268,16 @@ class DurationUnit(enum.Enum):
224
268
 
225
269
 
226
270
  class DurationLiteral(Expression):
271
+ __slots__ = ("value", "unit")
272
+
227
273
  def __init__(self, value: float, unit: DurationUnit):
228
274
  self.value = value
229
275
  self.unit = unit
230
276
 
231
277
 
232
278
  class Unary(Expression):
279
+ __slots__ = ("op", "operand")
280
+
233
281
  class Op(enum.Enum):
234
282
  LOGIC_NOT = "!"
235
283
  BIT_NOT = "~"
@@ -240,6 +288,8 @@ class Unary(Expression):
240
288
 
241
289
 
242
290
  class Binary(Expression):
291
+ __slots__ = ("op", "left", "right")
292
+
243
293
  class Op(enum.Enum):
244
294
  BIT_AND = "&"
245
295
  BIT_OR = "|"
@@ -262,12 +312,16 @@ class Binary(Expression):
262
312
 
263
313
 
264
314
  class Cast(Expression):
315
+ __slots__ = ("type", "operand")
316
+
265
317
  def __init__(self, type: ClassicalType, operand: Expression):
266
318
  self.type = type
267
319
  self.operand = operand
268
320
 
269
321
 
270
322
  class Index(Expression):
323
+ __slots__ = ("target", "index")
324
+
271
325
  def __init__(self, target: Expression, index: Expression):
272
326
  self.target = target
273
327
  self.index = index
@@ -280,6 +334,8 @@ class IndexSet(ASTNode):
280
334
  { Expression (, Expression)* }
281
335
  """
282
336
 
337
+ __slots__ = ("values",)
338
+
283
339
  def __init__(self, values: List[Expression]):
284
340
  self.values = values
285
341
 
@@ -290,6 +346,8 @@ class QuantumMeasurement(ASTNode):
290
346
  : 'measure' indexIdentifierList
291
347
  """
292
348
 
349
+ __slots__ = ("identifierList",)
350
+
293
351
  def __init__(self, identifierList: List[Identifier]):
294
352
  self.identifierList = identifierList
295
353
 
@@ -301,6 +359,8 @@ class QuantumMeasurementAssignment(Statement):
301
359
  | indexIdentifier EQUALS quantumMeasurement # eg: bits = measure qubits;
302
360
  """
303
361
 
362
+ __slots__ = ("identifier", "quantumMeasurement")
363
+
304
364
  def __init__(self, identifier: Identifier, quantumMeasurement: QuantumMeasurement):
305
365
  self.identifier = identifier
306
366
  self.quantumMeasurement = quantumMeasurement
@@ -312,6 +372,8 @@ class Designator(ASTNode):
312
372
  : LBRACKET expression RBRACKET
313
373
  """
314
374
 
375
+ __slots__ = ("expression",)
376
+
315
377
  def __init__(self, expression: Expression):
316
378
  self.expression = expression
317
379
 
@@ -319,6 +381,8 @@ class Designator(ASTNode):
319
381
  class ClassicalDeclaration(Statement):
320
382
  """Declaration of a classical type, optionally initializing it to a value."""
321
383
 
384
+ __slots__ = ("type", "identifier", "initializer")
385
+
322
386
  def __init__(self, type_: ClassicalType, identifier: Identifier, initializer=None):
323
387
  self.type = type_
324
388
  self.identifier = identifier
@@ -328,6 +392,8 @@ class ClassicalDeclaration(Statement):
328
392
  class AssignmentStatement(Statement):
329
393
  """Assignment of an expression to an l-value."""
330
394
 
395
+ __slots__ = ("lvalue", "rvalue")
396
+
331
397
  def __init__(self, lvalue: SubscriptedIdentifier, rvalue: Expression):
332
398
  self.lvalue = lvalue
333
399
  self.rvalue = rvalue
@@ -340,6 +406,8 @@ class QuantumDeclaration(ASTNode):
340
406
  'qubit' designator? Identifier
341
407
  """
342
408
 
409
+ __slots__ = ("identifier", "designator")
410
+
343
411
  def __init__(self, identifier: Identifier, designator=None):
344
412
  self.identifier = identifier
345
413
  self.designator = designator
@@ -351,6 +419,8 @@ class AliasStatement(ASTNode):
351
419
  : 'let' Identifier EQUALS indexIdentifier SEMICOLON
352
420
  """
353
421
 
422
+ __slots__ = ("identifier", "value")
423
+
354
424
  def __init__(self, identifier: Identifier, value: Expression):
355
425
  self.identifier = identifier
356
426
  self.value = value
@@ -368,6 +438,8 @@ class QuantumGateModifierName(enum.Enum):
368
438
  class QuantumGateModifier(ASTNode):
369
439
  """A modifier of a gate. For example, in ``ctrl @ x $0``, the ``ctrl @`` is the modifier."""
370
440
 
441
+ __slots__ = ("modifier", "argument")
442
+
371
443
  def __init__(self, modifier: QuantumGateModifierName, argument: Optional[Expression] = None):
372
444
  self.modifier = modifier
373
445
  self.argument = argument
@@ -379,17 +451,19 @@ class QuantumGateCall(QuantumInstruction):
379
451
  : quantumGateModifier* quantumGateName ( LPAREN expressionList? RPAREN )? indexIdentifierList
380
452
  """
381
453
 
454
+ __slots__ = ("quantumGateName", "indexIdentifierList", "parameters", "modifiers")
455
+
382
456
  def __init__(
383
457
  self,
384
458
  quantumGateName: Identifier,
385
459
  indexIdentifierList: List[Identifier],
386
- parameters: List[Expression] = None,
387
- modifiers: Optional[List[QuantumGateModifier]] = None,
460
+ parameters: Sequence[Expression] = (),
461
+ modifiers: Sequence[QuantumGateModifier] = (),
388
462
  ):
389
463
  self.quantumGateName = quantumGateName
390
464
  self.indexIdentifierList = indexIdentifierList
391
- self.parameters = parameters or []
392
- self.modifiers = modifiers or []
465
+ self.parameters = parameters
466
+ self.modifiers = modifiers
393
467
 
394
468
 
395
469
  class QuantumBarrier(QuantumInstruction):
@@ -398,6 +472,8 @@ class QuantumBarrier(QuantumInstruction):
398
472
  : 'barrier' indexIdentifierList
399
473
  """
400
474
 
475
+ __slots__ = ("indexIdentifierList",)
476
+
401
477
  def __init__(self, indexIdentifierList: List[Identifier]):
402
478
  self.indexIdentifierList = indexIdentifierList
403
479
 
@@ -405,6 +481,8 @@ class QuantumBarrier(QuantumInstruction):
405
481
  class QuantumReset(QuantumInstruction):
406
482
  """A built-in ``reset q0;`` statement."""
407
483
 
484
+ __slots__ = ("identifier",)
485
+
408
486
  def __init__(self, identifier: Identifier):
409
487
  self.identifier = identifier
410
488
 
@@ -412,6 +490,8 @@ class QuantumReset(QuantumInstruction):
412
490
  class QuantumDelay(QuantumInstruction):
413
491
  """A built-in ``delay[duration] q0;`` statement."""
414
492
 
493
+ __slots__ = ("duration", "qubits")
494
+
415
495
  def __init__(self, duration: Expression, qubits: List[Identifier]):
416
496
  self.duration = duration
417
497
  self.qubits = qubits
@@ -424,6 +504,8 @@ class ProgramBlock(ASTNode):
424
504
  | LBRACE(statement | controlDirective) * RBRACE
425
505
  """
426
506
 
507
+ __slots__ = ("statements",)
508
+
427
509
  def __init__(self, statements: List[Statement]):
428
510
  self.statements = statements
429
511
 
@@ -434,6 +516,8 @@ class ReturnStatement(ASTNode): # TODO probably should be a subclass of Control
434
516
  : 'return' ( expression | quantumMeasurement )? SEMICOLON;
435
517
  """
436
518
 
519
+ __slots__ = ("expression",)
520
+
437
521
  def __init__(self, expression=None):
438
522
  self.expression = expression
439
523
 
@@ -444,7 +528,7 @@ class QuantumBlock(ProgramBlock):
444
528
  : LBRACE ( quantumStatement | quantumLoop )* RBRACE
445
529
  """
446
530
 
447
- pass
531
+ __slots__ = ()
448
532
 
449
533
 
450
534
  class SubroutineBlock(ProgramBlock):
@@ -453,7 +537,7 @@ class SubroutineBlock(ProgramBlock):
453
537
  : LBRACE statement* returnStatement? RBRACE
454
538
  """
455
539
 
456
- pass
540
+ __slots__ = ()
457
541
 
458
542
 
459
543
  class QuantumGateDefinition(Statement):
@@ -462,6 +546,8 @@ class QuantumGateDefinition(Statement):
462
546
  : 'gate' quantumGateSignature quantumBlock
463
547
  """
464
548
 
549
+ __slots__ = ("name", "params", "qubits", "body")
550
+
465
551
  def __init__(
466
552
  self,
467
553
  name: Identifier,
@@ -482,14 +568,16 @@ class SubroutineDefinition(Statement):
482
568
  returnSignature? subroutineBlock
483
569
  """
484
570
 
571
+ __slots__ = ("identifier", "arguments", "subroutineBlock")
572
+
485
573
  def __init__(
486
574
  self,
487
575
  identifier: Identifier,
488
576
  subroutineBlock: SubroutineBlock,
489
- arguments=None, # [ClassicalArgument]
577
+ arguments=(), # [ClassicalArgument]
490
578
  ):
491
579
  self.identifier = identifier
492
- self.arguments = arguments or []
580
+ self.arguments = arguments
493
581
  self.subroutineBlock = subroutineBlock
494
582
 
495
583
 
@@ -499,7 +587,7 @@ class CalibrationArgument(ASTNode):
499
587
  : classicalArgumentList | expressionList
500
588
  """
501
589
 
502
- pass
590
+ __slots__ = ()
503
591
 
504
592
 
505
593
  class CalibrationDefinition(Statement):
@@ -511,15 +599,17 @@ class CalibrationDefinition(Statement):
511
599
  ;
512
600
  """
513
601
 
602
+ __slots__ = ("name", "identifierList", "calibrationArgumentList")
603
+
514
604
  def __init__(
515
605
  self,
516
606
  name: Identifier,
517
607
  identifierList: List[Identifier],
518
- calibrationArgumentList: Optional[List[CalibrationArgument]] = None,
608
+ calibrationArgumentList: Sequence[CalibrationArgument] = (),
519
609
  ):
520
610
  self.name = name
521
611
  self.identifierList = identifierList
522
- self.calibrationArgumentList = calibrationArgumentList or []
612
+ self.calibrationArgumentList = calibrationArgumentList
523
613
 
524
614
 
525
615
  class BranchingStatement(Statement):
@@ -528,6 +618,8 @@ class BranchingStatement(Statement):
528
618
  : 'if' LPAREN booleanExpression RPAREN programBlock ( 'else' programBlock )?
529
619
  """
530
620
 
621
+ __slots__ = ("condition", "true_body", "false_body")
622
+
531
623
  def __init__(self, condition: Expression, true_body: ProgramBlock, false_body=None):
532
624
  self.condition = condition
533
625
  self.true_body = true_body
@@ -547,6 +639,8 @@ class ForLoopStatement(Statement):
547
639
  | "[" Range "]"
548
640
  """
549
641
 
642
+ __slots__ = ("indexset", "parameter", "body")
643
+
550
644
  def __init__(
551
645
  self,
552
646
  indexset: Union[Identifier, IndexSet, Range],
@@ -567,6 +661,8 @@ class WhileLoopStatement(Statement):
567
661
  WhileLoop: "while" "(" Expression ")" ProgramBlock
568
662
  """
569
663
 
664
+ __slots__ = ("condition", "body")
665
+
570
666
  def __init__(self, condition: Expression, body: ProgramBlock):
571
667
  self.condition = condition
572
668
  self.body = body
@@ -575,10 +671,14 @@ class WhileLoopStatement(Statement):
575
671
  class BreakStatement(Statement):
576
672
  """AST node for ``break`` statements. Has no associated information."""
577
673
 
674
+ __slots__ = ()
675
+
578
676
 
579
677
  class ContinueStatement(Statement):
580
678
  """AST node for ``continue`` statements. Has no associated information."""
581
679
 
680
+ __slots__ = ()
681
+
582
682
 
583
683
  class IOModifier(enum.Enum):
584
684
  """IO Modifier object"""
@@ -590,6 +690,8 @@ class IOModifier(enum.Enum):
590
690
  class IODeclaration(ClassicalDeclaration):
591
691
  """A declaration of an IO variable."""
592
692
 
693
+ __slots__ = ("modifier",)
694
+
593
695
  def __init__(self, modifier: IOModifier, type_: ClassicalType, identifier: Identifier):
594
696
  super().__init__(type_, identifier)
595
697
  self.modifier = modifier
@@ -598,6 +700,8 @@ class IODeclaration(ClassicalDeclaration):
598
700
  class DefaultCase(Expression):
599
701
  """An object representing the `default` special label in switch statements."""
600
702
 
703
+ __slots__ = ()
704
+
601
705
 
602
706
  class SwitchStatementPreview(Statement):
603
707
  """AST node for the proposed 'switch-case' extension to OpenQASM 3, before the syntax was
@@ -605,6 +709,8 @@ class SwitchStatementPreview(Statement):
605
709
 
606
710
  The stabilized form of the syntax instead uses :class:`.SwitchStatement`."""
607
711
 
712
+ __slots__ = ("target", "cases")
713
+
608
714
  def __init__(
609
715
  self, target: Expression, cases: Iterable[Tuple[Iterable[Expression], ProgramBlock]]
610
716
  ):
@@ -619,6 +725,8 @@ class SwitchStatement(Statement):
619
725
  cannot be joined with other cases (even though that's meaningless, the V1 syntax permitted it).
620
726
  """
621
727
 
728
+ __slots__ = ("target", "cases", "default")
729
+
622
730
  def __init__(
623
731
  self,
624
732
  target: Expression,