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
@@ -59,10 +59,10 @@ class Parameter(ParameterExpression):
59
59
  bc.draw('mpl')
60
60
  """
61
61
 
62
- __slots__ = ("_name", "_uuid", "_hash")
62
+ __slots__ = ("_uuid", "_hash")
63
63
 
64
64
  # This `__init__` does not call the super init, because we can't construct the
65
- # `_parameter_symbols` dictionary we need to pass to it before we're entirely initialised
65
+ # `_parameter_symbols` dictionary we need to pass to it before we're entirely initialized
66
66
  # anyway, because `ParameterExpression` depends heavily on the structure of `Parameter`.
67
67
 
68
68
  def __init__(
@@ -79,7 +79,6 @@ class Parameter(ParameterExpression):
79
79
  field when creating two parameters to the same thing (along with the same name)
80
80
  allows them to be equal. This is useful during serialization and deserialization.
81
81
  """
82
- self._name = name
83
82
  self._uuid = uuid4() if uuid is None else uuid
84
83
  symbol = symengine.Symbol(name)
85
84
 
@@ -110,14 +109,14 @@ class Parameter(ParameterExpression):
110
109
  if allow_unknown_parameters:
111
110
  return self
112
111
  raise CircuitError(
113
- "Cannot bind Parameters ({}) not present in "
114
- "expression.".format([str(p) for p in parameter_map])
112
+ f"Cannot bind Parameters ({[str(p) for p in parameter_map]}) not present in "
113
+ "expression."
115
114
  )
116
115
 
117
116
  @property
118
117
  def name(self):
119
118
  """Returns the name of the :class:`Parameter`."""
120
- return self._name
119
+ return self._symbol_expr.name
121
120
 
122
121
  @property
123
122
  def uuid(self) -> UUID:
@@ -143,7 +142,7 @@ class Parameter(ParameterExpression):
143
142
 
144
143
  def __eq__(self, other):
145
144
  if isinstance(other, Parameter):
146
- return (self._uuid, self._name) == (other._uuid, other._name)
145
+ return (self._uuid, self._symbol_expr) == (other._uuid, other._symbol_expr)
147
146
  elif isinstance(other, ParameterExpression):
148
147
  return super().__eq__(other)
149
148
  else:
@@ -155,7 +154,7 @@ class Parameter(ParameterExpression):
155
154
  # expression, so its full hash key is split into `(parameter_keys, symbolic_expression)`.
156
155
  # This method lets containing expressions get only the bits they need for equality checks in
157
156
  # the first value, without wasting time re-hashing individual Sympy/Symengine symbols.
158
- return (self._name, self._uuid)
157
+ return (self._symbol_expr, self._uuid)
159
158
 
160
159
  def __hash__(self):
161
160
  # This is precached for performance, since it's used a lot and we are immutable.
@@ -165,10 +164,10 @@ class Parameter(ParameterExpression):
165
164
  # operation attempts to put this parameter into a hashmap.
166
165
 
167
166
  def __getstate__(self):
168
- return (self._name, self._uuid, self._symbol_expr)
167
+ return (self.name, self._uuid, self._symbol_expr)
169
168
 
170
169
  def __setstate__(self, state):
171
- self._name, self._uuid, self._symbol_expr = state
170
+ _, self._uuid, self._symbol_expr = state
172
171
  self._parameter_keys = frozenset((self._hash_key(),))
173
172
  self._hash = hash((self._parameter_keys, self._symbol_expr))
174
173
  self._parameter_symbols = {self: self._symbol_expr}
@@ -48,7 +48,7 @@ class ParameterExpression:
48
48
  expr (sympy.Expr): Expression of :class:`sympy.Symbol` s.
