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
@@ -371,7 +371,7 @@ class MatplotlibDrawer:
371
371
  # Once the scaling factor has been determined, the global phase, register names
372
372
  # and numbers, wires, and gates are drawn
373
373
  if self._global_phase:
374
- plt_mod.text(xl, yt, "Global Phase: %s" % pi_check(self._global_phase, output="mpl"))
374
+ plt_mod.text(xl, yt, f"Global Phase: {pi_check(self._global_phase, output='mpl')}")
375
375
  self._draw_regs_wires(num_folds, xmax, max_x_index, qubits_dict, clbits_dict, glob_data)
376
376
  self._draw_ops(
377
377
  self._nodes,
@@ -893,7 +893,7 @@ class MatplotlibDrawer:
893
893
  this_clbit_dict = {}
894
894
  for clbit in clbits_dict.values():
895
895
  y = clbit["y"] - fold_num * (glob_data["n_lines"] + 1)
896
- if y not in this_clbit_dict.keys():
896
+ if y not in this_clbit_dict:
897
897
  this_clbit_dict[y] = {
898
898
  "val": 1,
899
899
  "wire_label": clbit["wire_label"],
@@ -1584,6 +1584,8 @@ class MatplotlibDrawer:
1584
1584
  flow_text = " For"
1585
1585
  elif isinstance(node.op, SwitchCaseOp):
1586
1586
  flow_text = "Switch"
1587
+ else:
1588
+ flow_text = node.op.name
1587
1589
 
1588
1590
  # Some spacers. op_spacer moves 'Switch' back a bit for alignment,
1589
1591
  # expr_spacer moves the expr over to line up with 'Switch' and
@@ -72,7 +72,7 @@ class StyleDict(dict):
72
72
 
73
73
  def __setitem__(self, key: Any, value: Any) -> None:
74
74
  # allow using field abbreviations
75
- if key in self.ABBREVIATIONS.keys():
75
+ if key in self.ABBREVIATIONS:
76
76
  key = self.ABBREVIATIONS[key]
77
77
 
78
78
  if key not in self.VALID_FIELDS:
@@ -85,7 +85,7 @@ class StyleDict(dict):
85
85
 
86
86
  def __getitem__(self, key: Any) -> Any:
87
87
  # allow using field abbreviations
88
- if key in self.ABBREVIATIONS.keys():
88
+ if key in self.ABBREVIATIONS:
89
89
  key = self.ABBREVIATIONS[key]
90
90
 
91
91
  return super().__getitem__(key)
@@ -739,13 +739,7 @@ class TextDrawing:
739
739
  self._wire_map = {}
740
740
  self.cregbundle = cregbundle
741
741
 
742
- if encoding:
743
- self.encoding = encoding
744
- else:
745
- if sys.stdout.encoding:
746
- self.encoding = sys.stdout.encoding
747
- else:
748
- self.encoding = "utf8"
742
+ self.encoding = encoding or sys.stdout.encoding or "utf8"
749
743
 
750
744
  self._nest_depth = 0 # nesting depth for control flow ops
751
745
  self._expr_text = "" # expression text to display
@@ -765,7 +759,7 @@ class TextDrawing:
765
759
  "background: #fff0;"
766
760
  "line-height: 1.1;"
767
761
  'font-family: "Courier New",Courier,monospace">'
768
- "%s</pre>" % self.single_string()
762
+ f"{self.single_string()}</pre>"
769
763
  )
770
764
 
771
765
  def __repr__(self):
@@ -786,8 +780,9 @@ class TextDrawing:
786
780
  )
787
781
  except (UnicodeEncodeError, UnicodeDecodeError):
788
782
  warn(
789
- "The encoding %s has a limited charset. Consider a different encoding in your "
790
- "environment. UTF-8 is being used instead" % self.encoding,
783
+ f"The encoding {self.encoding} has a limited charset."
784
+ " Consider a different encoding in your "
785
+ "environment. UTF-8 is being used instead",
791
786
  RuntimeWarning,
792
787
  )
793
788
  self.encoding = "utf-8"
