qiskit 1.4.2__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0__cp39-abi3-macosx_11_0_arm64.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 (459) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +3 -9
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +35 -10
  5. qiskit/circuit/{add_control.py → _add_control.py} +32 -12
  6. qiskit/circuit/_classical_resource_map.py +5 -3
  7. qiskit/circuit/barrier.py +3 -7
  8. qiskit/circuit/classical/expr/__init__.py +31 -3
  9. qiskit/circuit/classical/expr/constructors.py +236 -28
  10. qiskit/circuit/classical/expr/expr.py +104 -3
  11. qiskit/circuit/classical/expr/visitors.py +75 -0
  12. qiskit/circuit/classical/types/__init__.py +12 -8
  13. qiskit/circuit/classical/types/ordering.py +14 -7
  14. qiskit/circuit/classical/types/types.py +36 -0
  15. qiskit/circuit/commutation_checker.py +34 -7
  16. qiskit/circuit/controlflow/__init__.py +32 -1
  17. qiskit/circuit/controlflow/_builder_utils.py +9 -5
  18. qiskit/circuit/controlflow/box.py +163 -0
  19. qiskit/circuit/controlflow/break_loop.py +1 -1
  20. qiskit/circuit/controlflow/builder.py +139 -39
  21. qiskit/circuit/controlflow/continue_loop.py +1 -3
  22. qiskit/circuit/controlflow/control_flow.py +10 -0
  23. qiskit/circuit/controlflow/for_loop.py +2 -1
  24. qiskit/circuit/controlflow/if_else.py +3 -16
  25. qiskit/circuit/controlflow/switch_case.py +2 -8
  26. qiskit/circuit/controlflow/while_loop.py +2 -7
  27. qiskit/circuit/controlledgate.py +2 -4
  28. qiskit/circuit/delay.py +40 -11
  29. qiskit/circuit/duration.py +0 -15
  30. qiskit/circuit/gate.py +2 -4
  31. qiskit/circuit/instruction.py +2 -141
  32. qiskit/circuit/instructionset.py +7 -54
  33. qiskit/circuit/library/__init__.py +469 -154
  34. qiskit/circuit/library/arithmetic/__init__.py +16 -10
  35. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  36. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +2 -2
  37. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +1 -1
  38. qiskit/circuit/library/arithmetic/exact_reciprocal.py +64 -21
  39. qiskit/circuit/library/arithmetic/integer_comparator.py +37 -80
  40. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +169 -2
  41. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +59 -5
  42. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +154 -6
  43. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +114 -4
  44. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +191 -15
  45. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +93 -39
  46. qiskit/circuit/library/arithmetic/quadratic_form.py +168 -2
  47. qiskit/circuit/library/arithmetic/weighted_adder.py +73 -1
  48. qiskit/circuit/library/bit_flip_oracle.py +130 -0
  49. qiskit/circuit/library/blueprintcircuit.py +52 -16
  50. qiskit/circuit/library/data_preparation/initializer.py +1 -1
  51. qiskit/circuit/library/data_preparation/pauli_feature_map.py +4 -4
  52. qiskit/circuit/library/data_preparation/state_preparation.py +1 -1
  53. qiskit/circuit/library/generalized_gates/gms.py +1 -1
  54. qiskit/circuit/library/generalized_gates/isometry.py +1 -1
  55. qiskit/circuit/library/generalized_gates/pauli.py +1 -2
  56. qiskit/circuit/library/generalized_gates/uc.py +97 -7
  57. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +1 -1
  58. qiskit/circuit/library/generalized_gates/unitary.py +4 -2
  59. qiskit/circuit/library/graph_state.py +1 -0
  60. qiskit/circuit/library/hamiltonian_gate.py +1 -1
  61. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  62. qiskit/circuit/library/n_local/n_local.py +1 -1
  63. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  64. qiskit/circuit/library/overlap.py +2 -2
  65. qiskit/circuit/library/pauli_evolution.py +39 -24
  66. qiskit/circuit/library/phase_oracle.py +130 -51
  67. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  68. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  69. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  70. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  71. qiskit/circuit/library/standard_gates/h.py +4 -9
  72. qiskit/circuit/library/standard_gates/i.py +2 -2
  73. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  74. qiskit/circuit/library/standard_gates/p.py +15 -34
  75. qiskit/circuit/library/standard_gates/r.py +7 -10
  76. qiskit/circuit/library/standard_gates/rx.py +5 -15
  77. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  78. qiskit/circuit/library/standard_gates/ry.py +5 -17
  79. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  80. qiskit/circuit/library/standard_gates/rz.py +5 -17
  81. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  82. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  83. qiskit/circuit/library/standard_gates/s.py +6 -15
  84. qiskit/circuit/library/standard_gates/swap.py +4 -11
  85. qiskit/circuit/library/standard_gates/sx.py +7 -12
  86. qiskit/circuit/library/standard_gates/t.py +6 -7
  87. qiskit/circuit/library/standard_gates/u.py +2 -10
  88. qiskit/circuit/library/standard_gates/u1.py +5 -16
  89. qiskit/circuit/library/standard_gates/u2.py +2 -6
  90. qiskit/circuit/library/standard_gates/u3.py +3 -11
  91. qiskit/circuit/library/standard_gates/x.py +14 -62
  92. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  94. qiskit/circuit/library/standard_gates/y.py +4 -9
  95. qiskit/circuit/library/standard_gates/z.py +5 -15
  96. qiskit/circuit/measure.py +11 -2
  97. qiskit/circuit/parameterexpression.py +7 -1
  98. qiskit/circuit/quantumcircuit.py +890 -564
  99. qiskit/circuit/random/utils.py +12 -6
  100. qiskit/circuit/reset.py +5 -2
  101. qiskit/circuit/singleton.py +5 -11
  102. qiskit/circuit/store.py +0 -8
  103. qiskit/compiler/__init__.py +1 -7
  104. qiskit/compiler/transpiler.py +38 -196
  105. qiskit/converters/circuit_to_dag.py +6 -4
  106. qiskit/converters/circuit_to_dagdependency.py +0 -2
  107. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  108. qiskit/converters/circuit_to_gate.py +1 -1
  109. qiskit/converters/circuit_to_instruction.py +16 -29
  110. qiskit/converters/dag_to_circuit.py +7 -8
  111. qiskit/converters/dag_to_dagdependency.py +0 -1
  112. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  113. qiskit/converters/dagdependency_to_circuit.py +0 -6
  114. qiskit/converters/dagdependency_to_dag.py +0 -6
  115. qiskit/dagcircuit/collect_blocks.py +32 -20
  116. qiskit/dagcircuit/dagdependency.py +3 -37
  117. qiskit/dagcircuit/dagdependency_v2.py +5 -82
  118. qiskit/dagcircuit/dagnode.py +14 -2
  119. qiskit/passmanager/__init__.py +24 -6
  120. qiskit/passmanager/passmanager.py +26 -24
  121. qiskit/primitives/__init__.py +44 -35
  122. qiskit/primitives/backend_estimator_v2.py +102 -23
  123. qiskit/primitives/backend_sampler_v2.py +5 -20
  124. qiskit/primitives/base/__init__.py +4 -4
  125. qiskit/primitives/base/base_estimator.py +77 -82
  126. qiskit/primitives/base/base_primitive_job.py +2 -2
  127. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  128. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  129. qiskit/primitives/base/base_sampler.py +52 -60
  130. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  131. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  132. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  133. qiskit/primitives/containers/bindings_array.py +3 -1
  134. qiskit/primitives/containers/bit_array.py +23 -0
  135. qiskit/primitives/containers/data_bin.py +3 -1
  136. qiskit/primitives/containers/observables_array.py +19 -2
  137. qiskit/primitives/statevector_sampler.py +6 -8
  138. qiskit/primitives/utils.py +14 -189
  139. qiskit/providers/__init__.py +4 -130
  140. qiskit/providers/backend.py +11 -314
  141. qiskit/providers/basic_provider/__init__.py +3 -1
  142. qiskit/providers/basic_provider/basic_provider.py +29 -9
  143. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  144. qiskit/providers/exceptions.py +0 -33
  145. qiskit/providers/fake_provider/__init__.py +0 -37
  146. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  147. qiskit/qasm2/__init__.py +21 -6
  148. qiskit/qasm2/export.py +2 -10
  149. qiskit/qasm2/parse.py +11 -25
  150. qiskit/qasm3/__init__.py +5 -1
  151. qiskit/qasm3/ast.py +44 -0
  152. qiskit/qasm3/exporter.py +65 -27
  153. qiskit/qasm3/printer.py +35 -4
  154. qiskit/qpy/__init__.py +162 -19
  155. qiskit/qpy/binary_io/__init__.py +0 -1
  156. qiskit/qpy/binary_io/circuits.py +98 -130
  157. qiskit/qpy/binary_io/schedules.py +69 -439
  158. qiskit/qpy/binary_io/value.py +154 -31
  159. qiskit/qpy/common.py +10 -7
  160. qiskit/qpy/formats.py +41 -0
  161. qiskit/qpy/interface.py +34 -81
  162. qiskit/qpy/type_keys.py +58 -221
  163. qiskit/quantum_info/analysis/distance.py +3 -1
  164. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  165. qiskit/quantum_info/operators/operator.py +6 -2
  166. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  167. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  168. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  169. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  170. qiskit/quantum_info/states/densitymatrix.py +16 -6
  171. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  172. qiskit/quantum_info/states/statevector.py +16 -6
  173. qiskit/result/__init__.py +5 -17
  174. qiskit/result/models.py +18 -11
  175. qiskit/result/result.py +38 -134
  176. qiskit/result/sampled_expval.py +1 -2
  177. qiskit/result/utils.py +3 -4
  178. qiskit/synthesis/__init__.py +21 -1
  179. qiskit/synthesis/arithmetic/__init__.py +3 -1
  180. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  182. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  183. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  184. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  185. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  186. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  188. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  189. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  190. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  191. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  192. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  193. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  194. qiskit/synthesis/evolution/product_formula.py +44 -35
  195. qiskit/synthesis/evolution/qdrift.py +17 -24
  196. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  197. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  198. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  199. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  200. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  201. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  202. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  203. qiskit/synthesis/two_qubit/__init__.py +1 -0
  204. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  205. qiskit/transpiler/__init__.py +32 -232
  206. qiskit/transpiler/basepasses.py +20 -51
  207. qiskit/transpiler/layout.py +1 -1
  208. qiskit/transpiler/passes/__init__.py +4 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +5 -4
  210. qiskit/transpiler/passes/basis/decompose.py +1 -15
  211. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  212. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  213. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  214. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  215. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
  216. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  217. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  218. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  219. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  220. qiskit/transpiler/passes/optimization/__init__.py +2 -3
  221. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  222. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  224. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  225. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  226. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  227. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  228. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  229. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  230. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  231. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  232. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  233. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  234. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  235. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  236. qiskit/transpiler/passes/routing/__init__.py +0 -1
  237. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  238. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  239. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  240. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  241. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  242. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  243. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  244. qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
  247. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  248. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  249. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  250. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
  251. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  252. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  253. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  254. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  255. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  256. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  257. qiskit/transpiler/passes/utils/__init__.py +0 -1
  258. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  259. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  260. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  261. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  262. qiskit/transpiler/passmanager.py +13 -0
  263. qiskit/transpiler/passmanager_config.py +5 -81
  264. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  265. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  266. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
  267. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  268. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  269. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  270. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  272. qiskit/transpiler/target.py +78 -524
  273. qiskit/user_config.py +8 -4
  274. qiskit/utils/__init__.py +13 -12
  275. qiskit/utils/deprecation.py +4 -112
  276. qiskit/utils/optionals.py +11 -4
  277. qiskit/utils/parallel.py +214 -87
  278. qiskit/utils/units.py +4 -1
  279. qiskit/visualization/__init__.py +3 -7
  280. qiskit/visualization/array.py +4 -1
  281. qiskit/visualization/bloch.py +1 -1
  282. qiskit/visualization/circuit/_utils.py +19 -19
  283. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  284. qiskit/visualization/circuit/matplotlib.py +13 -23
  285. qiskit/visualization/circuit/text.py +7 -3
  286. qiskit/visualization/counts_visualization.py +4 -0
  287. qiskit/visualization/dag_visualization.py +2 -1
  288. qiskit/visualization/gate_map.py +39 -154
  289. qiskit/visualization/library.py +4 -1
  290. qiskit/visualization/pass_manager_visualization.py +6 -2
  291. qiskit/visualization/state_visualization.py +19 -2
  292. qiskit/visualization/timeline/core.py +19 -13
  293. qiskit/visualization/timeline/interface.py +19 -18
  294. qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
  295. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
  296. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/RECORD +300 -447
  297. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/WHEEL +2 -1
  298. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
  299. qiskit/assembler/__init__.py +0 -42
  300. qiskit/assembler/assemble_circuits.py +0 -451
  301. qiskit/assembler/assemble_schedules.py +0 -367
  302. qiskit/assembler/disassemble.py +0 -310
  303. qiskit/assembler/run_config.py +0 -77
  304. qiskit/circuit/bit.py +0 -106
  305. qiskit/circuit/classicalfunction/__init__.py +0 -152
  306. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  307. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  308. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  309. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  310. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  311. qiskit/circuit/classicalfunction/types.py +0 -18
  312. qiskit/circuit/classicalfunction/utils.py +0 -91
  313. qiskit/circuit/classicalregister.py +0 -57
  314. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  315. qiskit/circuit/quantumregister.py +0 -75
  316. qiskit/circuit/register.py +0 -246
  317. qiskit/compiler/assembler.py +0 -689
  318. qiskit/compiler/scheduler.py +0 -109
  319. qiskit/compiler/sequencer.py +0 -71
  320. qiskit/primitives/backend_estimator.py +0 -486
  321. qiskit/primitives/backend_sampler.py +0 -222
  322. qiskit/primitives/estimator.py +0 -172
  323. qiskit/primitives/sampler.py +0 -162
  324. qiskit/providers/backend_compat.py +0 -507
  325. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  330. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  333. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  337. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  338. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  340. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  341. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  342. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  346. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  347. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  348. qiskit/providers/fake_provider/fake_1q.py +0 -91
  349. qiskit/providers/fake_provider/fake_backend.py +0 -165
  350. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  351. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  352. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  353. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  354. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  355. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  356. qiskit/providers/models/__init__.py +0 -89
  357. qiskit/providers/models/backendconfiguration.py +0 -1040
  358. qiskit/providers/models/backendproperties.py +0 -535
  359. qiskit/providers/models/backendstatus.py +0 -104
  360. qiskit/providers/models/jobstatus.py +0 -77
  361. qiskit/providers/models/pulsedefaults.py +0 -305
  362. qiskit/providers/provider.py +0 -95
  363. qiskit/pulse/__init__.py +0 -158
  364. qiskit/pulse/builder.py +0 -2262
  365. qiskit/pulse/calibration_entries.py +0 -381
  366. qiskit/pulse/channels.py +0 -227
  367. qiskit/pulse/configuration.py +0 -245
  368. qiskit/pulse/exceptions.py +0 -45
  369. qiskit/pulse/filters.py +0 -309
  370. qiskit/pulse/instruction_schedule_map.py +0 -424
  371. qiskit/pulse/instructions/__init__.py +0 -67
  372. qiskit/pulse/instructions/acquire.py +0 -150
  373. qiskit/pulse/instructions/delay.py +0 -71
  374. qiskit/pulse/instructions/directives.py +0 -154
  375. qiskit/pulse/instructions/frequency.py +0 -135
  376. qiskit/pulse/instructions/instruction.py +0 -270
  377. qiskit/pulse/instructions/phase.py +0 -152
  378. qiskit/pulse/instructions/play.py +0 -99
  379. qiskit/pulse/instructions/reference.py +0 -100
  380. qiskit/pulse/instructions/snapshot.py +0 -82
  381. qiskit/pulse/library/__init__.py +0 -97
  382. qiskit/pulse/library/continuous.py +0 -430
  383. qiskit/pulse/library/pulse.py +0 -148
  384. qiskit/pulse/library/samplers/__init__.py +0 -15
  385. qiskit/pulse/library/samplers/decorators.py +0 -295
  386. qiskit/pulse/library/samplers/strategies.py +0 -71
  387. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  388. qiskit/pulse/library/waveform.py +0 -136
  389. qiskit/pulse/macros.py +0 -262
  390. qiskit/pulse/parameter_manager.py +0 -445
  391. qiskit/pulse/parser.py +0 -314
  392. qiskit/pulse/reference_manager.py +0 -58
  393. qiskit/pulse/schedule.py +0 -1854
  394. qiskit/pulse/transforms/__init__.py +0 -106
  395. qiskit/pulse/transforms/alignments.py +0 -406
  396. qiskit/pulse/transforms/base_transforms.py +0 -71
  397. qiskit/pulse/transforms/canonicalization.py +0 -498
  398. qiskit/pulse/transforms/dag.py +0 -122
  399. qiskit/pulse/utils.py +0 -149
  400. qiskit/qobj/__init__.py +0 -75
  401. qiskit/qobj/common.py +0 -81
  402. qiskit/qobj/converters/__init__.py +0 -18
  403. qiskit/qobj/converters/lo_config.py +0 -177
  404. qiskit/qobj/converters/pulse_instruction.py +0 -897
  405. qiskit/qobj/pulse_qobj.py +0 -709
  406. qiskit/qobj/qasm_qobj.py +0 -708
  407. qiskit/qobj/utils.py +0 -46
  408. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  409. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  410. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  411. qiskit/result/mitigation/utils.py +0 -217
  412. qiskit/scheduler/__init__.py +0 -40
  413. qiskit/scheduler/config.py +0 -37
  414. qiskit/scheduler/lowering.py +0 -187
  415. qiskit/scheduler/methods/__init__.py +0 -15
  416. qiskit/scheduler/methods/basic.py +0 -140
  417. qiskit/scheduler/schedule_circuit.py +0 -69
  418. qiskit/scheduler/sequence.py +0 -104
  419. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  420. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  421. qiskit/transpiler/passes/calibration/builders.py +0 -20
  422. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  423. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  424. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  425. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  426. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  427. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  428. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  429. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  430. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  431. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  432. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  433. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  434. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  435. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  436. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  437. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  438. qiskit/utils/deprecate_pulse.py +0 -119
  439. qiskit/utils/multiprocessing.py +0 -56
  440. qiskit/visualization/pulse_v2/__init__.py +0 -21
  441. qiskit/visualization/pulse_v2/core.py +0 -901
  442. qiskit/visualization/pulse_v2/device_info.py +0 -173
  443. qiskit/visualization/pulse_v2/drawings.py +0 -253
  444. qiskit/visualization/pulse_v2/events.py +0 -254
  445. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  446. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  447. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  448. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  449. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  450. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  451. qiskit/visualization/pulse_v2/interface.py +0 -459
  452. qiskit/visualization/pulse_v2/layouts.py +0 -387
  453. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  454. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  455. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  456. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  457. qiskit/visualization/pulse_v2/types.py +0 -242
  458. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
  459. {qiskit-1.4.2.dist-info → qiskit-2.0.0.dist-info}/top_level.txt +0 -0
