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
@@ -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"