qiskit 1.1.2__cp38-abi3-win32.whl → 1.2.0rc1__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 (341) 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 +1 -1
  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 +392 -384
  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 +41 -127
  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 +32 -24
  144. qiskit/providers/fake_provider/fake_backend.py +10 -3
  145. qiskit/providers/fake_provider/fake_openpulse_2q.py +154 -146
  146. qiskit/providers/fake_provider/fake_openpulse_3q.py +226 -217
  147. qiskit/providers/fake_provider/fake_qasm_backend.py +5 -1
  148. qiskit/providers/fake_provider/generic_backend_v2.py +80 -50
  149. qiskit/providers/models/__init__.py +11 -0
  150. qiskit/providers/models/backendconfiguration.py +50 -4
  151. qiskit/providers/models/backendproperties.py +13 -2
  152. qiskit/providers/models/pulsedefaults.py +10 -11
  153. qiskit/providers/options.py +13 -13
  154. qiskit/providers/providerutils.py +3 -1
  155. qiskit/pulse/configuration.py +8 -12
  156. qiskit/pulse/instruction_schedule_map.py +3 -5
  157. qiskit/pulse/instructions/acquire.py +7 -8
  158. qiskit/pulse/instructions/instruction.py +2 -3
  159. qiskit/pulse/library/samplers/decorators.py +5 -9
  160. qiskit/pulse/library/symbolic_pulses.py +4 -7
  161. qiskit/pulse/library/waveform.py +2 -5
  162. qiskit/pulse/macros.py +11 -6
  163. qiskit/pulse/parser.py +8 -10
  164. qiskit/pulse/schedule.py +9 -17
  165. qiskit/pulse/transforms/alignments.py +1 -3
  166. qiskit/pulse/utils.py +1 -2
  167. qiskit/qasm/libs/stdgates.inc +35 -28
  168. qiskit/qasm2/__init__.py +7 -7
  169. qiskit/qasm2/export.py +5 -9
  170. qiskit/qasm2/parse.py +1 -1
  171. qiskit/qasm3/ast.py +9 -25
  172. qiskit/qasm3/exporter.py +578 -481
  173. qiskit/qasm3/printer.py +7 -16
  174. qiskit/qobj/common.py +10 -0
  175. qiskit/qobj/converters/lo_config.py +9 -0
  176. qiskit/qobj/converters/pulse_instruction.py +13 -6
  177. qiskit/qobj/pulse_qobj.py +69 -15
  178. qiskit/qobj/qasm_qobj.py +72 -20
  179. qiskit/qobj/utils.py +9 -0
  180. qiskit/qpy/binary_io/circuits.py +8 -5
  181. qiskit/qpy/binary_io/schedules.py +1 -1
  182. qiskit/qpy/binary_io/value.py +3 -3
  183. qiskit/qpy/interface.py +3 -2
  184. qiskit/qpy/type_keys.py +2 -2
  185. qiskit/quantum_info/operators/channel/quantum_channel.py +3 -6
  186. qiskit/quantum_info/operators/channel/superop.py +2 -2
  187. qiskit/quantum_info/operators/channel/transformations.py +1 -1
  188. qiskit/quantum_info/operators/dihedral/dihedral.py +3 -4
  189. qiskit/quantum_info/operators/dihedral/dihedral_circuits.py +1 -3
  190. qiskit/quantum_info/operators/dihedral/random.py +6 -3
  191. qiskit/quantum_info/operators/measures.py +2 -2
  192. qiskit/quantum_info/operators/op_shape.py +12 -20
  193. qiskit/quantum_info/operators/operator.py +14 -21
  194. qiskit/quantum_info/operators/predicates.py +1 -0
  195. qiskit/quantum_info/operators/symplectic/base_pauli.py +7 -11
  196. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  197. qiskit/quantum_info/operators/symplectic/pauli.py +3 -3
  198. qiskit/quantum_info/operators/symplectic/pauli_list.py +9 -10
  199. qiskit/quantum_info/operators/symplectic/random.py +1 -1
  200. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +14 -16
  201. qiskit/quantum_info/quaternion.py +1 -1
  202. qiskit/quantum_info/states/densitymatrix.py +5 -8
  203. qiskit/quantum_info/states/stabilizerstate.py +128 -37
  204. qiskit/quantum_info/states/statevector.py +4 -8
  205. qiskit/result/counts.py +2 -2
  206. qiskit/result/mitigation/correlated_readout_mitigator.py +2 -2
  207. qiskit/result/mitigation/local_readout_mitigator.py +2 -2
  208. qiskit/result/mitigation/utils.py +1 -3
  209. qiskit/result/models.py +17 -16
  210. qiskit/result/result.py +15 -20
  211. qiskit/scheduler/lowering.py +2 -2
  212. qiskit/synthesis/__init__.py +2 -1
  213. qiskit/synthesis/clifford/__init__.py +1 -1
  214. qiskit/synthesis/clifford/clifford_decompose_ag.py +2 -2
  215. qiskit/synthesis/clifford/clifford_decompose_bm.py +10 -240
  216. qiskit/synthesis/clifford/clifford_decompose_greedy.py +9 -303
  217. qiskit/synthesis/clifford/clifford_decompose_layers.py +25 -23
  218. qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_full.py +1 -1
  219. qiskit/synthesis/cnotdihedral/cnotdihedral_decompose_general.py +1 -1
  220. qiskit/synthesis/discrete_basis/generate_basis_approximations.py +1 -1
  221. qiskit/synthesis/discrete_basis/solovay_kitaev.py +2 -2
  222. qiskit/synthesis/evolution/evolution_synthesis.py +4 -2
  223. qiskit/synthesis/evolution/lie_trotter.py +46 -19
  224. qiskit/synthesis/evolution/product_formula.py +111 -55
  225. qiskit/synthesis/evolution/qdrift.py +40 -10
  226. qiskit/synthesis/evolution/suzuki_trotter.py +43 -33
  227. qiskit/synthesis/linear/__init__.py +1 -0
  228. qiskit/synthesis/linear/cnot_synth.py +22 -96
  229. qiskit/synthesis/linear/linear_depth_lnn.py +8 -8
  230. qiskit/synthesis/linear/linear_matrix_utils.py +13 -161
  231. qiskit/synthesis/linear_phase/cnot_phase_synth.py +1 -1
  232. qiskit/synthesis/linear_phase/cx_cz_depth_lnn.py +3 -3
  233. qiskit/synthesis/linear_phase/cz_depth_lnn.py +1 -1
  234. qiskit/synthesis/one_qubit/one_qubit_decompose.py +29 -29
  235. qiskit/synthesis/permutation/permutation_full.py +5 -29
  236. qiskit/synthesis/permutation/permutation_lnn.py +2 -24
  237. qiskit/synthesis/permutation/permutation_utils.py +2 -59
  238. qiskit/synthesis/qft/__init__.py +1 -0
  239. qiskit/synthesis/qft/qft_decompose_full.py +79 -0
  240. qiskit/synthesis/qft/qft_decompose_lnn.py +17 -9
  241. qiskit/synthesis/stabilizer/stabilizer_circuit.py +6 -6
  242. qiskit/synthesis/stabilizer/stabilizer_decompose.py +2 -2
  243. qiskit/synthesis/two_qubit/local_invariance.py +8 -38
  244. qiskit/synthesis/two_qubit/two_qubit_decompose.py +48 -129
  245. qiskit/synthesis/unitary/aqc/cnot_structures.py +1 -1
  246. qiskit/synthesis/unitary/qsd.py +5 -3
  247. qiskit/transpiler/__init__.py +1 -0
  248. qiskit/transpiler/basepasses.py +1 -1
  249. qiskit/transpiler/coupling.py +3 -3
  250. qiskit/transpiler/instruction_durations.py +1 -2
  251. qiskit/transpiler/layout.py +3 -3
  252. qiskit/transpiler/passes/__init__.py +2 -0
  253. qiskit/transpiler/passes/basis/basis_translator.py +82 -63
  254. qiskit/transpiler/passes/basis/translate_parameterized.py +3 -5
  255. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  256. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +10 -10
  257. qiskit/transpiler/passes/calibration/rx_builder.py +3 -3
  258. qiskit/transpiler/passes/calibration/rzx_builder.py +3 -3
  259. qiskit/transpiler/passes/layout/apply_layout.py +13 -3
  260. qiskit/transpiler/passes/layout/sabre_layout.py +10 -8
  261. qiskit/transpiler/passes/layout/sabre_pre_layout.py +4 -1
  262. qiskit/transpiler/passes/layout/set_layout.py +2 -2
  263. qiskit/transpiler/passes/layout/vf2_layout.py +1 -1
  264. qiskit/transpiler/passes/layout/vf2_utils.py +3 -3
  265. qiskit/transpiler/passes/optimization/__init__.py +1 -0
  266. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  267. qiskit/transpiler/passes/optimization/commutation_analysis.py +7 -10
  268. qiskit/transpiler/passes/optimization/commutative_cancellation.py +35 -19
  269. qiskit/transpiler/passes/optimization/consolidate_blocks.py +11 -8
  270. qiskit/transpiler/passes/optimization/inverse_cancellation.py +6 -6
  271. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +64 -41
  272. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  273. qiskit/transpiler/passes/optimization/split_2q_unitaries.py +83 -0
  274. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +1 -1
  275. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +2 -2
  276. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +1 -1
  277. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +3 -2
  278. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  279. qiskit/transpiler/passes/routing/layout_transformation.py +2 -1
  280. qiskit/transpiler/passes/routing/sabre_swap.py +35 -26
  281. qiskit/transpiler/passes/routing/star_prerouting.py +80 -105
  282. qiskit/transpiler/passes/routing/stochastic_swap.py +1 -3
  283. qiskit/transpiler/passes/scheduling/alap.py +1 -2
  284. qiskit/transpiler/passes/scheduling/alignments/__init__.py +2 -2
  285. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  286. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +1 -1
  287. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +1 -1
  288. qiskit/transpiler/passes/scheduling/asap.py +1 -2
  289. qiskit/transpiler/passes/scheduling/base_scheduler.py +5 -5
  290. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +3 -3
  291. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  292. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +11 -11
  293. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +7 -6
  294. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -3
  295. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +211 -36
  296. qiskit/transpiler/passes/synthesis/plugin.py +2 -2
  297. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +80 -40
  298. qiskit/transpiler/passes/utils/__init__.py +0 -1
  299. qiskit/transpiler/passes/utils/check_gate_direction.py +4 -4
  300. qiskit/transpiler/passes/utils/check_map.py +3 -6
  301. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +3 -4
  302. qiskit/transpiler/passes/utils/error.py +2 -2
  303. qiskit/transpiler/passes/utils/fixed_point.py +3 -3
  304. qiskit/transpiler/passes/utils/gate_direction.py +1 -1
  305. qiskit/transpiler/passes/utils/gates_basis.py +1 -2
  306. qiskit/transpiler/passmanager.py +7 -6
  307. qiskit/transpiler/preset_passmanagers/__init__.py +4 -228
  308. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +117 -18
  309. qiskit/transpiler/preset_passmanagers/common.py +3 -6
  310. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +518 -0
  311. qiskit/transpiler/preset_passmanagers/level0.py +1 -1
  312. qiskit/transpiler/target.py +27 -8
  313. qiskit/user_config.py +29 -6
  314. qiskit/utils/classtools.py +3 -3
  315. qiskit/utils/deprecation.py +3 -2
  316. qiskit/utils/lazy_tester.py +2 -2
  317. qiskit/utils/optionals.py +8 -8
  318. qiskit/visualization/bloch.py +19 -67
  319. qiskit/visualization/circuit/_utils.py +34 -10
  320. qiskit/visualization/circuit/circuit_visualization.py +23 -16
  321. qiskit/visualization/circuit/latex.py +29 -27
  322. qiskit/visualization/circuit/matplotlib.py +4 -2
  323. qiskit/visualization/circuit/qcstyle.py +2 -2
  324. qiskit/visualization/circuit/text.py +9 -15
  325. qiskit/visualization/dag_visualization.py +5 -12
  326. qiskit/visualization/pulse_v2/core.py +1 -1
  327. qiskit/visualization/pulse_v2/events.py +1 -1
  328. qiskit/visualization/pulse_v2/generators/frame.py +3 -4
  329. qiskit/visualization/pulse_v2/generators/waveform.py +5 -9
  330. qiskit/visualization/pulse_v2/layouts.py +1 -5
  331. qiskit/visualization/pulse_v2/plotters/matplotlib.py +1 -2
  332. qiskit/visualization/state_visualization.py +5 -6
  333. qiskit/visualization/timeline/plotters/matplotlib.py +1 -2
  334. qiskit/visualization/transition_visualization.py +7 -2
  335. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/METADATA +26 -26
  336. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/RECORD +340 -338
  337. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/WHEEL +1 -1
  338. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/entry_points.txt +3 -0
  339. qiskit/transpiler/passes/utils/block_to_matrix.py +0 -47
  340. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/LICENSE.txt +0 -0
  341. {qiskit-1.1.2.dist-info → qiskit-1.2.0rc1.dist-info}/top_level.txt +0 -0