49
49
  """
50
50
  # NOTE: `Parameter.__init__` does not call up to this method, since this method is dependent
51
- # on `Parameter` instances already being initialised enough to be hashable. If changing
51
+ # on `Parameter` instances already being initialized enough to be hashable. If changing
52
52
  # this method, check that `Parameter.__init__` and `__setstate__` are still valid.
53
53
  self._parameter_symbols = symbol_map
54
54
  self._parameter_keys = frozenset(p._hash_key() for p in self._parameter_symbols)
@@ -140,7 +140,7 @@ class ParameterExpression:
140
140
  raise ZeroDivisionError(
141
141
  "Binding provided for expression "
142
142
  "results in division by zero "
143
- "(Expression: {}, Bindings: {}).".format(self, parameter_values)
143
+ f"(Expression: {self}, Bindings: {parameter_values})."
144
144
  )
145
145
 
146
146
  return ParameterExpression(free_parameter_symbols, bound_symbol_expr)
@@ -199,8 +199,8 @@ class ParameterExpression:
199
199
  unknown_parameters = parameters - self.parameters
200
200
  if unknown_parameters:
201
201
  raise CircuitError(
202
- "Cannot bind Parameters ({}) not present in "
203
- "expression.".format([str(p) for p in unknown_parameters])
202
+ f"Cannot bind Parameters ({[str(p) for p in unknown_parameters]}) not present in "
203
+ "expression."
204
204
  )
205
205
 
206
206
  def _raise_if_passed_nan(self, parameter_values):
@@ -327,8 +327,11 @@ class ParameterExpression:
327
327
  def __mul__(self, other):
328
328
  return self._apply_operation(operator.mul, other)
329
329
 
330
+ def __pos__(self):
331
+ return self._apply_operation(operator.mul, 1)
332
+
330
333
  def __neg__(self):
331
- return self._apply_operation(operator.mul, -1.0)
334
+ return self._apply_operation(operator.mul, -1)
332
335
 
333
336
  def __rmul__(self, other):
334
337
  return self._apply_operation(operator.mul, other, reflected=True)
@@ -401,8 +404,8 @@ class ParameterExpression:
401
404
  except (TypeError, RuntimeError) as exc:
402
405
  if self.parameters:
403
406
  raise TypeError(
404
- "ParameterExpression with unbound parameters ({}) "
405
- "cannot be cast to a complex.".format(self.parameters)
407
+ f"ParameterExpression with unbound parameters ({self.parameters}) "
408
+ "cannot be cast to a complex."
406
409
  ) from None
407
410
  raise TypeError("could not cast expression to complex") from exc
408
411
 
@@ -413,13 +416,13 @@ class ParameterExpression:
413
416
  except (TypeError, RuntimeError) as exc:
414
417
  if self.parameters:
415
418
  raise TypeError(
416
- "ParameterExpression with unbound parameters ({}) "
417
- "cannot be cast to a float.".format(self.parameters)
419
+ f"ParameterExpression with unbound parameters ({self.parameters}) "
420
+ "cannot be cast to a float."
418
421
  ) from None
419
422
  # In symengine, if an expression was complex at any time, its type is likely to have
420
423
  # stayed "complex" even when the imaginary part symbolically (i.e. exactly)
421
- # cancelled out. Sympy tends to more aggressively recognise these as symbolically
422
- # real. This second attempt at a cast is a way of unifying the behaviour to the
424
+ # cancelled out. Sympy tends to more aggressively recognize these as symbolically
425
+ # real. This second attempt at a cast is a way of unifying the behavior to the
423
426
  # more expected form for our users.
424
427
  cval = complex(self)
425
428
  if cval.imag == 0.0:
@@ -433,8 +436,8 @@ class ParameterExpression:
433
436
  except RuntimeError as exc:
434
437
  if self.parameters:
435
438
  raise TypeError(
436
- "ParameterExpression with unbound parameters ({}) "
437
- "cannot be cast to an int.".format(self.parameters)
439
+ f"ParameterExpression with unbound parameters ({self.parameters}) "
440
+ "cannot be cast to an int."
438
441
  ) from None
439
442
  raise TypeError("could not cast expression to int") from exc
440
443
 
@@ -12,197 +12,8 @@
12
12
  """
13
13
  Look-up table for variable parameters in QuantumCircuit.
