qiskit 1.4.1__cp39-abi3-macosx_11_0_arm64.whl → 2.0.0rc1__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 (456) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.abi3.so +0 -0
  4. qiskit/circuit/__init__.py +24 -5
  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 +248 -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 +34 -5
  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/hamiltonian_gate.py +1 -1
  60. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +1 -1
  61. qiskit/circuit/library/n_local/n_local.py +1 -1
  62. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -1
  63. qiskit/circuit/library/overlap.py +2 -2
  64. qiskit/circuit/library/pauli_evolution.py +39 -24
  65. qiskit/circuit/library/phase_oracle.py +130 -51
  66. qiskit/circuit/library/standard_gates/__init__.py +0 -1
  67. qiskit/circuit/library/standard_gates/dcx.py +3 -4
  68. qiskit/circuit/library/standard_gates/ecr.py +3 -4
  69. qiskit/circuit/library/standard_gates/global_phase.py +5 -6
  70. qiskit/circuit/library/standard_gates/h.py +4 -9
  71. qiskit/circuit/library/standard_gates/i.py +2 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +3 -4
  73. qiskit/circuit/library/standard_gates/p.py +15 -34
  74. qiskit/circuit/library/standard_gates/r.py +2 -6
  75. qiskit/circuit/library/standard_gates/rx.py +5 -15
  76. qiskit/circuit/library/standard_gates/rxx.py +3 -6
  77. qiskit/circuit/library/standard_gates/ry.py +5 -17
  78. qiskit/circuit/library/standard_gates/ryy.py +3 -6
  79. qiskit/circuit/library/standard_gates/rz.py +5 -17
  80. qiskit/circuit/library/standard_gates/rzx.py +3 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +3 -6
  82. qiskit/circuit/library/standard_gates/s.py +6 -15
  83. qiskit/circuit/library/standard_gates/swap.py +4 -11
  84. qiskit/circuit/library/standard_gates/sx.py +7 -12
  85. qiskit/circuit/library/standard_gates/t.py +6 -7
  86. qiskit/circuit/library/standard_gates/u.py +2 -10
  87. qiskit/circuit/library/standard_gates/u1.py +5 -16
  88. qiskit/circuit/library/standard_gates/u2.py +2 -6
  89. qiskit/circuit/library/standard_gates/u3.py +3 -11
  90. qiskit/circuit/library/standard_gates/x.py +13 -60
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -5
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -5
  93. qiskit/circuit/library/standard_gates/y.py +4 -9
  94. qiskit/circuit/library/standard_gates/z.py +5 -15
  95. qiskit/circuit/measure.py +11 -2
  96. qiskit/circuit/parameterexpression.py +4 -0
  97. qiskit/circuit/quantumcircuit.py +881 -555
  98. qiskit/circuit/random/utils.py +12 -6
  99. qiskit/circuit/reset.py +5 -2
  100. qiskit/circuit/singleton.py +5 -11
  101. qiskit/circuit/store.py +0 -8
  102. qiskit/compiler/__init__.py +1 -7
  103. qiskit/compiler/transpiler.py +38 -196
  104. qiskit/converters/circuit_to_dag.py +4 -2
  105. qiskit/converters/circuit_to_dagdependency.py +0 -2
  106. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  107. qiskit/converters/circuit_to_gate.py +1 -1
  108. qiskit/converters/circuit_to_instruction.py +16 -29
  109. qiskit/converters/dag_to_circuit.py +5 -5
  110. qiskit/converters/dag_to_dagdependency.py +0 -1
  111. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  112. qiskit/converters/dagdependency_to_circuit.py +0 -6
  113. qiskit/converters/dagdependency_to_dag.py +0 -6
  114. qiskit/dagcircuit/collect_blocks.py +32 -20
  115. qiskit/dagcircuit/dagdependency.py +3 -37
  116. qiskit/dagcircuit/dagdependency_v2.py +2 -80
  117. qiskit/dagcircuit/dagnode.py +14 -2
  118. qiskit/passmanager/__init__.py +24 -6
  119. qiskit/passmanager/passmanager.py +26 -24
  120. qiskit/primitives/__init__.py +44 -35
  121. qiskit/primitives/backend_estimator_v2.py +102 -23
  122. qiskit/primitives/backend_sampler_v2.py +5 -20
  123. qiskit/primitives/base/__init__.py +4 -4
  124. qiskit/primitives/base/base_estimator.py +77 -82
  125. qiskit/primitives/base/base_primitive_job.py +2 -2
  126. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  127. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  128. qiskit/primitives/base/base_sampler.py +52 -60
  129. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  130. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  131. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  132. qiskit/primitives/containers/bindings_array.py +3 -1
  133. qiskit/primitives/containers/bit_array.py +23 -0
  134. qiskit/primitives/containers/data_bin.py +3 -1
  135. qiskit/primitives/containers/observables_array.py +19 -2
  136. qiskit/primitives/statevector_sampler.py +6 -8
  137. qiskit/primitives/utils.py +14 -189
  138. qiskit/providers/__init__.py +4 -130
  139. qiskit/providers/backend.py +11 -314
  140. qiskit/providers/basic_provider/__init__.py +3 -1
  141. qiskit/providers/basic_provider/basic_provider.py +29 -9
  142. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  143. qiskit/providers/exceptions.py +0 -33
  144. qiskit/providers/fake_provider/__init__.py +0 -37
  145. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  146. qiskit/qasm2/__init__.py +21 -6
  147. qiskit/qasm2/export.py +2 -10
  148. qiskit/qasm2/parse.py +11 -25
  149. qiskit/qasm3/__init__.py +5 -1
  150. qiskit/qasm3/ast.py +44 -0
  151. qiskit/qasm3/exporter.py +65 -27
  152. qiskit/qasm3/printer.py +35 -4
  153. qiskit/qpy/__init__.py +141 -19
  154. qiskit/qpy/binary_io/__init__.py +0 -1
  155. qiskit/qpy/binary_io/circuits.py +91 -116
  156. qiskit/qpy/binary_io/schedules.py +61 -388
  157. qiskit/qpy/binary_io/value.py +154 -28
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +29 -62
  161. qiskit/qpy/type_keys.py +58 -221
  162. qiskit/quantum_info/analysis/distance.py +3 -1
  163. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  164. qiskit/quantum_info/operators/operator.py +6 -2
  165. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  166. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  167. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  168. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  169. qiskit/quantum_info/states/densitymatrix.py +16 -6
  170. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  171. qiskit/quantum_info/states/statevector.py +16 -6
  172. qiskit/result/__init__.py +5 -17
  173. qiskit/result/models.py +18 -10
  174. qiskit/result/result.py +28 -126
  175. qiskit/result/sampled_expval.py +1 -2
  176. qiskit/result/utils.py +3 -4
  177. qiskit/synthesis/__init__.py +21 -1
  178. qiskit/synthesis/arithmetic/__init__.py +3 -1
  179. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  180. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  181. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  182. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  183. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  184. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  185. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  186. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  187. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  188. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  189. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  190. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  191. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  192. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -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 +2 -40
  209. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  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 +4 -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 +1 -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 +30 -2
  245. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  246. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  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 +127 -59
  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 +101 -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 +67 -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/dag_visualization.py +2 -1
  287. qiskit/visualization/gate_map.py +39 -154
  288. qiskit/visualization/pass_manager_visualization.py +6 -2
  289. qiskit/visualization/state_visualization.py +6 -0
  290. qiskit/visualization/timeline/core.py +18 -12
  291. qiskit/visualization/timeline/interface.py +19 -18
  292. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/METADATA +2 -2
  293. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/RECORD +297 -444
  294. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/WHEEL +2 -1
  295. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/entry_points.txt +8 -2
  296. qiskit/assembler/__init__.py +0 -42
  297. qiskit/assembler/assemble_circuits.py +0 -451
  298. qiskit/assembler/assemble_schedules.py +0 -367
  299. qiskit/assembler/disassemble.py +0 -310
  300. qiskit/assembler/run_config.py +0 -77
  301. qiskit/circuit/bit.py +0 -106
  302. qiskit/circuit/classicalfunction/__init__.py +0 -152
  303. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  304. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  305. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  306. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  307. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  308. qiskit/circuit/classicalfunction/types.py +0 -18
  309. qiskit/circuit/classicalfunction/utils.py +0 -91
  310. qiskit/circuit/classicalregister.py +0 -57
  311. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  312. qiskit/circuit/quantumregister.py +0 -75
  313. qiskit/circuit/register.py +0 -246
  314. qiskit/compiler/assembler.py +0 -689
  315. qiskit/compiler/scheduler.py +0 -109
  316. qiskit/compiler/sequencer.py +0 -71
  317. qiskit/primitives/backend_estimator.py +0 -486
  318. qiskit/primitives/backend_sampler.py +0 -222
  319. qiskit/primitives/estimator.py +0 -172
  320. qiskit/primitives/sampler.py +0 -162
  321. qiskit/providers/backend_compat.py +0 -507
  322. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  327. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  330. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  335. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  339. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  344. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  345. qiskit/providers/fake_provider/fake_1q.py +0 -91
  346. qiskit/providers/fake_provider/fake_backend.py +0 -165
  347. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  348. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  349. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  350. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  351. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  352. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  353. qiskit/providers/models/__init__.py +0 -89
  354. qiskit/providers/models/backendconfiguration.py +0 -1040
  355. qiskit/providers/models/backendproperties.py +0 -535
  356. qiskit/providers/models/backendstatus.py +0 -104
  357. qiskit/providers/models/jobstatus.py +0 -77
  358. qiskit/providers/models/pulsedefaults.py +0 -305
  359. qiskit/providers/provider.py +0 -95
  360. qiskit/pulse/__init__.py +0 -158
  361. qiskit/pulse/builder.py +0 -2262
  362. qiskit/pulse/calibration_entries.py +0 -381
  363. qiskit/pulse/channels.py +0 -227
  364. qiskit/pulse/configuration.py +0 -245
  365. qiskit/pulse/exceptions.py +0 -45
  366. qiskit/pulse/filters.py +0 -309
  367. qiskit/pulse/instruction_schedule_map.py +0 -424
  368. qiskit/pulse/instructions/__init__.py +0 -67
  369. qiskit/pulse/instructions/acquire.py +0 -150
  370. qiskit/pulse/instructions/delay.py +0 -71
  371. qiskit/pulse/instructions/directives.py +0 -154
  372. qiskit/pulse/instructions/frequency.py +0 -135
  373. qiskit/pulse/instructions/instruction.py +0 -270
  374. qiskit/pulse/instructions/phase.py +0 -152
  375. qiskit/pulse/instructions/play.py +0 -99
  376. qiskit/pulse/instructions/reference.py +0 -100
  377. qiskit/pulse/instructions/snapshot.py +0 -82
  378. qiskit/pulse/library/__init__.py +0 -97
  379. qiskit/pulse/library/continuous.py +0 -430
  380. qiskit/pulse/library/pulse.py +0 -148
  381. qiskit/pulse/library/samplers/__init__.py +0 -15
  382. qiskit/pulse/library/samplers/decorators.py +0 -295
  383. qiskit/pulse/library/samplers/strategies.py +0 -71
  384. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  385. qiskit/pulse/library/waveform.py +0 -136
  386. qiskit/pulse/macros.py +0 -262
  387. qiskit/pulse/parameter_manager.py +0 -445
  388. qiskit/pulse/parser.py +0 -314
  389. qiskit/pulse/reference_manager.py +0 -58
  390. qiskit/pulse/schedule.py +0 -1854
  391. qiskit/pulse/transforms/__init__.py +0 -106
  392. qiskit/pulse/transforms/alignments.py +0 -406
  393. qiskit/pulse/transforms/base_transforms.py +0 -71
  394. qiskit/pulse/transforms/canonicalization.py +0 -498
  395. qiskit/pulse/transforms/dag.py +0 -122
  396. qiskit/pulse/utils.py +0 -149
  397. qiskit/qobj/__init__.py +0 -75
  398. qiskit/qobj/common.py +0 -81
  399. qiskit/qobj/converters/__init__.py +0 -18
  400. qiskit/qobj/converters/lo_config.py +0 -177
  401. qiskit/qobj/converters/pulse_instruction.py +0 -897
  402. qiskit/qobj/pulse_qobj.py +0 -709
  403. qiskit/qobj/qasm_qobj.py +0 -708
  404. qiskit/qobj/utils.py +0 -46
  405. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  406. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  407. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  408. qiskit/result/mitigation/utils.py +0 -217
  409. qiskit/scheduler/__init__.py +0 -40
  410. qiskit/scheduler/config.py +0 -37
  411. qiskit/scheduler/lowering.py +0 -187
  412. qiskit/scheduler/methods/__init__.py +0 -15
  413. qiskit/scheduler/methods/basic.py +0 -140
  414. qiskit/scheduler/schedule_circuit.py +0 -69
  415. qiskit/scheduler/sequence.py +0 -104
  416. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  417. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  418. qiskit/transpiler/passes/calibration/builders.py +0 -20
  419. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  420. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  421. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  422. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  423. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  424. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  425. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  426. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  427. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  428. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  429. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  430. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  431. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  432. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  433. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  434. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  435. qiskit/utils/deprecate_pulse.py +0 -119
  436. qiskit/utils/multiprocessing.py +0 -56
  437. qiskit/visualization/pulse_v2/__init__.py +0 -21
  438. qiskit/visualization/pulse_v2/core.py +0 -901
  439. qiskit/visualization/pulse_v2/device_info.py +0 -173
  440. qiskit/visualization/pulse_v2/drawings.py +0 -253
  441. qiskit/visualization/pulse_v2/events.py +0 -254
  442. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  443. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  444. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  445. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  446. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  447. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  448. qiskit/visualization/pulse_v2/interface.py +0 -459
  449. qiskit/visualization/pulse_v2/layouts.py +0 -387
  450. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  451. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  452. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  453. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  454. qiskit/visualization/pulse_v2/types.py +0 -242
  455. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.dist-info}/LICENSE.txt +0 -0
  456. {qiskit-1.4.1.dist-info → qiskit-2.0.0rc1.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