@@ -213,17 +213,22 @@ class QCircuitImage:
213
213
  self._latex.append([" "] * (self._img_depth + 1))
214
214
 
215
215
  # display the bit/register labels
216
- for wire in self._wire_map:
216
+ for wire, index in self._wire_map.items():
217
217
  if isinstance(wire, ClassicalRegister):
218
218
  register = wire
219
- index = self._wire_map[wire]
219
+ wire_label = get_wire_label(
220
+ "latex", register, index, layout=self._layout, cregbundle=self._cregbundle
221
+ )
220
222
  else:
221
223
  register, bit_index, reg_index = get_bit_reg_index(self._circuit, wire)
222
- index = bit_index if register is None else reg_index
224
+ wire_label = get_wire_label(
225
+ "latex",
226
+ register,
227
+ bit_index if register is None else reg_index,
228
+ layout=self._layout,
229
+ cregbundle=self._cregbundle,
230
+ )
223
231
 
224
- wire_label = get_wire_label(
225
- "latex", register, index, layout=self._layout, cregbundle=self._cregbundle
226
- )
227
232
  wire_label += " : "
228
233
  if self._initial_state:
229
234
  wire_label += "\\ket{{0}}" if isinstance(wire, Qubit) else "0"
@@ -234,7 +239,7 @@ class QCircuitImage:
234
239
  self._latex[pos][1] = "\\lstick{/_{_{" + str(register.size) + "}}} \\cw"
