qiskit 1.1.2__cp38-abi3-win32.whl → 1.2.0__cp38-abi3-win32.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 (343) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +27 -24
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/_numpy_compat.py +1 -1
  5. qiskit/assembler/assemble_circuits.py +107 -64
  6. qiskit/assembler/assemble_schedules.py +5 -12
  7. qiskit/assembler/disassemble.py +10 -1
  8. qiskit/circuit/__init__.py +6 -3
  9. qiskit/circuit/_classical_resource_map.py +5 -5
  10. qiskit/circuit/_utils.py +0 -13
  11. qiskit/circuit/add_control.py +1 -1
  12. qiskit/circuit/annotated_operation.py +23 -1
  13. qiskit/circuit/classical/expr/expr.py +4 -4
  14. qiskit/circuit/classical/expr/visitors.py +1 -1
  15. qiskit/circuit/classical/types/__init__.py +1 -1
  16. qiskit/circuit/classical/types/types.py +2 -2
  17. qiskit/circuit/classicalfunction/boolean_expression.py +1 -1
  18. qiskit/circuit/classicalfunction/classical_function_visitor.py +5 -5
  19. qiskit/circuit/classicalfunction/utils.py +1 -1
  20. qiskit/circuit/classicalregister.py +1 -1
  21. qiskit/circuit/commutation_checker.py +83 -35
  22. qiskit/circuit/controlflow/_builder_utils.py +1 -1
  23. qiskit/circuit/controlflow/builder.py +10 -6
  24. qiskit/circuit/controlflow/if_else.py +2 -2
  25. qiskit/circuit/controlflow/switch_case.py +1 -1
  26. qiskit/circuit/delay.py +1 -1
  27. qiskit/circuit/duration.py +2 -2
  28. qiskit/circuit/equivalence.py +5 -7
  29. qiskit/circuit/gate.py +11 -8
  30. qiskit/circuit/instruction.py +31 -13
  31. qiskit/circuit/instructionset.py +2 -5
  32. qiskit/circuit/library/__init__.py +2 -1
  33. qiskit/circuit/library/arithmetic/linear_amplitude_function.py +1 -1
  34. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  35. qiskit/circuit/library/arithmetic/piecewise_chebyshev.py +1 -1
  36. qiskit/circuit/library/arithmetic/piecewise_linear_pauli_rotations.py +1 -1
  37. qiskit/circuit/library/arithmetic/piecewise_polynomial_pauli_rotations.py +3 -3
  38. qiskit/circuit/library/arithmetic/polynomial_pauli_rotations.py +1 -1
  39. qiskit/circuit/library/basis_change/__init__.py +1 -1
  40. qiskit/circuit/library/basis_change/qft.py +40 -6
  41. qiskit/circuit/library/blueprintcircuit.py +3 -5
  42. qiskit/circuit/library/data_preparation/__init__.py +9 -2
  43. qiskit/circuit/library/data_preparation/initializer.py +8 -0
  44. qiskit/circuit/library/data_preparation/state_preparation.py +98 -178
  45. qiskit/circuit/library/generalized_gates/isometry.py +8 -8
  46. qiskit/circuit/library/generalized_gates/linear_function.py +3 -2
  47. qiskit/circuit/library/generalized_gates/mcg_up_to_diagonal.py +4 -4
  48. qiskit/circuit/library/generalized_gates/permutation.py +8 -9
  49. qiskit/circuit/library/generalized_gates/uc.py +3 -3
  50. qiskit/circuit/library/generalized_gates/uc_pauli_rot.py +2 -2
  51. qiskit/circuit/library/generalized_gates/unitary.py +13 -11
  52. qiskit/circuit/library/graph_state.py +1 -1
  53. qiskit/circuit/library/hamiltonian_gate.py +1 -2
  54. qiskit/circuit/library/hidden_linear_function.py +1 -1
  55. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +3 -2
  56. qiskit/circuit/library/n_local/n_local.py +4 -5
  57. qiskit/circuit/library/n_local/pauli_two_design.py +1 -1
  58. qiskit/circuit/library/n_local/qaoa_ansatz.py +6 -8
  59. qiskit/circuit/library/n_local/two_local.py +1 -1
  60. qiskit/circuit/library/overlap.py +11 -5
  61. qiskit/circuit/library/pauli_evolution.py +7 -3
  62. qiskit/circuit/library/standard_gates/dcx.py +3 -0
  63. qiskit/circuit/library/standard_gates/ecr.py +3 -0
  64. qiskit/circuit/library/standard_gates/global_phase.py +3 -0
  65. qiskit/circuit/library/standard_gates/h.py +13 -5
  66. qiskit/circuit/library/standard_gates/i.py +3 -0
  67. qiskit/circuit/library/standard_gates/iswap.py +3 -0
  68. qiskit/circuit/library/standard_gates/multi_control_rotation_gates.py +19 -10
  69. qiskit/circuit/library/standard_gates/p.py +14 -9
  70. qiskit/circuit/library/standard_gates/r.py +3 -0
  71. qiskit/circuit/library/standard_gates/rx.py +21 -6
  72. qiskit/circuit/library/standard_gates/rxx.py +40 -1
  73. qiskit/circuit/library/standard_gates/ry.py +21 -6
  74. qiskit/circuit/library/standard_gates/ryy.py +40 -1
  75. qiskit/circuit/library/standard_gates/rz.py +22 -6
  76. qiskit/circuit/library/standard_gates/rzx.py +40 -1
  77. qiskit/circuit/library/standard_gates/rzz.py +41 -2
  78. qiskit/circuit/library/standard_gates/s.py +77 -0
  79. qiskit/circuit/library/standard_gates/swap.py +12 -5
  80. qiskit/circuit/library/standard_gates/sx.py +14 -5
  81. qiskit/circuit/library/standard_gates/t.py +5 -0
  82. qiskit/circuit/library/standard_gates/u.py +22 -7
  83. qiskit/circuit/library/standard_gates/u1.py +8 -3
  84. qiskit/circuit/library/standard_gates/u2.py +3 -0
  85. qiskit/circuit/library/standard_gates/u3.py +22 -7
  86. qiskit/circuit/library/standard_gates/x.py +156 -92
  87. qiskit/circuit/library/standard_gates/xx_minus_yy.py +40 -1
  88. qiskit/circuit/library/standard_gates/xx_plus_yy.py +52 -11
  89. qiskit/circuit/library/standard_gates/y.py +6 -1
  90. qiskit/circuit/library/standard_gates/z.py +8 -1
  91. qiskit/circuit/operation.py +1 -1
  92. qiskit/circuit/parameter.py +9 -10
  93. qiskit/circuit/parameterexpression.py +16 -13
  94. qiskit/circuit/parametertable.py +1 -190
  95. qiskit/circuit/parametervector.py +1 -1
  96. qiskit/circuit/quantumcircuit.py +395 -387
  97. qiskit/circuit/quantumcircuitdata.py +3 -5
  98. qiskit/circuit/quantumregister.py +1 -1
  99. qiskit/circuit/random/__init__.py +1 -1
  100. qiskit/circuit/random/utils.py +175 -26
  101. qiskit/circuit/register.py +5 -7
  102. qiskit/circuit/singleton.py +3 -3
  103. qiskit/circuit/tools/pi_check.py +4 -4
  104. qiskit/compiler/assembler.py +95 -24
  105. qiskit/compiler/scheduler.py +2 -2
  106. qiskit/compiler/transpiler.py +42 -128
  107. qiskit/converters/circuit_to_dag.py +4 -6
  108. qiskit/converters/circuit_to_gate.py +4 -8
  109. qiskit/converters/circuit_to_instruction.py +5 -17
  110. qiskit/converters/dag_to_circuit.py +2 -6
  111. qiskit/dagcircuit/collect_blocks.py +2 -2
  112. qiskit/dagcircuit/dagcircuit.py +190 -187
  113. qiskit/dagcircuit/dagdependency.py +4 -4
  114. qiskit/dagcircuit/dagdependency_v2.py +4 -4
  115. qiskit/dagcircuit/dagdepnode.py +1 -1
  116. qiskit/dagcircuit/dagnode.py +66 -157
  117. qiskit/passmanager/flow_controllers.py +1 -1
  118. qiskit/passmanager/passmanager.py +3 -3
  119. qiskit/primitives/__init__.py +1 -5
  120. qiskit/primitives/backend_estimator.py +25 -15
  121. qiskit/primitives/backend_estimator_v2.py +31 -7
  122. qiskit/primitives/backend_sampler.py +21 -12
  123. qiskit/primitives/backend_sampler_v2.py +12 -3
  124. qiskit/primitives/base/base_estimator.py +31 -4
  125. qiskit/primitives/base/base_primitive.py +2 -2
  126. qiskit/primitives/base/base_result.py +2 -2
  127. qiskit/primitives/base/base_sampler.py +26 -2
  128. qiskit/primitives/base/estimator_result.py +2 -2
  129. qiskit/primitives/base/sampler_result.py +2 -2
  130. qiskit/primitives/containers/__init__.py +0 -1
  131. qiskit/primitives/containers/bindings_array.py +2 -2
  132. qiskit/primitives/containers/bit_array.py +108 -10
  133. qiskit/primitives/containers/shape.py +3 -3
  134. qiskit/primitives/estimator.py +9 -2
  135. qiskit/primitives/primitive_job.py +1 -1
  136. qiskit/primitives/sampler.py +10 -3
  137. qiskit/primitives/statevector_estimator.py +5 -3
  138. qiskit/primitives/statevector_sampler.py +11 -5
  139. qiskit/primitives/utils.py +16 -0
  140. qiskit/providers/backend.py +15 -6
  141. qiskit/providers/backend_compat.py +7 -4
  142. qiskit/providers/basic_provider/basic_provider_tools.py +1 -1
  143. qiskit/providers/basic_provider/basic_simulator.py +33 -25
  144. qiskit/providers/fake_provider/fake_backend.py +10 -3
  145. qiskit/providers/fake_provider/fake_openpulse_2q.py +157 -149
  146. qiskit/providers/fake_provider/fake_openpulse_3q.py +228 -220
  147. qiskit/providers/fake_provider/fake_pulse_backend.py +2 -1
  148. qiskit/providers/fake_provider/fake_qasm_backend.py +7 -2
  149. qiskit/providers/fake_provider/generic_backend_v2.py +514 -68
  150. qiskit/providers/models/__init__.py +48 -11
  151. qiskit/providers/models/backendconfiguration.py +50 -4
  152. qiskit/providers/models/backendproperties.py +13 -2
  153. qiskit/providers/models/pulsedefaults.py +10 -11
  154. qiskit/providers/options.py +13 -13
  155. qiskit/providers/providerutils.py +3 -1
  156. qiskit/pulse/configuration.py +8 -12
  157. qiskit/pulse/instruction_schedule_map.py +3 -5
  158. qiskit/pulse/instructions/acquire.py +7 -8
  159. qiskit/pulse/instructions/instruction.py +2 -3
  160. qiskit/pulse/library/samplers/decorators.py +5 -9
  161. qiskit/pulse/library/symbolic_pulses.py +4 -7
  162. qiskit/pulse/library/waveform.py +2 -5
  163. qiskit/pulse/macros.py +11 -6
  164. qiskit/pulse/parser.py +8 -10
  165. qiskit/pulse/schedule.py +9 -17
  166. qiskit/pulse/transforms/alignments.py +1 -3
  167. qiskit/pulse/utils.py +1 -2
  168. qiskit/qasm/libs/stdgates.inc +35 -28
  169. qiskit/qasm2/__init__.py +7 -7
  170. qiskit/qasm2/export.py +5 -9
  171. qiskit/qasm2/parse.py +1 -1
  172. qiskit/qasm3/ast.py +9 -25
  173. qiskit/qasm3/exporter.py +582 -479
  174. qiskit/qasm3/printer.py +7 -16
  175. qiskit/qobj/common.py +10 -0
  176. qiskit/qobj/converters/lo_config.py +9 -0
  177. qiskit/qobj/converters/pulse_instruction.py +13 -6
  178. qiskit/qobj/pulse_qobj.py +69 -15
  179. qiskit/qobj/qasm_qobj.py +72 -20
  180. qiskit/qobj/utils.py +9 -0
  181. qiskit/qpy/__init__.py +1 -1
  182. qiskit/qpy/binary_io/circuits.py +8 -5
  183. qiskit/qpy/binary_io/schedules.py +1 -1
  184. qiskit/qpy/binary_io/value.py +3 -3
  185. qiskit/qpy/interface.py +3 -2
  186. qiskit/qpy/type_keys.py +2 -2
  187. qiskit/quantum_info/operators/channel/quantum_channel.py +3 -6
  188. qiskit/quantum_info/operators/channel/superop.py +2 -2
  189. qiskit/quantum_info/operators/channel/transformations.py +1 -1
  190. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -4
  191. qiskit/quantum_info/operators/dihedral/dihedral_circuits.py +1 -3
  192. qiskit/quantum_info/operators/dihedral/random.py +6 -3
  193. qiskit/quantum_info/operators/measures.py +2 -2
  194. qiskit/quantum_info/operators/op_shape.py +12 -20
  195. qiskit/quantum_info/operators/operator.py +14 -21
  196. qiskit/quantum_info/operators/predicates.py +1 -0
  197. qiskit/quantum_info/operators/symplectic/base_pauli.py +7 -11
  198. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  199. qiskit/quantum_info/operators/symplectic/pauli.py +3 -3
  200. qiskit/quantum_info/operators/symplectic/pauli_list.py +9 -10
  201. qiskit/quantum_info/operators/symplectic/random.py +1 -1
  202. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +15 -17
  203. qiskit/quantum_info/quaternion.py +1 -1
  204. qiskit/quantum_info/states/densitymatrix.py +5 -8
  205. qiskit/quantum_info/states/stabilizerstate.py +128 -37
  206. qiskit/quantum_info/states/statevector.py +4 -8
  207. qiskit/result/counts.py +2 -2
  208. qiskit/result/mitigation/correlated_readout_mitigator.py +2 -2
  209. qiskit/result/mitigation/local_readout_mitigator.py +2 -2
  210. qiskit/result/mitigation/utils.py +1 -3
  211. qiskit/result/models.py +17 -16
  212. qiskit/result/result.py +15 -20
  213. qiskit/scheduler/lowering.py +2 -2
  214. qiskit/synthesis/__init__.py +2 -1
  215. qiskit/synthesis/clifford/__init__.py +1 -1
  216. qiskit/synthesis/clifford/clifford_decompose_ag.py +2 -2
  217. qiskit/synthesis/clifford/clifford_decompose_bm.py +10 -240
  218. qiskit/synthesis/clifford/clifford_decompose_greedy.py +9 -303
  219. qiskit/synthesis/clifford/clifford_decompose_layers.py +25 -23
  220. qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_full.py +1 -1
  221. qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_general.py +1 -1
  222. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +1 -1
  223. qiskit/synthesis/discrete_basis/solovay_kitaev.py +2 -2
  224. qiskit/synthesis/evolution/evolution_synthesis.py +4 -2
  225. qiskit/synthesis/evolution/lie_trotter.py +46 -19
  226. qiskit/synthesis/evolution/product_formula.py +111 -55
  227. qiskit/synthesis/evolution/qdrift.py +40 -10
  228. qiskit/synthesis/evolution/suzuki_trotter.py +43 -33
  229. qiskit/synthesis/linear/__init__.py +1 -0
  230. qiskit/synthesis/linear/cnot_synth.py +22 -96
  231. qiskit/synthesis/linear/linear_depth_lnn.py +8 -8
  232. qiskit/synthesis/linear/linear_matrix_utils.py +13 -161
  233. qiskit/synthesis/linear_phase/cnot_phase_synth.py +1 -1
  234. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +3 -3
  235. qiskit/synthesis/linear_phase/cz_depth_lnn.py +1 -1
  236. qiskit/synthesis/one_qubit/one_qubit_decompose.py +29 -29
  237. qiskit/synthesis/permutation/permutation_full.py +5 -29
  238. qiskit/synthesis/permutation/permutation_lnn.py +2 -24
  239. qiskit/synthesis/permutation/permutation_utils.py +2 -59
  240. qiskit/synthesis/qft/__init__.py +1 -0
  241. qiskit/synthesis/qft/qft_decompose_full.py +79 -0
  242. qiskit/synthesis/qft/qft_decompose_lnn.py +17 -9
  243. qiskit/synthesis/stabilizer/stabilizer_circuit.py +6 -6
  244. qiskit/synthesis/stabilizer/stabilizer_decompose.py +2 -2
  245. qiskit/synthesis/two_qubit/local_invariance.py +8 -38
  246. qiskit/synthesis/two_qubit/two_qubit_decompose.py +48 -129
  247. qiskit/synthesis/unitary/aqc/cnot_structures.py +1 -1
  248. qiskit/synthesis/unitary/qsd.py +5 -3
  249. qiskit/transpiler/__init__.py +1 -0
  250. qiskit/transpiler/basepasses.py +1 -1
  251. qiskit/transpiler/coupling.py +3 -3
  252. qiskit/transpiler/instruction_durations.py +1 -2
  253. qiskit/transpiler/layout.py +3 -3
  254. qiskit/transpiler/passes/__init__.py +2 -0
  255. qiskit/transpiler/passes/basis/basis_translator.py +84 -64
  256. qiskit/transpiler/passes/basis/translate_parameterized.py +3 -5
  257. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  258. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +10 -10
  259. qiskit/transpiler/passes/calibration/rx_builder.py +3 -3
  260. qiskit/transpiler/passes/calibration/rzx_builder.py +3 -3
  261. qiskit/transpiler/passes/layout/apply_layout.py +13 -3
  262. qiskit/transpiler/passes/layout/sabre_layout.py +10 -8
  263. qiskit/transpiler/passes/layout/sabre_pre_layout.py +4 -1
  264. qiskit/transpiler/passes/layout/set_layout.py +2 -2
  265. qiskit/transpiler/passes/layout/vf2_layout.py +1 -1
  266. qiskit/transpiler/passes/layout/vf2_utils.py +3 -3
  267. qiskit/transpiler/passes/optimization/__init__.py +1 -0
  268. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  269. qiskit/transpiler/passes/optimization/commutation_analysis.py +7 -10
  270. qiskit/transpiler/passes/optimization/commutative_cancellation.py +35 -19
  271. qiskit/transpiler/passes/optimization/consolidate_blocks.py +17 -8
  272. qiskit/transpiler/passes/optimization/inverse_cancellation.py +6 -6
  273. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +64 -41
  274. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  275. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +83 -0
  276. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +1 -1
  277. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +2 -2
  278. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -1
  279. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -2
  280. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  281. qiskit/transpiler/passes/routing/layout_transformation.py +2 -1
  282. qiskit/transpiler/passes/routing/sabre_swap.py +35 -26
  283. qiskit/transpiler/passes/routing/star_prerouting.py +80 -105
  284. qiskit/transpiler/passes/routing/stochastic_swap.py +1 -3
  285. qiskit/transpiler/passes/scheduling/alap.py +1 -2
  286. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -2
  287. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  288. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +2 -2
  289. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +1 -1
  290. qiskit/transpiler/passes/scheduling/asap.py +1 -2
  291. qiskit/transpiler/passes/scheduling/base_scheduler.py +5 -5
  292. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +3 -3
  293. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  294. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +20 -14
  295. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +7 -6
  296. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -3
  297. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +211 -36
  298. qiskit/transpiler/passes/synthesis/plugin.py +2 -2
  299. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +80 -40
  300. qiskit/transpiler/passes/utils/__init__.py +0 -1
  301. qiskit/transpiler/passes/utils/check_gate_direction.py +4 -4
  302. qiskit/transpiler/passes/utils/check_map.py +3 -6
  303. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +3 -4
  304. qiskit/transpiler/passes/utils/error.py +2 -2
  305. qiskit/transpiler/passes/utils/fixed_point.py +3 -3
  306. qiskit/transpiler/passes/utils/gate_direction.py +1 -1
  307. qiskit/transpiler/passes/utils/gates_basis.py +1 -2
  308. qiskit/transpiler/passmanager.py +7 -6
  309. qiskit/transpiler/preset_passmanagers/__init__.py +4 -228
  310. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +73 -18
  311. qiskit/transpiler/preset_passmanagers/common.py +3 -6
  312. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +518 -0
  313. qiskit/transpiler/preset_passmanagers/level0.py +1 -1
  314. qiskit/transpiler/target.py +27 -8
  315. qiskit/user_config.py +29 -6
  316. qiskit/utils/classtools.py +3 -3
  317. qiskit/utils/deprecation.py +3 -2
  318. qiskit/utils/lazy_tester.py +2 -2
  319. qiskit/utils/optionals.py +8 -8
  320. qiskit/visualization/bloch.py +18 -23
  321. qiskit/visualization/circuit/_utils.py +34 -10
  322. qiskit/visualization/circuit/circuit_visualization.py +23 -16
  323. qiskit/visualization/circuit/latex.py +29 -27
  324. qiskit/visualization/circuit/matplotlib.py +4 -2
  325. qiskit/visualization/circuit/qcstyle.py +2 -2
  326. qiskit/visualization/circuit/text.py +9 -15
  327. qiskit/visualization/dag_visualization.py +2 -2
  328. qiskit/visualization/pulse_v2/core.py +1 -1
  329. qiskit/visualization/pulse_v2/events.py +1 -1
  330. qiskit/visualization/pulse_v2/generators/frame.py +3 -4
  331. qiskit/visualization/pulse_v2/generators/waveform.py +5 -9
  332. qiskit/visualization/pulse_v2/layouts.py +1 -5
  333. qiskit/visualization/pulse_v2/plotters/matplotlib.py +1 -2
  334. qiskit/visualization/state_visualization.py +5 -6
  335. qiskit/visualization/timeline/plotters/matplotlib.py +1 -2
  336. qiskit/visualization/transition_visualization.py +7 -2
  337. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/METADATA +12 -12
  338. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/RECORD +342 -340
  339. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/entry_points.txt +3 -0
  340. qiskit/transpiler/passes/utils/block_to_matrix.py +0 -47
  341. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/LICENSE.txt +0 -0
  342. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/WHEEL +0 -0
  343. {qiskit-1.1.2.dist-info → qiskit-1.2.0.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,7 @@ from typing import List, Union, Iterable, Tuple
23
23
  from qiskit.providers.provider import Provider
24
24
  from qiskit.providers.models.backendstatus import BackendStatus
25
25
  from qiskit.circuit.gate import Instruction
26
+ from qiskit.utils import deprecate_func
26
27
 
27
28
 
28
29
  class Backend:
@@ -43,7 +44,7 @@ class BackendV1(Backend, ABC):
43
44
  This abstract class is to be used for Backend objects.
44
45
  There are several classes of information contained in a Backend.
45
46
  The first are the attributes of the class itself. These should be used to
46
- defined the immutable characteristics of the backend. The ``options``
47
+ define the immutable characteristics of the backend. The ``options``
47
48
  attribute of the backend is used to contain the dynamic user configurable
48
49
  options of the backend. It should be used more for runtime options
49
50
  that configure how the backend is used. For example, something like a
@@ -71,6 +72,14 @@ class BackendV1(Backend, ABC):
71
72
 
72
73
  version = 1
73
74
 
75
+ @deprecate_func(
76
+ since="1.2",
77
+ removal_timeline="in the 2.0 release",
78
+ additional_msg="If the backend only encapsulates a hardware description, "
79
+ "consider constructing a Target directly. If it is part of a provider "
80
+ "that gives access to execution, consider using Primitives instead. "
81
+ "Alternatively, consider moving to BackendV2 (see https://qisk.it/backendV1-to-V2).",
82
+ )
74
83
  def __init__(self, configuration, provider=None, **fields):
75
84
  """Initialize a backend class
76
85
 
@@ -86,7 +95,7 @@ class BackendV1(Backend, ABC):
86
95
 
87
96
  ..
88
97
  This next bit is necessary just because autosummary generally won't summarise private
89
- methods; changing that behaviour would have annoying knock-on effects through all the
98
+ methods; changing that behavior would have annoying knock-on effects through all the
90
99
  rest of the documentation, so instead we just hard-code the automethod directive.
91
100
  """
92
101
  self._configuration = configuration
@@ -95,7 +104,7 @@ class BackendV1(Backend, ABC):
95
104
  if fields:
96
105
  for field in fields:
97
106
  if field not in self._options.data:
98
- raise AttributeError("Options field %s is not valid for this backend" % field)
107
+ raise AttributeError(f"Options field {field} is not valid for this backend")
99
108
  self._options.update_config(**fields)
100
109
 
101
110
  @classmethod
@@ -129,7 +138,7 @@ class BackendV1(Backend, ABC):
129
138
  """
130
139
  for field in fields:
131
140
  if not hasattr(self._options, field):
132
- raise AttributeError("Options field %s is not valid for this backend" % field)
141
+ raise AttributeError(f"Options field {field} is not valid for this backend")
133
142
  self._options.update_options(**fields)
134
143
 
135
144
  def configuration(self):
@@ -352,7 +361,7 @@ class BackendV2(Backend, ABC):
352
361
  if fields:
353
362
  for field in fields:
354
363
  if field not in self._options.data:
355
- raise AttributeError("Options field %s is not valid for this backend" % field)
364
+ raise AttributeError(f"Options field {field} is not valid for this backend")
356
365
  self._options.update_config(**fields)
357
366
  self.name = name
358
367
  """Name of the backend."""
@@ -598,7 +607,7 @@ class BackendV2(Backend, ABC):
598
607
  """
599
608
  for field in fields:
600
609
  if not hasattr(self._options, field):
601
- raise AttributeError("Options field %s is not valid for this backend" % field)
610
+ raise AttributeError(f"Options field {field} is not valid for this backend")
602
611
  self._options.update_options(**fields)
603
612
 
604
613
  @property
@@ -390,10 +390,13 @@ class BackendV2Converter(BackendV2):
390
390
  self._properties = None
391
391
  self._defaults = None
392
392
 
393
- if hasattr(self._backend, "properties"):
394
- self._properties = self._backend.properties()
395
- if hasattr(self._backend, "defaults"):
396
- self._defaults = self._backend.defaults()
393
+ with warnings.catch_warnings():
394
+ # The class QobjExperimentHeader is deprecated
395
+ warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
396
+ if hasattr(self._backend, "properties"):
397
+ self._properties = self._backend.properties()
398
+ if hasattr(self._backend, "defaults"):
399
+ self._defaults = self._backend.defaults()
397
400
 
398
401
  self._target = None
399
402
  self._name_mapping = name_mapping
@@ -66,7 +66,7 @@ def single_gate_matrix(gate: str, params: list[float] | None = None) -> np.ndarr
66
66
  if gate in SINGLE_QUBIT_GATES:
67
67
  gc = SINGLE_QUBIT_GATES[gate]
68
68
  else:
69
- raise QiskitError("Gate is not a valid basis gate for this simulator: %s" % gate)
69
+ raise QiskitError(f"Gate is not a valid basis gate for this simulator: {gate}")
70
70
 
71
71
  return gc(*params).to_matrix()
72
72
 
@@ -43,7 +43,7 @@ from qiskit.circuit.library import UnitaryGate
43
43
  from qiskit.circuit.library.standard_gates import get_standard_gate_name_mapping, GlobalPhaseGate
44
44
  from qiskit.providers import Provider
45
45
  from qiskit.providers.backend import BackendV2
46
- from qiskit.providers.models import BackendConfiguration
46
+ from qiskit.providers.models.backendconfiguration import BackendConfiguration
47
47
  from qiskit.providers.options import Options
48
48
  from qiskit.qobj import QasmQobj, QasmQobjConfig, QasmQobjExperiment
49
49
  from qiskit.result import Result
@@ -208,7 +208,7 @@ class BasicSimulator(BackendV2):
208
208
  target.add_instruction(UnitaryGate, name="unitary")
209
209
  else:
210
210
  raise BasicProviderError(
211
- "Gate is not a valid basis gate for this simulator: %s" % name
211
+ f"Gate is not a valid basis gate for this simulator: {name}"
212
212
  )
213
213
  return target
214
214
 
@@ -236,24 +236,32 @@ class BasicSimulator(BackendV2):
236
236
  for name in self.target.operation_names
237
237
  ]
