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
@@ -24,7 +24,6 @@ from .error import Error
24
24
  from .remove_barriers import RemoveBarriers
25
25
  from .contains_instruction import ContainsInstruction
26
26
  from .gates_basis import GatesInBasis
27
- from .convert_conditions_to_if_ops import ConvertConditionsToIfOps
28
27
  from .unroll_forloops import UnrollForLoops
29
28
  from .minimum_point import MinimumPoint
30
29
  from .filter_op_nodes import FilterOpNodes
@@ -45,8 +45,16 @@ class CheckGateDirection(AnalysisPass):
45
45
  Args:
46
46
  dag (DAGCircuit): DAG to check.
47
47
  """
48
- self.property_set["is_direction_mapped"] = (
49
- check_gate_direction_target(dag, self.target)
50
- if self.target
51
- else check_gate_direction_coupling(dag, set(self.coupling_map.get_edges()))
52
- )
48
+ # Only use "check_gate_direction_target" if a target exists and target.operation_names
49
+ # is not empty, else use "check_gate_direction_coupling".
50
+ if self.target is None:
51
+ self.property_set["is_direction_mapped"] = check_gate_direction_coupling(
52
+ dag, set(self.coupling_map.get_edges())
53
+ )
54
+ elif len(self.target.operation_names) == 0:
55
+ # A _FakeTarget path, no basis gates, just use the coupling map
56
+ self.property_set["is_direction_mapped"] = check_gate_direction_coupling(
57
+ dag, set(self.target.build_coupling_map().get_edges())
58
+ )
59
+ else:
60
+ self.property_set["is_direction_mapped"] = check_gate_direction_target(dag, self.target)
@@ -54,12 +54,8 @@ def trivial_recurse(method):
54
54
  def bound_wrapped_method(dag):
55
55
  return out(self, dag)
56
56
 
57
- control_flow_nodes = dag.control_flow_op_nodes()
58
- if control_flow_nodes is not None:
59
- for node in control_flow_nodes:
60
- dag.substitute_node(
61
- node, map_blocks(bound_wrapped_method, node.op), propagate_condition=False
62
- )
57
+ for node in dag.control_flow_op_nodes():
58
+ dag.substitute_node(node, map_blocks(bound_wrapped_method, node.op))
63
59
  return method(self, dag)
64
60
 
65
61
  return out
@@ -81,6 +81,13 @@ class GateDirection(TransformationPass):
81
81
  TranspilerError: If the circuit cannot be mapped just by flipping the
82
82
  cx nodes.
83
83
  """
84
+ # Only use "fix_gate_direction_target" if a target exists and target.operation_names
85
+ # is not empty, else use "fix_gate_direction_coupling".
84
86
  if self.target is None:
85
87
  return fix_gate_direction_coupling(dag, set(self.coupling_map.get_edges()))
88
+ elif len(self.target.operation_names) == 0:
89
+ # A _FakeTarget path, no basis gates, just use the coupling map
90
+ return fix_gate_direction_coupling(
91
+ dag, set(self.target.build_coupling_map().get_edges())
92
+ )
86
93
  return fix_gate_direction_target(dag, self.target)
@@ -13,7 +13,45 @@
13
13
  """Remove final measurements and barriers at the end of a circuit."""
14
14
 
15
15
  from qiskit.transpiler.basepasses import TransformationPass
16
- from qiskit.dagcircuit import DAGOpNode
16
+ from qiskit.dagcircuit import DAGCircuit, DAGOpNode
17
+
18
+
19
+ def calc_final_ops(dag: DAGCircuit, final_op_names: set[str]) -> list[DAGOpNode]:
20
+ """Find the final operations of a circuit of a given type.
21
+ Args:
22
+ dag: the DAG circuit
23
+ final_op_names: names of the operations to find at the end of the circuit.
24
+
25
+ Returns:
26
+ List of nodes corresponding the the relevant operations at the end of the circuit.
27
+ """
28
+ final_ops = []
29
+
30
+ to_visit = [next(dag.predecessors(dag.output_map[qubit])) for qubit in dag.qubits]
31
+ barrier_encounters_remaining = {}
32
+
33
+ while to_visit:
34
+ node = to_visit.pop()
35
+ if not isinstance(node, DAGOpNode):
36
+ continue
37
+
38
+ if node.op.name == "barrier":
39
+ # Barrier is final if all children are final, so we track
40
+ # how many times we still need to encounter each barrier
41
+ # via a child node.
42
+ if node not in barrier_encounters_remaining:
43
+ barrier_encounters_remaining[node] = sum(1 for _ in dag.quantum_successors(node))
44
+ if barrier_encounters_remaining[node] - 1 > 0:
45
+ # We've encountered the barrier, but not (yet) via all children.
46
+ # Record the encounter, and bail!
47
+ barrier_encounters_remaining[node] -= 1
48
+ continue
49
+ if node.name in final_op_names:
50
+ # Current node is either a measure, or a barrier with all final op children.
51
+ final_ops.append(node)
52
+ to_visit.extend(dag.quantum_predecessors(node))
53
+
54
+ return final_ops
17
55
 