235
240
  wire_label = f"\\mathrm{{{wire_label}}}"
236
241
  else:
237
- pos = self._wire_map[wire]
242
+ pos = index
238
243
  self._latex[pos][0] = "\\nghost{" + wire_label + " & " + "\\lstick{" + wire_label
239
244
 
240
245
  def _get_image_depth(self):
@@ -410,7 +415,7 @@ class QCircuitImage:
410
415
  cwire_list = []
411
416
 
412
417
  if len(wire_list) == 1 and not node.cargs:
413
- self._latex[wire_list[0]][column] = "\\gate{%s}" % gate_text
418
+ self._latex[wire_list[0]][column] = f"\\gate{{{gate_text}}}"
414
419
 
415
420
  elif isinstance(op, ControlledGate):
416
421
  num_cols_op = self._build_ctrl_gate(op, gate_text, wire_list, column)
@@ -438,20 +443,20 @@ class QCircuitImage:
438
443
  self._latex[wire_min][col] = (
439
444
  f"\\multigate{{{wire_max - wire_min}}}{{{gate_text}}}_"
440
445
  + "<" * (len(str(wire_ind)) + 2)
441
- + "{%s}" % wire_ind
446
+ + f"{{{wire_ind}}}"
442
447
  )
443
448
  for wire in range(wire_min + 1, wire_max + 1):