238
238
 
239
- self._configuration = BackendConfiguration(
240
- backend_name=self.name,
241
- backend_version=self.backend_version,
242
- n_qubits=self.num_qubits,
243
- basis_gates=self.target.operation_names,
244
- gates=gates,
245
- local=True,
246
- simulator=True,
247
- conditional=True,
248
- open_pulse=False,
249
- memory=True,
250
- # This max_shots is used by the assembler, setting it to 0
251
- # to maintain the behavior from the previous implementation.
252
- # Not related to the actual shots set in the backend options
253
- max_shots=0,
254
- coupling_map=None,
255
- description="A python simulator for quantum experiments",
256
- )
239
+ with warnings.catch_warnings():
240
+ # TODO Provider models are deprecated
241
+ # https://github.com/Qiskit/qiskit/issues/12843
242
+ warnings.filterwarnings(
243
+ "ignore",
244
+ category=DeprecationWarning,
245
+ message=r".+qiskit\.providers\.models\.backendconfiguration\..+",
246
+ )
247
+ self._configuration = BackendConfiguration(
248
+ backend_name=self.name,
249
+ backend_version=self.backend_version,
250
+ n_qubits=self.num_qubits,
251
+ basis_gates=self.target.operation_names,
252
+ gates=gates,
253
+ local=True,
254
+ simulator=True,
255
+ conditional=True,
256
+ open_pulse=False,
257
+ memory=True,
258
+ # This max_shots is used by the assembler, setting it to 0
259
+ # to maintain the behavior from the previous implementation.
260
+ # Not related to the actual shots set in the backend options
261
+ max_shots=0,
262
+ coupling_map=None,
263
+ description="A python simulator for quantum experiments",
264
+ )
257
265
  return self._configuration