@@ -867,7 +862,7 @@ class TextDrawing:
867
862
  lines = []
868
863
 
869
864
  if self.global_phase:
870
- lines.append("global phase: %s" % pi_check(self.global_phase, ndigits=5))
865
+ lines.append(f"global phase: {pi_check(self.global_phase, ndigits=5)}")
871
866
 
872
867
  for layer_group in layer_groups:
873
868
  wires = list(zip(*layer_group))
@@ -894,10 +889,9 @@ class TextDrawing:
894
889
 
895
890
  self._wire_map = get_wire_map(self._circuit, (self.qubits + self.clbits), self.cregbundle)
896
891
  wire_labels = []
897
- for wire in self._wire_map:
892
+ for wire, index in self._wire_map.items():
898
893
  if isinstance(wire, ClassicalRegister):
899
894
  register = wire
900
- index = self._wire_map[wire]
901
895
  else:
902
896
  register, bit_index, reg_index = get_bit_reg_index(self._circuit, wire)
903
897
  index = bit_index if register is None else reg_index
@@ -1175,7 +1169,7 @@ class TextDrawing:
1175
1169
 
1176
1170
  elif isinstance(op, RZZGate):
1177
1171
  # rzz
1178
- connection_label = "ZZ%s" % params
1172
+ connection_label = f"ZZ{params}"
1179
1173
  gates = [Bullet(conditional=conditional), Bullet(conditional=conditional)]
1180
1174
  add_connected_gate(node, gates, layer, current_cons, gate_wire_map)
1181
1175
 
@@ -1218,7 +1212,7 @@ class TextDrawing:
1218
1212
  add_connected_gate(node, gates, layer, current_cons, gate_wire_map)
1219
1213
  elif base_gate.name == "rzz":
1220
1214
  # crzz
1221
- connection_label = "ZZ%s" % params
1215
+ connection_label = f"ZZ{params}"
1222
1216
  gates += [Bullet(conditional=conditional), Bullet(conditional=conditional)]
1223
1217
  elif len(rest) > 1:
1224
1218
  top_connect = "┴" if controlled_top else None
@@ -152,7 +152,7 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
152
152
  n["fillcolor"] = "lightblue"
153
153
  return n
154
154
  else:
155
- raise VisualizationError("Unrecognized style %s for the dag_drawer." % style)
155
+ raise VisualizationError(f"Unrecognized style {style} for the dag_drawer.")
156
156
 
157
157
  edge_attr_func = None
158
158
 
@@ -202,7 +202,7 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
202
202
  n["fillcolor"] = "red"
203
203
  return n
204
204
  else:
205
- raise VisualizationError("Invalid style %s" % style)
205
+ raise VisualizationError(f"Invalid style {style}")
206
206
 
207
207
  def edge_attr_func(edge):
208
208
  e = {}
@@ -220,7 +220,7 @@ class DrawerCanvas:
220
220
  elif isinstance(program, (pulse.Waveform, pulse.SymbolicPulse)):
221
221
  self._waveform_loader(program)
222
222
  else:
223
- raise VisualizationError("Data type %s is not supported." % type(program))
223
+ raise VisualizationError(f"Data type {type(program)} is not supported.")
224
224
 
225
225
  # update time range
226
226
  self.set_time_range(0, program.duration, seconds=False)
@@ -196,7 +196,7 @@ class ChannelEvents:
196
196
 
197
197
  def get_frame_changes(self) -> Iterator[PulseInstruction]:
198
198
  """Return frame change type instructions with total frame change amount."""
199
- # TODO parse parametrised FCs correctly
199
+ # TODO parse parametrized FCs correctly
200
200
 
201
201
  sorted_frame_changes = sorted(self._frames.items(), key=lambda x: x[0])
202
202
 
