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,13 +17,7 @@ Preset pass manager generation function
17
17
  import copy
18
18
  import warnings
19
19
 
20
- from qiskit.circuit.controlflow import (
21
- CONTROL_FLOW_OP_NAMES,
22
- IfElseOp,
23
- WhileLoopOp,
24
- ForLoopOp,
25
- SwitchCaseOp,
26
- )
20
+ from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES
27
21
  from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping
28
22
  from qiskit.circuit.quantumregister import Qubit
29
23
  from qiskit.providers.backend import Backend
@@ -35,8 +29,6 @@ from qiskit.transpiler.layout import Layout
35
29
  from qiskit.transpiler.passmanager_config import PassManagerConfig
36
30
  from qiskit.transpiler.target import Target, target_to_backend_properties
37
31
  from qiskit.transpiler.timing_constraints import TimingConstraints
38
- from qiskit.utils import deprecate_arg
39
- from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
40
32
 
41
33
  from .level0 import level_0_pass_manager
42
34
  from .level1 import level_1_pass_manager
@@ -44,33 +36,6 @@ from .level2 import level_2_pass_manager
44
36
  from .level3 import level_3_pass_manager
45
37
 
46
38
 
47
- @deprecate_arg(
48
- name="instruction_durations",
49
- since="1.3",
50
- package_name="Qiskit",
51
- removal_timeline="in Qiskit 2.0",
52
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
53
- "with defined instruction durations with "
54
- "`Target.from_configuration(..., instruction_durations=...)`",
55
- )
56
- @deprecate_arg(
57
- name="timing_constraints",
58
- since="1.3",
59
- package_name="Qiskit",
60
- removal_timeline="in Qiskit 2.0",
61
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
62
- "with defined timing constraints with "
63
- "`Target.from_configuration(..., timing_constraints=...)`",
64
- )
65
- @deprecate_arg(
66
- name="backend_properties",
67
- since="1.3",
68
- package_name="Qiskit",
69
- removal_timeline="in Qiskit 2.0",
70
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
71
- "with defined properties with Target.from_configuration(..., backend_properties=...)",
72
- )
73
- @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
74
39
  def generate_preset_pass_manager(
75
40
  optimization_level=2,
76
41
  backend=None,
@@ -157,7 +122,7 @@ def generate_preset_pass_manager(
157
122
  and ``backend_properties``.
158
123
  basis_gates (list): List of basis gate names to unroll to
159
124
  (e.g: ``['u1', 'u2', 'u3', 'cx']``).
160
- inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gates to schedules.
125
+ inst_map (InstructionScheduleMap): Mapping object that maps gates to schedules.
161
126
  If any user defined calibration is found in the map and this is used in a
162
127
  circuit, transpiler attaches the custom gate definition to the circuit.
163
128
  This enables one to flexibly override the low-level instruction
@@ -318,7 +283,6 @@ def generate_preset_pass_manager(
318
283
  _skip_target = (
319
284
  target is None
320
285
  and backend is None
321
- # Note: instruction_durations is deprecated and will be removed in 2.0 (no need for alternative)
322
286
  and (basis_gates is None or coupling_map is None or instruction_durations is not None)
323
287
  )
324
288
 
@@ -343,31 +307,23 @@ def generate_preset_pass_manager(
343
307
  # Only parse backend properties when the target isn't skipped to
344
308
  # preserve the former behavior of transpile.
345
309
  backend_properties = _parse_backend_properties(backend_properties, backend)
346
- with warnings.catch_warnings():
347
- # TODO: inst_map will be removed in 2.0
348
- warnings.filterwarnings(
349
- "ignore",
350
- category=DeprecationWarning,
351
- message=".*``inst_map`` is deprecated as of Qiskit 1.3.*",
352
- module="qiskit",
353
- )
354
- # Build target from constraints.
355
- target = Target.from_configuration(
356
- basis_gates=basis_gates,
357
- num_qubits=backend.num_qubits if backend is not None else None,
358
- coupling_map=coupling_map,
359
- # If the instruction map has custom gates, do not give as config, the information
360
- # will be added to the target with update_from_instruction_schedule_map
361
- inst_map=inst_map if inst_map and not inst_map.has_custom_gate() else None,
362
- backend_properties=backend_properties,
363
- instruction_durations=instruction_durations,
364
- concurrent_measurements=(
365
- backend.target.concurrent_measurements if backend is not None else None
366
- ),
367
- dt=dt,
368
- timing_constraints=timing_constraints,
369
- custom_name_mapping=name_mapping,
370
- )
310
+ # Build target from constraints.
311
+ target = Target.from_configuration(
312
+ basis_gates=basis_gates,
313
+ num_qubits=backend.num_qubits if backend is not None else None,
314
+ coupling_map=coupling_map,
315
+ # If the instruction map has custom gates, do not give as config, the information
316
+ # will be added to the target with update_from_instruction_schedule_map
317
+ inst_map=inst_map if inst_map and not inst_map.has_custom_gate() else None,
318
+ backend_properties=backend_properties,
319
+ instruction_durations=instruction_durations,
320
+ concurrent_measurements=(
321
+ backend.target.concurrent_measurements if backend is not None else None
322
+ ),
323
+ dt=dt,
324
+ timing_constraints=timing_constraints,
325
+ custom_name_mapping=name_mapping,
326
+ )
371
327
 
372
328
  # Update target with custom gate information. Note that this is an exception to the priority
373
329
  # order (target > loose constraints), added to handle custom gates for scheduling passes.
@@ -383,7 +339,7 @@ def generate_preset_pass_manager(
383
339
  if instruction_durations is None:
384
340
  instruction_durations = target.durations()
385
341
  if inst_map is None:
386
- inst_map = target._get_instruction_schedule_map()
342
+ inst_map = target.instruction_schedule_map()
387
343
  if timing_constraints is None:
388
344
  timing_constraints = target.timing_constraints()
389
345
  if backend_properties is None:
@@ -427,41 +383,30 @@ def generate_preset_pass_manager(
427
383
  "qubits_initially_zero": qubits_initially_zero,
428
384
  }
429
385
 
430
- with warnings.catch_warnings():
431
- # inst_map is deprecated in the PassManagerConfig initializer
432
- warnings.filterwarnings(
433
- "ignore",
434
- category=DeprecationWarning,
435
- message=".*argument ``inst_map`` is deprecated as of Qiskit 1.3",
436
- )
437
- if backend is not None:
438
- pm_options["_skip_target"] = _skip_target
439
- pm_config = PassManagerConfig.from_backend(backend, **pm_options)
440
- else:
441
- pm_config = PassManagerConfig(**pm_options)
442
- if optimization_level == 0:
443
- pm = level_0_pass_manager(pm_config)
444
- elif optimization_level == 1:
445
- pm = level_1_pass_manager(pm_config)
446
- elif optimization_level == 2:
447
- pm = level_2_pass_manager(pm_config)
448
- elif optimization_level == 3:
449
- pm = level_3_pass_manager(pm_config)
450
- else:
451
- raise ValueError(f"Invalid optimization level {optimization_level}")
386
+ if backend is not None:
387
+ pm_options["_skip_target"] = _skip_target
388
+ pm_config = PassManagerConfig.from_backend(backend, **pm_options)
389
+ else:
390
+ pm_config = PassManagerConfig(**pm_options)
391
+ if optimization_level == 0:
392
+ pm = level_0_pass_manager(pm_config)
393
+ elif optimization_level == 1:
394
+ pm = level_1_pass_manager(pm_config)
395
+ elif optimization_level == 2:
396
+ pm = level_2_pass_manager(pm_config)
397
+ elif optimization_level == 3:
398
+ pm = level_3_pass_manager(pm_config)
399
+ else:
400
+ raise ValueError(f"Invalid optimization level {optimization_level}")
452
401
  return pm
453
402
 
454
403
 
455
404
  def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
405
+ name_mapping = {}
456
406
  standard_gates = get_standard_gate_name_mapping()
457
- # Add control flow gates by default to basis set and name mapping
407
+ # Add control flow gates by default to basis set
458
408
  default_gates = {"measure", "delay", "reset"}.union(CONTROL_FLOW_OP_NAMES)
459
- name_mapping = {
460
- "if_else": IfElseOp,
461
- "while_loop": WhileLoopOp,
462
- "for_loop": ForLoopOp,
463
- "switch_case": SwitchCaseOp,
464
- }
409
+
465
410
  try:
466
411
  instructions = set(basis_gates)
467
412
  for name in default_gates:
@@ -476,16 +421,7 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
476
421
  return None, name_mapping, skip_target
477
422
 
478
423
  for inst in instructions:
479
- if inst not in standard_gates and inst not in default_gates:
480
- warnings.warn(
481
- category=DeprecationWarning,
482
- message=f"Providing non-standard gates ({inst}) through the ``basis_gates`` "
483
- "argument is deprecated for both ``transpile`` and ``generate_preset_pass_manager`` "
484
- "as of Qiskit 1.3.0. "
485
- "It will be removed in Qiskit 2.0. The ``target`` parameter should be used instead. "
486
- "You can build a target instance using ``Target.from_configuration()`` and provide "
487
- "custom gate definitions with the ``custom_name_mapping`` argument.",
488
- )
424
+ if inst not in standard_gates or inst not in default_gates:
489
425
  skip_target = True
490
426
  break
491
427
 
@@ -498,18 +434,7 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
498
434
 
499
435
  # Check for custom instructions before removing calibrations
500
436
  for inst in instructions:
501
- if inst not in standard_gates and inst not in default_gates:
502
- if inst not in backend.operation_names:
503
- # do not raise warning when the custom instruction comes from the backend
504
- # (common case with BasicSimulator)
505
- warnings.warn(
506
- category=DeprecationWarning,
507
- message="Providing custom gates through the ``basis_gates`` argument is deprecated "
508
- "for both ``transpile`` and ``generate_preset_pass_manager`` as of Qiskit 1.3.0. "
509
- "It will be removed in Qiskit 2.0. The ``target`` parameter should be used instead. "
510
- "You can build a target instance using ``Target.from_configuration()`` and provide"
511
- "custom gate definitions with the ``custom_name_mapping`` argument.",
512
- )
437
+ if inst not in standard_gates or inst not in default_gates:
513
438
  skip_target = True
514
439
  break
515
440
 
@@ -527,22 +452,14 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
527
452
  def _parse_inst_map(inst_map, backend):
528
453
  # try getting inst_map from user, else backend
529
454
  if inst_map is None and backend is not None:
530
- inst_map = backend.target._get_instruction_schedule_map()
455
+ inst_map = backend.target.instruction_schedule_map()
531
456
  return inst_map
532
457
 
533
458
 
534
459
  def _parse_backend_properties(backend_properties, backend):
535
460
  # try getting backend_props from user, else backend
536
461
  if backend_properties is None and backend is not None:
537
- with warnings.catch_warnings():
538
- # filter target_to_backend_properties warning
539
- warnings.filterwarnings(
540
- "ignore",
541
- category=DeprecationWarning,
542
- message=".*``qiskit.transpiler.target.target_to_backend_properties\\(\\)``.*",
543
- module="qiskit",
544
- )
545
- backend_properties = target_to_backend_properties(backend.target)
462
+ backend_properties = target_to_backend_properties(backend.target)
546
463
  return backend_properties
547
464
 
548
465
 
@@ -145,7 +145,7 @@ subclass as a setuptools entry point in the package metadata. This can be done
145
145
  an ``entry-points`` table in ``pyproject.toml`` for the plugin package with the necessary entry
146
146
  points under the appropriate namespace for the stage your plugin is for. You can see the list of
147
147
  stages, entry points, and expectations from the stage in :ref:`stage_table`. For example,
148
- continuing from the example plugin above:
148
+ continuing from the example plugin above::
149
149
 
150
150
  .. code-block:: toml
151
151
 
@@ -57,7 +57,6 @@ from qiskit.exceptions import QiskitError
57
57
  from qiskit.providers.backend import QubitProperties # pylint: disable=unused-import
58
58
  from qiskit.providers.models.backendproperties import BackendProperties
59
59
  from qiskit.utils import deprecate_func
60
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency, deprecate_pulse_arg
61
60
 
62
61
  logger = logging.getLogger(__name__)
63
62
 
@@ -87,7 +86,6 @@ class InstructionProperties(BaseInstructionProperties):
87
86
  cls, duration, error
88
87
  )
89
88
 
90
- @deprecate_pulse_arg("calibration", predicate=lambda cals: cals is not None)
91
89
  def __init__(
92
90
  self,
93
91
  duration: float | None = None, # pylint: disable=unused-argument
@@ -101,14 +99,13 @@ class InstructionProperties(BaseInstructionProperties):
101
99
  specified set of qubits
102
100
  error: The average error rate for the instruction on the specified
103
101
  set of qubits.
104
- calibration: DEPRECATED. The pulse representation of the instruction.
102
+ calibration: The pulse representation of the instruction.
105
103
  """
106
104
  super().__init__()
107
105
  self._calibration: CalibrationEntry | None = None
108
- self._calibration_prop = calibration
106
+ self.calibration = calibration
109
107
 
110
108
  @property
111
- @deprecate_pulse_dependency(is_property=True)
112
109
  def calibration(self):
113
110
  """The pulse representation of the instruction.
114
111
 
@@ -136,24 +133,12 @@ class InstructionProperties(BaseInstructionProperties):
136
133
  use own definition to compile the circuit down to the execution format.
137
134
 
138
135
  """
139
- return self._calibration_prop
140
-
141
- @calibration.setter
142
- @deprecate_pulse_dependency(is_property=True)
143
- def calibration(self, calibration: Schedule | ScheduleBlock | CalibrationEntry):
144
- self._calibration_prop = calibration
145
-
146
- @property
147
- def _calibration_prop(self):
148
136
  if self._calibration is None:
149
137
  return None
150
- with warnings.catch_warnings():
151
- warnings.simplefilter(action="ignore", category=DeprecationWarning)
152
- # Clean this alternative path from deprecation warning emitted by `get_schedule`
153
- return self._calibration.get_schedule()
138
+ return self._calibration.get_schedule()
154
139
 
155
- @_calibration_prop.setter
156
- def _calibration_prop(self, calibration: Schedule | ScheduleBlock | CalibrationEntry):
140
+ @calibration.setter
141
+ def calibration(self, calibration: Schedule | ScheduleBlock | CalibrationEntry):
157
142
  if isinstance(calibration, (Schedule, ScheduleBlock)):
158
143
  new_entry = ScheduleDef()
159
144
  new_entry.define(calibration, user_provided=True)
@@ -168,11 +153,11 @@ class InstructionProperties(BaseInstructionProperties):
168
153
  )
169
154
 
170
155
  def __getstate__(self) -> tuple:
171
- return (super().__getstate__(), self._calibration_prop, self._calibration)
156
+ return (super().__getstate__(), self.calibration, self._calibration)
172
157
 
173
158
  def __setstate__(self, state: tuple):
174
159
  super().__setstate__(state[0])
175
- self._calibration_prop = state[1]
160
+ self.calibration = state[1]
176
161
  self._calibration = state[2]
177
162
 
178
163
 
@@ -462,7 +447,6 @@ class Target(BaseTarget):
462
447
  self._instruction_durations = None
463
448
  self._instruction_schedule_map = None
464
449
 
465
- @deprecate_pulse_dependency
466
450
  def update_from_instruction_schedule_map(self, inst_map, inst_name_map=None, error_dict=None):
467
451
  """Update the target from an instruction schedule map.
468
452
 
@@ -620,7 +604,6 @@ class Target(BaseTarget):
620
604
  self.granularity, self.min_length, self.pulse_alignment, self.acquire_alignment
621
605
  )
622
606
 
623
- @deprecate_pulse_dependency
624
607
  def instruction_schedule_map(self):
625
608
  """Return an :class:`~qiskit.pulse.InstructionScheduleMap` for the
626
609
  instructions in the target with a pulse schedule defined.
@@ -629,17 +612,9 @@ class Target(BaseTarget):
629
612
  InstructionScheduleMap: The instruction schedule map for the
630
613
  instructions in this target with a pulse schedule defined.
631
614
  """
632
- return self._get_instruction_schedule_map()
633
-
634
- def _get_instruction_schedule_map(self):
635
615
  if self._instruction_schedule_map is not None:
636
616
  return self._instruction_schedule_map
637
- with warnings.catch_warnings():
638
- warnings.simplefilter(action="ignore", category=DeprecationWarning)
639
- # `InstructionScheduleMap` is deprecated in Qiskit 1.3 but we want this alternative
640
- # path to be clean of deprecation warnings
641
- out_inst_schedule_map = InstructionScheduleMap()
642
-
617
+ out_inst_schedule_map = InstructionScheduleMap()
643
618
  for instruction, qargs in self._gate_map.items():
644
619
  for qarg, properties in qargs.items():
645
620
  # Directly getting CalibrationEntry not to invoke .get_schedule().
@@ -651,7 +626,6 @@ class Target(BaseTarget):
651
626
  self._instruction_schedule_map = out_inst_schedule_map
652
627
  return out_inst_schedule_map
653
628
 
654
- @deprecate_pulse_dependency
655
629
  def has_calibration(
656
630
  self,
657
631
  operation_name: str,
@@ -666,13 +640,6 @@ class Target(BaseTarget):
666
640
  Returns:
667
641
  Returns ``True`` if the calibration is supported and ``False`` if it isn't.
668
642
  """
669
- return self._has_calibration(operation_name, qargs)
670
-
671
- def _has_calibration(
672
- self,
673
- operation_name: str,
674
- qargs: tuple[int, ...],
675
- ) -> bool:
676
643
  qargs = tuple(qargs)
677
644
  if operation_name not in self._gate_map:
678
645
  return False
@@ -680,7 +647,6 @@ class Target(BaseTarget):
680
647
  return False
681
648
  return getattr(self._gate_map[operation_name][qargs], "_calibration", None) is not None
682
649
 
683
- @deprecate_pulse_dependency
684
650
  def get_calibration(
685
651
  self,
686
652
  operation_name: str,
@@ -702,16 +668,7 @@ class Target(BaseTarget):
702
668
  Returns:
703
669
  Calibrated pulse schedule of corresponding instruction.
704
670
  """
705
- return self._get_calibration(operation_name, qargs, *args, *kwargs)
706
-
707
- def _get_calibration(
708
- self,
709
- operation_name: str,
710
- qargs: tuple[int, ...],
711
- *args: ParameterValueType,
712
- **kwargs: ParameterValueType,
713
- ) -> Schedule | ScheduleBlock:
714
- if not self._has_calibration(operation_name, qargs):
671
+ if not self.has_calibration(operation_name, qargs):
715
672
  raise KeyError(
716
673
  f"Calibration of instruction {operation_name} for qubit {qargs} is not defined."
717
674
  )
@@ -970,7 +927,6 @@ class Target(BaseTarget):
970
927
  super().__setstate__(state["base"])
971
928
 
972
929
  @classmethod
973
- @deprecate_pulse_arg("inst_map")
974
930
  def from_configuration(
975
931
  cls,
976
932
  basis_gates: list[str],
@@ -1009,7 +965,7 @@ class Target(BaseTarget):
1009
965
  coupling_map: The coupling map representing connectivity constraints
1010
966
  on the backend. If specified all gates from ``basis_gates`` will
1011
967
  be supported on all qubits (or pairs of qubits).
1012
- inst_map: DEPRECATED. The instruction schedule map representing the pulse
968
+ inst_map: The instruction schedule map representing the pulse
1013
969
  :class:`~.Schedule` definitions for each instruction. If this
1014
970
  is specified ``coupling_map`` must be specified. The
1015
971
  ``coupling_map`` is used as the source of truth for connectivity
@@ -1156,16 +1112,9 @@ class Target(BaseTarget):
1156
1112
  if error is None and duration is None and calibration is None:
1157
1113
  gate_properties[(qubit,)] = None
1158
1114
  else:
1159
- with warnings.catch_warnings():
1160
- warnings.filterwarnings(
1161
- "ignore",
1162
- category=DeprecationWarning,
1163
- message=".*``calibration`` is deprecated as of Qiskit 1.3.*",
1164
- module="qiskit",
1165
- )
1166
- gate_properties[(qubit,)] = InstructionProperties(
1167
- duration=duration, error=error, calibration=calibration
1168
- )
1115
+ gate_properties[(qubit,)] = InstructionProperties(
1116
+ duration=duration, error=error, calibration=calibration
1117
+ )
1169
1118
  target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate)
1170
1119
  edges = list(coupling_map.get_edges())
1171
1120
  for gate in two_qubit_gates:
@@ -1205,16 +1154,9 @@ class Target(BaseTarget):
1205
1154
  if error is None and duration is None and calibration is None:
1206
1155
  gate_properties[edge] = None
1207
1156
  else:
1208
- with warnings.catch_warnings():
1209
- warnings.filterwarnings(
1210
- "ignore",
1211
- category=DeprecationWarning,
1212
- message=".*``calibration`` is deprecated as of Qiskit 1.3.*",
1213
- module="qiskit",
1214
- )
1215
- gate_properties[edge] = InstructionProperties(
1216
- duration=duration, error=error, calibration=calibration
1217
- )
1157
+ gate_properties[edge] = InstructionProperties(
1158
+ duration=duration, error=error, calibration=calibration
1159
+ )
1218
1160
  target.add_instruction(name_mapping[gate], properties=gate_properties, name=gate)
1219
1161
  for gate in global_ideal_variable_width_gates:
1220
1162
  target.add_instruction(name_mapping[gate], name=gate)
@@ -503,7 +503,7 @@ def _get_gate_span(qubits, node):
503
503
  # type of op must be the only op in the layer
504
504
  if isinstance(node.op, ControlFlowOp):
505
505
  span = qubits
506
- elif node.cargs or getattr(node, "condition", None):
506
+ elif node.cargs or getattr(node.op, "condition", None):
507
507
  span = qubits[min_index : len(qubits)]
508
508
  else:
509
509
  span = qubits[min_index : max_index + 1]
@@ -582,7 +582,7 @@ class _LayerSpooler(list):
582
582
  curr_index = index
583
583
  last_insertable_index = -1
584
584
  index_stop = -1
585
- if (condition := getattr(node, "condition", None)) is not None:
585
+ if (condition := getattr(node.op, "condition", None)) is not None:
586
586
  index_stop = max(
587
587
  (self.measure_map[bit] for bit in condition_resources(condition).clbits),
588
588
  default=index_stop,
@@ -191,12 +191,11 @@ def circuit_drawer(
191
191
  .. plot::
192
192
  :include-source:
193
193
 
194
- from qiskit import QuantumCircuit
195
- from qiskit.visualization import circuit_drawer
194
+ from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
196
195
  qc = QuantumCircuit(1, 1)
197
196
  qc.h(0)
198
197
  qc.measure(0, 0)
199
- circuit_drawer(qc, output="mpl", style={"backgroundcolor": "#EEEEEE"})
198
+ qc.draw(output='mpl', style={'backgroundcolor': '#EEEEEE'})
200
199
  """
201
200
  image = None
202
201
  expr_len = max(expr_len, 0)
@@ -135,7 +135,7 @@ class MatplotlibDrawer:
135
135
 
136
136
  self._initial_state = initial_state
137
137
  self._global_phase = self._circuit.global_phase
138
- self._calibrations = self._circuit._calibrations_prop
138
+ self._calibrations = self._circuit.calibrations
139
139
  self._expr_len = expr_len
140
140
  self._cregbundle = cregbundle
141
141
 
@@ -81,7 +81,7 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
81
81
  ``rustworkx`` package to draw the DAG.
82
82
 
83
83
  Args:
84
- dag (DAGCircuit or DAGDependency): The dag to draw.
84
+ dag (DAGCircuit): The dag to draw.
85
85
  scale (float): scaling factor
86
86
  filename (str): file path to save image to (format inferred from name)
87
87
  style (str): 'plain': B&W graph
@@ -58,12 +58,23 @@ def pass_manager_drawer(pass_manager, filename=None, style=None, raw=False):
58
58
  Example:
59
59
  .. code-block::
60
60
 
61
+ %matplotlib inline
61
62
  from qiskit import QuantumCircuit
62
- from qiskit.transpiler import generate_preset_pass_manager
63
+ from qiskit.compiler import transpile
64
+ from qiskit.transpiler import PassManager
63
65
  from qiskit.visualization import pass_manager_drawer
66
+ from qiskit.transpiler.passes import Unroller
64
67
 
65
- pm = generate_preset_pass_manager(optimization_level=0)
66
- pass_manager_drawer(pm)
68
+ circ = QuantumCircuit(3)
69
+ circ.ccx(0, 1, 2)
70
+ circ.draw()
71
+
72
+ pass_ = Unroller(['u1', 'u2', 'u3', 'cx'])
73
+ pm = PassManager(pass_)
74
+ new_circ = pm.run(circ)
75
+ new_circ.draw(output='mpl')
76
+
77
+ pass_manager_drawer(pm, "passmanager.jpg")
67
78
  """
68
79
  import pydot
69
80
 
@@ -28,11 +28,9 @@ from qiskit.visualization.exceptions import VisualizationError
28
28
  from qiskit.visualization.pulse_v2 import core, device_info, stylesheet, types
29
29
  from qiskit.exceptions import MissingOptionalLibraryError
30
30
  from qiskit.utils import deprecate_arg
31
- from qiskit.utils.deprecate_pulse import deprecate_pulse_dependency
32
31
 
33
32
 
34
- @deprecate_pulse_dependency(moving_to_dynamics=True)
35
- @deprecate_arg("show_barrier", new_alias="plot_barrier", since="1.1.0", pending=True)
33
+ @deprecate_arg("show_barriers", new_alias="plot_barriers", since="1.1.0", pending=True)
36
34
  def draw(
37
35
  program: Union[Waveform, SymbolicPulse, Schedule, ScheduleBlock],
38
36
  style: Optional[Dict[str, Any]] = None,
@@ -58,7 +58,6 @@ from enum import Enum
58
58
  import numpy as np
59
59
 
60
60
  from qiskit import circuit
61
- from qiskit.transpiler.target import Target
62
61
  from qiskit.visualization.exceptions import VisualizationError
63
62
  from qiskit.visualization.timeline import drawings, types
64
63
  from qiskit.visualization.timeline.stylesheet import QiskitTimelineStyle
@@ -139,13 +138,11 @@ class DrawerCanvas:
139
138
  self._collections[data.data_key] = data
140
139
 
141
140
  # pylint: disable=cyclic-import
142
- def load_program(self, program: circuit.QuantumCircuit, target: Target | None = None):
141
+ def load_program(self, program: circuit.QuantumCircuit):
143
142
  """Load quantum circuit and create drawing..
144
143
 
145
144
  Args:
146
145
  program: Scheduled circuit object to draw.
147
- target: The target the circuit is scheduled for. This contains backend information
148
- including the instruction durations used in scheduling.
149
146
 
150
147
  Raises:
151
148
  VisualizationError: When circuit is not scheduled.
@@ -183,30 +180,10 @@ class DrawerCanvas:
183
180
  for bit_pos, bit in enumerate(bits):
184
181
  if not isinstance(instruction.operation, not_gate_like):
185
182
  # Generate draw object for gates
186
- if target is not None:
187
- duration = None
188
- op_props = target.get(instruction.operation.name)
189
- if op_props is not None:
190
- inst_props = op_props.get(tuple(instruction.qubits))
191
- if inst_props is not None:
192
- duration = inst_props.getattr("duration")
193
-
194
- if duration is None:
195
- # Warn here because an incomplete target isn't obvious most of the time
196
- warnings.warn(
197
- "Target doesn't contain a duration for "
198
- f"{instruction.operation.name} on {bit_pos}, this will error in "
199
- "Qiskit 2.0.",
200
- DeprecationWarning,
201
- stacklevel=3,
202
- )
203
- duration = instruction.operation.duration
204
- else:
205
- duration = instruction.operation.duration
206
183
  gate_source = types.ScheduledGate(
207
184
  t0=t0,
208
185
  operand=instruction.operation,
209
- duration=duration,
186
+ duration=instruction.operation.duration,
210
187
  bits=bits,
211
188
  bit_position=bit_pos,
212
189
  )
@@ -20,10 +20,8 @@ the configured canvas is passed to one of the plotter APIs to generate a visuali
20
20
  """
21
21
 
22
22
  from typing import Optional, Dict, Any, List, Tuple
23
- import warnings
24
23
 
25
24
  from qiskit import circuit
26
- from qiskit.transpiler.target import Target
27
25
  from qiskit.exceptions import MissingOptionalLibraryError
28
26
  from qiskit.visualization.exceptions import VisualizationError
29
27
  from qiskit.visualization.timeline import types, core, stylesheet
@@ -45,7 +43,6 @@ def draw(
45
43
  plotter: Optional[str] = types.Plotter.MPL.value,
46
44
  axis: Optional[Any] = None,
47
45
  filename: Optional[str] = None,
48
- target: Optional[Target] = None,
49
46
  *,
50
47
  show_idle: Optional[bool] = None,
51
48
  show_barriers: Optional[bool] = None,
@@ -84,7 +81,6 @@ def draw(
84
81
  the plotters uses given `axis` instead of internally initializing a figure object.
85
82
  This object format depends on the plotter. See plotters section for details.
86
83
  filename: If provided the output image is dumped into a file under the filename.
87
- target: The target for the backend the timeline is being generated for.
88
84
  show_idle: DEPRECATED.
89
85
  show_barriers: DEPRECATED.
90
86
 
@@ -365,14 +361,6 @@ def draw(
365
361
  temp_style = stylesheet.QiskitTimelineStyle()
366
362
  temp_style.update(style or stylesheet.IQXStandard())
367
363
 
368
- if target is None:
369
- warnings.warn(
370
- "Target is not specified. In Qiskit 2.0.0 this will be required to get the duration of "
371
- "instructions.",
372
- PendingDeprecationWarning,
373
- stacklevel=2,
374
- )
375
-
376
364
  # update control properties
377
365
  if idle_wires is not None:
378
366
  temp_style["formatter.control.show_idle"] = idle_wires