258
266
 
259
267
  @classmethod
@@ -525,17 +533,17 @@ class BasicSimulator(BackendV2):
525
533
  }
526
534
  """
527
535
  # TODO: replace assemble with new run flow
528
- from qiskit.compiler import assemble
536
+ from qiskit.compiler.assembler import _assemble
529
537
 
530
538
  out_options = {}
531
- for key in backend_options:
539
+ for key, value in backend_options.items():
532
540
  if not hasattr(self.options, key):
533
541
  warnings.warn(
534
- "Option %s is not used by this backend" % key, UserWarning, stacklevel=2
542
+ f"Option {key} is not used by this backend", UserWarning, stacklevel=2
535
543
  )
536
544
  else:
537
- out_options[key] = backend_options[key]
538
- qobj = assemble(run_input, self, **out_options)
545
+ out_options[key] = value
546
+ qobj = _assemble(run_input, self, **out_options)
539
547
  qobj_options = qobj.config
540
548
  self._set_options(qobj_config=qobj_options, backend_options=backend_options)
541
549
  job_id = str(uuid.uuid4())
@@ -23,7 +23,7 @@ from qiskit.providers.models import BackendProperties
23
23
  from qiskit.providers import BackendV1
24
24
  from qiskit import pulse
25
25
  from qiskit.exceptions import QiskitError
26
- from qiskit.utils import optionals as _optionals
26
+ from qiskit.utils import optionals as _optionals, deprecate_func
27
27
  from qiskit.providers import basic_provider
28
28
 
29
29
 
@@ -39,6 +39,13 @@ class _Credentials:
39
39
  class FakeBackend(BackendV1):
40
40
  """This is a dummy backend just for testing purposes."""
41
41
 
42
+ @deprecate_func(
43
+ since="1.2",
44
+ removal_timeline="in the 2.0 release",
45
+ additional_msg="Fake backends using BackendV1 are deprecated in favor of "
46
+ ":class:`.GenericBackendV2`. You can convert BackendV1 to "
47
+ ":class:`.BackendV2` with :class:`.BackendV2Converter`.",
48
+ )
42
49
  def __init__(self, configuration, time_alive=10):
43
50
  """FakeBackend initializer.