@@ -264,10 +264,9 @@ def gen_raw_operand_values_compact(
264
264
  freq_sci_notation = "0.0"
265
265
  else:
266
266
  abs_freq = np.abs(data.frame.freq)
267
- freq_sci_notation = "{base:.1f}e{exp:d}".format(
268
- base=data.frame.freq / (10 ** int(np.floor(np.log10(abs_freq)))),
269
- exp=int(np.floor(np.log10(abs_freq))),
270
- )
267
+ base = data.frame.freq / (10 ** int(np.floor(np.log10(abs_freq))))
268
+ exponent = int(np.floor(np.log10(abs_freq)))
269
+ freq_sci_notation = f"{base:.1f}e{exponent:d}"
271
270
  frame_info = f"{data.frame.phase:.2f}\n{freq_sci_notation}"
272
271
 
273
272
  text = drawings.TextData(
@@ -203,11 +203,10 @@ def gen_ibmq_latex_waveform_name(
203
203
  if frac.numerator == 1:
204
204
  angle = rf"\pi/{frac.denominator:d}"
205
205
  else:
206
- angle = r"{num:d}/{denom:d} \pi".format(
207
- num=frac.numerator, denom=frac.denominator
208
- )
206
+ angle = rf"{frac.numerator:d}/{frac.denominator:d} \pi"
209
207
  else:
210
208
  # single qubit pulse
209
+ # pylint: disable-next=consider-using-f-string
211
210
  op_name = r"{{\rm {}}}".format(match_dict["op"])
212
211
  angle_val = match_dict["angle"]
213
212
  if angle_val is None:
@@ -217,9 +216,7 @@ def gen_ibmq_latex_waveform_name(
217
216
  if frac.numerator == 1:
218
217
  angle = rf"\pi/{frac.denominator:d}"
219
218
  else:
220
- angle = r"{num:d}/{denom:d} \pi".format(
221
- num=frac.numerator, denom=frac.denominator
222
- )
219
+ angle = rf"{frac.numerator:d}/{frac.denominator:d} \pi"
223
220
  latex_name = rf"{op_name}({sign}{angle})"
224
221
  else:
225
222
  latex_name = None
@@ -490,7 +487,7 @@ def _draw_opaque_waveform(
490
487
  fill_objs.append(box_obj)
491
488
 
492
489
  # parameter name
493
- func_repr = "{func}({params})".format(func=pulse_shape, params=", ".join(pnames))
490
+ func_repr = f"{pulse_shape}({', '.join(pnames)})"
494
491
 
495
492
  text_style = {
496
493
  "zorder": formatter["layer.annotate"],
@@ -630,8 +627,7 @@ def _parse_waveform(
630
627
  meta.update(acq_data)
631
628
  else:
632
629
  raise VisualizationError(
633
- "Unsupported instruction {inst} by "
634
- "filled envelope.".format(inst=inst.__class__.__name__)
630
+ f"Unsupported instruction {inst.__class__.__name__} by " "filled envelope."
635
631
  )
636
632
 
637
633
  meta.update(
@@ -373,11 +373,7 @@ def detail_title(program: Union[pulse.Waveform, pulse.Schedule], device: DrawerB
373
373
 
374
374
  # add program duration
375
375
  dt = device.dt * 1e9 if device.dt else 1.0
376
- title_str.append(
377
- "Duration: {dur:.1f} {unit}".format(
378
- dur=program.duration * dt, unit="ns" if device.dt else "dt"
379
- )
380
- )
376
+ title_str.append(f"Duration: {program.duration * dt:.1f} {'ns' if device.dt else 'dt'}")
381
377
 
382
378
  # add device name
383
379
  if device.backend_name != "no-backend":
@@ -119,8 +119,7 @@ class Mpl2DPlotter(BasePlotter):
119
119
  self.ax.add_patch(box)
120
120
  else:
121
121
  raise VisualizationError(
122
- "Data {name} is not supported "
123
- "by {plotter}".format(name=data, plotter=self.__class__.__name__)
122
+ f"Data {data} is not supported " f"by {self.__class__.__name__}"
124
123
  )
125
124
  # axis break
126
125
  for pos in axis_config.axis_break_pos:
@@ -971,10 +971,10 @@ def plot_state_qsphere(
971
971
  if show_state_phases:
972
972
  element_angle = (np.angle(state[i]) + (np.pi * 4)) % (np.pi * 2)
973
973
  if use_degrees:
974
- element_text += "\n$%.1f^\\circ$" % (element_angle * 180 / np.pi)
974
+ element_text += f"\n${element_angle * 180 / np.pi:.1f}^\\circ$"
975
975
  else:
976
976
  element_angle = pi_check(element_angle, ndigits=3).replace("pi", "\\pi")
977
- element_text += "\n$%s$" % (element_angle)
977
+ element_text += f"\n${element_angle}$"
978
978
  ax.text(
979
979
  xvalue_text,
980
980
  yvalue_text,
@@ -1463,11 +1463,10 @@ def state_drawer(state, output=None, **drawer_args):
1463
1463
  return draw_func(state, **drawer_args)
1464
1464
  except KeyError as err:
1465
1465
  raise ValueError(
1466
- """'{}' is not a valid option for drawing {} objects. Please choose from:
1466
+ f"""'{output}' is not a valid option for drawing {type(state).__name__}
1467
+ objects. Please choose from:
1467
1468
  'text', 'latex', 'latex_source', 'qsphere', 'hinton',
1468
- 'bloch', 'city' or 'paulivec'.""".format(
1469
- output, type(state).__name__
1470
- )
1469
+ 'bloch', 'city' or 'paulivec'."""
1471
1470
  ) from err
1472
1471
 
1473
1472
 
@@ -132,8 +132,7 @@ class MplPlotter(BasePlotter):
132
132
 
133
133
  else:
134
134
  raise VisualizationError(
135
- "Data {name} is not supported by {plotter}"
136
- "".format(name=data, plotter=self.__class__.__name__)
135
+ f"Data {data} is not supported by {self.__class__.__name__}"
137
136
  )
138
137
 
139
138
  def _time_bucket_outline(
@@ -18,6 +18,7 @@ from math import sin, cos, acos, sqrt
18
18
  import numpy as np
19
19
 
20
20
  from qiskit.exceptions import MissingOptionalLibraryError
21
+ from qiskit.utils.deprecation import deprecate_func
21
22
 
22
23
 
23
24
  def _normalize(v, tolerance=0.00001):
@@ -72,10 +73,10 @@ class _Quaternion:
72
73
  return self._multiply_with_quaternion(b)
73
74
  elif isinstance(b, (list, tuple, np.ndarray)):
74
75
  if len(b) != 3:
75
- raise Exception(f"Input vector has invalid length {len(b)}")
76
+ raise ValueError(f"Input vector has invalid length {len(b)}")
76
77
  return self._multiply_with_vector(b)
77
78
  else:
78
- raise Exception(f"Multiplication with unknown type {type(b)}")
79
+ return NotImplemented
79
80
 
80
81
  def _multiply_with_quaternion(self, q_2):
81
82
  """Multiplication of quaternion with quaternion"""
@@ -121,6 +122,10 @@ class _Quaternion:
121
122
  return np.linalg.norm(v)
122
123
 
123
124
 
125
+ @deprecate_func(
126
+ since="1.2.0",
127
+ removal_timeline="in the 2.0 release",
128
+ )
124
129
  def visualize_transition(circuit, trace=False, saveas=None, fpg=100, spg=2):
125
130
  """
126
131
  Creates animation showing transitions between states of a single
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qiskit
3
- Version: 1.1.2
3
+ Version: 1.2.0
4
4
  Summary: An open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
5
5
  Author-email: Qiskit Development Team <qiskit@us.ibm.com>
6
6
  License: Apache 2.0
@@ -28,7 +28,7 @@ Classifier: Topic :: Scientific/Engineering
28
28
  Requires-Python: >=3.8
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE.txt
31
- Requires-Dist: rustworkx>=0.14.0
31
+ Requires-Dist: rustworkx>=0.15.0
32
32
  Requires-Dist: numpy<3,>=1.17
33
33
  Requires-Dist: scipy>=1.5
34
34
  Requires-Dist: sympy>=1.3
@@ -66,8 +66,8 @@ Requires-Dist: seaborn>=0.9.0; extra == "visualization"
66
66
 
67
67
  **Qiskit** is an open-source SDK for working with quantum computers at the level of extended quantum circuits, operators, and primitives.
68
68
 
69
- This library is the core component of Qiskit, which contains the building blocks for creating and working with quantum circuits, quantum operators, and primitive functions (sampler and estimator).
70
- It also contains a transpiler that supports optimizing quantum circuits and a quantum information toolbox for creating advanced quantum operators.
69
+ This library is the core component of Qiskit, which contains the building blocks for creating and working with quantum circuits, quantum operators, and primitive functions (Sampler and Estimator).
70
+ It also contains a transpiler that supports optimizing quantum circuits, and a quantum information toolbox for creating advanced operators.
71
71
 
72
72
  For more details on how to use Qiskit, refer to the documentation located here:
73
73
 
@@ -77,7 +77,7 @@ For more details on how to use Qiskit, refer to the documentation located here:
77
77
  ## Installation
78
78
 
79
79
  > [!WARNING]
80
- > Do not try to upgrade an existing Qiskit 0.* environment to Qiskit 1.0 in-place. [Read more](https://docs.quantum.ibm.com/api/migration-guides/qiskit-1.0-installation).
80
+ > Do not try to upgrade an existing Qiskit 0.* environment to Qiskit 1.0 in-place. [Read more](https://docs.quantum.ibm.com/migration-guides/qiskit-1.0-installation).
81
81
 
82
82
  We encourage installing Qiskit via ``pip``:
83
83
 
@@ -87,7 +87,7 @@ pip install qiskit
87
87
 
88
88
  Pip will handle all dependencies automatically and you will always install the latest (and well-tested) version.
89
89
 
90
- To install from source, follow the instructions in the [documentation](https://docs.quantum.ibm.com/start/install-qiskit-source).
90
+ To install from source, follow the instructions in the [documentation](https://docs.quantum.ibm.com/guides/install-qiskit-source).
91
91
 
92
92
  ## Create your first quantum program in Qiskit
93
93
 
@@ -145,12 +145,12 @@ print(f" > Expectation values: {result.values}")
145
145
  Running this will give the outcome `4`. For fun, try to assign a value of +/- 1 to each single-qubit operator X and Y
146
146
  and see if you can achieve this outcome. (Spoiler alert: this is not possible!)
147
147
 
148
- Using the Qiskit-provided `qiskit.primitives.Sampler` and `qiskit.primitives.Estimator` will not take you very far. The power of quantum computing cannot be simulated
149
- on classical computers and you need to use real quantum hardware to scale to larger quantum circuits. However, running a quantum
150
- circuit on hardware requires rewriting them to the basis gates and connectivity of the quantum hardware.
151
- The tool that does this is the [transpiler](https://docs.quantum.ibm.com/api/qiskit/transpiler)
152
- and Qiskit includes transpiler passes for synthesis, optimization, mapping, and scheduling. However, it also includes a
153
- default compiler which works very well in most examples. The following code will map the example circuit to the `basis_gates = ['cz', 'sx', 'rz']` and a linear chain of qubits $0 \rightarrow 1 \rightarrow 2$ with the `coupling_map =[[0, 1], [1, 2]]`.
148
+ Using the Qiskit-provided `qiskit.primitives.Sampler` and `qiskit.primitives.Estimator` will not take you very far.
149
+ The power of quantum computing cannot be simulated on classical computers and you need to use real quantum hardware to scale to larger quantum circuits.
150
+ However, running a quantum circuit on hardware requires rewriting to the basis gates and connectivity of the quantum hardware.
151
+ The tool that does this is the [transpiler](https://docs.quantum.ibm.com/api/qiskit/transpiler), and Qiskit includes transpiler passes for synthesis, optimization, mapping, and scheduling.
152
+ However, it also includes a default compiler, which works very well in most examples.
153
+ The following code will map the example circuit to the `basis_gates = ['cz', 'sx', 'rz']` and a linear chain of qubits $0 \rightarrow 1 \rightarrow 2$ with the `coupling_map =[[0, 1], [1, 2]]`.
154
154
 
155
155
  ```python
156
156
  from qiskit import transpile