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
@@ -54,9 +54,9 @@ def random_circuit(
54
54
  reset (bool): if True, insert middle resets
55
55
  seed (int): sets random seed (optional)
56
56
  num_operand_distribution (dict): a distribution of gates that specifies the ratio
57
- of 1-qubit, 2-qubit, 3-qubit, ..., n-qubit gates in the random circuit. Expect a
58
- deviation from the specified ratios that depends on the size of the requested
59
- random circuit. (optional)
57
+ of 1-qubit, 2-qubit, 3-qubit, ..., n-qubit gates in the random circuit. Expect a
58
+ deviation from the specified ratios that depends on the size of the requested
59
+ random circuit. (optional)
60
60
 
61
61
  Returns:
62
62
  QuantumCircuit: constructed circuit
@@ -274,9 +274,15 @@ def random_circuit(
274
274
  if is_cond:
275
275
  qc.measure(qc.qubits, cr)
276
276
  # The condition values are required to be bigints, not Numpy's fixed-width type.
277
- operation = operation.c_if(cr, int(condition_values[c_ptr]))
278
- c_ptr += 1
279
- qc._append(CircuitInstruction(operation=operation, qubits=qubits[q_start:q_end]))
277
+ with qc.if_test((cr, int(condition_values[c_ptr]))):
278
+ c_ptr += 1
279
+ qc._append(
280
+ CircuitInstruction(operation=operation, qubits=qubits[q_start:q_end])
281
+ )
282
+ else:
283
+ qc._append(
284
+ CircuitInstruction(operation=operation, qubits=qubits[q_start:q_end])
285
+ )
280
286
  else:
281
287
  for gate, q_start, q_end, p_start, p_end in zip(
282
288
  gate_specs["class"], q_indices[:-1], q_indices[1:], p_indices[:-1], p_indices[1:]
qiskit/circuit/reset.py CHANGED
@@ -15,17 +15,20 @@ Qubit reset to computational zero.
15
15
  """
16
16
 
17
17
  from qiskit.circuit.singleton import SingletonInstruction, stdlib_singleton_key
18
+ from qiskit._accelerate.circuit import StandardInstructionType
18
19
 
19
20
 
20
21
  class Reset(SingletonInstruction):
21
22
  r"""Incoherently reset a qubit to the :math:`\lvert0\rangle` state."""
22
23
 
23
- def __init__(self, label=None, *, duration=None, unit="dt"):
24
+ _standard_instruction_type = StandardInstructionType.Reset
25
+
26
+ def __init__(self, label=None):
24
27
  """
25
28
  Args:
26
29
  label: optional string label of this instruction.
27
30
  """
28
- super().__init__("reset", 1, 0, [], label=label, duration=duration, unit=unit)
31
+ super().__init__("reset", 1, 0, [], label=label)
29
32
 
30
33
  _singleton_lookup_key = stdlib_singleton_key()
31
34
 
@@ -251,7 +251,6 @@ from __future__ import annotations
251
251
 
252
252
  import functools
253
253
 
254
- from qiskit.utils import deprecate_func
255
254
  from .instruction import Instruction
256
255
  from .gate import Gate
257
256
  from .controlledgate import ControlledGate, _ctrl_state_to_int
@@ -490,10 +489,6 @@ class _SingletonInstructionOverrides(Instruction):
490
489
  instruction._params = _frozenlist(instruction._params)
491
490
  return instruction
492
491
 
493
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
494
- def c_if(self, classical, val):
495
- return self.to_mutable().c_if(classical, val)
496
-
497
492
  def copy(self, name=None):
498
493
  if name is None:
499
494
  return self
@@ -513,8 +508,7 @@ class SingletonInstruction(Instruction, _SingletonBase, overrides=_SingletonInst
513
508
  memory footprint of multiple instructions.
514
509
 
515
510
  The exception to be aware of with this class though are the :class:`~.circuit.Instruction`
516
- attributes :attr:`~.Instruction.label`, :attr:`~.Instruction.condition`,
517
- :attr:`~.Instruction.duration`, and :attr:`~.Instruction.unit` which can be set differently for
511
+ attribute :attr:`~.Instruction.label` which can be set differently for
518
512
  specific instances of gates. For :class:`SingletonInstruction` usage to be sound setting these
519
513
  attributes is not available and they can only be set at creation time, or on an object that has
520
514
  been specifically made mutable using :meth:`~.Instruction.to_mutable`. If any of these
@@ -589,8 +583,8 @@ def stdlib_singleton_key(*, num_ctrl_qubits: int = 0):
589
583
 
590
584
  if num_ctrl_qubits:
591
585
 
592
- def key(label=None, ctrl_state=None, *, duration=None, unit="dt", _base_label=None):
593
- if label is None and duration is None and unit == "dt" and _base_label is None:
586
+ def key(label=None, ctrl_state=None, *, _base_label=None):
587
+ if label is None and _base_label is None:
594
588
  # Normalisation; we want all types for the control state to key the same.
595
589
  ctrl_state = _ctrl_state_to_int(ctrl_state, num_ctrl_qubits)
596
590
  return (ctrl_state,)
@@ -598,8 +592,8 @@ def stdlib_singleton_key(*, num_ctrl_qubits: int = 0):
598
592
 
599
593
  else:
600
594
 
601
- def key(label=None, *, duration=None, unit="dt"):
602
- if label is None and duration is None and unit == "dt":
595
+ def key(label=None):
596
+ if label is None:
603
597
  return ()
604
598
  return None
605
599
 
qiskit/circuit/store.py CHANGED
@@ -16,7 +16,6 @@ from __future__ import annotations
16
16
 
17
17
  import typing
18
18
 
19
- from qiskit.utils import deprecate_func
20
19
  from .exceptions import CircuitError
21
20
  from .classical import expr, types
22
21
  from .instruction import Instruction
@@ -88,10 +87,3 @@ class Store(Instruction):
88
87
  def rvalue(self):
89
88
  """Get the r-value :class:`~.expr.Expr` node that is being written into the l-value."""
90
89
  return self.params[1]
91
-
92
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
93
- def c_if(self, classical, val):
94
- """:meta hidden:"""
95
- raise NotImplementedError(
96
- "stores cannot be conditioned with `c_if`; use a full `if_test` context instead"
97
- )
@@ -17,17 +17,11 @@ Compilation Routines (:mod:`qiskit.compiler`)
17
17
 
18
18
  .. currentmodule:: qiskit.compiler
19
19
 
20
- Circuit and Pulse Compilation Functions
20
+ Circuit Compilation Functions
21
21
  =======================================
22
22
 
23
- .. autofunction:: assemble
24
- .. autofunction:: schedule
25
23
  .. autofunction:: transpile
26
- .. autofunction:: sequence
27
24
 
28
25
  """
29
26
 
30
- from .assembler import assemble
31
27
  from .transpiler import transpile
32
- from .scheduler import schedule
33
- from .sequencer import sequence
@@ -16,73 +16,35 @@
16
16
  import logging
17
17
  from time import time
18
18
  from typing import List, Union, Dict, Callable, Any, Optional, TypeVar
19
- import warnings
20
19
 
21
20
  from qiskit import user_config
22
21
  from qiskit.circuit.quantumcircuit import QuantumCircuit
23
22
  from qiskit.dagcircuit import DAGCircuit
24
23
  from qiskit.providers.backend import Backend
25
- from qiskit.providers.backend_compat import BackendV2Converter
26
- from qiskit.providers.models.backendproperties import BackendProperties
27
- from qiskit.pulse import Schedule, InstructionScheduleMap
28
24
  from qiskit.transpiler import Layout, CouplingMap, PropertySet
29
25
  from qiskit.transpiler.basepasses import BasePass
30
26
  from qiskit.transpiler.exceptions import TranspilerError, CircuitTooWideForTarget
31
- from qiskit.transpiler.instruction_durations import InstructionDurationsType
32
27
  from qiskit.transpiler.passes.synthesis.high_level_synthesis import HLSConfig
33
28
  from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
34
29
  from qiskit.transpiler.target import Target
35
- from qiskit.utils import deprecate_arg
36
- from qiskit.utils.deprecate_pulse import deprecate_pulse_arg
37
30
 
38
31
  logger = logging.getLogger(__name__)
39
32
 
40
33
  _CircuitT = TypeVar("_CircuitT", bound=Union[QuantumCircuit, List[QuantumCircuit]])
41
34
 
42
35
 
43
- @deprecate_arg(
44
- name="instruction_durations",
45
- since="1.3",
46
- package_name="Qiskit",
47
- removal_timeline="in Qiskit 2.0",
48
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
49
- "with defined instruction durations with "
50
- "`Target.from_configuration(..., instruction_durations=...)`",
51
- )
52
- @deprecate_arg(
53
- name="timing_constraints",
54
- since="1.3",
55
- package_name="Qiskit",
56
- removal_timeline="in Qiskit 2.0",
57
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
58
- "with defined timing constraints with "
59
- "`Target.from_configuration(..., timing_constraints=...)`",
60
- )
61
- @deprecate_arg(
62
- name="backend_properties",
63
- since="1.3",
64
- package_name="Qiskit",
65
- removal_timeline="in Qiskit 2.0",
66
- additional_msg="The `target` parameter should be used instead. You can build a `Target` instance "
67
- "with defined properties with Target.from_configuration(..., backend_properties=...)",
68
- )
69
- @deprecate_pulse_arg("inst_map", predicate=lambda inst_map: inst_map is not None)
70
36
  def transpile( # pylint: disable=too-many-return-statements
71
37
  circuits: _CircuitT,
72
38
  backend: Optional[Backend] = None,
73
39
  basis_gates: Optional[List[str]] = None,
74
- inst_map: Optional[List[InstructionScheduleMap]] = None,
75
40
  coupling_map: Optional[Union[CouplingMap, List[List[int]]]] = None,
76
- backend_properties: Optional[BackendProperties] = None,
77
41
  initial_layout: Optional[Union[Layout, Dict, List]] = None,
78
42
  layout_method: Optional[str] = None,
79
43
  routing_method: Optional[str] = None,
80
44
  translation_method: Optional[str] = None,
81
45
  scheduling_method: Optional[str] = None,
82
- instruction_durations: Optional[InstructionDurationsType] = None,
83
46
  dt: Optional[float] = None,
84
47
  approximation_degree: Optional[float] = 1.0,
85
- timing_constraints: Optional[Dict[str, int]] = None,
86
48
  seed_transpiler: Optional[int] = None,
87
49
  optimization_level: Optional[int] = None,
88
50
  callback: Optional[Callable[[BasePass, DAGCircuit, float, PropertySet, int], Any]] = None,
@@ -105,26 +67,21 @@ def transpile( # pylint: disable=too-many-return-statements
105
67
 
106
68
  The prioritization of transpilation target constraints works as follows: if a ``target``
107
69
  input is provided, it will take priority over any ``backend`` input or loose constraints
108
- (``basis_gates``, ``inst_map``, ``coupling_map``, ``backend_properties``, ``instruction_durations``,
109
- ``dt`` or ``timing_constraints``). If a ``backend`` is provided together with any loose constraint
70
+ (``basis_gates``, ``coupling_map``, or ``dt``). If a ``backend`` is provided
71
+ together with any loose constraint
110
72
  from the list above, the loose constraint will take priority over the corresponding backend
111
- constraint. This behavior is independent of whether the ``backend`` instance is of type
112
- :class:`.BackendV1` or :class:`.BackendV2`, as summarized in the table below. The first column
73
+ constraint. This behavior is summarized in the table below. The first column
113
74
  in the table summarizes the potential user-provided constraints, and each cell shows whether
114
75
  the priority is assigned to that specific constraint input or another input
115
- (`target`/`backend(V1)`/`backend(V2)`).
116
-
117
- ============================ ========= ======================== =======================
118
- User Provided target backend(V1) backend(V2)
119
- ============================ ========= ======================== =======================
120
- **basis_gates** target basis_gates basis_gates
121
- **coupling_map** target coupling_map coupling_map
122
- **instruction_durations** target instruction_durations instruction_durations
123
- **inst_map** target inst_map inst_map
124
- **dt** target dt dt
125
- **timing_constraints** target timing_constraints timing_constraints
126
- **backend_properties** target backend_properties backend_properties
127
- ============================ ========= ======================== =======================
76
+ (`target`/`backend(V2)`).
77
+
78
+ ============================ ========= ========================
79
+ User Provided target backend(V2)
80
+ ============================ ========= ========================
81
+ **basis_gates** target basis_gates
82
+ **coupling_map** target coupling_map
83
+ **dt** target dt
84
+ ============================ ========= ========================
128
85
 
129
86
  Args:
130
87
  circuits: Circuit(s) to transpile
@@ -133,12 +90,6 @@ def transpile( # pylint: disable=too-many-return-statements
133
90
  will override the backend's.
134
91
  basis_gates: List of basis gate names to unroll to
135
92
  (e.g: ``['u1', 'u2', 'u3', 'cx']``). If ``None``, do not unroll.
136
- inst_map: DEPRECATED. Mapping of unrolled gates to pulse schedules. If this is not provided,
137
- transpiler tries to get from the backend. If any user defined calibration
138
- is found in the map and this is used in a circuit, transpiler attaches
139
- the custom gate definition to the circuit. This enables one to flexibly
140
- override the low-level instruction implementation. This feature is available
141
- iff the backend supports the pulse gate experiment.
142
93
  coupling_map: Directed coupling map (perhaps custom) to target in mapping. If
143
94
  the coupling map is symmetric, both directions need to be specified.
144
95
 
@@ -148,10 +99,6 @@ def transpile( # pylint: disable=too-many-return-statements
148
99
  #. List, must be given as an adjacency matrix, where each entry
149
100
  specifies all directed two-qubit interactions supported by backend,
150
101
  e.g: ``[[0, 1], [0, 3], [1, 2], [1, 5], [2, 5], [4, 1], [5, 3]]``
151
-
152
- backend_properties: properties returned by a backend, including information on gate
153
- errors, readout errors, qubit coherence times, etc. Find a backend
154
- that provides this information with: ``backend.properties()``
155
102
  initial_layout: Initial position of virtual qubits on physical qubits.
156
103
  If this layout makes the circuit compatible with the coupling_map
157
104
  constraints, it will be used. The final layout is not guaranteed to be the same,
@@ -191,10 +138,10 @@ def transpile( # pylint: disable=too-many-return-statements
191
138
  This can also be the external plugin name to use for the ``routing`` stage.
192
139
  You can see a list of installed plugins by using :func:`~.list_stage_plugins` with
193
140
  ``"routing"`` for the ``stage_name`` argument.
194
- translation_method: Name of translation pass (``"translator"`` or ``"synthesis"``)
195
- This can also be the external plugin name to use for the ``translation`` stage.
196
- You can see a list of installed plugins by using :func:`~.list_stage_plugins` with
197
- ``"translation"`` for the ``stage_name`` argument.
141
+ translation_method: Name of translation pass (``"default"``, ``"translator"`` or
142
+ ``"synthesis"``). This can also be the external plugin name to use for the
143
+ ``translation`` stage. You can see a list of installed plugins by using
144
+ :func:`~.list_stage_plugins` with ``"translation"`` for the ``stage_name`` argument.
198
145
  scheduling_method: Name of scheduling pass.
199
146
  * ``'as_soon_as_possible'``: Schedule instructions greedily, as early as possible
200
147
  on a qubit resource. (alias: ``'asap'``)
@@ -204,40 +151,10 @@ def transpile( # pylint: disable=too-many-return-statements
204
151
  to use for the ``scheduling`` stage. You can see a list of installed plugins by
205
152
  using :func:`~.list_stage_plugins` with ``"scheduling"`` for the ``stage_name``
206
153
  argument.
207
- instruction_durations: Durations of instructions.
208
- Applicable only if scheduling_method is specified.
209
- The gate lengths defined in ``backend.properties`` are used as default.
210
- They are overwritten if this ``instruction_durations`` is specified.
211
- The format of ``instruction_durations`` must be as follows.
212
- The `instruction_durations` must be given as a list of tuples
213
- [(instruction_name, qubits, duration, unit), ...].
214
- | [('cx', [0, 1], 12.3, 'ns'), ('u3', [0], 4.56, 'ns')]
215
- | [('cx', [0, 1], 1000), ('u3', [0], 300)]
216
- If unit is omitted, the default is 'dt', which is a sample time depending on backend.
217
- If the time unit is 'dt', the duration must be an integer.
218
154
  dt: Backend sample time (resolution) in seconds.
219
- If ``None`` (default), ``backend.configuration().dt`` is used.
155
+ If ``None`` (default), ``backend.dt`` is used.
220
156
  approximation_degree (float): heuristic dial used for circuit approximation
221
157
  (1.0=no approximation, 0.0=maximal approximation)
222
- timing_constraints: An optional control hardware restriction on instruction time resolution.
223
- A quantum computer backend may report a set of restrictions, namely:
224
-
225
- - granularity: An integer value representing minimum pulse gate
226
- resolution in units of ``dt``. A user-defined pulse gate should have
227
- duration of a multiple of this granularity value.
228
- - min_length: An integer value representing minimum pulse gate
229
- length in units of ``dt``. A user-defined pulse gate should be longer
230
- than this length.
231
- - pulse_alignment: An integer value representing a time resolution of gate
232
- instruction starting time. Gate instruction should start at time which
233
- is a multiple of the alignment value.
234
- - acquire_alignment: An integer value representing a time resolution of measure
235
- instruction starting time. Measure instruction should start at time which
236
- is a multiple of the alignment value.
237
-
238
- This information will be provided by the backend configuration.
239
- If the backend doesn't have any restriction on the instruction time allocation,
240
- then ``timing_constraints`` is None and no adjustment will be performed.
241
158
  seed_transpiler: Sets random seed for the stochastic parts of the transpiler
242
159
  optimization_level: How much optimization to perform on the circuits.
243
160
  Higher levels generate more optimized circuits,
@@ -329,58 +246,13 @@ def transpile( # pylint: disable=too-many-return-statements
329
246
  if not circuits:
330
247
  return []
331
248
 
332
- # transpiling schedules is not supported yet.
333
249
  start_time = time()
334
- if all(isinstance(c, Schedule) for c in circuits):
335
- warnings.warn("Transpiling schedules is not supported yet.", UserWarning)
336
- end_time = time()
337
- _log_transpile_time(start_time, end_time)
338
- if arg_circuits_list:
339
- return circuits
340
- else:
341
- return circuits[0]
342
250
 
343
251
  if optimization_level is None:
344
252
  # Take optimization level from the configuration or 1 as default.
345
253
  config = user_config.get_config()
346
254
  optimization_level = config.get("transpile_optimization_level", 2)
347
255
 
348
- if backend is not None and getattr(backend, "version", 0) <= 1:
349
- warnings.warn(
350
- "The `transpile` function will stop supporting inputs of "
351
- f"type `BackendV1` ( {backend} ) in the `backend` parameter in a future "
352
- "release no earlier than 2.0. `BackendV1` is deprecated and implementations "
353
- "should move to `BackendV2`.",
354
- category=DeprecationWarning,
355
- stacklevel=2,
356
- )
357
- with warnings.catch_warnings():
358
- # This is a temporary conversion step to allow for a smoother transition
359
- # to a fully target-based transpiler pipeline while maintaining the behavior
360
- # of `transpile` with BackendV1 inputs.
361
- # TODO BackendV1 is deprecated and this path can be
362
- # removed once it gets removed:
363
- # https://github.com/Qiskit/qiskit/pull/12850
364
- warnings.filterwarnings(
365
- "ignore",
366
- category=DeprecationWarning,
367
- message=r".+qiskit\.providers\.backend_compat\.BackendV2Converter.+",
368
- module="qiskit",
369
- )
370
- backend = BackendV2Converter(backend)
371
-
372
- if (
373
- scheduling_method is not None
374
- and backend is None
375
- and target is None
376
- and not instruction_durations
377
- ):
378
- warnings.warn(
379
- "When scheduling circuits without backend,"
380
- " 'instruction_durations' should be usually provided.",
381
- UserWarning,
382
- )
383
-
384
256
  if not ignore_backend_supplied_default_methods:
385
257
  if scheduling_method is None and hasattr(backend, "get_scheduling_stage_plugin"):
386
258
  scheduling_method = backend.get_scheduling_stage_plugin()
@@ -394,57 +266,27 @@ def transpile( # pylint: disable=too-many-return-statements
394
266
  # Edge cases require using the old model (loose constraints) instead of building a target,
395
267
  # but we don't populate the passmanager config with loose constraints unless it's one of
396
268
  # the known edge cases to control the execution path.
397
- # Filter instruction_durations, timing_constraints, backend_properties and inst_map deprecation
398
- with warnings.catch_warnings():
399
- warnings.filterwarnings(
400
- "ignore",
401
- category=DeprecationWarning,
402
- message=".*``inst_map`` is deprecated as of Qiskit 1.3.*",
403
- module="qiskit",
404
- )
405
- warnings.filterwarnings(
406
- "ignore",
407
- category=DeprecationWarning,
408
- message=".*``timing_constraints`` is deprecated as of Qiskit 1.3.*",
409
- module="qiskit",
410
- )
411
- warnings.filterwarnings(
412
- "ignore",
413
- category=DeprecationWarning,
414
- message=".*``instruction_durations`` is deprecated as of Qiskit 1.3.*",
415
- module="qiskit",
416
- )
417
- warnings.filterwarnings(
418
- "ignore",
419
- category=DeprecationWarning,
420
- message=".*``backend_properties`` is deprecated as of Qiskit 1.3.*",
421
- module="qiskit",
422
- )
423
- pm = generate_preset_pass_manager(
424
- optimization_level,
425
- target=target,
426
- backend=backend,
427
- basis_gates=basis_gates,
428
- coupling_map=coupling_map,
429
- instruction_durations=instruction_durations,
430
- backend_properties=backend_properties,
431
- timing_constraints=timing_constraints,
432
- inst_map=inst_map,
433
- initial_layout=initial_layout,
434
- layout_method=layout_method,
435
- routing_method=routing_method,
436
- translation_method=translation_method,
437
- scheduling_method=scheduling_method,
438
- approximation_degree=approximation_degree,
439
- seed_transpiler=seed_transpiler,
440
- unitary_synthesis_method=unitary_synthesis_method,
441
- unitary_synthesis_plugin_config=unitary_synthesis_plugin_config,
442
- hls_config=hls_config,
443
- init_method=init_method,
444
- optimization_method=optimization_method,
445
- dt=dt,
446
- qubits_initially_zero=qubits_initially_zero,
447
- )
269
+ pm = generate_preset_pass_manager(
270
+ optimization_level,
271
+ target=target,
272
+ backend=backend,
273
+ basis_gates=basis_gates,
274
+ coupling_map=coupling_map,
275
+ initial_layout=initial_layout,
276
+ layout_method=layout_method,
277
+ routing_method=routing_method,
278
+ translation_method=translation_method,
279
+ scheduling_method=scheduling_method,
280
+ approximation_degree=approximation_degree,
281
+ seed_transpiler=seed_transpiler,
282
+ unitary_synthesis_method=unitary_synthesis_method,
283
+ unitary_synthesis_plugin_config=unitary_synthesis_plugin_config,
284
+ hls_config=hls_config,
285
+ init_method=init_method,
286
+ optimization_method=optimization_method,
287
+ dt=dt,
288
+ qubits_initially_zero=qubits_initially_zero,
289
+ )
448
290
 
449
291
  out_circuits = pm.run(circuits, callback=callback, num_processes=num_processes)
450
292
 
@@ -41,7 +41,9 @@ def circuit_to_dag(circuit, copy_operations=True, *, qubit_order=None, clbit_ord
41
41
  the circuit.
42
42
 
43
43
  Example:
44
- .. code-block::
44
+ .. plot::
45
+ :include-source:
46
+ :nofigs:
45
47
 
46
48
  from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
47
49
  from qiskit.dagcircuit import DAGCircuit
@@ -53,7 +55,7 @@ def circuit_to_dag(circuit, copy_operations=True, *, qubit_order=None, clbit_ord
53
55
  circ.h(q[0])
54
56
  circ.cx(q[0], q[1])
55
57
  circ.measure(q[0], c[0])
56
- circ.rz(0.5, q[1]).c_if(c, 2)
58
+ circ.rz(0.5, q[1])
57
59
  dag = circuit_to_dag(circ)
58
60
  """
59
61
  # If we have an instance of BluePrintCircuit, make sure it is built by calling ._build()
@@ -46,6 +46,4 @@ def circuit_to_dagdependency(circuit, create_preds_and_succs=True):
46
46
  dagdependency._add_predecessors()
47
47
  dagdependency._add_successors()
48
48
 
49
- dagdependency._calibrations = circuit._calibrations_prop
50
-
51
49
  return dagdependency
@@ -27,7 +27,6 @@ def _circuit_to_dagdependency_v2(circuit):
27
27
  dagdependency = _DAGDependencyV2()
28
28
  dagdependency.name = circuit.name
29
29
  dagdependency.metadata = circuit.metadata
30
- dagdependency._calibrations = circuit._calibrations_prop
31
30
  dagdependency.global_phase = circuit.global_phase
32
31
 
33
32
  dagdependency.add_qubits(circuit.qubits)
@@ -14,7 +14,7 @@
14
14
  """Helper function for converting a circuit to a gate"""
15
15
  from qiskit.circuit.annotated_operation import AnnotatedOperation
16
16
  from qiskit.circuit.gate import Gate
17
- from qiskit.circuit.quantumregister import QuantumRegister
17
+ from qiskit.circuit import QuantumRegister
18
18
  from qiskit.exceptions import QiskitError
19
19
 
20
20
 
@@ -11,10 +11,11 @@
11
11
  # that they have been altered from the originals.
12
12
 
13
13
  """Helper function for converting a circuit to an instruction."""
14
+ from qiskit.circuit.controlflow import CONTROL_FLOW_OP_NAMES
14
15
  from qiskit.exceptions import QiskitError
15
16
  from qiskit.circuit.instruction import Instruction
16
- from qiskit.circuit.quantumregister import QuantumRegister
17
- from qiskit.circuit.classicalregister import ClassicalRegister, Clbit
17
+ from qiskit.circuit import QuantumRegister
18
+ from qiskit.circuit import ClassicalRegister
18
19
 
19
20
 
20
21
  def circuit_to_instruction(circuit, parameter_map=None, equivalence_library=None, label=None):
@@ -43,7 +44,9 @@ def circuit_to_instruction(circuit, parameter_map=None, equivalence_library=None
43
44
  yield the components comprising the original circuit.
44
45
 
45
46
  Example:
46
- .. code-block::
47
+ .. plot::
48
+ :include-source:
49
+ :nofigs:
47
50
 
48
51
  from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
49
52
  from qiskit.converters import circuit_to_instruction
@@ -54,7 +57,7 @@ def circuit_to_instruction(circuit, parameter_map=None, equivalence_library=None
54
57
  circ.h(q[0])
55
58
  circ.cx(q[0], q[1])
56
59
  circ.measure(q[0], c[0])
57
- circ.rz(0.5, q[1]).c_if(c, 2)
60
+ circ.rz(0.5, q[1])
58
61
  circuit_to_instruction(circ)
59
62
  """
60
63
  # pylint: disable=cyclic-import
@@ -81,6 +84,10 @@ def circuit_to_instruction(circuit, parameter_map=None, equivalence_library=None
81
84
  "Circuits with internal variables cannot yet be converted to instructions."
82
85
  " You may be able to use `QuantumCircuit.compose` to inline this circuit into another."
83
86
  )
87
+ if CONTROL_FLOW_OP_NAMES.intersection(circuit.count_ops()):
88
+ raise QiskitError(
89
+ "Circuits with control flow operations cannot be converted to an instruction."
90
+ )
84
91
 
85
92
  if parameter_map is None:
86
93
  parameter_dict = {p: p for p in circuit.parameters}
@@ -117,36 +124,16 @@ def circuit_to_instruction(circuit, parameter_map=None, equivalence_library=None
117
124
  creg = ClassicalRegister(out_instruction.num_clbits, "c")
118
125
  regs.append(creg)
119
126
 
120
- clbit_map = {bit: creg[idx] for idx, bit in enumerate(circuit.clbits)}
121
- operation_map = {}
122
-
123
- def fix_condition(op):
124
- original_id = id(op)
125
- if (out := operation_map.get(original_id)) is not None:
126
- return out
127
-
128
- condition = getattr(op, "_condition", None)
129
- if condition:
130
- reg, val = condition
131
- if isinstance(reg, Clbit):
132
- op = op.c_if(clbit_map[reg], val)
133
- elif reg.size == creg.size:
134
- op = op.c_if(creg, val)
135
- else:
136
- raise QiskitError(
137
- "Cannot convert condition in circuit with "
138
- "multiple classical registers to instruction"
139
- )
140
- operation_map[original_id] = op
141
- return op
142
-
143
127
  data = target._data.copy()
144
128
  data.replace_bits(qubits=qreg, clbits=creg)
145
- data.map_nonstandard_ops(fix_condition)
146
129
 
147
- qc = QuantumCircuit(*regs, name=out_instruction.name)
130
+ qc = QuantumCircuit(name=out_instruction.name)
148
131
  qc._data = data
149
132
 
133
+ # Re-add the registers.
134
+ for reg in regs:
135
+ qc.add_register(reg)
136
+
150
137
  if circuit.global_phase:
151
138
  qc.global_phase = circuit.global_phase
152
139
 
@@ -49,7 +49,7 @@ def dag_to_circuit(dag, copy_operations=True):
49
49
  circ.h(q[0])
50
50
  circ.cx(q[0], q[1])
51
51
  circ.measure(q[0], c[0])
52
- circ.rz(0.5, q[1]).c_if(c, 2)
52
+ circ.rz(0.5, q[1])
53
53
  dag = circuit_to_dag(circ)
54
54
  circuit = dag_to_circuit(dag)
55
55
  circuit.draw('mpl')
@@ -66,13 +66,13 @@ def dag_to_circuit(dag, copy_operations=True):
66
66
  name=name,
67
67
  global_phase=dag.global_phase,
68
68
  inputs=dag.iter_input_vars(),
69
- captures=dag.iter_captured_vars(),
69
+ captures=dag.iter_captures(),
70
70
  )
71
71
  for var in dag.iter_declared_vars():
72
72
  circuit.add_uninitialized_var(var)
73
- circuit.metadata = dag.metadata
74
- circuit._calibrations_prop = dag._calibrations_prop
75
-
73
+ for stretch in dag.iter_declared_stretches():
74
+ circuit.add_stretch(stretch)
75
+ circuit.metadata = dag.metadata or {}
76
76
  circuit._data = circuit_data
77
77
 
78
78
  circuit._duration = dag.duration
@@ -50,6 +50,5 @@ def dag_to_dagdependency(dag, create_preds_and_succs=True):
50
50
 
51
51
  # copy metadata
52
52
  dagdependency.global_phase = dag.global_phase
53
- dagdependency._calibrations_prop = dag._calibrations_prop
54
53
 
55
54
  return dagdependency
@@ -27,7 +27,6 @@ def _dag_to_dagdependency_v2(dag):
27
27
  dagdependency.name = dag.name
28
28
  dagdependency.metadata = dag.metadata
29
29
  dagdependency.global_phase = dag.global_phase
30
- dagdependency.calibrations = dag._calibrations_prop
31
30
 
32
31
  dagdependency.add_qubits(dag.qubits)
33
32
  dagdependency.add_clbits(dag.clbits)