18
56
 
19
57
  class RemoveFinalMeasurements(TransformationPass):
@@ -32,37 +70,6 @@ class RemoveFinalMeasurements(TransformationPass):
32
70
  in a classical register that will remain.
33
71
  """
34
72
 
35
- def _calc_final_ops(self, dag):
36
- final_op_types = {"measure", "barrier"}
37
- final_ops = []
38
-
39
- to_visit = [next(dag.predecessors(dag.output_map[qubit])) for qubit in dag.qubits]
40
- barrier_encounters_remaining = {}
41
-
42
- while to_visit:
43
- node = to_visit.pop()
44
- if not isinstance(node, DAGOpNode):
45
- continue
46
- if node.op.name == "barrier":
47
- # Barrier is final if all children are final, so we track
48
- # how many times we still need to encounter each barrier
49
- # via a child node.
50
- if node not in barrier_encounters_remaining:
51
- barrier_encounters_remaining[node] = sum(
52
- 1 for _ in dag.quantum_successors(node)
53
- )
54
- if barrier_encounters_remaining[node] - 1 > 0:
55
- # We've encountered the barrier, but not (yet) via all children.
56
- # Record the encounter, and bail!
57
- barrier_encounters_remaining[node] -= 1
58
- continue
59
- if node.name in final_op_types:
60
- # Current node is either a measure, or a barrier with all final op children.
61
- final_ops.append(node)
62
- to_visit.extend(dag.quantum_predecessors(node))
63
-
64
- return final_ops
65
-
66
73
  def run(self, dag):
67
74
  """Run the RemoveFinalMeasurements pass on `dag`.
68
75
 
@@ -72,7 +79,7 @@ class RemoveFinalMeasurements(TransformationPass):
72
79
  Returns:
73
80
  DAGCircuit: the optimized DAG.
74
81
  """
75
- final_ops = self._calc_final_ops(dag)
82
+ final_ops = calc_final_ops(dag, {"measure", "barrier"})
76
83
  if not final_ops:
77
84
  return dag
78
85
 
@@ -174,6 +174,8 @@ class PassManager(BasePassManager):
174
174
  output_name: str | None = None,
175
175
  callback: Callable = None,
176
176
  num_processes: int = None,
177
+ *,
178
+ property_set: dict[str, object] | None = None,
177
179
  ) -> _CircuitsT:
178
180
  """Run all the passes on the specified ``circuits``.
179
181
 
@@ -216,6 +218,11 @@ class PassManager(BasePassManager):
216
218
  execution is enabled. This argument overrides ``num_processes`` in the user
217
219
  configuration file, and the ``QISKIT_NUM_PROCS`` environment variable. If set
218
220
  to ``None`` the system default or local user configuration will be used.
221
+ property_set: If given, the initial value to use as the :class:`.PropertySet` for the
222
+ pass manager pipeline. This can be used to persist analysis from one run to
223
+ another, in cases where you know the analysis is safe to share. Beware that some
224
+ analysis will be specific to the input circuit and the particular :class:`.Target`,
225
+ so you should take a lot of care when using this argument.
219
226
 
220
227
  Returns:
221
228
  The transformed circuit(s).
@@ -228,6 +235,7 @@ class PassManager(BasePassManager):
228
235
  callback=callback,
229
236
  output_name=output_name,
230
237
  num_processes=num_processes,
238
+ property_set=property_set,
231
239
  )
232
240
 
233
241
  def draw(self, filename=None, style=None, raw=False):
@@ -436,6 +444,8 @@ class StagedPassManager(PassManager):
436
444
  output_name: str | None = None,
437
445
  callback: Callable | None = None,
438
446
  num_processes: int = None,
