qiskit 1.4.1__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 (462) 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 +11 -0
  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/circuit/tools/pi_check.py +3 -0
  104. qiskit/compiler/__init__.py +1 -7
  105. qiskit/compiler/transpiler.py +38 -196
  106. qiskit/converters/circuit_to_dag.py +6 -4
  107. qiskit/converters/circuit_to_dagdependency.py +0 -2
  108. qiskit/converters/circuit_to_dagdependency_v2.py +0 -1
  109. qiskit/converters/circuit_to_gate.py +1 -1
  110. qiskit/converters/circuit_to_instruction.py +16 -29
  111. qiskit/converters/dag_to_circuit.py +7 -8
  112. qiskit/converters/dag_to_dagdependency.py +0 -1
  113. qiskit/converters/dag_to_dagdependency_v2.py +0 -1
  114. qiskit/converters/dagdependency_to_circuit.py +0 -6
  115. qiskit/converters/dagdependency_to_dag.py +0 -6
  116. qiskit/dagcircuit/collect_blocks.py +32 -20
  117. qiskit/dagcircuit/dagdependency.py +3 -37
  118. qiskit/dagcircuit/dagdependency_v2.py +5 -82
  119. qiskit/dagcircuit/dagnode.py +14 -2
  120. qiskit/passmanager/__init__.py +24 -6
  121. qiskit/passmanager/passmanager.py +26 -24
  122. qiskit/primitives/__init__.py +44 -35
  123. qiskit/primitives/backend_estimator_v2.py +102 -23
  124. qiskit/primitives/backend_sampler_v2.py +5 -20
  125. qiskit/primitives/base/__init__.py +4 -4
  126. qiskit/primitives/base/base_estimator.py +77 -82
  127. qiskit/primitives/base/base_primitive_job.py +2 -2
  128. qiskit/primitives/base/{base_primitive.py → base_primitive_v1.py} +1 -1
  129. qiskit/primitives/base/{base_result.py → base_result_v1.py} +1 -1
  130. qiskit/primitives/base/base_sampler.py +52 -60
  131. qiskit/primitives/base/{estimator_result.py → estimator_result_v1.py} +2 -2
  132. qiskit/primitives/base/{sampler_result.py → sampler_result_v1.py} +2 -2
  133. qiskit/primitives/base/{validation.py → validation_v1.py} +34 -15
  134. qiskit/primitives/containers/bindings_array.py +3 -1
  135. qiskit/primitives/containers/bit_array.py +23 -0
  136. qiskit/primitives/containers/data_bin.py +3 -1
  137. qiskit/primitives/containers/observables_array.py +19 -2
  138. qiskit/primitives/statevector_sampler.py +6 -8
  139. qiskit/primitives/utils.py +14 -189
  140. qiskit/providers/__init__.py +4 -130
  141. qiskit/providers/backend.py +11 -314
  142. qiskit/providers/basic_provider/__init__.py +3 -1
  143. qiskit/providers/basic_provider/basic_provider.py +29 -9
  144. qiskit/providers/basic_provider/basic_simulator.py +158 -298
  145. qiskit/providers/exceptions.py +0 -33
  146. qiskit/providers/fake_provider/__init__.py +0 -37
  147. qiskit/providers/fake_provider/generic_backend_v2.py +32 -693
  148. qiskit/qasm2/__init__.py +21 -6
  149. qiskit/qasm2/export.py +2 -10
  150. qiskit/qasm2/parse.py +11 -25
  151. qiskit/qasm3/__init__.py +5 -1
  152. qiskit/qasm3/ast.py +44 -0
  153. qiskit/qasm3/exporter.py +65 -27
  154. qiskit/qasm3/printer.py +35 -4
  155. qiskit/qpy/__init__.py +162 -19
  156. qiskit/qpy/binary_io/__init__.py +0 -1
  157. qiskit/qpy/binary_io/circuits.py +96 -116
  158. qiskit/qpy/binary_io/parse_sympy_repr.py +121 -0
  159. qiskit/qpy/binary_io/schedules.py +61 -388
  160. qiskit/qpy/binary_io/value.py +159 -33
  161. qiskit/qpy/common.py +10 -7
  162. qiskit/qpy/formats.py +41 -0
  163. qiskit/qpy/interface.py +29 -62
  164. qiskit/qpy/type_keys.py +58 -221
  165. qiskit/quantum_info/analysis/distance.py +3 -1
  166. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -1
  167. qiskit/quantum_info/operators/operator.py +6 -2
  168. qiskit/quantum_info/operators/symplectic/clifford.py +3 -1
  169. qiskit/quantum_info/operators/symplectic/pauli.py +4 -2
  170. qiskit/quantum_info/operators/symplectic/pauli_list.py +17 -5
  171. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +40 -6
  172. qiskit/quantum_info/states/densitymatrix.py +16 -6
  173. qiskit/quantum_info/states/stabilizerstate.py +35 -4
  174. qiskit/quantum_info/states/statevector.py +16 -6
  175. qiskit/result/__init__.py +5 -17
  176. qiskit/result/models.py +18 -11
  177. qiskit/result/result.py +38 -134
  178. qiskit/result/sampled_expval.py +1 -2
  179. qiskit/result/utils.py +3 -4
  180. qiskit/synthesis/__init__.py +21 -1
  181. qiskit/synthesis/arithmetic/__init__.py +3 -1
  182. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +1 -1
  183. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +1 -1
  184. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +2 -2
  185. qiskit/{providers/fake_provider/backends_v1/fake_20q → synthesis/arithmetic/comparators}/__init__.py +4 -6
  186. qiskit/synthesis/arithmetic/comparators/compare_2s.py +112 -0
  187. qiskit/synthesis/arithmetic/comparators/compare_greedy.py +66 -0
  188. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -1
  189. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +1 -1
  190. qiskit/synthesis/arithmetic/weighted_sum.py +155 -0
  191. qiskit/{result/mitigation → synthesis/boolean}/__init__.py +2 -2
  192. qiskit/synthesis/boolean/boolean_expression.py +231 -0
  193. qiskit/synthesis/boolean/boolean_expression_synth.py +124 -0
  194. qiskit/synthesis/boolean/boolean_expression_visitor.py +96 -0
  195. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +2 -0
  196. qiskit/synthesis/evolution/lie_trotter.py +10 -7
  197. qiskit/synthesis/evolution/product_formula.py +44 -35
  198. qiskit/synthesis/evolution/qdrift.py +17 -24
  199. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  200. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  201. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  202. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  203. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  204. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  205. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  206. qiskit/synthesis/two_qubit/__init__.py +1 -0
  207. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  208. qiskit/transpiler/__init__.py +32 -232
  209. qiskit/transpiler/basepasses.py +20 -51
  210. qiskit/transpiler/layout.py +1 -1
  211. qiskit/transpiler/passes/__init__.py +4 -40
  212. qiskit/transpiler/passes/basis/basis_translator.py +5 -4
  213. qiskit/transpiler/passes/basis/decompose.py +1 -15
  214. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  215. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  216. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  217. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  218. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +3 -4
  219. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  220. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  221. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  222. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  223. qiskit/transpiler/passes/optimization/__init__.py +2 -3
  224. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  225. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  226. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  227. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  228. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  229. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  230. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  231. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  232. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  233. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  234. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  235. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  236. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  237. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  238. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +3 -2
  239. qiskit/transpiler/passes/routing/__init__.py +0 -1
  240. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  241. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  242. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  243. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  244. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  245. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  246. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  247. qiskit/transpiler/passes/scheduling/padding/base_padding.py +32 -4
  248. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +25 -63
  249. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +12 -4
  250. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  251. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  252. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  253. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +134 -62
  254. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  255. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  256. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  257. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  258. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  259. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  260. qiskit/transpiler/passes/utils/__init__.py +0 -1
  261. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  262. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  263. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  264. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  265. qiskit/transpiler/passmanager.py +13 -0
  266. qiskit/transpiler/passmanager_config.py +5 -81
  267. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  268. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  269. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +107 -322
  270. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  271. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  272. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  273. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  274. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  275. qiskit/transpiler/target.py +78 -524
  276. qiskit/user_config.py +8 -4
  277. qiskit/utils/__init__.py +13 -12
  278. qiskit/utils/deprecation.py +4 -112
  279. qiskit/utils/optionals.py +11 -4
  280. qiskit/utils/parallel.py +214 -87
  281. qiskit/utils/units.py +4 -1
  282. qiskit/visualization/__init__.py +3 -7
  283. qiskit/visualization/array.py +4 -1
  284. qiskit/visualization/bloch.py +1 -1
  285. qiskit/visualization/circuit/_utils.py +19 -19
  286. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  287. qiskit/visualization/circuit/matplotlib.py +13 -23
  288. qiskit/visualization/circuit/text.py +7 -3
  289. qiskit/visualization/counts_visualization.py +4 -0
  290. qiskit/visualization/dag_visualization.py +2 -1
  291. qiskit/visualization/gate_map.py +39 -154
  292. qiskit/visualization/library.py +4 -1
  293. qiskit/visualization/pass_manager_visualization.py +6 -2
  294. qiskit/visualization/state_visualization.py +19 -2
  295. qiskit/visualization/timeline/core.py +19 -13
  296. qiskit/visualization/timeline/interface.py +19 -18
  297. qiskit/visualization/timeline/plotters/matplotlib.py +4 -1
  298. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/METADATA +4 -3
  299. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/RECORD +303 -449
  300. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/WHEEL +2 -1
  301. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info}/entry_points.txt +8 -2
  302. qiskit/assembler/__init__.py +0 -42
  303. qiskit/assembler/assemble_circuits.py +0 -451
  304. qiskit/assembler/assemble_schedules.py +0 -367
  305. qiskit/assembler/disassemble.py +0 -310
  306. qiskit/assembler/run_config.py +0 -77
  307. qiskit/circuit/bit.py +0 -106
  308. qiskit/circuit/classicalfunction/__init__.py +0 -152
  309. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  310. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  311. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  312. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  313. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  314. qiskit/circuit/classicalfunction/types.py +0 -18
  315. qiskit/circuit/classicalfunction/utils.py +0 -91
  316. qiskit/circuit/classicalregister.py +0 -57
  317. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  318. qiskit/circuit/quantumregister.py +0 -75
  319. qiskit/circuit/register.py +0 -246
  320. qiskit/compiler/assembler.py +0 -689
  321. qiskit/compiler/scheduler.py +0 -109
  322. qiskit/compiler/sequencer.py +0 -71
  323. qiskit/primitives/backend_estimator.py +0 -486
  324. qiskit/primitives/backend_sampler.py +0 -222
  325. qiskit/primitives/estimator.py +0 -172
  326. qiskit/primitives/sampler.py +0 -162
  327. qiskit/providers/backend_compat.py +0 -507
  328. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  329. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  330. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  333. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  335. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  336. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  337. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  338. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  339. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  341. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  342. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  343. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  344. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  345. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  346. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  347. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  348. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  349. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  350. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  351. qiskit/providers/fake_provider/fake_1q.py +0 -91
  352. qiskit/providers/fake_provider/fake_backend.py +0 -165
  353. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  354. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  355. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  356. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  357. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  358. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  359. qiskit/providers/models/__init__.py +0 -89
  360. qiskit/providers/models/backendconfiguration.py +0 -1040
  361. qiskit/providers/models/backendproperties.py +0 -535
  362. qiskit/providers/models/backendstatus.py +0 -104
  363. qiskit/providers/models/jobstatus.py +0 -77
  364. qiskit/providers/models/pulsedefaults.py +0 -305
  365. qiskit/providers/provider.py +0 -95
  366. qiskit/pulse/__init__.py +0 -158
  367. qiskit/pulse/builder.py +0 -2262
  368. qiskit/pulse/calibration_entries.py +0 -381
  369. qiskit/pulse/channels.py +0 -227
  370. qiskit/pulse/configuration.py +0 -245
  371. qiskit/pulse/exceptions.py +0 -45
  372. qiskit/pulse/filters.py +0 -309
  373. qiskit/pulse/instruction_schedule_map.py +0 -424
  374. qiskit/pulse/instructions/__init__.py +0 -67
  375. qiskit/pulse/instructions/acquire.py +0 -150
  376. qiskit/pulse/instructions/delay.py +0 -71
  377. qiskit/pulse/instructions/directives.py +0 -154
  378. qiskit/pulse/instructions/frequency.py +0 -135
  379. qiskit/pulse/instructions/instruction.py +0 -270
  380. qiskit/pulse/instructions/phase.py +0 -152
  381. qiskit/pulse/instructions/play.py +0 -99
  382. qiskit/pulse/instructions/reference.py +0 -100
  383. qiskit/pulse/instructions/snapshot.py +0 -82
  384. qiskit/pulse/library/__init__.py +0 -97
  385. qiskit/pulse/library/continuous.py +0 -430
  386. qiskit/pulse/library/pulse.py +0 -148
  387. qiskit/pulse/library/samplers/__init__.py +0 -15
  388. qiskit/pulse/library/samplers/decorators.py +0 -295
  389. qiskit/pulse/library/samplers/strategies.py +0 -71
  390. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  391. qiskit/pulse/library/waveform.py +0 -136
  392. qiskit/pulse/macros.py +0 -262
  393. qiskit/pulse/parameter_manager.py +0 -445
  394. qiskit/pulse/parser.py +0 -314
  395. qiskit/pulse/reference_manager.py +0 -58
  396. qiskit/pulse/schedule.py +0 -1854
  397. qiskit/pulse/transforms/__init__.py +0 -106
  398. qiskit/pulse/transforms/alignments.py +0 -406
  399. qiskit/pulse/transforms/base_transforms.py +0 -71
  400. qiskit/pulse/transforms/canonicalization.py +0 -498
  401. qiskit/pulse/transforms/dag.py +0 -122
  402. qiskit/pulse/utils.py +0 -149
  403. qiskit/qobj/__init__.py +0 -75
  404. qiskit/qobj/common.py +0 -81
  405. qiskit/qobj/converters/__init__.py +0 -18
  406. qiskit/qobj/converters/lo_config.py +0 -177
  407. qiskit/qobj/converters/pulse_instruction.py +0 -897
  408. qiskit/qobj/pulse_qobj.py +0 -709
  409. qiskit/qobj/qasm_qobj.py +0 -708
  410. qiskit/qobj/utils.py +0 -46
  411. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  412. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  413. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  414. qiskit/result/mitigation/utils.py +0 -217
  415. qiskit/scheduler/__init__.py +0 -40
  416. qiskit/scheduler/config.py +0 -37
  417. qiskit/scheduler/lowering.py +0 -187
  418. qiskit/scheduler/methods/__init__.py +0 -15
  419. qiskit/scheduler/methods/basic.py +0 -140
  420. qiskit/scheduler/schedule_circuit.py +0 -69
  421. qiskit/scheduler/sequence.py +0 -104
  422. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  423. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  424. qiskit/transpiler/passes/calibration/builders.py +0 -20
  425. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  426. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  427. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  428. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  429. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  430. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  431. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  432. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  433. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  434. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  435. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  436. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  437. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  438. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  439. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  440. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  441. qiskit/utils/deprecate_pulse.py +0 -119
  442. qiskit/utils/multiprocessing.py +0 -56
  443. qiskit/visualization/pulse_v2/__init__.py +0 -21
  444. qiskit/visualization/pulse_v2/core.py +0 -901
  445. qiskit/visualization/pulse_v2/device_info.py +0 -173
  446. qiskit/visualization/pulse_v2/drawings.py +0 -253
  447. qiskit/visualization/pulse_v2/events.py +0 -254
  448. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  449. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  450. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  451. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  452. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  453. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  454. qiskit/visualization/pulse_v2/interface.py +0 -459
  455. qiskit/visualization/pulse_v2/layouts.py +0 -387
  456. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  457. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  458. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  459. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  460. qiskit/visualization/pulse_v2/types.py +0 -242
  461. {qiskit-1.4.1.dist-info → qiskit-2.0.0.dist-info/licenses}/LICENSE.txt +0 -0
  462. {qiskit-1.4.1.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