14
14
  """
15
- import operator
16
- import typing
17
- from collections.abc import MappingView, MutableMapping, MutableSet
18
15
 
19
-
20
- class ParameterReferences(MutableSet):
21
- """A set of instruction parameter slot references.
22
- Items are expected in the form ``(instruction, param_index)``. Membership
23
- testing is overridden such that items that are otherwise value-wise equal
24
- are still considered distinct if their ``instruction``\\ s are referentially
25
- distinct.
26
-
27
- In the case of the special value :attr:`.ParameterTable.GLOBAL_PHASE` for ``instruction``, the
28
- ``param_index`` should be ``None``.
29
- """
30
-
31
- def _instance_key(self, ref):
32
- return (id(ref[0]), ref[1])
33
-
34
- def __init__(self, refs):
35
- self._instance_ids = {}
36
-
37
- for ref in refs:
38
- if not isinstance(ref, tuple) or len(ref) != 2:
39
- raise ValueError("refs must be in form (instruction, param_index)")
40
- k = self._instance_key(ref)
41
- self._instance_ids[k] = ref[0]
42
-
43
- def __getstate__(self):
44
- # Leave behind the reference IDs (keys of _instance_ids) since they'll
45
- # be incorrect after unpickling on the other side.
46
- return list(self)
47
-
48
- def __setstate__(self, refs):
49
- # Recompute reference IDs for the newly unpickled instructions.
50
- self._instance_ids = {self._instance_key(ref): ref[0] for ref in refs}
51
-
52
- def __len__(self):
53
- return len(self._instance_ids)
54
-
55
- def __iter__(self):
56
- for (_, idx), instruction in self._instance_ids.items():
57
- yield (instruction, idx)
58
-
59
- def __contains__(self, x) -> bool:
60
- return self._instance_key(x) in self._instance_ids
61
-
62
- def __repr__(self) -> str:
63
- return f"ParameterReferences({repr(list(self))})"
64
-
65
- def add(self, value):
66
- """Adds a reference to the listing if it's not already present."""
67
- k = self._instance_key(value)
68
- self._instance_ids[k] = value[0]
69
-
70
- def discard(self, value):
71
- k = self._instance_key(value)
72
- self._instance_ids.pop(k, None)
73
-
74
- def copy(self):
75
- """Create a shallow copy."""
76
- return ParameterReferences(self)
77
-
78
-
79
- class ParameterTable(MutableMapping):
80
- """Class for tracking references to circuit parameters by specific
81
- instruction instances.
82
-
83
- Keys are parameters. Values are of type :class:`~ParameterReferences`,
84
- which overrides membership testing to be referential for instructions,
85
- and is set-like. Elements of :class:`~ParameterReferences`
86
- are tuples of ``(instruction, param_index)``.
87
- """
88
-
89
- __slots__ = ["_table", "_keys", "_names"]
90
-
91
- class _GlobalPhaseSentinel:
92
- __slots__ = ()
93
-
94
- def __copy__(self):
95
- return self
96
-
97
- def __deepcopy__(self, memo=None):
98
- return self
99
-
100
- def __reduce__(self):
101
- return (operator.attrgetter("GLOBAL_PHASE"), (ParameterTable,))
102
-
103
- def __repr__(self):
104
- return "<global-phase sentinel>"
105
-
106
- GLOBAL_PHASE = _GlobalPhaseSentinel()
107
- """Tracking object to indicate that a reference refers to the global phase of a circuit."""
108
-
109
- def __init__(self, mapping=None):
110
- """Create a new instance, initialized with ``mapping`` if provided.
111
-
112
- Args:
113
- mapping (Mapping[Parameter, ParameterReferences]):
114
- Mapping of parameter to the set of parameter slots that reference
115
- it.
116
-
117
- Raises:
118
- ValueError: A value in ``mapping`` is not a :class:`~ParameterReferences`.
119
- """
120
- if mapping is not None:
121
- if any(not isinstance(refs, ParameterReferences) for refs in mapping.values()):
122
- raise ValueError("Values must be of type ParameterReferences")
123
- self._table = mapping.copy()
124
- else:
125
- self._table = {}
126
-
127
- self._keys = set(self._table)
128
- self._names = {x.name: x for x in self._table}
129
-
130
- def __getitem__(self, key):
131
- return self._table[key]
132
-
133
- def __setitem__(self, parameter, refs):
134
- """Associate a parameter with the set of parameter slots ``(instruction, param_index)``
135
- that reference it.
136
-
137
- .. note::
138
-
139
- Items in ``refs`` are considered unique if their ``instruction`` is referentially
140
- unique. See :class:`~ParameterReferences` for details.
141
-
142
- Args:
143
- parameter (Parameter): the parameter
144
- refs (Union[ParameterReferences, Iterable[(Instruction, int)]]): the parameter slots.
145
- If this is an iterable, a new :class:`~ParameterReferences` is created from its
146
- contents.
147
- """
148
- if not isinstance(refs, ParameterReferences):
149
- refs = ParameterReferences(refs)
150
-
151
- self._table[parameter] = refs
152
- self._keys.add(parameter)
153
- self._names[parameter.name] = parameter
154
-
155
- def get_keys(self):
156
- """Return a set of all keys in the parameter table
157
-
158
- Returns:
159
- set: A set of all the keys in the parameter table
160
- """
161
- return self._keys
162
-
163
- def get_names(self):
164
- """Return a set of all parameter names in the parameter table
165
-
166
- Returns:
167
- set: A set of all the names in the parameter table
168
- """
169
- return self._names.keys()
170
-
171
- def parameter_from_name(self, name: str, default: typing.Any = None):
172
- """Get a :class:`.Parameter` with references in this table by its string name.
173
-
174
- If the parameter is not present, return the ``default`` value.
175
-
176
- Args:
177
- name: The name of the :class:`.Parameter`
178
- default: The object that should be returned if the parameter is missing.
179
- """
180
- return self._names.get(name, default)
181
-
182
- def discard_references(self, expression, key):
183
- """Remove all references to parameters contained within ``expression`` at the given table
184
- ``key``. This also discards parameter entries from the table if they have no further
185
- references. No action is taken if the object is not tracked."""
186
- for parameter in expression.parameters:
187
- if (refs := self._table.get(parameter)) is not None:
188
- if len(refs) == 1:
189
- del self[parameter]
190
- else:
191
- refs.discard(key)
192
-
193
- def __delitem__(self, key):
194
- del self._table[key]
195
- self._keys.discard(key)
196
- del self._names[key.name]
197
-
198
- def __iter__(self):
199
- return iter(self._table)
200
-
201
- def __len__(self):
202
- return len(self._table)
203
-
204
- def __repr__(self):
205
- return f"ParameterTable({repr(self._table)})"
16
+ from collections.abc import MappingView
206
17
 
207
18
 
208
19
  class ParameterView(MappingView):
@@ -87,7 +87,7 @@ class ParameterVector:
87
87
  return f"{self.name}, {[str(item) for item in self.params]}"
88
88
 
89
89
  def __repr__(self):
90
- return f"{self.__class__.__name__}(name={self.name}, length={len(self)})"
90
+ return f"{self.__class__.__name__}(name={repr(self.name)}, length={len(self)})"
91
91
 
92
92
  def resize(self, length):
93
93
  """Resize the parameter vector. If necessary, new elements are generated.