444
449
  if wire < cwire_start:
445
- ghost_box = "\\ghost{%s}" % gate_text
450
+ ghost_box = f"\\ghost{{{gate_text}}}"
446
451
  if wire in wire_list:
447
452
  wire_ind = wire_list.index(wire)
448
453
  else:
449
- ghost_box = "\\cghost{%s}" % gate_text
454
+ ghost_box = f"\\cghost{{{gate_text}}}"
450
455
  if wire in cwire_list:
451
456
  wire_ind = cwire_list.index(wire)
452
457
  if wire in wire_list + cwire_list:
453
458
  self._latex[wire][col] = (
454
- ghost_box + "_" + "<" * (len(str(wire_ind)) + 2) + "{%s}" % wire_ind
459
+ ghost_box + "_" + "<" * (len(str(wire_ind)) + 2) + f"{{{wire_ind}}}"
455
460
  )
456
461
  else:
457
462
  self._latex[wire][col] = ghost_box
@@ -479,7 +484,7 @@ class QCircuitImage:
479
484
  elif isinstance(op.base_gate, (U1Gate, PhaseGate)):
480
485
  num_cols_op = self._build_symmetric_gate(op, gate_text, wire_list, col)
481
486
  else:
482
- self._latex[wireqargs[0]][col] = "\\gate{%s}" % gate_text
487
+ self._latex[wireqargs[0]][col] = f"\\gate{{{gate_text}}}"
483
488
  else:
484
489
  # Treat special cases of swap and rzz gates
485
490
  if isinstance(op.base_gate, (SwapGate, RZZGate)):
@@ -522,7 +527,7 @@ class QCircuitImage:
522
527
  )
523
528
  self._latex[wire_last][col] = "\\control \\qw"
524
529
  # Put side text to the right between bottom wire in wire_list and the one above it
525
- self._latex[wire_max - 1][col + 1] = "\\dstick{\\hspace{2.0em}%s} \\qw" % gate_text
530
+ self._latex[wire_max - 1][col + 1] = f"\\dstick{{\\hspace{{2.0em}}{gate_text}}} \\qw"
526
531
  return 4 # num_cols for side text gates
527
532
 
528
533
  def _build_measure(self, node, col):
@@ -539,11 +544,9 @@ class QCircuitImage:
539
544
  idx_str = str(self._circuit.find_bit(node.cargs[0]).registers[0][1])
540
545
  else:
541
546
  wire2 = self._wire_map[node.cargs[0]]
542
-
543
- self._latex[wire2][col] = "\\dstick{_{_{\\hspace{%sem}%s}}} \\cw \\ar @{<=} [-%s,0]" % (
544
- cond_offset,
545
- idx_str,
546
- str(wire2 - wire1),
547
+ self._latex[wire2][col] = (
548
+ f"\\dstick{{_{{_{{\\hspace{{{cond_offset}em}}{idx_str}}}}}}} "
549
+ f"\\cw \\ar @{{<=}} [-{str(wire2 - wire1)},0]"
547
550
  )
548
551
  else:
549
552
  wire2 = self._wire_map[node.cargs[0]]
@@ -568,7 +571,7 @@ class QCircuitImage:
568
571
  if node.op.label is not None:
569
572
  pos = indexes[0]
570
573
  label = node.op.label.replace(" ", "\\,")
571
- self._latex[pos][col] = "\\cds{0}{^{\\mathrm{%s}}}" % label
574
+ self._latex[pos][col] = f"\\cds{{0}}{{^{{\\mathrm{{{label}}}}}}}"
572
575
 
573
576
  def _add_controls(self, wire_list, ctrlqargs, ctrl_state, col):
574
577
  """Add one or more controls to a gate"""
@@ -610,21 +613,20 @@ class QCircuitImage:
610
613
  )
611
614
  gap = cwire - max(wire_list)
612
615
  control = "\\control" if op.condition[1] else "\\controlo"
613
- self._latex[cwire][col] = f"{control}" + " \\cw^(%s){^{\\mathtt{%s}}} \\cwx[-%s]" % (
614
- meas_offset,
615
- label,
616
- str(gap),
617
- )
616
+ self._latex[cwire][
617
+ col
618
+ ] = f"{control} \\cw^({meas_offset}){{^{{\\mathtt{{{label}}}}}}} \\cwx[-{str(gap)}]"
619
+
618
620
  # If condition is a register and cregbundle is false
619
621
  else:
620
622
  # First sort the val_bits in the order of the register bits in the circuit
621
623
  cond_wires = []
622
624
  cond_bits = []
623
- for wire in self._wire_map:
625
+ for wire, index in self._wire_map.items():
624
626
  reg, _, reg_index = get_bit_reg_index(self._circuit, wire)
625
627
  if reg == cond_reg:
626
628
  cond_bits.append(reg_index)
627
- cond_wires.append(self._wire_map[wire])
629
+ cond_wires.append(index)
628
630
 
629
631
  gap = cond_wires[0] - max(wire_list)