@@ -14,7 +14,6 @@
14
14
  """Common preset passmanager generators."""
15
15
 
16
16
  import collections
17
- import warnings
18
17
  from typing import Optional
19
18
 
20
19
  from qiskit.circuit.equivalence_library import SessionEquivalenceLibrary as sel
@@ -42,34 +41,34 @@ from qiskit.transpiler.passes import EnlargeWithAncilla
42
41
  from qiskit.transpiler.passes import ApplyLayout
43
42
  from qiskit.transpiler.passes import RemoveResetInZeroState
44
43
  from qiskit.transpiler.passes import FilterOpNodes
45
- from qiskit.transpiler.passes import ValidatePulseGates
46
44
  from qiskit.transpiler.passes import PadDelay
47
45
  from qiskit.transpiler.passes import InstructionDurationCheck
48
46
  from qiskit.transpiler.passes import ConstrainedReschedule
49
- from qiskit.transpiler.passes import PulseGates
50
47
  from qiskit.transpiler.passes import ContainsInstruction
51
48
  from qiskit.transpiler.passes import VF2PostLayout
52
49
  from qiskit.transpiler.passes.layout.vf2_layout import VF2LayoutStopReason
53
50
  from qiskit.transpiler.passes.layout.vf2_post_layout import VF2PostLayoutStopReason