44
51
 
@@ -143,8 +150,8 @@ class FakeBackend(BackendV1):
143
150
  pulse_job = False
144
151
  if pulse_job is None:
145
152
  raise QiskitError(
146
- "Invalid input object %s, must be either a "
147
- "QuantumCircuit, Schedule, or a list of either" % circuits
153
+ f"Invalid input object {circuits}, must be either a "
154
+ "QuantumCircuit, Schedule, or a list of either"
148
155
  )
149
156
  if pulse_job:
150
157
  raise QiskitError("Pulse simulation is currently not supported for fake backends.")
@@ -14,15 +14,16 @@
14
14
  Fake backend supporting OpenPulse.
15
15
  """
16
16
  import datetime
17
+ import warnings
17
18
 
18
- from qiskit.providers.models import (
19
+ from qiskit.providers.models.backendconfiguration import (
19
20
  GateConfig,
20
21
  PulseBackendConfiguration,
21
- PulseDefaults,
22
- Command,
23
22
  UchannelLO,
24
23
  )
24
+
25
25
  from qiskit.providers.models.backendproperties import Nduv, Gate, BackendProperties
26
+ from qiskit.providers.models.pulsedefaults import PulseDefaults, Command
26
27
  from qiskit.qobj import PulseQobjInstruction
27
28
 
28
29
  from .fake_backend import FakeBackend
@@ -126,152 +127,159 @@ class FakeOpenPulse2Q(FakeBackend):
126
127
  description="A fake test backend with pulse defaults",
127
128
  )
128
129
 
129
- self._defaults = PulseDefaults.from_dict(
130
- {
131
- "qubit_freq_est": [4.9, 5.0],
132
- "meas_freq_est": [6.5, 6.6],
133
- "buffer": 10,
134
- "pulse_library": [
135
- {"name": "x90p_d0", "samples": 2 * [0.1 + 0j]},
136
- {"name": "x90p_d1", "samples": 2 * [0.1 + 0j]},
137
- {"name": "x90m_d0", "samples": 2 * [-0.1 + 0j]},
138
- {"name": "x90m_d1", "samples": 2 * [-0.1 + 0j]},
139
- {"name": "y90p_d0", "samples": 2 * [0.1j]},
140
- {"name": "y90p_d1", "samples": 2 * [0.1j]},
141
- {"name": "xp_d0", "samples": 2 * [0.2 + 0j]},
142
- {"name": "ym_d0", "samples": 2 * [-0.2j]},
143
- {"name": "cr90p_u0", "samples": 9 * [0.1 + 0j]},
144
- {"name": "cr90m_u0", "samples": 9 * [-0.1 + 0j]},
145
- {"name": "measure_m0", "samples": 10 * [0.1 + 0j]},
146
- {"name": "measure_m1", "samples": 10 * [0.1 + 0j]},
147
- ],
148
- "cmd_def": [
149
- Command.from_dict(
150
- {
151
- "name": "u1",
152
- "qubits": [0],
153
- "sequence": [
154
- PulseQobjInstruction(
155
- name="fc", ch="d0", t0=0, phase="-P0"
156
- ).to_dict()
157
- ],
158
- }
159
- ).to_dict(),
160
- Command.from_dict(
161
- {
162
- "name": "u1",
163
- "qubits": [1],
164
- "sequence": [
165
- PulseQobjInstruction(
166
- name="fc", ch="d1", t0=0, phase="-P0"
167
- ).to_dict()
168
- ],
169
- }
170
- ).to_dict(),
171
- Command.from_dict(
172
- {
173
- "name": "u2",
174
- "qubits": [0],
175
- "sequence": [
176
- PulseQobjInstruction(
177
- name="fc", ch="d0", t0=0, phase="-P1"
178
- ).to_dict(),
179
- PulseQobjInstruction(name="y90p_d0", ch="d0", t0=0).to_dict(),
180
- PulseQobjInstruction(
181
- name="fc", ch="d0", t0=2, phase="-P0"
182
- ).to_dict(),
183
- ],
184
- }
185
- ).to_dict(),
186
- Command.from_dict(
187
- {
188
- "name": "u2",
189
- "qubits": [1],
190
- "sequence": [
191
- PulseQobjInstruction(
192
- name="fc", ch="d1", t0=0, phase="-P1"
193
- ).to_dict(),
194
- PulseQobjInstruction(name="y90p_d1", ch="d1", t0=0).to_dict(),
195
- PulseQobjInstruction(
196
- name="fc", ch="d1", t0=2, phase="-P0"
197
- ).to_dict(),
198
- ],
199
- }
200
- ).to_dict(),
201
- Command.from_dict(
202
- {
203
- "name": "u3",
204
- "qubits": [0],
205
- "sequence": [
206
- PulseQobjInstruction(
207
- name="fc", ch="d0", t0=0, phase="-P2"
208
- ).to_dict(),
209
- PulseQobjInstruction(name="x90p_d0", ch="d0", t0=0).to_dict(),
210
- PulseQobjInstruction(
211
- name="fc", ch="d0", t0=2, phase="-P0"
212
- ).to_dict(),
213
- PulseQobjInstruction(name="x90m_d0", ch="d0", t0=2).to_dict(),
214
- PulseQobjInstruction(
215
- name="fc", ch="d0", t0=4, phase="-P1"
216
- ).to_dict(),
217
- ],
218
- }
219
- ).to_dict(),
220
- Command.from_dict(
221
- {
222
- "name": "u3",
223
- "qubits": [1],
224
- "sequence": [
225
- PulseQobjInstruction(
226
- name="fc", ch="d1", t0=0, phase="-P2"
227
- ).to_dict(),
228
- PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(),
229
- PulseQobjInstruction(
230
- name="fc", ch="d1", t0=2, phase="-P0"
231
- ).to_dict(),
232
- PulseQobjInstruction(name="x90m_d1", ch="d1", t0=2).to_dict(),
233
- PulseQobjInstruction(
234
- name="fc", ch="d1", t0=4, phase="-P1"
235
- ).to_dict(),
236
- ],
237
- }
238
- ).to_dict(),
239
- Command.from_dict(
240
- {
241
- "name": "cx",
242
- "qubits": [0, 1],
243
- "sequence": [
244
- PulseQobjInstruction(
245
- name="fc", ch="d0", t0=0, phase=1.57
246
- ).to_dict(),
247
- PulseQobjInstruction(name="ym_d0", ch="d0", t0=0).to_dict(),
248
- PulseQobjInstruction(name="xp_d0", ch="d0", t0=11).to_dict(),
249
- PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(),
250
- PulseQobjInstruction(name="cr90p_u0", ch="u0", t0=2).to_dict(),
251
- PulseQobjInstruction(name="cr90m_u0", ch="u0", t0=13).to_dict(),
252
- ],
253
- }
254
- ).to_dict(),
255
- Command.from_dict(
256
- {
257
- "name": "measure",
258
- "qubits": [0, 1],
259
- "sequence": [
260
- PulseQobjInstruction(name="measure_m0", ch="m0", t0=0).to_dict(),
261
- PulseQobjInstruction(name="measure_m1", ch="m1", t0=0).to_dict(),
262
- PulseQobjInstruction(
263
- name="acquire",
264
- duration=10,
265
- t0=0,
266
- qubits=[0, 1],
267
- memory_slot=[0, 1],
268
- ).to_dict(),
269
- ],
270
- }
271
- ).to_dict(),
272
- ],
273
- }
274
- )
130
+ with warnings.catch_warnings():
131
+ # The class PulseQobjInstruction is deprecated
132
+ warnings.filterwarnings("ignore", category=DeprecationWarning, module="qiskit")
133
+ self._defaults = PulseDefaults.from_dict(
134
+ {
135
+ "qubit_freq_est": [4.9, 5.0],
136
+ "meas_freq_est": [6.5, 6.6],
137
+ "buffer": 10,
138
+ "pulse_library": [
139
+ {"name": "x90p_d0", "samples": 2 * [0.1 + 0j]},
140
+ {"name": "x90p_d1", "samples": 2 * [0.1 + 0j]},
141
+ {"name": "x90m_d0", "samples": 2 * [-0.1 + 0j]},
142
+ {"name": "x90m_d1", "samples": 2 * [-0.1 + 0j]},
143
+ {"name": "y90p_d0", "samples": 2 * [0.1j]},
144
+ {"name": "y90p_d1", "samples": 2 * [0.1j]},
145
+ {"name": "xp_d0", "samples": 2 * [0.2 + 0j]},
146
+ {"name": "ym_d0", "samples": 2 * [-0.2j]},
147
+ {"name": "cr90p_u0", "samples": 9 * [0.1 + 0j]},
148
+ {"name": "cr90m_u0", "samples": 9 * [-0.1 + 0j]},
149
+ {"name": "measure_m0", "samples": 10 * [0.1 + 0j]},
150
+ {"name": "measure_m1", "samples": 10 * [0.1 + 0j]},
151
+ ],
152
+ "cmd_def": [
153
+ Command.from_dict(
154
+ {
155
+ "name": "u1",
156
+ "qubits": [0],
157
+ "sequence": [
158
+ PulseQobjInstruction(
159
+ name="fc", ch="d0", t0=0, phase="-P0"
160
+ ).to_dict()
161
+ ],
162
+ }
163
+ ).to_dict(),
164
+ Command.from_dict(
165
+ {
166
+ "name": "u1",
167
+ "qubits": [1],
168
+ "sequence": [
169
+ PulseQobjInstruction(
170
+ name="fc", ch="d1", t0=0, phase="-P0"
171
+ ).to_dict()
172
+ ],
173
+ }
174
+ ).to_dict(),
175
+ Command.from_dict(
176
+ {
177
+ "name": "u2",
178
+ "qubits": [0],
179
+ "sequence": [
180
+ PulseQobjInstruction(
181
+ name="fc", ch="d0", t0=0, phase="-P1"
182
+ ).to_dict(),
183
+ PulseQobjInstruction(name="y90p_d0", ch="d0", t0=0).to_dict(),
184
+ PulseQobjInstruction(
185
+ name="fc", ch="d0", t0=2, phase="-P0"
186
+ ).to_dict(),
187
+ ],
188
+ }
189
+ ).to_dict(),
190
+ Command.from_dict(
191
+ {
192
+ "name": "u2",
193
+ "qubits": [1],
194
+ "sequence": [
195
+ PulseQobjInstruction(
196
+ name="fc", ch="d1", t0=0, phase="-P1"
197
+ ).to_dict(),
198
+ PulseQobjInstruction(name="y90p_d1", ch="d1", t0=0).to_dict(),
199
+ PulseQobjInstruction(
200
+ name="fc", ch="d1", t0=2, phase="-P0"
201
+ ).to_dict(),
202
+ ],
203
+ }
204
+ ).to_dict(),
205
+ Command.from_dict(
206
+ {
207
+ "name": "u3",
208
+ "qubits": [0],
209
+ "sequence": [
210
+ PulseQobjInstruction(
211
+ name="fc", ch="d0", t0=0, phase="-P2"
212
+ ).to_dict(),
213
+ PulseQobjInstruction(name="x90p_d0", ch="d0", t0=0).to_dict(),
214
+ PulseQobjInstruction(
215
+ name="fc", ch="d0", t0=2, phase="-P0"
216
+ ).to_dict(),
217
+ PulseQobjInstruction(name="x90m_d0", ch="d0", t0=2).to_dict(),
218
+ PulseQobjInstruction(
219
+ name="fc", ch="d0", t0=4, phase="-P1"
220
+ ).to_dict(),
221
+ ],
222
+ }
223
+ ).to_dict(),
224
+ Command.from_dict(
225
+ {
226
+ "name": "u3",
227
+ "qubits": [1],
228
+ "sequence": [
229
+ PulseQobjInstruction(
230
+ name="fc", ch="d1", t0=0, phase="-P2"
231
+ ).to_dict(),
232
+ PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(),
233
+ PulseQobjInstruction(
234
+ name="fc", ch="d1", t0=2, phase="-P0"
235
+ ).to_dict(),
236
+ PulseQobjInstruction(name="x90m_d1", ch="d1", t0=2).to_dict(),
237
+ PulseQobjInstruction(
238
+ name="fc", ch="d1", t0=4, phase="-P1"
239
+ ).to_dict(),
240
+ ],
241
+ }
242
+ ).to_dict(),
243
+ Command.from_dict(
244
+ {
245
+ "name": "cx",
246
+ "qubits": [0, 1],
247
+ "sequence": [
248
+ PulseQobjInstruction(
249
+ name="fc", ch="d0", t0=0, phase=1.57
250
+ ).to_dict(),
251
+ PulseQobjInstruction(name="ym_d0", ch="d0", t0=0).to_dict(),
252
+ PulseQobjInstruction(name="xp_d0", ch="d0", t0=11).to_dict(),
253
+ PulseQobjInstruction(name="x90p_d1", ch="d1", t0=0).to_dict(),
254
+ PulseQobjInstruction(name="cr90p_u0", ch="u0", t0=2).to_dict(),
255
+ PulseQobjInstruction(name="cr90m_u0", ch="u0", t0=13).to_dict(),
256
+ ],
257
+ }
258
+ ).to_dict(),
259
+ Command.from_dict(
260
+ {
261
+ "name": "measure",
262
+ "qubits": [0, 1],
263
+ "sequence": [
264
+ PulseQobjInstruction(
265
+ name="measure_m0", ch="m0", t0=0
266
+ ).to_dict(),
267
+ PulseQobjInstruction(
268
+ name="measure_m1", ch="m1", t0=0
269
+ ).to_dict(),
270
+ PulseQobjInstruction(
271
+ name="acquire",
272
+ duration=10,
273
+ t0=0,
274
+ qubits=[0, 1],
275
+ memory_slot=[0, 1],
276
+ ).to_dict(),
277
+ ],
278
+ }
279
+ ).to_dict(),
280
+ ],
281
+ }
282
+ )
275
283
 
276
284
  mock_time = datetime.datetime.now()
277
285
  dt = 1.3333