qiskit 1.4.2__cp39-abi3-win_amd64.whl → 2.0.0rc2__cp39-abi3-win_amd64.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 (455) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +2 -5
  3. qiskit/_accelerate.pyd +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 +3 -7
  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 +7 -1
  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 +93 -130
  156. qiskit/qpy/binary_io/schedules.py +69 -439
  157. qiskit/qpy/binary_io/value.py +154 -31
  158. qiskit/qpy/common.py +10 -7
  159. qiskit/qpy/formats.py +41 -0
  160. qiskit/qpy/interface.py +34 -81
  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/evolution/lie_trotter.py +10 -7
  193. qiskit/synthesis/evolution/product_formula.py +44 -35
  194. qiskit/synthesis/evolution/qdrift.py +17 -24
  195. qiskit/synthesis/evolution/suzuki_trotter.py +20 -27
  196. qiskit/synthesis/linear/linear_depth_lnn.py +6 -221
  197. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +4 -205
  198. qiskit/synthesis/multi_controlled/__init__.py +1 -0
  199. qiskit/synthesis/multi_controlled/mcx_synthesis.py +5 -2
  200. qiskit/synthesis/multi_controlled/multi_control_rotation_gates.py +206 -0
  201. qiskit/synthesis/one_qubit/one_qubit_decompose.py +1 -1
  202. qiskit/synthesis/two_qubit/__init__.py +1 -0
  203. qiskit/synthesis/two_qubit/two_qubit_decompose.py +28 -145
  204. qiskit/transpiler/__init__.py +32 -232
  205. qiskit/transpiler/basepasses.py +20 -51
  206. qiskit/transpiler/layout.py +1 -1
  207. qiskit/transpiler/passes/__init__.py +2 -40
  208. qiskit/transpiler/passes/basis/basis_translator.py +4 -3
  209. qiskit/transpiler/passes/basis/decompose.py +1 -15
  210. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -5
  211. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +3 -2
  212. qiskit/transpiler/passes/layout/apply_layout.py +4 -0
  213. qiskit/transpiler/passes/layout/dense_layout.py +2 -39
  214. qiskit/transpiler/passes/layout/full_ancilla_allocation.py +4 -4
  215. qiskit/transpiler/passes/layout/sabre_layout.py +7 -3
  216. qiskit/transpiler/passes/layout/vf2_layout.py +2 -20
  217. qiskit/transpiler/passes/layout/vf2_post_layout.py +60 -125
  218. qiskit/transpiler/passes/layout/vf2_utils.py +2 -26
  219. qiskit/transpiler/passes/optimization/__init__.py +1 -3
  220. qiskit/transpiler/passes/optimization/collect_and_collapse.py +2 -0
  221. qiskit/transpiler/passes/optimization/collect_cliffords.py +5 -0
  222. qiskit/transpiler/passes/optimization/collect_linear_functions.py +5 -0
  223. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +16 -1
  224. qiskit/transpiler/passes/optimization/commutation_analysis.py +3 -3
  225. qiskit/transpiler/passes/optimization/consolidate_blocks.py +41 -19
  226. qiskit/transpiler/passes/optimization/contract_idle_wires_in_control_flow.py +104 -0
  227. qiskit/transpiler/passes/optimization/light_cone.py +135 -0
  228. qiskit/transpiler/passes/optimization/optimize_1q_commutation.py +0 -1
  229. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +18 -22
  230. qiskit/transpiler/passes/optimization/optimize_annotated.py +3 -2
  231. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +6 -4
  232. qiskit/transpiler/passes/optimization/reset_after_measure_simplification.py +5 -2
  233. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +26 -3
  234. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -0
  235. qiskit/transpiler/passes/routing/__init__.py +0 -1
  236. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -1
  237. qiskit/transpiler/passes/routing/sabre_swap.py +14 -6
  238. qiskit/transpiler/passes/routing/star_prerouting.py +1 -1
  239. qiskit/transpiler/passes/scheduling/__init__.py +1 -7
  240. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -4
  241. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -9
  242. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +17 -16
  243. qiskit/transpiler/passes/scheduling/padding/base_padding.py +30 -2
  244. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -58
  245. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +11 -3
  246. qiskit/transpiler/passes/scheduling/scheduling/alap.py +5 -39
  247. qiskit/transpiler/passes/scheduling/scheduling/asap.py +4 -35
  248. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +10 -16
  249. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +127 -59
  250. qiskit/transpiler/passes/synthesis/default_unitary_synth_plugin.py +653 -0
  251. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +176 -601
  252. qiskit/transpiler/passes/synthesis/hls_plugins.py +294 -1
  253. qiskit/transpiler/passes/synthesis/plugin.py +4 -0
  254. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +16 -10
  255. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -697
  256. qiskit/transpiler/passes/utils/__init__.py +0 -1
  257. qiskit/transpiler/passes/utils/check_gate_direction.py +13 -5
  258. qiskit/transpiler/passes/utils/control_flow.py +2 -6
  259. qiskit/transpiler/passes/utils/gate_direction.py +7 -0
  260. qiskit/transpiler/passes/utils/remove_final_measurements.py +40 -33
  261. qiskit/transpiler/passmanager.py +13 -0
  262. qiskit/transpiler/passmanager_config.py +5 -81
  263. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +225 -344
  264. qiskit/transpiler/preset_passmanagers/common.py +140 -167
  265. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +101 -322
  266. qiskit/transpiler/preset_passmanagers/level0.py +2 -11
  267. qiskit/transpiler/preset_passmanagers/level1.py +2 -14
  268. qiskit/transpiler/preset_passmanagers/level2.py +2 -12
  269. qiskit/transpiler/preset_passmanagers/level3.py +2 -11
  270. qiskit/transpiler/preset_passmanagers/plugin.py +5 -3
  271. qiskit/transpiler/target.py +67 -524
  272. qiskit/user_config.py +8 -4
  273. qiskit/utils/__init__.py +13 -12
  274. qiskit/utils/deprecation.py +4 -112
  275. qiskit/utils/optionals.py +11 -4
  276. qiskit/utils/parallel.py +214 -87
  277. qiskit/utils/units.py +4 -1
  278. qiskit/visualization/__init__.py +3 -7
  279. qiskit/visualization/array.py +4 -1
  280. qiskit/visualization/bloch.py +1 -1
  281. qiskit/visualization/circuit/_utils.py +19 -19
  282. qiskit/visualization/circuit/circuit_visualization.py +11 -4
  283. qiskit/visualization/circuit/matplotlib.py +13 -23
  284. qiskit/visualization/circuit/text.py +7 -3
  285. qiskit/visualization/dag_visualization.py +2 -1
  286. qiskit/visualization/gate_map.py +39 -154
  287. qiskit/visualization/pass_manager_visualization.py +6 -2
  288. qiskit/visualization/state_visualization.py +6 -0
  289. qiskit/visualization/timeline/core.py +18 -12
  290. qiskit/visualization/timeline/interface.py +19 -18
  291. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/METADATA +2 -2
  292. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/RECORD +296 -443
  293. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/entry_points.txt +8 -2
  294. qiskit/assembler/__init__.py +0 -42
  295. qiskit/assembler/assemble_circuits.py +0 -451
  296. qiskit/assembler/assemble_schedules.py +0 -367
  297. qiskit/assembler/disassemble.py +0 -310
  298. qiskit/assembler/run_config.py +0 -77
  299. qiskit/circuit/bit.py +0 -106
  300. qiskit/circuit/classicalfunction/__init__.py +0 -152
  301. qiskit/circuit/classicalfunction/boolean_expression.py +0 -138
  302. qiskit/circuit/classicalfunction/classical_element.py +0 -54
  303. qiskit/circuit/classicalfunction/classical_function_visitor.py +0 -155
  304. qiskit/circuit/classicalfunction/classicalfunction.py +0 -182
  305. qiskit/circuit/classicalfunction/exceptions.py +0 -41
  306. qiskit/circuit/classicalfunction/types.py +0 -18
  307. qiskit/circuit/classicalfunction/utils.py +0 -91
  308. qiskit/circuit/classicalregister.py +0 -57
  309. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +0 -405
  310. qiskit/circuit/quantumregister.py +0 -75
  311. qiskit/circuit/register.py +0 -246
  312. qiskit/compiler/assembler.py +0 -689
  313. qiskit/compiler/scheduler.py +0 -109
  314. qiskit/compiler/sequencer.py +0 -71
  315. qiskit/primitives/backend_estimator.py +0 -486
  316. qiskit/primitives/backend_sampler.py +0 -222
  317. qiskit/primitives/estimator.py +0 -172
  318. qiskit/primitives/sampler.py +0 -162
  319. qiskit/providers/backend_compat.py +0 -507
  320. qiskit/providers/fake_provider/backends_v1/__init__.py +0 -22
  321. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/__init__.py +0 -18
  322. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/conf_washington.json +0 -1
  323. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/defs_washington.json +0 -1
  324. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/fake_127q_pulse_v1.py +0 -37
  325. qiskit/providers/fake_provider/backends_v1/fake_127q_pulse/props_washington.json +0 -1
  326. qiskit/providers/fake_provider/backends_v1/fake_20q/conf_singapore.json +0 -1
  327. qiskit/providers/fake_provider/backends_v1/fake_20q/fake_20q.py +0 -43
  328. qiskit/providers/fake_provider/backends_v1/fake_20q/props_singapore.json +0 -1
  329. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/__init__.py +0 -18
  330. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/conf_hanoi.json +0 -1
  331. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/defs_hanoi.json +0 -1
  332. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/fake_27q_pulse_v1.py +0 -50
  333. qiskit/providers/fake_provider/backends_v1/fake_27q_pulse/props_hanoi.json +0 -1
  334. qiskit/providers/fake_provider/backends_v1/fake_5q/__init__.py +0 -18
  335. qiskit/providers/fake_provider/backends_v1/fake_5q/conf_yorktown.json +0 -1
  336. qiskit/providers/fake_provider/backends_v1/fake_5q/fake_5q_v1.py +0 -41
  337. qiskit/providers/fake_provider/backends_v1/fake_5q/props_yorktown.json +0 -1
  338. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/__init__.py +0 -18
  339. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/conf_nairobi.json +0 -1
  340. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/defs_nairobi.json +0 -1
  341. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/fake_7q_pulse_v1.py +0 -44
  342. qiskit/providers/fake_provider/backends_v1/fake_7q_pulse/props_nairobi.json +0 -1
  343. qiskit/providers/fake_provider/fake_1q.py +0 -91
  344. qiskit/providers/fake_provider/fake_backend.py +0 -165
  345. qiskit/providers/fake_provider/fake_openpulse_2q.py +0 -391
  346. qiskit/providers/fake_provider/fake_openpulse_3q.py +0 -340
  347. qiskit/providers/fake_provider/fake_pulse_backend.py +0 -49
  348. qiskit/providers/fake_provider/fake_qasm_backend.py +0 -77
  349. qiskit/providers/fake_provider/utils/backend_converter.py +0 -150
  350. qiskit/providers/fake_provider/utils/json_decoder.py +0 -109
  351. qiskit/providers/models/__init__.py +0 -89
  352. qiskit/providers/models/backendconfiguration.py +0 -1040
  353. qiskit/providers/models/backendproperties.py +0 -535
  354. qiskit/providers/models/backendstatus.py +0 -104
  355. qiskit/providers/models/jobstatus.py +0 -77
  356. qiskit/providers/models/pulsedefaults.py +0 -305
  357. qiskit/providers/provider.py +0 -95
  358. qiskit/pulse/__init__.py +0 -158
  359. qiskit/pulse/builder.py +0 -2262
  360. qiskit/pulse/calibration_entries.py +0 -381
  361. qiskit/pulse/channels.py +0 -227
  362. qiskit/pulse/configuration.py +0 -245
  363. qiskit/pulse/exceptions.py +0 -45
  364. qiskit/pulse/filters.py +0 -309
  365. qiskit/pulse/instruction_schedule_map.py +0 -424
  366. qiskit/pulse/instructions/__init__.py +0 -67
  367. qiskit/pulse/instructions/acquire.py +0 -150
  368. qiskit/pulse/instructions/delay.py +0 -71
  369. qiskit/pulse/instructions/directives.py +0 -154
  370. qiskit/pulse/instructions/frequency.py +0 -135
  371. qiskit/pulse/instructions/instruction.py +0 -270
  372. qiskit/pulse/instructions/phase.py +0 -152
  373. qiskit/pulse/instructions/play.py +0 -99
  374. qiskit/pulse/instructions/reference.py +0 -100
  375. qiskit/pulse/instructions/snapshot.py +0 -82
  376. qiskit/pulse/library/__init__.py +0 -97
  377. qiskit/pulse/library/continuous.py +0 -430
  378. qiskit/pulse/library/pulse.py +0 -148
  379. qiskit/pulse/library/samplers/__init__.py +0 -15
  380. qiskit/pulse/library/samplers/decorators.py +0 -295
  381. qiskit/pulse/library/samplers/strategies.py +0 -71
  382. qiskit/pulse/library/symbolic_pulses.py +0 -1989
  383. qiskit/pulse/library/waveform.py +0 -136
  384. qiskit/pulse/macros.py +0 -262
  385. qiskit/pulse/parameter_manager.py +0 -445
  386. qiskit/pulse/parser.py +0 -314
  387. qiskit/pulse/reference_manager.py +0 -58
  388. qiskit/pulse/schedule.py +0 -1854
  389. qiskit/pulse/transforms/__init__.py +0 -106
  390. qiskit/pulse/transforms/alignments.py +0 -406
  391. qiskit/pulse/transforms/base_transforms.py +0 -71
  392. qiskit/pulse/transforms/canonicalization.py +0 -498
  393. qiskit/pulse/transforms/dag.py +0 -122
  394. qiskit/pulse/utils.py +0 -149
  395. qiskit/qobj/__init__.py +0 -75
  396. qiskit/qobj/common.py +0 -81
  397. qiskit/qobj/converters/__init__.py +0 -18
  398. qiskit/qobj/converters/lo_config.py +0 -177
  399. qiskit/qobj/converters/pulse_instruction.py +0 -897
  400. qiskit/qobj/pulse_qobj.py +0 -709
  401. qiskit/qobj/qasm_qobj.py +0 -708
  402. qiskit/qobj/utils.py +0 -46
  403. qiskit/result/mitigation/base_readout_mitigator.py +0 -79
  404. qiskit/result/mitigation/correlated_readout_mitigator.py +0 -277
  405. qiskit/result/mitigation/local_readout_mitigator.py +0 -328
  406. qiskit/result/mitigation/utils.py +0 -217
  407. qiskit/scheduler/__init__.py +0 -40
  408. qiskit/scheduler/config.py +0 -37
  409. qiskit/scheduler/lowering.py +0 -187
  410. qiskit/scheduler/methods/__init__.py +0 -15
  411. qiskit/scheduler/methods/basic.py +0 -140
  412. qiskit/scheduler/schedule_circuit.py +0 -69
  413. qiskit/scheduler/sequence.py +0 -104
  414. qiskit/transpiler/passes/calibration/__init__.py +0 -17
  415. qiskit/transpiler/passes/calibration/base_builder.py +0 -79
  416. qiskit/transpiler/passes/calibration/builders.py +0 -20
  417. qiskit/transpiler/passes/calibration/exceptions.py +0 -22
  418. qiskit/transpiler/passes/calibration/pulse_gate.py +0 -100
  419. qiskit/transpiler/passes/calibration/rx_builder.py +0 -164
  420. qiskit/transpiler/passes/calibration/rzx_builder.py +0 -411
  421. qiskit/transpiler/passes/calibration/rzx_templates.py +0 -58
  422. qiskit/transpiler/passes/optimization/cx_cancellation.py +0 -65
  423. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +0 -162
  424. qiskit/transpiler/passes/optimization/normalize_rx_angle.py +0 -157
  425. qiskit/transpiler/passes/routing/stochastic_swap.py +0 -532
  426. qiskit/transpiler/passes/scheduling/alap.py +0 -153
  427. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +0 -255
  428. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -107
  429. qiskit/transpiler/passes/scheduling/asap.py +0 -175
  430. qiskit/transpiler/passes/scheduling/base_scheduler.py +0 -310
  431. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +0 -313
  432. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -93
  433. qiskit/utils/deprecate_pulse.py +0 -119
  434. qiskit/utils/multiprocessing.py +0 -56
  435. qiskit/visualization/pulse_v2/__init__.py +0 -21
  436. qiskit/visualization/pulse_v2/core.py +0 -901
  437. qiskit/visualization/pulse_v2/device_info.py +0 -173
  438. qiskit/visualization/pulse_v2/drawings.py +0 -253
  439. qiskit/visualization/pulse_v2/events.py +0 -254
  440. qiskit/visualization/pulse_v2/generators/__init__.py +0 -40
  441. qiskit/visualization/pulse_v2/generators/barrier.py +0 -76
  442. qiskit/visualization/pulse_v2/generators/chart.py +0 -208
  443. qiskit/visualization/pulse_v2/generators/frame.py +0 -436
  444. qiskit/visualization/pulse_v2/generators/snapshot.py +0 -133
  445. qiskit/visualization/pulse_v2/generators/waveform.py +0 -645
  446. qiskit/visualization/pulse_v2/interface.py +0 -459
  447. qiskit/visualization/pulse_v2/layouts.py +0 -387
  448. qiskit/visualization/pulse_v2/plotters/__init__.py +0 -17
  449. qiskit/visualization/pulse_v2/plotters/base_plotter.py +0 -53
  450. qiskit/visualization/pulse_v2/plotters/matplotlib.py +0 -201
  451. qiskit/visualization/pulse_v2/stylesheet.py +0 -312
  452. qiskit/visualization/pulse_v2/types.py +0 -242
  453. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/LICENSE.txt +0 -0
  454. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.dist-info}/WHEEL +0 -0
  455. {qiskit-1.4.2.dist-info → qiskit-2.0.0rc2.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