54
51
  from qiskit.transpiler.exceptions import TranspilerError
55
52
  from qiskit.transpiler.layout import Layout
56
- from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
57
- from qiskit.utils.deprecation import deprecate_arg
53
+ from qiskit.utils import deprecate_func
54
+
58
55
 
59
56
  _ControlFlowState = collections.namedtuple("_ControlFlowState", ("working", "not_working"))
60
57
 
61
58
  # Any method neither known good nor known bad (i.e. not a Terra-internal pass) is passed through
62
59
  # without error, since it is being supplied by a plugin and we don't have any knowledge of these.
63
60
  _CONTROL_FLOW_STATES = {
64
- "layout_method": _ControlFlowState(working={"trivial", "dense", "sabre"}, not_working=set()),
61
+ "layout_method": _ControlFlowState(
62
+ working={"default", "trivial", "dense", "sabre"}, not_working=set()
63
+ ),
65
64
  "routing_method": _ControlFlowState(
66
- working={"none", "stochastic", "sabre"}, not_working={"lookahead", "basic"}
65
+ working={"default", "none", "stochastic", "sabre"}, not_working={"lookahead", "basic"}
67
66
  ),
68
67
  "translation_method": _ControlFlowState(
69
- working={"translator", "synthesis"},
68
+ working={"default", "translator", "synthesis"},
70
69
  not_working=set(),
71
70
  ),
72
- "optimization_method": _ControlFlowState(working=set(), not_working=set()),
71
+ "optimization_method": _ControlFlowState(working={"default"}, not_working=set()),
73
72
  "scheduling_method": _ControlFlowState(working=set(), not_working={"alap", "asap"}),
74
73
  }
