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
@@ -13,14 +13,17 @@
13
13
  """Pass Manager Configuration class."""
14
14
 
15
15
  import pprint
16
+ import warnings
16
17
 
17
18
  from qiskit.transpiler.coupling import CouplingMap
18
19
  from qiskit.transpiler.instruction_durations import InstructionDurations
20
+ from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
19
21
 
20
22
 
21
23
  class PassManagerConfig:
22
24
  """Pass Manager Configuration."""
23
25
 
26
+ @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
24
27
  def __init__(
25
28
  self,
26
29
  initial_layout=None,
@@ -113,11 +116,17 @@ class PassManagerConfig:
113
116
  def from_backend(cls, backend, _skip_target=False, **pass_manager_options):
114
117
  """Construct a configuration based on a backend and user input.
115
118
 
116
- This method automatically gererates a PassManagerConfig object based on the backend's
119
+ This method automatically generates a PassManagerConfig object based on the backend's
117
120
  features. User options can be used to overwrite the configuration.
118
121
 
122
+ .. deprecated:: 1.3
123
+ The method ``PassManagerConfig.from_backend`` will stop supporting inputs of type
124
+ :class:`.BackendV1` in the `backend` parameter in a future release no
125
+ earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should move
126
+ to :class:`.BackendV2`.
127
+
119
128
  Args:
120
- backend (BackendV1): The backend that provides the configuration.
129
+ backend (BackendV1 or BackendV2): The backend that provides the configuration.
121
130
  pass_manager_options: User-defined option-value pairs.
122
131
 
123
132
  Returns:
@@ -126,12 +135,21 @@ class PassManagerConfig:
126
135
  Raises:
127
136
  AttributeError: If the backend does not support a `configuration()` method.
128
137
  """
129
- res = cls(**pass_manager_options)
130
138
  backend_version = getattr(backend, "version", 0)
139
+ if backend_version == 1:
140
+ warnings.warn(
141
+ "The method PassManagerConfig.from_backend will stop supporting inputs of "
142
+ f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
143
+ "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
144
+ "should move to `BackendV2`.",
145
+ category=DeprecationWarning,
146
+ stacklevel=2,
147
+ )
131
148
  if not isinstance(backend_version, int):
132
149
  backend_version = 0
133
150
  if backend_version < 2:
134
151
  config = backend.configuration()
152
+ res = cls(**pass_manager_options)
135
153
  if res.basis_gates is None:
136
154
  if backend_version < 2:
137
155
  res.basis_gates = getattr(config, "basis_gates", None)
@@ -144,7 +162,7 @@ class PassManagerConfig:
144
162
  if defaults is not None:
145
163
  res.inst_map = defaults.instruction_schedule_map
146
164
  else:
147
- res.inst_map = backend.instruction_schedule_map
165
+ res.inst_map = backend._instruction_schedule_map
148
166
  if res.coupling_map is None:
149
167
  if backend_version < 2:
150
168
  cmap_edge_list = getattr(config, "coupling_map", None)
@@ -13,6 +13,7 @@
13
13
  """Built-in transpiler stage plugins for preset pass managers."""
14
14
 
15
15
  import os
16
+ import warnings
16
17
 
17
18
  from qiskit.transpiler.passes.optimization.split_2q_unitaries import Split2QUnitaries
18
19
  from qiskit.transpiler.passmanager import PassManager
@@ -39,9 +40,9 @@ from qiskit.transpiler.preset_passmanagers.plugin import (
39
40
  from qiskit.transpiler.passes.optimization import (
40
41
  Optimize1qGatesDecomposition,
41
42
  CommutativeCancellation,
42
- Collect2qBlocks,
43
43
  ConsolidateBlocks,
44
44
  InverseCancellation,
45
+ RemoveIdentityEquivalent,
45
46
  )
46
47
  from qiskit.transpiler.passes import Depth, Size, FixedPoint, MinimumPoint
47
48
  from qiskit.transpiler.passes.utils.gates_basis import GatesInBasis
@@ -153,8 +154,16 @@ class DefaultInitPassManager(PassManagerStagePlugin):
153
154
  pass_manager_config.hls_config,
154
155
  pass_manager_config.qubits_initially_zero,
155
156
  )
156
- init.append(ElidePermutations())
157
+ if pass_manager_config.routing_method != "none":
158
+ init.append(ElidePermutations())
157
159
  init.append(RemoveDiagonalGatesBeforeMeasure())
160
+ # Target not set on RemoveIdentityEquivalent because we haven't applied a Layout
161
+ # yet so doing anything relative to an error rate in the target is not valid.
162
+ init.append(
163
+ RemoveIdentityEquivalent(
164
+ approximation_degree=pass_manager_config.approximation_degree
165
+ )
166
+ )
158
167
  init.append(
159
168
  InverseCancellation(
160
169
  [
@@ -174,7 +183,6 @@ class DefaultInitPassManager(PassManagerStagePlugin):
174
183
  )
175
184
  )
176
185
  init.append(CommutativeCancellation())
177
- init.append(Collect2qBlocks())
178
186
  init.append(ConsolidateBlocks())
179
187
  # If approximation degree is None that indicates a request to approximate up to the
180
188
  # error rates in the target. However, in the init stage we don't yet know the target
@@ -580,6 +588,10 @@ class OptimizationPassManager(PassManagerStagePlugin):
580
588
 
581
589
  elif optimization_level == 2:
582
590
  _opt = [
591
+ RemoveIdentityEquivalent(
592
+ approximation_degree=pass_manager_config.approximation_degree,
593
+ target=pass_manager_config.target,
594
+ ),
583
595
  Optimize1qGatesDecomposition(
584
596
  basis=pass_manager_config.basis_gates, target=pass_manager_config.target
585
597
  ),
@@ -588,7 +600,6 @@ class OptimizationPassManager(PassManagerStagePlugin):
588
600
  elif optimization_level == 3:
589
601
  # Steps for optimization level 3
590
602
  _opt = [
591
- Collect2qBlocks(),
592
603
  ConsolidateBlocks(
593
604
  basis_gates=pass_manager_config.basis_gates,
594
605
  target=pass_manager_config.target,
@@ -603,6 +614,10 @@ class OptimizationPassManager(PassManagerStagePlugin):
603
614
  plugin_config=pass_manager_config.unitary_synthesis_plugin_config,
604
615
  target=pass_manager_config.target,
605
616
  ),
617
+ RemoveIdentityEquivalent(
618
+ approximation_degree=pass_manager_config.approximation_degree,
619
+ target=pass_manager_config.target,
620
+ ),
606
621
  Optimize1qGatesDecomposition(
607
622
  basis=pass_manager_config.basis_gates, target=pass_manager_config.target
608
623
  ),
@@ -632,7 +647,6 @@ class OptimizationPassManager(PassManagerStagePlugin):
632
647
  elif optimization_level == 2:
633
648
  optimization.append(
634
649
  [
635
- Collect2qBlocks(),
636
650
  ConsolidateBlocks(
637
651
  basis_gates=pass_manager_config.basis_gates,
638
652
  target=pass_manager_config.target,
@@ -675,9 +689,13 @@ class AlapSchedulingPassManager(PassManagerStagePlugin):
675
689
  inst_map = pass_manager_config.inst_map
676
690
  target = pass_manager_config.target
677
691
 
678
- return common.generate_scheduling(
679
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
680
- )
692
+ with warnings.catch_warnings():
693
+ warnings.simplefilter(action="ignore", category=DeprecationWarning)
694
+ # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
695
+ # so filtering these warning when building pass managers
696
+ return common.generate_scheduling(
697
+ instruction_durations, scheduling_method, timing_constraints, inst_map, target
698
+ )
681
699
 
682
700
 
683
701
  class AsapSchedulingPassManager(PassManagerStagePlugin):
@@ -692,9 +710,13 @@ class AsapSchedulingPassManager(PassManagerStagePlugin):
692
710
  inst_map = pass_manager_config.inst_map
693
711
  target = pass_manager_config.target
694
712
 
695
- return common.generate_scheduling(
696
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
697
- )
713
+ with warnings.catch_warnings():
714
+ warnings.simplefilter(action="ignore", category=DeprecationWarning)
715
+ # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
716
+ # so filtering these warning when building pass managers
717
+ return common.generate_scheduling(
718
+ instruction_durations, scheduling_method, timing_constraints, inst_map, target
719
+ )
698
720
 
699
721
 
700
722
  class DefaultSchedulingPassManager(PassManagerStagePlugin):
@@ -709,9 +731,13 @@ class DefaultSchedulingPassManager(PassManagerStagePlugin):
709
731
  inst_map = pass_manager_config.inst_map
710
732
  target = pass_manager_config.target
711
733
 
712
- return common.generate_scheduling(
713
- instruction_durations, scheduling_method, timing_constraints, inst_map, target
714
- )
734
+ with warnings.catch_warnings():
735
+ warnings.simplefilter(action="ignore", category=DeprecationWarning)
736
+ # Passing `inst_map` to `generate_scheduling` is deprecated in Qiskit 1.3
737
+ # so filtering these warning when building pass managers
738
+ return common.generate_scheduling(
739
+ instruction_durations, scheduling_method, timing_constraints, inst_map, target
740
+ )
715
741
 
716
742
 
717
743
  class DefaultLayoutPassManager(PassManagerStagePlugin):
@@ -24,9 +24,9 @@ from qiskit.transpiler.passmanager import PassManager
24
24
  from qiskit.transpiler.passes import Error
25
25
  from qiskit.transpiler.passes import BasisTranslator
26
26
  from qiskit.transpiler.passes import Unroll3qOrMore
27
- from qiskit.transpiler.passes import Collect2qBlocks
28
- from qiskit.transpiler.passes import Collect1qRuns
29
27
  from qiskit.transpiler.passes import ConsolidateBlocks
28
+ from qiskit.transpiler.passes import Collect1qRuns
29
+ from qiskit.transpiler.passes import Collect2qBlocks
30
30
  from qiskit.transpiler.passes import UnitarySynthesis
31
31
  from qiskit.transpiler.passes import HighLevelSynthesis
32
32
  from qiskit.transpiler.passes import CheckMap
@@ -52,6 +52,7 @@ from qiskit.transpiler.passes.layout.vf2_layout import VF2LayoutStopReason
52
52
  from qiskit.transpiler.passes.layout.vf2_post_layout import VF2PostLayoutStopReason
53
53
  from qiskit.transpiler.exceptions import TranspilerError
54
54
  from qiskit.transpiler.layout import Layout
55
+ from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
55
56
 
56
57
 
57
58
  _ControlFlowState = collections.namedtuple("_ControlFlowState", ("working", "not_working"))
@@ -529,6 +530,7 @@ def generate_translation_passmanager(
529
530
  return PassManager(unroll)
530
531
 
531
532
 
533
+ @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
532
534
  def generate_scheduling(
533
535
  instruction_durations, scheduling_method, timing_constraints, inst_map, target=None
534
536
  ):
@@ -540,7 +542,7 @@ def generate_scheduling(
540
542
  ``'asap'``/``'as_soon_as_possible'`` or
541
543
  ``'alap'``/``'as_late_as_possible'``
542
544
  timing_constraints (TimingConstraints): Hardware time alignment restrictions.
543
- inst_map (InstructionScheduleMap): Mapping object that maps gate to schedule.
545
+ inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gate to schedule.
544
546
  target (Target): The :class:`~.Target` object representing the backend
545
547
 
546
548
  Returns:
@@ -17,7 +17,13 @@ Preset pass manager generation function
17
17
  import copy
18
18
  import warnings
19
19
 
20
- from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES
20
+ from qiskit.circuit.controlflow import (
21
+ CONTROL_FLOW_OP_NAMES,
22
+ IfElseOp,
23
+ WhileLoopOp,
24
+ ForLoopOp,
25
+ SwitchCaseOp,
26
+ )
21
27
  from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping
22
28
  from qiskit.circuit.quantumregister import Qubit
23
29
  from qiskit.providers.backend import Backend
@@ -29,6 +35,8 @@ from qiskit.transpiler.layout import Layout
29
35
  from qiskit.transpiler.passmanager_config import PassManagerConfig
30
36
  from qiskit.transpiler.target import Target, target_to_backend_properties
31
37
  from qiskit.transpiler.timing_constraints import TimingConstraints
38
+ from qiskit.utils import deprecate_arg
39
+ from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
32
40
 
33
41
  from .level0 import level_0_pass_manager
34
42
  from .level1 import level_1_pass_manager
@@ -36,6 +44,33 @@ from .level2 import level_2_pass_manager
36
44
  from .level3 import level_3_pass_manager
37
45
 
38
46
 
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)
39
74
  def generate_preset_pass_manager(
40
75
  optimization_level=2,
41
76
  backend=None,
@@ -122,7 +157,7 @@ def generate_preset_pass_manager(
122
157
  and ``backend_properties``.
123
158
  basis_gates (list): List of basis gate names to unroll to
124
159
  (e.g: ``['u1', 'u2', 'u3', 'cx']``).
125
- inst_map (InstructionScheduleMap): Mapping object that maps gates to schedules.
160
+ inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gates to schedules.
126
161
  If any user defined calibration is found in the map and this is used in a
127
162
  circuit, transpiler attaches the custom gate definition to the circuit.
128
163
  This enables one to flexibly override the low-level instruction
@@ -283,6 +318,7 @@ def generate_preset_pass_manager(
283
318
  _skip_target = (
284
319
  target is None
285
320
  and backend is None
321
+ # Note: instruction_durations is deprecated and will be removed in 2.0 (no need for alternative)
286
322
  and (basis_gates is None or coupling_map is None or instruction_durations is not None)
287
323
  )
288
324
 
@@ -307,23 +343,31 @@ def generate_preset_pass_manager(
307
343
  # Only parse backend properties when the target isn't skipped to
308
344
  # preserve the former behavior of transpile.
309
345
  backend_properties = _parse_backend_properties(backend_properties, backend)
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
- )
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
+ )
327
371
 
328
372
  # Update target with custom gate information. Note that this is an exception to the priority
329
373
  # order (target > loose constraints), added to handle custom gates for scheduling passes.
@@ -339,7 +383,7 @@ def generate_preset_pass_manager(
339
383
  if instruction_durations is None:
340
384
  instruction_durations = target.durations()
341
385
  if inst_map is None:
342
- inst_map = target.instruction_schedule_map()
386
+ inst_map = target._get_instruction_schedule_map()
343
387
  if timing_constraints is None:
344
388
  timing_constraints = target.timing_constraints()
345
389
  if backend_properties is None:
@@ -383,30 +427,41 @@ def generate_preset_pass_manager(
383
427
  "qubits_initially_zero": qubits_initially_zero,
384
428
  }
385
429
 
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}")
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}")
401
452
  return pm
402
453
 
403
454
 
404
455
  def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
405
- name_mapping = {}
406
456
  standard_gates = get_standard_gate_name_mapping()
407
- # Add control flow gates by default to basis set
457
+ # Add control flow gates by default to basis set and name mapping
408
458
  default_gates = {"measure", "delay", "reset"}.union(CONTROL_FLOW_OP_NAMES)
409
-
459
+ name_mapping = {
460
+ "if_else": IfElseOp,
461
+ "while_loop": WhileLoopOp,
462
+ "for_loop": ForLoopOp,
463
+ "switch_case": SwitchCaseOp,
464
+ }
410
465
  try:
411
466
  instructions = set(basis_gates)
412
467
  for name in default_gates:
@@ -421,7 +476,16 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
421
476
  return None, name_mapping, skip_target
422
477
 
423
478
  for inst in instructions:
424
- if inst not in standard_gates or inst not in default_gates:
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
+ )
425
489
  skip_target = True
426
490
  break
427
491
 
@@ -434,7 +498,18 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
434
498
 
435
499
  # Check for custom instructions before removing calibrations
436
500
  for inst in instructions:
437
- if inst not in standard_gates or inst not in default_gates:
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
+ )
438
513
  skip_target = True
439
514
  break
440
515
 
@@ -452,14 +527,22 @@ def _parse_basis_gates(basis_gates, backend, inst_map, skip_target):
452
527
  def _parse_inst_map(inst_map, backend):
453
528
  # try getting inst_map from user, else backend
454
529
  if inst_map is None and backend is not None:
455
- inst_map = backend.target.instruction_schedule_map()
530
+ inst_map = backend.target._get_instruction_schedule_map()
456
531
  return inst_map
457
532
 
458
533
 
459
534
  def _parse_backend_properties(backend_properties, backend):
460
535
  # try getting backend_props from user, else backend
461
536
  if backend_properties is None and backend is not None:
462
- backend_properties = target_to_backend_properties(backend.target)
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)
463
546
  return backend_properties
464
547
 
465
548
 
@@ -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