447
+ *,
448
+ property_set: dict[str, object] | None = None,
439
449
  ) -> _CircuitsT:
440
450
  self._update_passmanager()
441
451
  return super().run(circuits, output_name, callback, num_processes=num_processes)
@@ -462,6 +472,9 @@ def _replace_error(meth):
462
472
  def wrapper(*meth_args, **meth_kwargs):
463
473
  try:
464
474
  return meth(*meth_args, **meth_kwargs)
475
+ except TranspilerError:
476
+ # If it's already a `TranspilerError` subclass, don't erase the extra information.
477
+ raise
465
478
  except PassManagerError as ex:
466
479
  raise TranspilerError(ex.message) from ex
467
480
 
@@ -12,41 +12,20 @@
12
12
 
13
13
  """Pass Manager Configuration class."""
14
14
 
15
- import pprint
16
- import warnings
17
-
18
- from qiskit.transpiler.coupling import CouplingMap
19
- from qiskit.transpiler.instruction_durations import InstructionDurations
20
- from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
21
- from qiskit.utils.deprecation import deprecate_arg
22
-
23
15
 
24
16
  class PassManagerConfig:
25
17
  """Pass Manager Configuration."""
26
18
 
27
- @deprecate_arg(
28
- name="backend_properties",
29
- since="1.4",
30
- package_name="Qiskit",
31
- removal_timeline="in Qiskit 2.0",
32
- additional_msg="The BackendProperties data structure has been deprecated and will be "
33
- "removed in Qiskit 2.0. The `target` input argument should be used instead. "
34
- "You can use Target.from_configuration() to build the target from the properties "
35
- "object, but in 2.0 you will need to generate a target directly.",
36
- )
37
- @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
38
19
  def __init__(
39
20
  self,
40
21
  initial_layout=None,
41
22
  basis_gates=None,
42
- inst_map=None,
43
23
  coupling_map=None,
44
24
  layout_method=None,
45
25
  routing_method=None,
46
26
  translation_method=None,
47
27
  scheduling_method=None,
48
28
  instruction_durations=None,
49
- backend_properties=None,
50
29
  approximation_degree=None,
51
30
  seed_transpiler=None,
52
31
  timing_constraints=None,
@@ -64,7 +43,6 @@ class PassManagerConfig:
64
43
  initial_layout (Layout): Initial position of virtual qubits on
65
44
  physical qubits.
66
45
  basis_gates (list): List of basis gate names to unroll to.
67
- inst_map (InstructionScheduleMap): Mapping object that maps gate to schedule.
68
46
  coupling_map (CouplingMap): Directed graph represented a coupling
69
47
  map.
70
48
  layout_method (str): the pass to use for choosing initial qubit
@@ -80,9 +58,6 @@ class PassManagerConfig:
80
58
  be a plugin name if an external scheduling stage plugin is being used.
81
59
  instruction_durations (InstructionDurations): Dictionary of duration
82
60
  (in dt) for each instruction.
83
- backend_properties (BackendProperties): Properties returned by a
84
- backend, including information on gate errors, readout errors,
85
- qubit coherence times, etc.
86
61
  approximation_degree (float): heuristic dial used for circuit approximation
87
62
  (1.0=no approximation, 0.0=maximal approximation)
88
63
  seed_transpiler (int): Sets random seed for the stochastic parts of
@@ -104,7 +79,6 @@ class PassManagerConfig:
104
79
  """
105
80
  self.initial_layout = initial_layout
106
81
  self.basis_gates = basis_gates
107
- self.inst_map = inst_map
108
82
  self.coupling_map = coupling_map
109
83
  self.init_method = init_method
110
84
  self.layout_method = layout_method
@@ -113,7 +87,6 @@ class PassManagerConfig:
113
87
  self.optimization_method = optimization_method
114
88
  self.scheduling_method = scheduling_method
115
89
  self.instruction_durations = instruction_durations
116
- self.backend_properties = backend_properties
117
90
  self.approximation_degree = approximation_degree
118
91
  self.seed_transpiler = seed_transpiler
119
92
  self.timing_constraints = timing_constraints
@@ -130,14 +103,8 @@ class PassManagerConfig:
130
103
  This method automatically generates a PassManagerConfig object based on the backend's
131
104
  features. User options can be used to overwrite the configuration.
132
105
 
133
- .. deprecated:: 1.3
134
- The method ``PassManagerConfig.from_backend`` will stop supporting inputs of type
135
- :class:`.BackendV1` in the `backend` parameter in a future release no
136
- earlier than 2.0. :class:`.BackendV1` is deprecated and implementations should move
137
- to :class:`.BackendV2`.
138
-
139
106
  Args:
140
- backend (BackendV1 or BackendV2): The backend that provides the configuration.
107
+ backend (BackendV2): The backend that provides the configuration.
141
108
  pass_manager_options: User-defined option-value pairs.
142
109
 
143
110
  Returns:
@@ -146,51 +113,15 @@ class PassManagerConfig:
146
113
  Raises:
147
114
  AttributeError: If the backend does not support a `configuration()` method.
148
115
  """
149
- backend_version = getattr(backend, "version", 0)
150
- if backend_version == 1:
151
- warnings.warn(
152
- "The method PassManagerConfig.from_backend will stop supporting inputs of "
153
- f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
154
- "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
155
- "should move to `BackendV2`.",
156
- category=DeprecationWarning,
157
- stacklevel=2,
158
- )
159
- if not isinstance(backend_version, int):
160
- backend_version = 0
161
- if backend_version < 2:
162
- config = backend.configuration()
163
116
  res = cls(**pass_manager_options)
164
117
  if res.basis_gates is None:
165
- if backend_version < 2:
166
- res.basis_gates = getattr(config, "basis_gates", None)
167
- else:
168
- res.basis_gates = backend.operation_names
169
- if res.inst_map is None:
170
- if backend_version < 2:
171
- if hasattr(backend, "defaults"):
172
- defaults = backend.defaults()
173
- if defaults is not None:
174
- res.inst_map = defaults.instruction_schedule_map
175
- else:
176
- res.inst_map = backend._instruction_schedule_map
118
+ res.basis_gates = backend.operation_names
177
119
  if res.coupling_map is None:
178
- if backend_version < 2:
179
- cmap_edge_list = getattr(config, "coupling_map", None)
180
- if cmap_edge_list is not None:
181
- res.coupling_map = CouplingMap(cmap_edge_list)
182
- else:
183
- res.coupling_map = backend.coupling_map
120
+ res.coupling_map = backend.coupling_map
184
121
  if res.instruction_durations is None:
185
- if backend_version < 2:
186
- res.instruction_durations = InstructionDurations.from_backend(backend)
187
- else:
188
- res.instruction_durations = backend.instruction_durations
189
- if res.backend_properties is None and backend_version < 2:
190
- res.backend_properties = backend.properties()
122
+ res.instruction_durations = backend.instruction_durations
191
123
  if res.target is None and not _skip_target:
192
- if backend_version >= 2:
193
- res.target = backend.target
124
+ res.target = backend.target
194
125
  if res.scheduling_method is None and hasattr(backend, "get_scheduling_stage_plugin"):
195
126
  res.scheduling_method = backend.get_scheduling_stage_plugin()
196
127
  if res.translation_method is None and hasattr(backend, "get_translation_stage_plugin"):
@@ -200,23 +131,16 @@ class PassManagerConfig:
200
131
  def __str__(self):
201
132
  newline = "\n"
202
133
  newline_tab = "\n\t"
203
- if self.backend_properties is not None:
204
- backend_props = pprint.pformat(self.backend_properties.to_dict())
205
- backend_props = backend_props.replace(newline, newline_tab)
206
- else:
207
- backend_props = str(None)
208
134
  return (
209
135
  "Pass Manager Config:\n"
210
136
  f"\tinitial_layout: {self.initial_layout}\n"
211
137
  f"\tbasis_gates: {self.basis_gates}\n"
212
- f"\tinst_map: {str(self.inst_map).replace(newline, newline_tab)}\n"
213
138
  f"\tcoupling_map: {self.coupling_map}\n"
214
139
  f"\tlayout_method: {self.layout_method}\n"
215
140
  f"\trouting_method: {self.routing_method}\n"
216
141
  f"\ttranslation_method: {self.translation_method}\n"
217
142
  f"\tscheduling_method: {self.scheduling_method}\n"
218
143
  f"\tinstruction_durations: {str(self.instruction_durations).replace(newline, newline_tab)}\n"
219
- f"\tbackend_properties: {backend_props}\n"
220
144
  f"\tapproximation_degree: {self.approximation_degree}\n"
221
145
  f"\tseed_transpiler: {self.seed_transpiler}\n"
222
146
  f"\ttiming_constraints: {self.timing_constraints}\n"