630
632
  prev_wire = cond_wires[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: &quot;Courier New&quot;,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
 
@@ -174,13 +174,10 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
174
174
  label = register_bit_labels.get(
175
175
  node.wire, f"q_{dag.find_bit(node.wire).index}"
176
176
  )
177
- elif isinstance(node.wire, Clbit):
177
+ else:
178
178
  label = register_bit_labels.get(
179
179
  node.wire, f"c_{dag.find_bit(node.wire).index}"
180
180
  )
181
- else:
182
- label = str(node.wire.name)
183
-
184
181
  n["label"] = label
185
182
  n["color"] = "black"
186
183
  n["style"] = "filled"
@@ -190,28 +187,24 @@ def dag_drawer(dag, scale=0.7, filename=None, style="color"):
190
187
  label = register_bit_labels.get(
191
188
  node.wire, f"q[{dag.find_bit(node.wire).index}]"
192
189
  )
193
- elif isinstance(node.wire, Clbit):
190
+ else:
194
191
  label = register_bit_labels.get(
195
192
  node.wire, f"c[{dag.find_bit(node.wire).index}]"
196
193
  )
197
- else:
198
- label = str(node.wire.name)
199
194
  n["label"] = label
200
195
  n["color"] = "black"
201
196
  n["style"] = "filled"
202
197
  n["fillcolor"] = "red"
203
198
  return n
204
199
  else:
205
- raise VisualizationError("Invalid style %s" % style)
200
+ raise VisualizationError(f"Invalid style {style}")
206
201
 
207
202
  def edge_attr_func(edge):
208
203
  e = {}
209
204
  if isinstance(edge, Qubit):
210
205
  label = register_bit_labels.get(edge, f"q_{dag.find_bit(edge).index}")
211
- elif isinstance(edge, Clbit):
212
- label = register_bit_labels.get(edge, f"c_{dag.find_bit(edge).index}")
213
206
  else:
214
- label = str(edge.name)
207
+ label = register_bit_labels.get(edge, f"c_{dag.find_bit(edge).index}")
215
208
  e["label"] = label
216
209
  return e
217
210
 
@@ -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.0rc1
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,29 +28,29 @@ 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
32
- Requires-Dist: numpy<3,>=1.17
33
- Requires-Dist: scipy>=1.5
34
- Requires-Dist: sympy>=1.3
35
- Requires-Dist: dill>=0.3
36
- Requires-Dist: python-dateutil>=2.8.0
37
- Requires-Dist: stevedore>=3.0.0
31
+ Requires-Dist: rustworkx >=0.15.0
32
+ Requires-Dist: numpy <3,>=1.17
33
+ Requires-Dist: scipy >=1.5
34
+ Requires-Dist: sympy >=1.3
35
+ Requires-Dist: dill >=0.3
36
+ Requires-Dist: python-dateutil >=2.8.0
37
+ Requires-Dist: stevedore >=3.0.0
38
38
  Requires-Dist: typing-extensions
39
- Requires-Dist: symengine>=0.11
39
+ Requires-Dist: symengine >=0.11
40
40
  Provides-Extra: all
41
- Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization]; extra == "all"
41
+ Requires-Dist: qiskit[crosstalk-pass,csp-layout-pass,qasm3-import,visualization] ; extra == 'all'
42
42
  Provides-Extra: crosstalk-pass
43
- Requires-Dist: z3-solver>=4.7; extra == "crosstalk-pass"
43
+ Requires-Dist: z3-solver >=4.7 ; extra == 'crosstalk-pass'
44
44
  Provides-Extra: csp-layout-pass
45
- Requires-Dist: python-constraint>=1.4; extra == "csp-layout-pass"
45
+ Requires-Dist: python-constraint >=1.4 ; extra == 'csp-layout-pass'
46
46
  Provides-Extra: qasm3-import
47
- Requires-Dist: qiskit-qasm3-import>=0.1.0; extra == "qasm3-import"
47
+ Requires-Dist: qiskit-qasm3-import >=0.1.0 ; extra == 'qasm3-import'
48
48
  Provides-Extra: visualization
49
- Requires-Dist: matplotlib>=3.3; extra == "visualization"
50
- Requires-Dist: pydot; extra == "visualization"
51
- Requires-Dist: Pillow>=4.2.1; extra == "visualization"
52
- Requires-Dist: pylatexenc>=1.4; extra == "visualization"
53
- Requires-Dist: seaborn>=0.9.0; extra == "visualization"
49
+ Requires-Dist: matplotlib >=3.3 ; extra == 'visualization'
50
+ Requires-Dist: pydot ; extra == 'visualization'
51
+ Requires-Dist: Pillow >=4.2.1 ; extra == 'visualization'
52
+ Requires-Dist: pylatexenc >=1.4 ; extra == 'visualization'
53
+ Requires-Dist: seaborn >=0.9.0 ; extra == 'visualization'
54
54
 
55
55
  # Qiskit
56
56
 
@@ -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
 
@@ -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