75
74
 
@@ -86,9 +85,9 @@ class _InvalidControlFlowForBackend:
86
85
  # Explicitly stateful closure to allow pickling.
87
86
 
88
87
  def __init__(self, basis_gates=(), target=None):
89
- if target is not None:
88
+ if target is not None and len(target.operation_names) > 0:
90
89
  self.unsupported = [op for op in CONTROL_FLOW_OP_NAMES if op not in target]
91
- elif basis_gates is not None:
90
+ elif basis_gates is not None and len(basis_gates) > 0:
92
91
  basis_gates = set(basis_gates)
93
92
  self.unsupported = [op for op in CONTROL_FLOW_OP_NAMES if op not in basis_gates]
94
93
  else:
@@ -276,23 +275,12 @@ def _apply_post_layout_condition(property_set):
276
275
  )
277
276
 
278
277
 
279
- @deprecate_arg(
280
- name="backend_properties",
281
- since="1.4",
282
- package_name="Qiskit",
283
- removal_timeline="in Qiskit 2.0",
284
- additional_msg="The BackendProperties data structure has been deprecated and will be "
285
- "removed in Qiskit 2.0. The required `target` input argument should be used "
286
- "instead. You can use Target.from_configuration() to build the target from the properties "
287
- "object, but in 2.0 you will need to generate a target directly.",
288
- )
289
278
  def generate_routing_passmanager(
290
279
  routing_pass,
291
280
  target,
292
281
  coupling_map=None,
293
282
  vf2_call_limit=None,
294
- backend_properties=None,
295
- seed_transpiler=None,
283
+ seed_transpiler=-1,
296
284
  check_trivial=False,
297
285
  use_barrier_before_measurement=True,
298
286
  vf2_max_trials=None,
@@ -308,10 +296,11 @@ def generate_routing_passmanager(
308
296
  vf2_call_limit (int): The internal call limit for the vf2 post layout
309
297
  pass. If this is ``None`` or ``0`` the vf2 post layout will not be
310
298
  run.
311
- backend_properties (BackendProperties): Properties of a backend to
312
- synthesize for (e.g. gate fidelities).
313
299
  seed_transpiler (int): Sets random seed for the stochastic parts of
314
- the transpiler.
300
+ the transpiler. This is currently only used for :class:`.VF2PostLayout` and the
301
+ default value of ``-1`` is strongly recommended (which is no randomization).
302
+ If a value of ``None`` is provided this will seed from system
303
+ entropy.
315
304
  check_trivial (bool): If set to true this will condition running the
316
305
  :class:`~.VF2PostLayout` pass after routing on whether a trivial
317
306
  layout was tried and was found to not be perfect. This is only
@@ -362,34 +351,19 @@ def generate_routing_passmanager(
362
351
  routing.append(ConditionalController(routing_pass, condition=_swap_condition))
363
352
 
364
353
  is_vf2_fully_bounded = vf2_call_limit and vf2_max_trials
365
- if (target is not None or backend_properties is not None) and is_vf2_fully_bounded:
366
- with warnings.catch_warnings():
367
- warnings.filterwarnings(
368
- "ignore",
369
- category=DeprecationWarning,
370
- message=".*argument ``properties`` is deprecated as of Qiskit 1.4",
371
- module="qiskit",
372
- )
373
- warnings.filterwarnings(
374
- "ignore",
375
- category=DeprecationWarning,
376
- message=".*argument ``coupling_map`` is deprecated as of Qiskit 1.4",
377
- module="qiskit",
378
- )
379
- routing.append(
380
- ConditionalController(
381
- VF2PostLayout(
382
- target,
383
- coupling_map,
384
- backend_properties,
385
- seed_transpiler,
386
- call_limit=vf2_call_limit,
387
- max_trials=vf2_max_trials,
388
- strict_direction=False,
389
- ),
390
- condition=_run_post_layout_condition,
391
- )
354
+ if target is not None and is_vf2_fully_bounded:
355
+ routing.append(
356
+ ConditionalController(
357
+ VF2PostLayout(
358
+ target,
359
+ seed=seed_transpiler,
360
+ call_limit=vf2_call_limit,
361
+ max_trials=vf2_max_trials,
362
+ strict_direction=False,
363
+ ),
364
+ condition=_run_post_layout_condition,
392
365
  )
366
+ )
393
367
  routing.append(ConditionalController(ApplyLayout(), condition=_apply_post_layout_condition))
394
368
 
395
369
  def filter_fn(node):
@@ -400,11 +374,19 @@ def generate_routing_passmanager(
400
374
  return routing
401
375
 
402
376
 
377
+ @deprecate_func(
378
+ since="2.0",
379
+ additional_msg=(
380
+ "Translation plugins are now required to respect ISA directionality,"
381
+ " so typically no replacement is necessary."
382
+ ),
383
+ removal_timeline="in Qiskit 3.0",
384
+ )
403
385
  def generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_zero=False):
404
386
  """Generate a pre-optimization loop :class:`~qiskit.transpiler.PassManager`
405
387
 
406
388
  This pass manager will check to ensure that directionality from the coupling
407
- map is respected
389
+ map is respected.
408
390
 
409
391
  Args:
410
392
  target (Target): the :class:`~.Target` object representing the backend
@@ -433,23 +415,12 @@ def generate_pre_op_passmanager(target=None, coupling_map=None, remove_reset_in_
433
415
  return pre_opt
434
416
 
435
417
 
436
- @deprecate_arg(
437
- name="backend_properties",
438
- since="1.4",
439
- package_name="Qiskit",
440
- removal_timeline="in Qiskit 2.0",
441
- additional_msg="The BackendProperties data structure has been deprecated and will be "
442
- "removed in Qiskit 2.0. The required `target` input argument should be used "
443
- "instead. You can use Target.from_configuration() to build the target from the properties "
444
- "object, but in 2.0 you will need to generate a target directly.",
445
- )
446
418
  def generate_translation_passmanager(
447
419
  target,
448
420
  basis_gates=None,
449
421
  method="translator",
450
422
  approximation_degree=None,
451
423
  coupling_map=None,
452
- backend_props=None,
453
424
  unitary_synthesis_method="default",
454
425
  unitary_synthesis_plugin_config=None,
455
426
  hls_config=None,
@@ -472,8 +443,6 @@ def generate_translation_passmanager(
472
443
  unitary_synthesis_plugin_config (dict): The optional dictionary plugin
473
444
  configuration, this is plugin specific refer to the specified plugin's
474
445
  documentation for how to use.
475
- backend_props (BackendProperties): Properties of a backend to
476
- synthesize for (e.g. gate fidelities).
477
446
  unitary_synthesis_method (str): The unitary synthesis method to use. You can
478
447
  see a list of installed plugins with :func:`.unitary_synthesis_plugin_names`.
479
448
  hls_config (HLSConfig): An optional configuration class to use for
@@ -488,102 +457,116 @@ def generate_translation_passmanager(
488
457
  Raises:
489
458
  TranspilerError: If the ``method`` kwarg is not a valid value
490
459
  """
460
+ if basis_gates is None and target is None:
461
+ return PassManager([])
462
+
491
463
  if method == "translator":
492
- with warnings.catch_warnings():
493
- warnings.filterwarnings(
494
- "ignore",
495
- category=DeprecationWarning,
496
- message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
497
- module="qiskit",
498
- )
499
- unroll = [
500
- # Use unitary synthesis for basis aware decomposition of
501
- # UnitaryGates before custom unrolling
502
- UnitarySynthesis(
503
- basis_gates,
504
- approximation_degree=approximation_degree,
505
- coupling_map=coupling_map,
506
- backend_props=backend_props,
507
- plugin_config=unitary_synthesis_plugin_config,
508
- method=unitary_synthesis_method,
509
- target=target,
510
- ),
511
- HighLevelSynthesis(
512
- hls_config=hls_config,
513
- coupling_map=coupling_map,
514
- target=target,
515
- use_qubit_indices=True,
516
- equivalence_library=sel,
517
- basis_gates=basis_gates,
518
- qubits_initially_zero=qubits_initially_zero,
519
- ),
520
- BasisTranslator(sel, basis_gates, target),
521
- ]
464
+ translator = BasisTranslator(sel, basis_gates, target)
465
+ unroll = [
466
+ # Use unitary synthesis for basis aware decomposition of
467
+ # UnitaryGates before custom unrolling
468
+ UnitarySynthesis(
469
+ basis_gates,
470
+ approximation_degree=approximation_degree,
471
+ coupling_map=coupling_map,
472
+ plugin_config=unitary_synthesis_plugin_config,
473
+ method=unitary_synthesis_method,
474
+ target=target,
475
+ ),
476
+ HighLevelSynthesis(
477
+ hls_config=hls_config,
478
+ coupling_map=coupling_map,
479
+ target=target,
480
+ use_qubit_indices=True,
481
+ equivalence_library=sel,
482
+ basis_gates=basis_gates,
483
+ qubits_initially_zero=qubits_initially_zero,
484
+ ),
485
+ translator,
486
+ ]
487
+ fix_1q = [translator]
522
488
  elif method == "synthesis":
523
- with warnings.catch_warnings():
524
- warnings.filterwarnings(
525
- "ignore",
526
- category=DeprecationWarning,
527
- message=".*argument ``backend_props`` is deprecated as of Qiskit 1.4",
528
- module="qiskit",
529
- )
530
- unroll = [
531
- # Use unitary synthesis for basis aware decomposition of
532
- # UnitaryGates > 2q before collection
533
- UnitarySynthesis(
534
- basis_gates,
535
- approximation_degree=approximation_degree,
536
- coupling_map=coupling_map,
537
- backend_props=backend_props,
538
- plugin_config=unitary_synthesis_plugin_config,
539
- method=unitary_synthesis_method,
540
- min_qubits=3,
541
- target=target,
542
- ),
543
- HighLevelSynthesis(
544
- hls_config=hls_config,
545
- coupling_map=coupling_map,
546
- target=target,
547
- use_qubit_indices=True,
548
- basis_gates=basis_gates,
549
- min_qubits=3,
550
- qubits_initially_zero=qubits_initially_zero,
551
- ),
552
- Unroll3qOrMore(target=target, basis_gates=basis_gates),
553
- Collect2qBlocks(),
554
- Collect1qRuns(),
555
- ConsolidateBlocks(
556
- basis_gates=basis_gates,
557
- target=target,
558
- approximation_degree=approximation_degree,
559
- ),
560
- UnitarySynthesis(
561
- basis_gates=basis_gates,
562
- approximation_degree=approximation_degree,
563
- coupling_map=coupling_map,
564
- backend_props=backend_props,
565
- plugin_config=unitary_synthesis_plugin_config,
566
- method=unitary_synthesis_method,
567
- target=target,
568
- ),
569
- HighLevelSynthesis(
570
- hls_config=hls_config,
571
- coupling_map=coupling_map,
572
- target=target,
573
- use_qubit_indices=True,
574
- basis_gates=basis_gates,
575
- qubits_initially_zero=qubits_initially_zero,
576
- ),
577
- ]
489
+ unroll = [
490
+ # # Use unitary synthesis for basis aware decomposition of
491
+ # UnitaryGates > 2q before collection
492
+ UnitarySynthesis(
493
+ basis_gates,
494
+ approximation_degree=approximation_degree,
495
+ coupling_map=coupling_map,
496
+ plugin_config=unitary_synthesis_plugin_config,
497
+ method=unitary_synthesis_method,
498
+ min_qubits=3,
499
+ target=target,
500
+ ),
501
+ HighLevelSynthesis(
502
+ hls_config=hls_config,
503
+ coupling_map=coupling_map,
504
+ target=target,
505
+ use_qubit_indices=True,
506
+ basis_gates=basis_gates,
507
+ min_qubits=3,
508
+ qubits_initially_zero=qubits_initially_zero,
509
+ ),
510
+ Unroll3qOrMore(target=target, basis_gates=basis_gates),
511
+ Collect2qBlocks(),
512
+ Collect1qRuns(),
513
+ ConsolidateBlocks(
514
+ basis_gates=basis_gates, target=target, approximation_degree=approximation_degree
515
+ ),
516
+ UnitarySynthesis(
517
+ basis_gates=basis_gates,
518
+ approximation_degree=approximation_degree,
519
+ coupling_map=coupling_map,
520
+ plugin_config=unitary_synthesis_plugin_config,
521
+ method=unitary_synthesis_method,
522
+ target=target,
523
+ ),
524
+ HighLevelSynthesis(
525
+ hls_config=hls_config,
526
+ coupling_map=coupling_map,
527
+ target=target,
528
+ use_qubit_indices=True,
529
+ basis_gates=basis_gates,
530
+ qubits_initially_zero=qubits_initially_zero,
531
+ ),
532
+ ]
533
+ fix_1q = [
534
+ Collect1qRuns(),
535
+ ConsolidateBlocks(
536
+ basis_gates=basis_gates, target=target, approximation_degree=approximation_degree
537
+ ),
538
+ UnitarySynthesis(
539
+ basis_gates=basis_gates,
540
+ approximation_degree=approximation_degree,
541
+ coupling_map=coupling_map,
542
+ plugin_config=unitary_synthesis_plugin_config,
543
+ method=unitary_synthesis_method,
544
+ target=target,
545
+ ),
546
+ ]
578
547
  else:
579
548
  raise TranspilerError(f"Invalid translation method {method}.")
549
+ # Our built-ins don't 100% guarantee that 2q gate direction is respected, so we might need to
550
+ # run a little bit of fix up on them. `GateDirection` doesn't guarantee that 1q gates are
551
+ # ISA safe after it runs, so we need another run too.
552
+ if (coupling_map and not coupling_map.is_symmetric) or (
553
+ target is not None and target.get_non_global_operation_names(strict_direction=True)
554
+ ):
555
+ unroll.append(CheckGateDirection(coupling_map, target=target))
556
+
557
+ def _direction_condition(property_set):
558
+ return not property_set["is_direction_mapped"]
559
+
560
+ unroll.append(
561
+ ConditionalController(
562
+ [GateDirection(coupling_map, target=target)] + fix_1q,
563
+ condition=_direction_condition,
564
+ )
565
+ )
580
566
  return PassManager(unroll)
581
567
 
582
568
 
583
- @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
584
- def generate_scheduling(
585
- instruction_durations, scheduling_method, timing_constraints, inst_map, target=None
586
- ):
569
+ def generate_scheduling(instruction_durations, scheduling_method, timing_constraints, target=None):
587
570
  """Generate a post optimization scheduling :class:`~qiskit.transpiler.PassManager`
588
571
 
589
572
  Args:
@@ -592,7 +575,6 @@ def generate_scheduling(
592
575
  ``'asap'``/``'as_soon_as_possible'`` or
593
576
  ``'alap'``/``'as_late_as_possible'``
594
577
  timing_constraints (TimingConstraints): Hardware time alignment restrictions.
595
- inst_map (InstructionScheduleMap): DEPRECATED. Mapping object that maps gate to schedule.
596
578
  target (Target): The :class:`~.Target` object representing the backend
597
579
 
598
580
  Returns:
@@ -602,8 +584,6 @@ def generate_scheduling(
602
584
  TranspilerError: If the ``scheduling_method`` kwarg is not a valid value
603
585
  """
604
586
  scheduling = PassManager()
605
- if inst_map and inst_map.has_custom_gate():
606
- scheduling.append(PulseGates(inst_map=inst_map, target=target))
607
587
  if scheduling_method:
608
588
  # Do scheduling after unit conversion.
609
589
  scheduler = {
@@ -656,16 +636,9 @@ def generate_scheduling(
656
636
  condition=_require_alignment,
657
637
  )
658
638
  )
659
- scheduling.append(
660
- ValidatePulseGates(
661
- granularity=timing_constraints.granularity,
662
- min_length=timing_constraints.min_length,
663
- target=target,
664
- )
665
- )
666
639
  if scheduling_method:
667
640
  # Call padding pass if circuit is scheduled
668
- scheduling.append(PadDelay(target=target))
641
+ scheduling.append(PadDelay(target=target, durations=instruction_durations))
669
642
 
670
643
  return scheduling
671
644