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