qiskit 1.3.0__cp39-abi3-win32.whl → 1.3.0b1__cp39-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 (361) hide show
  1. qiskit/VERSION.txt +1 -1
  2. qiskit/__init__.py +1 -20
  3. qiskit/_accelerate.pyd +0 -0
  4. qiskit/assembler/assemble_schedules.py +0 -2
  5. qiskit/circuit/__init__.py +1 -44
  6. qiskit/circuit/_standard_gates_commutations.py +0 -585
  7. qiskit/circuit/barrier.py +0 -2
  8. qiskit/circuit/controlflow/builder.py +3 -3
  9. qiskit/circuit/controlflow/if_else.py +5 -13
  10. qiskit/circuit/controlflow/while_loop.py +2 -10
  11. qiskit/circuit/delay.py +3 -20
  12. qiskit/circuit/equivalence.py +214 -13
  13. qiskit/circuit/gate.py +1 -3
  14. qiskit/circuit/instruction.py +11 -32
  15. qiskit/circuit/instructionset.py +0 -2
  16. qiskit/circuit/library/__init__.py +14 -110
  17. qiskit/circuit/library/arithmetic/__init__.py +2 -9
  18. qiskit/circuit/library/arithmetic/adders/__init__.py +0 -1
  19. qiskit/circuit/library/arithmetic/adders/adder.py +2 -154
  20. qiskit/circuit/library/arithmetic/adders/cdkm_ripple_carry_adder.py +56 -20
  21. qiskit/circuit/library/arithmetic/adders/draper_qft_adder.py +1 -14
  22. qiskit/circuit/library/arithmetic/adders/vbe_ripple_carry_adder.py +91 -21
  23. qiskit/circuit/library/arithmetic/linear_pauli_rotations.py +1 -1
  24. qiskit/circuit/library/arithmetic/multipliers/__init__.py +0 -1
  25. qiskit/circuit/library/arithmetic/multipliers/hrs_cumulative_multiplier.py +1 -8
  26. qiskit/circuit/library/arithmetic/multipliers/multiplier.py +3 -94
  27. qiskit/circuit/library/arithmetic/multipliers/rg_qft_multiplier.py +1 -8
  28. qiskit/circuit/library/arithmetic/weighted_adder.py +1 -1
  29. qiskit/circuit/library/basis_change/qft.py +38 -20
  30. qiskit/circuit/library/blueprintcircuit.py +0 -64
  31. qiskit/circuit/library/boolean_logic/__init__.py +4 -4
  32. qiskit/circuit/library/boolean_logic/inner_product.py +4 -81
  33. qiskit/circuit/library/boolean_logic/quantum_and.py +4 -107
  34. qiskit/circuit/library/boolean_logic/quantum_or.py +3 -107
  35. qiskit/circuit/library/boolean_logic/quantum_xor.py +3 -97
  36. qiskit/circuit/library/data_preparation/__init__.py +3 -6
  37. qiskit/circuit/library/data_preparation/pauli_feature_map.py +29 -342
  38. qiskit/circuit/library/data_preparation/{_z_feature_map.py → z_feature_map.py} +34 -45
  39. qiskit/circuit/library/data_preparation/zz_feature_map.py +118 -0
  40. qiskit/circuit/library/fourier_checking.py +11 -72
  41. qiskit/circuit/library/generalized_gates/__init__.py +1 -1
  42. qiskit/circuit/library/generalized_gates/diagonal.py +51 -45
  43. qiskit/circuit/library/generalized_gates/gms.py +14 -67
  44. qiskit/circuit/library/generalized_gates/gr.py +4 -4
  45. qiskit/circuit/library/generalized_gates/isometry.py +2 -2
  46. qiskit/circuit/library/generalized_gates/linear_function.py +6 -12
  47. qiskit/circuit/library/generalized_gates/mcmt.py +107 -167
  48. qiskit/circuit/library/generalized_gates/permutation.py +6 -8
  49. qiskit/circuit/library/generalized_gates/rv.py +9 -8
  50. qiskit/circuit/library/graph_state.py +10 -93
  51. qiskit/circuit/library/grover_operator.py +2 -270
  52. qiskit/circuit/library/hidden_linear_function.py +20 -83
  53. qiskit/circuit/library/iqp.py +20 -99
  54. qiskit/circuit/library/n_local/__init__.py +7 -19
  55. qiskit/circuit/library/n_local/efficient_su2.py +5 -118
  56. qiskit/circuit/library/n_local/evolved_operator_ansatz.py +0 -259
  57. qiskit/circuit/library/n_local/excitation_preserving.py +6 -130
  58. qiskit/circuit/library/n_local/n_local.py +5 -406
  59. qiskit/circuit/library/n_local/pauli_two_design.py +4 -106
  60. qiskit/circuit/library/n_local/qaoa_ansatz.py +1 -80
  61. qiskit/circuit/library/n_local/real_amplitudes.py +7 -127
  62. qiskit/circuit/library/n_local/two_local.py +7 -14
  63. qiskit/circuit/library/overlap.py +26 -91
  64. qiskit/circuit/library/pauli_evolution.py +15 -17
  65. qiskit/circuit/library/phase_estimation.py +4 -80
  66. qiskit/circuit/library/quantum_volume.py +20 -72
  67. qiskit/circuit/library/standard_gates/__init__.py +1 -20
  68. qiskit/circuit/library/standard_gates/dcx.py +1 -2
  69. qiskit/circuit/library/standard_gates/ecr.py +2 -2
  70. qiskit/circuit/library/standard_gates/h.py +3 -4
  71. qiskit/circuit/library/standard_gates/i.py +1 -2
  72. qiskit/circuit/library/standard_gates/iswap.py +2 -2
  73. qiskit/circuit/library/standard_gates/p.py +12 -20
  74. qiskit/circuit/library/standard_gates/r.py +1 -1
  75. qiskit/circuit/library/standard_gates/rx.py +3 -4
  76. qiskit/circuit/library/standard_gates/rxx.py +2 -2
  77. qiskit/circuit/library/standard_gates/ry.py +3 -4
  78. qiskit/circuit/library/standard_gates/ryy.py +2 -2
  79. qiskit/circuit/library/standard_gates/rz.py +12 -13
  80. qiskit/circuit/library/standard_gates/rzx.py +6 -6
  81. qiskit/circuit/library/standard_gates/rzz.py +1 -1
  82. qiskit/circuit/library/standard_gates/s.py +4 -4
  83. qiskit/circuit/library/standard_gates/swap.py +3 -3
  84. qiskit/circuit/library/standard_gates/sx.py +3 -4
  85. qiskit/circuit/library/standard_gates/t.py +2 -2
  86. qiskit/circuit/library/standard_gates/u.py +3 -11
  87. qiskit/circuit/library/standard_gates/u1.py +15 -65
  88. qiskit/circuit/library/standard_gates/u2.py +1 -4
  89. qiskit/circuit/library/standard_gates/u3.py +3 -31
  90. qiskit/circuit/library/standard_gates/x.py +5 -7
  91. qiskit/circuit/library/standard_gates/xx_minus_yy.py +2 -2
  92. qiskit/circuit/library/standard_gates/xx_plus_yy.py +2 -2
  93. qiskit/circuit/library/standard_gates/y.py +3 -4
  94. qiskit/circuit/library/standard_gates/z.py +3 -3
  95. qiskit/circuit/library/templates/clifford/clifford_2_1.py +8 -9
  96. qiskit/circuit/library/templates/clifford/clifford_2_2.py +9 -10
  97. qiskit/circuit/library/templates/clifford/clifford_2_3.py +7 -9
  98. qiskit/circuit/library/templates/clifford/clifford_2_4.py +8 -9
  99. qiskit/circuit/library/templates/clifford/clifford_3_1.py +8 -9
  100. qiskit/circuit/library/templates/clifford/clifford_4_1.py +9 -10
  101. qiskit/circuit/library/templates/clifford/clifford_4_2.py +9 -10
  102. qiskit/circuit/library/templates/clifford/clifford_4_3.py +9 -10
  103. qiskit/circuit/library/templates/clifford/clifford_4_4.py +9 -10
  104. qiskit/circuit/library/templates/clifford/clifford_5_1.py +9 -10
  105. qiskit/circuit/library/templates/clifford/clifford_6_1.py +9 -10
  106. qiskit/circuit/library/templates/clifford/clifford_6_2.py +9 -10
  107. qiskit/circuit/library/templates/clifford/clifford_6_3.py +9 -10
  108. qiskit/circuit/library/templates/clifford/clifford_6_4.py +8 -9
  109. qiskit/circuit/library/templates/clifford/clifford_6_5.py +9 -10
  110. qiskit/circuit/library/templates/clifford/clifford_8_1.py +9 -10
  111. qiskit/circuit/library/templates/clifford/clifford_8_2.py +9 -10
  112. qiskit/circuit/library/templates/clifford/clifford_8_3.py +9 -10
  113. qiskit/circuit/library/templates/nct/template_nct_2a_1.py +7 -9
  114. qiskit/circuit/library/templates/nct/template_nct_2a_2.py +8 -10
  115. qiskit/circuit/library/templates/nct/template_nct_2a_3.py +10 -12
  116. qiskit/circuit/library/templates/nct/template_nct_4a_1.py +14 -16
  117. qiskit/circuit/library/templates/nct/template_nct_4a_2.py +12 -14
  118. qiskit/circuit/library/templates/nct/template_nct_4a_3.py +10 -12
  119. qiskit/circuit/library/templates/nct/template_nct_4b_1.py +12 -14
  120. qiskit/circuit/library/templates/nct/template_nct_4b_2.py +10 -12
  121. qiskit/circuit/library/templates/nct/template_nct_5a_1.py +10 -12
  122. qiskit/circuit/library/templates/nct/template_nct_5a_2.py +10 -12
  123. qiskit/circuit/library/templates/nct/template_nct_5a_3.py +10 -12
  124. qiskit/circuit/library/templates/nct/template_nct_5a_4.py +9 -11
  125. qiskit/circuit/library/templates/nct/template_nct_6a_1.py +9 -11
  126. qiskit/circuit/library/templates/nct/template_nct_6a_2.py +10 -12
  127. qiskit/circuit/library/templates/nct/template_nct_6a_3.py +10 -12
  128. qiskit/circuit/library/templates/nct/template_nct_6a_4.py +10 -12
  129. qiskit/circuit/library/templates/nct/template_nct_6b_1.py +10 -12
  130. qiskit/circuit/library/templates/nct/template_nct_6b_2.py +10 -12
  131. qiskit/circuit/library/templates/nct/template_nct_6c_1.py +10 -12
  132. qiskit/circuit/library/templates/nct/template_nct_7a_1.py +11 -13
  133. qiskit/circuit/library/templates/nct/template_nct_7b_1.py +11 -13
  134. qiskit/circuit/library/templates/nct/template_nct_7c_1.py +11 -13
  135. qiskit/circuit/library/templates/nct/template_nct_7d_1.py +11 -13
  136. qiskit/circuit/library/templates/nct/template_nct_7e_1.py +11 -13
  137. qiskit/circuit/library/templates/nct/template_nct_9a_1.py +11 -13
  138. qiskit/circuit/library/templates/nct/template_nct_9c_1.py +9 -11
  139. qiskit/circuit/library/templates/nct/template_nct_9c_10.py +10 -12
  140. qiskit/circuit/library/templates/nct/template_nct_9c_11.py +10 -12
  141. qiskit/circuit/library/templates/nct/template_nct_9c_12.py +10 -12
  142. qiskit/circuit/library/templates/nct/template_nct_9c_2.py +10 -12
  143. qiskit/circuit/library/templates/nct/template_nct_9c_3.py +10 -12
  144. qiskit/circuit/library/templates/nct/template_nct_9c_4.py +10 -12
  145. qiskit/circuit/library/templates/nct/template_nct_9c_5.py +10 -12
  146. qiskit/circuit/library/templates/nct/template_nct_9c_6.py +10 -12
  147. qiskit/circuit/library/templates/nct/template_nct_9c_7.py +10 -12
  148. qiskit/circuit/library/templates/nct/template_nct_9c_8.py +10 -12
  149. qiskit/circuit/library/templates/nct/template_nct_9c_9.py +10 -12
  150. qiskit/circuit/library/templates/nct/template_nct_9d_1.py +9 -11
  151. qiskit/circuit/library/templates/nct/template_nct_9d_10.py +10 -12
  152. qiskit/circuit/library/templates/nct/template_nct_9d_2.py +10 -12
  153. qiskit/circuit/library/templates/nct/template_nct_9d_3.py +10 -12
  154. qiskit/circuit/library/templates/nct/template_nct_9d_4.py +10 -12
  155. qiskit/circuit/library/templates/nct/template_nct_9d_5.py +10 -12
  156. qiskit/circuit/library/templates/nct/template_nct_9d_6.py +10 -12
  157. qiskit/circuit/library/templates/nct/template_nct_9d_7.py +10 -12
  158. qiskit/circuit/library/templates/nct/template_nct_9d_8.py +10 -12
  159. qiskit/circuit/library/templates/nct/template_nct_9d_9.py +10 -12
  160. qiskit/circuit/library/templates/rzx/rzx_cy.py +10 -11
  161. qiskit/circuit/library/templates/rzx/rzx_xz.py +15 -16
  162. qiskit/circuit/library/templates/rzx/rzx_yz.py +10 -12
  163. qiskit/circuit/library/templates/rzx/rzx_zz1.py +20 -22
  164. qiskit/circuit/library/templates/rzx/rzx_zz2.py +15 -16
  165. qiskit/circuit/library/templates/rzx/rzx_zz3.py +15 -17
  166. qiskit/circuit/parameter.py +0 -4
  167. qiskit/circuit/parameterexpression.py +34 -167
  168. qiskit/circuit/quantumcircuit.py +126 -162
  169. qiskit/circuit/singleton.py +0 -2
  170. qiskit/circuit/store.py +0 -2
  171. qiskit/compiler/assembler.py +4 -17
  172. qiskit/compiler/scheduler.py +0 -2
  173. qiskit/compiler/sequencer.py +0 -2
  174. qiskit/compiler/transpiler.py +26 -81
  175. qiskit/converters/circuit_to_dag.py +2 -2
  176. qiskit/converters/circuit_to_dagdependency.py +1 -1
  177. qiskit/converters/circuit_to_dagdependency_v2.py +1 -1
  178. qiskit/converters/circuit_to_instruction.py +1 -1
  179. qiskit/converters/dag_to_circuit.py +5 -7
  180. qiskit/converters/dag_to_dagdependency.py +1 -1
  181. qiskit/converters/dag_to_dagdependency_v2.py +1 -1
  182. qiskit/converters/dagdependency_to_circuit.py +1 -5
  183. qiskit/converters/dagdependency_to_dag.py +1 -6
  184. qiskit/dagcircuit/collect_blocks.py +3 -3
  185. qiskit/dagcircuit/dagdependency.py +5 -18
  186. qiskit/dagcircuit/dagdependency_v2.py +1 -1
  187. qiskit/dagcircuit/dagnode.py +2 -2
  188. qiskit/passmanager/__init__.py +2 -2
  189. qiskit/primitives/backend_estimator.py +2 -5
  190. qiskit/primitives/backend_sampler_v2.py +18 -61
  191. qiskit/primitives/base/base_estimator.py +2 -2
  192. qiskit/primitives/containers/data_bin.py +1 -9
  193. qiskit/primitives/statevector_sampler.py +1 -1
  194. qiskit/primitives/utils.py +1 -1
  195. qiskit/providers/__init__.py +3 -3
  196. qiskit/providers/backend.py +1 -12
  197. qiskit/providers/backend_compat.py +3 -23
  198. qiskit/providers/basic_provider/basic_simulator.py +2 -12
  199. qiskit/providers/fake_provider/fake_pulse_backend.py +1 -6
  200. qiskit/providers/fake_provider/generic_backend_v2.py +30 -46
  201. qiskit/providers/models/pulsedefaults.py +0 -2
  202. qiskit/pulse/builder.py +18 -59
  203. qiskit/pulse/calibration_entries.py +1 -4
  204. qiskit/pulse/channels.py +0 -2
  205. qiskit/pulse/exceptions.py +0 -2
  206. qiskit/pulse/instruction_schedule_map.py +6 -21
  207. qiskit/pulse/instructions/acquire.py +0 -2
  208. qiskit/pulse/instructions/delay.py +0 -2
  209. qiskit/pulse/instructions/directives.py +0 -8
  210. qiskit/pulse/instructions/frequency.py +0 -3
  211. qiskit/pulse/instructions/instruction.py +0 -2
  212. qiskit/pulse/instructions/phase.py +0 -3
  213. qiskit/pulse/instructions/play.py +0 -2
  214. qiskit/pulse/instructions/reference.py +0 -2
  215. qiskit/pulse/instructions/snapshot.py +0 -2
  216. qiskit/pulse/library/pulse.py +0 -2
  217. qiskit/pulse/library/symbolic_pulses.py +0 -28
  218. qiskit/pulse/library/waveform.py +0 -2
  219. qiskit/pulse/macros.py +1 -1
  220. qiskit/pulse/schedule.py +13 -12
  221. qiskit/pulse/transforms/alignments.py +3 -5
  222. qiskit/pulse/transforms/dag.py +0 -7
  223. qiskit/qasm2/export.py +3 -5
  224. qiskit/qasm2/parse.py +2 -46
  225. qiskit/qasm3/__init__.py +0 -1
  226. qiskit/qasm3/ast.py +15 -123
  227. qiskit/qasm3/exporter.py +77 -103
  228. qiskit/qobj/converters/pulse_instruction.py +4 -6
  229. qiskit/qpy/__init__.py +0 -181
  230. qiskit/qpy/binary_io/circuits.py +5 -20
  231. qiskit/qpy/binary_io/schedules.py +4 -3
  232. qiskit/qpy/binary_io/value.py +13 -310
  233. qiskit/qpy/common.py +2 -46
  234. qiskit/qpy/formats.py +0 -7
  235. qiskit/qpy/interface.py +4 -40
  236. qiskit/quantum_info/__init__.py +0 -4
  237. qiskit/quantum_info/operators/channel/transformations.py +21 -28
  238. qiskit/quantum_info/operators/dihedral/dihedral.py +1 -1
  239. qiskit/quantum_info/operators/operator.py +8 -54
  240. qiskit/quantum_info/operators/symplectic/base_pauli.py +19 -11
  241. qiskit/quantum_info/operators/symplectic/clifford.py +1 -1
  242. qiskit/quantum_info/operators/symplectic/clifford_circuits.py +1 -1
  243. qiskit/quantum_info/operators/symplectic/pauli.py +0 -2
  244. qiskit/quantum_info/operators/symplectic/pauli_list.py +4 -4
  245. qiskit/quantum_info/operators/symplectic/sparse_pauli_op.py +2 -23
  246. qiskit/quantum_info/states/densitymatrix.py +5 -5
  247. qiskit/quantum_info/states/stabilizerstate.py +1 -1
  248. qiskit/quantum_info/states/statevector.py +6 -6
  249. qiskit/result/mitigation/base_readout_mitigator.py +1 -1
  250. qiskit/result/mitigation/correlated_readout_mitigator.py +1 -9
  251. qiskit/result/mitigation/local_readout_mitigator.py +1 -9
  252. qiskit/result/mitigation/utils.py +0 -57
  253. qiskit/scheduler/config.py +0 -2
  254. qiskit/scheduler/methods/basic.py +0 -3
  255. qiskit/scheduler/schedule_circuit.py +0 -2
  256. qiskit/scheduler/sequence.py +0 -2
  257. qiskit/synthesis/__init__.py +0 -25
  258. qiskit/synthesis/clifford/clifford_decompose_bm.py +2 -1
  259. qiskit/synthesis/clifford/clifford_decompose_greedy.py +2 -3
  260. qiskit/synthesis/clifford/clifford_decompose_layers.py +1 -2
  261. qiskit/synthesis/evolution/__init__.py +0 -1
  262. qiskit/synthesis/evolution/lie_trotter.py +42 -16
  263. qiskit/synthesis/evolution/product_formula.py +238 -165
  264. qiskit/synthesis/evolution/qdrift.py +29 -36
  265. qiskit/synthesis/evolution/suzuki_trotter.py +27 -87
  266. qiskit/synthesis/multi_controlled/__init__.py +0 -1
  267. qiskit/synthesis/qft/qft_decompose_full.py +1 -19
  268. qiskit/synthesis/qft/qft_decompose_lnn.py +1 -2
  269. qiskit/synthesis/stabilizer/stabilizer_decompose.py +1 -2
  270. qiskit/synthesis/two_qubit/two_qubit_decompose.py +63 -4
  271. qiskit/synthesis/two_qubit/weyl.py +97 -0
  272. qiskit/synthesis/unitary/qsd.py +5 -5
  273. qiskit/transpiler/__init__.py +14 -21
  274. qiskit/transpiler/basepasses.py +1 -1
  275. qiskit/transpiler/passes/__init__.py +0 -2
  276. qiskit/transpiler/passes/basis/basis_translator.py +565 -9
  277. qiskit/transpiler/passes/basis/decompose.py +12 -45
  278. qiskit/transpiler/passes/basis/unroll_3q_or_more.py +1 -1
  279. qiskit/transpiler/passes/basis/unroll_custom_definitions.py +1 -1
  280. qiskit/transpiler/passes/calibration/pulse_gate.py +2 -4
  281. qiskit/transpiler/passes/calibration/rx_builder.py +7 -11
  282. qiskit/transpiler/passes/calibration/rzx_builder.py +30 -46
  283. qiskit/transpiler/passes/layout/disjoint_utils.py +13 -15
  284. qiskit/transpiler/passes/layout/sabre_layout.py +2 -7
  285. qiskit/transpiler/passes/layout/sabre_pre_layout.py +0 -5
  286. qiskit/transpiler/passes/optimization/__init__.py +0 -1
  287. qiskit/transpiler/passes/optimization/collect_cliffords.py +3 -19
  288. qiskit/transpiler/passes/optimization/collect_linear_functions.py +1 -1
  289. qiskit/transpiler/passes/optimization/collect_multiqubit_blocks.py +2 -2
  290. qiskit/transpiler/passes/optimization/commutative_inverse_cancellation.py +1 -1
  291. qiskit/transpiler/passes/optimization/consolidate_blocks.py +131 -48
  292. qiskit/transpiler/passes/optimization/echo_rzx_weyl_decomposition.py +2 -4
  293. qiskit/transpiler/passes/optimization/elide_permutations.py +32 -9
  294. qiskit/transpiler/passes/optimization/inverse_cancellation.py +0 -2
  295. qiskit/transpiler/passes/optimization/optimize_1q_decomposition.py +11 -5
  296. qiskit/transpiler/passes/optimization/optimize_1q_gates.py +1 -1
  297. qiskit/transpiler/passes/optimization/optimize_swap_before_measure.py +1 -1
  298. qiskit/transpiler/passes/optimization/template_matching/backward_match.py +5 -5
  299. qiskit/transpiler/passes/optimization/template_matching/forward_match.py +4 -4
  300. qiskit/transpiler/passes/optimization/template_matching/template_substitution.py +2 -2
  301. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/commuting_2q_gate_router.py +1 -1
  302. qiskit/transpiler/passes/routing/commuting_2q_gate_routing/swap_strategy.py +1 -1
  303. qiskit/transpiler/passes/routing/sabre_swap.py +3 -7
  304. qiskit/transpiler/passes/routing/star_prerouting.py +2 -2
  305. qiskit/transpiler/passes/scheduling/alap.py +1 -1
  306. qiskit/transpiler/passes/scheduling/alignments/align_measures.py +2 -2
  307. qiskit/transpiler/passes/scheduling/alignments/check_durations.py +1 -1
  308. qiskit/transpiler/passes/scheduling/alignments/pulse_gate_validation.py +0 -2
  309. qiskit/transpiler/passes/scheduling/alignments/reschedule.py +2 -2
  310. qiskit/transpiler/passes/scheduling/asap.py +1 -1
  311. qiskit/transpiler/passes/scheduling/base_scheduler.py +12 -14
  312. qiskit/transpiler/passes/scheduling/dynamical_decoupling.py +4 -9
  313. qiskit/transpiler/passes/scheduling/padding/base_padding.py +1 -1
  314. qiskit/transpiler/passes/scheduling/padding/dynamical_decoupling.py +5 -16
  315. qiskit/transpiler/passes/scheduling/padding/pad_delay.py +1 -4
  316. qiskit/transpiler/passes/scheduling/scheduling/base_scheduler.py +2 -6
  317. qiskit/transpiler/passes/scheduling/time_unit_conversion.py +4 -9
  318. qiskit/transpiler/passes/synthesis/high_level_synthesis.py +99 -262
  319. qiskit/transpiler/passes/synthesis/hls_plugins.py +7 -638
  320. qiskit/transpiler/passes/synthesis/qubit_tracker.py +132 -0
  321. qiskit/transpiler/passes/synthesis/solovay_kitaev_synthesis.py +3 -3
  322. qiskit/transpiler/passes/synthesis/unitary_synthesis.py +34 -55
  323. qiskit/transpiler/passes/utils/barrier_before_final_measurements.py +56 -2
  324. qiskit/transpiler/passes/utils/convert_conditions_to_if_ops.py +0 -5
  325. qiskit/transpiler/passes/utils/gate_direction.py +275 -12
  326. qiskit/transpiler/passes/utils/gates_basis.py +30 -7
  327. qiskit/transpiler/passes/utils/merge_adjacent_barriers.py +1 -2
  328. qiskit/transpiler/passmanager_config.py +4 -22
  329. qiskit/transpiler/preset_passmanagers/builtin_plugins.py +14 -40
  330. qiskit/transpiler/preset_passmanagers/common.py +3 -5
  331. qiskit/transpiler/preset_passmanagers/generate_preset_pass_manager.py +42 -125
  332. qiskit/transpiler/preset_passmanagers/plugin.py +1 -1
  333. qiskit/transpiler/target.py +16 -74
  334. qiskit/visualization/circuit/_utils.py +2 -2
  335. qiskit/visualization/circuit/circuit_visualization.py +2 -3
  336. qiskit/visualization/circuit/matplotlib.py +1 -1
  337. qiskit/visualization/dag_visualization.py +1 -1
  338. qiskit/visualization/pass_manager_visualization.py +14 -3
  339. qiskit/visualization/pulse_v2/interface.py +1 -3
  340. qiskit/visualization/timeline/core.py +2 -25
  341. qiskit/visualization/timeline/interface.py +0 -12
  342. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/METADATA +19 -20
  343. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/RECORD +347 -358
  344. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/WHEEL +1 -1
  345. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/entry_points.txt +0 -19
  346. qiskit/circuit/library/data_preparation/_zz_feature_map.py +0 -150
  347. qiskit/circuit/twirling.py +0 -145
  348. qiskit/synthesis/arithmetic/__init__.py +0 -16
  349. qiskit/synthesis/arithmetic/adders/__init__.py +0 -17
  350. qiskit/synthesis/arithmetic/adders/cdkm_ripple_carry_adder.py +0 -154
  351. qiskit/synthesis/arithmetic/adders/draper_qft_adder.py +0 -103
  352. qiskit/synthesis/arithmetic/adders/vbe_ripple_carry_adder.py +0 -161
  353. qiskit/synthesis/arithmetic/multipliers/__init__.py +0 -16
  354. qiskit/synthesis/arithmetic/multipliers/hrs_cumulative_multiplier.py +0 -102
  355. qiskit/synthesis/arithmetic/multipliers/rg_qft_multiplier.py +0 -99
  356. qiskit/synthesis/evolution/pauli_network.py +0 -80
  357. qiskit/synthesis/multi_controlled/mcmt_vchain.py +0 -52
  358. qiskit/transpiler/passes/optimization/remove_identity_equiv.py +0 -69
  359. qiskit/utils/deprecate_pulse.py +0 -119
  360. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/LICENSE.txt +0 -0
  361. {qiskit-1.3.0.dist-info → qiskit-1.3.0b1.dist-info}/top_level.txt +0 -0
qiskit/circuit/barrier.py CHANGED
@@ -19,7 +19,6 @@ with the :meth:`~qiskit.circuit.QuantumCircuit.barrier` method.
19
19
  from __future__ import annotations
20
20
 
21
21
  from qiskit.exceptions import QiskitError
22
- from qiskit.utils import deprecate_func
23
22
  from .instruction import Instruction
24
23
 
25
24
 
@@ -45,6 +44,5 @@ class Barrier(Instruction):
45
44
  """Special case. Return self."""
46
45
  return Barrier(self.num_qubits)
47
46
 
48
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
49
47
  def c_if(self, classical, val):
50
48
  raise QiskitError("Barriers are compiler directives and cannot be conditional.")
@@ -284,7 +284,7 @@ class InstructionPlaceholder(Instruction, abc.ABC):
284
284
  The same instruction instance that was passed, but mutated to propagate the tracked
285
285
  changes to this class.
286
286
  """
287
- instruction._condition = self._condition
287
+ instruction.condition = self.condition
288
288
  return instruction
289
289
 
290
290
  # Provide some better error messages, just in case something goes wrong during development and
@@ -639,8 +639,8 @@ class ControlFlowBuilderBlock(CircuitScopeInterface):
639
639
  # a register is already present, so we use our own tracking.
640
640
  self.add_register(register)
641
641
  out.add_register(register)
642
- if getattr(op, "_condition", None) is not None:
643
- for register in condition_resources(op._condition).cregs:
642
+ if getattr(op, "condition", None) is not None:
643
+ for register in condition_resources(op.condition).cregs:
644
644
  if register not in self.registers:
645
645
  self.add_register(register)
646
646
  out.add_register(register)
@@ -87,20 +87,12 @@ class IfElseOp(ControlFlowOp):
87
87
 
88
88
  super().__init__("if_else", num_qubits, num_clbits, [true_body, false_body], label=label)
89
89
 
90
- self._condition = validate_condition(condition)
90
+ self.condition = validate_condition(condition)
91
91
 
92
92
  @property
93
93
  def params(self):
94
94
  return self._params
95
95
 
96
- @property
97
- def condition(self):
98
- return self._condition
99
-
100
- @condition.setter
101
- def condition(self, value):
102
- self._condition = value
103
-
104
96
  @params.setter
105
97
  def params(self, parameters):
106
98
  # pylint: disable=cyclic-import
@@ -160,7 +152,7 @@ class IfElseOp(ControlFlowOp):
160
152
  true_body, false_body = (
161
153
  ablock for ablock, _ in itertools.zip_longest(blocks, range(2), fillvalue=None)
162
154
  )
163
- return IfElseOp(self._condition, true_body, false_body=false_body, label=self.label)
155
+ return IfElseOp(self.condition, true_body, false_body=false_body, label=self.label)
164
156
 
165
157
  def c_if(self, classical, val):
166
158
  raise NotImplementedError(
@@ -208,7 +200,7 @@ class IfElsePlaceholder(InstructionPlaceholder):
208
200
  "if_else", len(self.__resources.qubits), len(self.__resources.clbits), [], label=label
209
201
  )
210
202
  # Set the condition after super().__init__() has initialized it to None.
211
- self._condition = validate_condition(condition)
203
+ self.condition = validate_condition(condition)
212
204
 
213
205
  def with_false_block(self, false_block: ControlFlowBuilderBlock) -> "IfElsePlaceholder":
214
206
  """Return a new placeholder instruction, with the false block set to the given value,
@@ -233,7 +225,7 @@ class IfElsePlaceholder(InstructionPlaceholder):
233
225
  false_bits = false_block.qubits() | false_block.clbits()
234
226
  true_block.add_bits(false_bits - true_bits)
235
227
  false_block.add_bits(true_bits - false_bits)
236
- return type(self)(self._condition, true_block, false_block, label=self.label)
228
+ return type(self)(self.condition, true_block, false_block, label=self.label)
237
229
 
238
230
  def registers(self):
239
231
  """Get the registers used by the interior blocks."""
@@ -296,7 +288,7 @@ class IfElsePlaceholder(InstructionPlaceholder):
296
288
  )
297
289
  return (
298
290
  self._copy_mutable_properties(
299
- IfElseOp(self._condition, true_body, false_body, label=self.label)
291
+ IfElseOp(self.condition, true_body, false_body, label=self.label)
300
292
  ),
301
293
  InstructionResources(
302
294
  qubits=tuple(true_body.qubits),
@@ -53,20 +53,12 @@ class WhileLoopOp(ControlFlowOp):
53
53
  num_clbits = body.num_clbits
54
54
 
55
55
  super().__init__("while_loop", num_qubits, num_clbits, [body], label=label)
56
- self._condition = validate_condition(condition)
56
+ self.condition = validate_condition(condition)
57
57
 
58
58
  @property
59
59
  def params(self):
60
60
  return self._params
61
61
 
62
- @property
63
- def condition(self):
64
- return self._condition
65
-
66
- @condition.setter
67
- def condition(self, value):
68
- self._condition = value
69
-
70
62
  @params.setter
71
63
  def params(self, parameters):
72
64
  # pylint: disable=cyclic-import
@@ -96,7 +88,7 @@ class WhileLoopOp(ControlFlowOp):
96
88
 
97
89
  def replace_blocks(self, blocks):
98
90
  (body,) = blocks
99
- return WhileLoopOp(self._condition, body, label=self.label)
91
+ return WhileLoopOp(self.condition, body, label=self.label)
100
92
 
101
93
  def c_if(self, classical, val):
102
94
  raise NotImplementedError(
qiskit/circuit/delay.py CHANGED
@@ -19,7 +19,6 @@ from qiskit.circuit.instruction import Instruction
19
19
  from qiskit.circuit.gate import Gate
20
20
  from qiskit.circuit import _utils
21
21
  from qiskit.circuit.parameterexpression import ParameterExpression
22
- from qiskit.utils import deprecate_func
23
22
 
24
23
 
25
24
  @_utils.with_gate_array(np.eye(2, dtype=complex))
@@ -34,12 +33,8 @@ class Delay(Instruction):
34
33
  """
35
34
  if unit not in {"s", "ms", "us", "ns", "ps", "dt"}:
36
35
  raise CircuitError(f"Unknown unit {unit} is specified.")
37
- # Double underscore to differentiate from the private attribute in
38
- # `Instruction`. This can be changed to `_unit` in 2.0 after we
39
- # remove `unit` and `duration` from the standard instruction model
40
- # as it only will exist in `Delay` after that point.
41
- self.__unit = unit
42
- super().__init__("delay", 1, 0, params=[duration])
36
+
37
+ super().__init__("delay", 1, 0, params=[duration], unit=unit)
43
38
 
44
39
  broadcast_arguments = Gate.broadcast_arguments
45
40
 
@@ -47,21 +42,9 @@ class Delay(Instruction):
47
42
  """Special case. Return self."""
48
43
  return self
49
44
 
50
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
51
45
  def c_if(self, classical, val):
52
46
  raise CircuitError("Conditional Delay is not yet implemented.")
53
47
 
54
- @property
55
- def unit(self):
56
-
57
- return self.__unit
58
-
59
- @unit.setter
60
- def unit(self, value):
61
- if value not in {"s", "ms", "us", "ns", "ps", "dt"}:
62
- raise CircuitError(f"Unknown unit {value} is specified.")
63
- self.__unit = value
64
-
65
48
  @property
66
49
  def duration(self):
67
50
  """Get the duration of this delay."""
@@ -98,7 +81,7 @@ class Delay(Instruction):
98
81
  raise CircuitError(
99
82
  f"Duration for Delay instruction must be positive. Found {parameter}"
100
83
  )
101
- if self.__unit == "dt":
84
+ if self.unit == "dt":
102
85
  parameter_int = int(parameter)
103
86
  if parameter != parameter_int:
104
87
  raise CircuitError("Integer duration is expected for 'dt' unit.")
@@ -12,24 +12,190 @@
12
12
 
13
13
  """Gate equivalence library."""
14
14
 
15
+ import copy
16
+ from collections import namedtuple
17
+
15
18
  from rustworkx.visualization import graphviz_draw
16
19
  import rustworkx as rx
17
20
 
18
-
19
21
  from qiskit.exceptions import InvalidFileError
20
- from qiskit._accelerate.equivalence import ( # pylint: disable=unused-import
21
- BaseEquivalenceLibrary,
22
- Key,
23
- Equivalence,
24
- NodeData,
25
- EdgeData,
26
- )
22
+ from .exceptions import CircuitError
23
+ from .parameter import Parameter
24
+ from .parameterexpression import ParameterExpression
25
+
26
+ Key = namedtuple("Key", ["name", "num_qubits"])
27
+ Equivalence = namedtuple("Equivalence", ["params", "circuit"]) # Ordered to match Gate.params
28
+ NodeData = namedtuple("NodeData", ["key", "equivs"])
29
+ EdgeData = namedtuple("EdgeData", ["index", "num_gates", "rule", "source"])
27
30
 
28
31
 
29
- class EquivalenceLibrary(BaseEquivalenceLibrary):
32
+ class EquivalenceLibrary:
30
33
  """A library providing a one-way mapping of Gates to their equivalent
31
34
  implementations as QuantumCircuits."""
32
35
 
36
+ def __init__(self, *, base=None):
37
+ """Create a new equivalence library.
38
+
39
+ Args:
40
+ base (Optional[EquivalenceLibrary]): Base equivalence library to
41
+ be referenced if an entry is not found in this library.
42
+ """
43
+ self._base = base
44
+
45
+ if base is None:
46
+ self._graph = rx.PyDiGraph()
47
+ self._key_to_node_index = {}
48
+ # Some unique identifier for rules.
49
+ self._rule_id = 0
50
+ else:
51
+ self._graph = base._graph.copy()
52
+ self._key_to_node_index = copy.deepcopy(base._key_to_node_index)
53
+ self._rule_id = base._rule_id
54
+
55
+ @property
56
+ def graph(self) -> rx.PyDiGraph:
57
+ """Return graph representing the equivalence library data.
58
+
59
+ This property should be treated as read-only as it provides
60
+ a reference to the internal state of the :class:`~.EquivalenceLibrary` object.
61
+ If the graph returned by this property is mutated it could corrupt the
62
+ the contents of the object. If you need to modify the output ``PyDiGraph``
63
+ be sure to make a copy prior to any modification.
64
+
65
+ Returns:
66
+ PyDiGraph: A graph object with equivalence data in each node.
67
+ """
68
+ return self._graph
69
+
70
+ def _set_default_node(self, key):
71
+ """Create a new node if key not found"""
72
+ if key not in self._key_to_node_index:
73
+ self._key_to_node_index[key] = self._graph.add_node(NodeData(key=key, equivs=[]))
74
+ return self._key_to_node_index[key]
75
+
76
+ def add_equivalence(self, gate, equivalent_circuit):
77
+ """Add a new equivalence to the library. Future queries for the Gate
78
+ will include the given circuit, in addition to all existing equivalences
79
+ (including those from base).
80
+
81
+ Parameterized Gates (those including `qiskit.circuit.Parameters` in their
82
+ `Gate.params`) can be marked equivalent to parameterized circuits,
83
+ provided the parameters match.
84
+
85
+ Args:
86
+ gate (Gate): A Gate instance.
87
+ equivalent_circuit (QuantumCircuit): A circuit equivalently
88
+ implementing the given Gate.
89
+ """
90
+
91
+ _raise_if_shape_mismatch(gate, equivalent_circuit)
92
+ _raise_if_param_mismatch(gate.params, equivalent_circuit.parameters)
93
+
94
+ key = Key(name=gate.name, num_qubits=gate.num_qubits)
95
+ equiv = Equivalence(params=gate.params.copy(), circuit=equivalent_circuit.copy())
96
+
97
+ target = self._set_default_node(key)
98
+ self._graph[target].equivs.append(equiv)
99
+
100
+ sources = {
101
+ Key(name=instruction.operation.name, num_qubits=len(instruction.qubits))
102
+ for instruction in equivalent_circuit
103
+ }
104
+ edges = [
105
+ (
106
+ self._set_default_node(source),
107
+ target,
108
+ EdgeData(index=self._rule_id, num_gates=len(sources), rule=equiv, source=source),
109
+ )
110
+ for source in sources
111
+ ]
112
+ self._graph.add_edges_from(edges)
113
+ self._rule_id += 1
114
+
115
+ def has_entry(self, gate):
116
+ """Check if a library contains any decompositions for gate.
117
+
118
+ Args:
119
+ gate (Gate): A Gate instance.
120
+
121
+ Returns:
122
+ Bool: True if gate has a known decomposition in the library.
123
+ False otherwise.
124
+ """
125
+ key = Key(name=gate.name, num_qubits=gate.num_qubits)
126
+
127
+ return key in self._key_to_node_index
128
+
129
+ def set_entry(self, gate, entry):
130
+ """Set the equivalence record for a Gate. Future queries for the Gate
131
+ will return only the circuits provided.
132
+
133
+ Parameterized Gates (those including `qiskit.circuit.Parameters` in their
134
+ `Gate.params`) can be marked equivalent to parameterized circuits,
135
+ provided the parameters match.
136
+
137
+ Args:
138
+ gate (Gate): A Gate instance.
139
+ entry (List['QuantumCircuit']) : A list of QuantumCircuits, each
140
+ equivalently implementing the given Gate.
141
+ """
142
+ for equiv in entry:
143
+ _raise_if_shape_mismatch(gate, equiv)
144
+ _raise_if_param_mismatch(gate.params, equiv.parameters)
145
+
146
+ node_index = self._set_default_node(Key(name=gate.name, num_qubits=gate.num_qubits))
147
+ # Remove previous equivalences of this node, leaving in place any later equivalences that
148
+ # were added that use `gate`.
149
+ self._graph[node_index].equivs.clear()
150
+ for parent, child, _ in self._graph.in_edges(node_index):
151
+ # `child` should always be ourselves, but there might be parallel edges.
152
+ self._graph.remove_edge(parent, child)
153
+ for equivalence in entry:
154
+ self.add_equivalence(gate, equivalence)
155
+
156
+ def get_entry(self, gate):
157
+ """Gets the set of QuantumCircuits circuits from the library which
158
+ equivalently implement the given Gate.
159
+
160
+ Parameterized circuits will have their parameters replaced with the
161
+ corresponding entries from Gate.params.
162
+
163
+ Args:
164
+ gate (Gate) - Gate: A Gate instance.
165
+
166
+ Returns:
167
+ List[QuantumCircuit]: A list of equivalent QuantumCircuits. If empty,
168
+ library contains no known decompositions of Gate.
169
+
170
+ Returned circuits will be ordered according to their insertion in
171
+ the library, from earliest to latest, from top to base. The
172
+ ordering of the StandardEquivalenceLibrary will not generally be
173
+ consistent across Qiskit versions.
174
+ """
175
+ key = Key(name=gate.name, num_qubits=gate.num_qubits)
176
+ query_params = gate.params
177
+
178
+ return [_rebind_equiv(equiv, query_params) for equiv in self._get_equivalences(key)]
179
+
180
+ def keys(self):
181
+ """Return list of keys to key to node index map.
182
+
183
+ Returns:
184
+ List: Keys to the key to node index map.
185
+ """
186
+ return self._key_to_node_index.keys()
187
+
188
+ def node_index(self, key):
189
+ """Return node index for a given key.
190
+
191
+ Args:
192
+ key (Key): Key to an equivalence.
193
+
194
+ Returns:
195
+ Int: Index to the node in the graph for the given key.
196
+ """
197
+ return self._key_to_node_index[key]
198
+
33
199
  def draw(self, filename=None):
34
200
  """Draws the equivalence relations available in the library.
35
201
 
@@ -61,13 +227,12 @@ class EquivalenceLibrary(BaseEquivalenceLibrary):
61
227
  graph = rx.PyDiGraph()
62
228
 
63
229
  node_map = {}
64
- for key in super().keys():
65
- name, num_qubits = key.name, key.num_qubits
230
+ for key in self._key_to_node_index:
231
+ name, num_qubits = key
66
232
  equivalences = self._get_equivalences(key)
67
233
 
68
234
  basis = frozenset([f"{name}/{num_qubits}"])
69
- for equivalence in equivalences:
70
- params, decomp = equivalence.params, equivalence.circuit
235
+ for params, decomp in equivalences:
71
236
  decomp_basis = frozenset(
72
237
  f"{name}/{num_qubits}"
73
238
  for name, num_qubits in {
@@ -92,3 +257,39 @@ class EquivalenceLibrary(BaseEquivalenceLibrary):
92
257
  )
93
258
 
94
259
  return graph
260
+
261
+ def _get_equivalences(self, key):
262
+ """Get all the equivalences for the given key"""
263
+ return (
264
+ self._graph[self._key_to_node_index[key]].equivs
265
+ if key in self._key_to_node_index
266
+ else []
267
+ )
268
+
269
+
270
+ def _raise_if_param_mismatch(gate_params, circuit_parameters):
271
+ gate_parameters = [p for p in gate_params if isinstance(p, ParameterExpression)]
272
+
273
+ if set(gate_parameters) != circuit_parameters:
274
+ raise CircuitError(
275
+ "Cannot add equivalence between circuit and gate "
276
+ f"of different parameters. Gate params: {gate_parameters}. "
277
+ f"Circuit params: {circuit_parameters}."
278
+ )
279
+
280
+
281
+ def _raise_if_shape_mismatch(gate, circuit):
282
+ if gate.num_qubits != circuit.num_qubits or gate.num_clbits != circuit.num_clbits:
283
+ raise CircuitError(
284
+ "Cannot add equivalence between circuit and gate "
285
+ f"of different shapes. Gate: {gate.num_qubits} qubits and {gate.num_clbits} clbits. "
286
+ f"Circuit: {circuit.num_qubits} qubits and {circuit.num_clbits} clbits."
287
+ )
288
+
289
+
290
+ def _rebind_equiv(equiv, query_params):
291
+ equiv_params, equiv_circuit = equiv
292
+ param_map = {x: y for x, y in zip(equiv_params, query_params) if isinstance(x, Parameter)}
293
+ equiv = equiv_circuit.assign_parameters(param_map, inplace=False, flat_input=True)
294
+
295
+ return equiv
qiskit/circuit/gate.py CHANGED
@@ -89,9 +89,7 @@ class Gate(Instruction):
89
89
  from qiskit.circuit.library.generalized_gates.unitary import UnitaryGate
90
90
 
91
91
  if not annotated:
92
- return UnitaryGate(
93
- Operator(self).power(exponent, assume_unitary=True), label=f"{self.name}^{exponent}"
94
- )
92
+ return UnitaryGate(Operator(self).power(exponent), label=f"{self.name}^{exponent}")
95
93
  else:
96
94
  return AnnotatedOperation(self, PowerModifier(exponent))
97
95
 
@@ -103,23 +103,7 @@ class Instruction(Operation):
103
103
  # list of instructions (and their contexts) that this instruction is composed of
104
104
  # empty definition means opaque or fundamental instruction
105
105
  self._definition = None
106
- if duration is not None:
107
- warnings.warn(
108
- "Setting a custom duration per instruction is deprecated as of Qiskit "
109
- "1.3.0. It will be removed in Qiskit 2.0.0. An instruction's duration "
110
- "is defined in a backend's Target object.",
111
- DeprecationWarning,
112
- stacklevel=2,
113
- )
114
106
  self._duration = duration
115
- if unit is not None and unit != "dt":
116
- warnings.warn(
117
- "Setting a custom unit for duration per instruction is deprecated as of Qiskit "
118
- "1.3.0. It will be removed in Qiskit 2.0.0. An instruction's duration "
119
- "is defined in a backend's Target object which has a fixed unit in seconds.",
120
- DeprecationWarning,
121
- stacklevel=2,
122
- )
123
107
  self._unit = unit
124
108
 
125
109
  self.params = params # must be at last (other properties may be required for validation)
@@ -176,7 +160,6 @@ class Instruction(Operation):
176
160
  return self.copy()
177
161
 
178
162
  @property
179
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0", is_property=True)
180
163
  def condition(self):
181
164
  """The classical condition on the instruction."""
182
165
  return self._condition
@@ -358,26 +341,24 @@ class Instruction(Operation):
358
341
  sel.add_equivalence(self, decomposition)
359
342
 
360
343
  @property
361
- @deprecate_func(since="1.3.0", removal_timeline="in Qiskit 2.0.0", is_property=True)
362
344
  def duration(self):
363
345
  """Get the duration."""
364
346
  return self._duration
365
347
 
366
348
  @duration.setter
367
- def duration(self, value):
349
+ def duration(self, duration):
368
350
  """Set the duration."""
369
- self._duration = value
351
+ self._duration = duration
370
352
 
371
353
  @property
372
- @deprecate_func(since="1.3.0", removal_timeline="in Qiskit 2.0.0", is_property=True)
373
354
  def unit(self):
374
355
  """Get the time unit of duration."""
375
356
  return self._unit
376
357
 
377
358
  @unit.setter
378
- def unit(self, value):
359
+ def unit(self, unit):
379
360
  """Set the time unit of duration."""
380
- self._unit = value
361
+ self._unit = unit
381
362
 
382
363
  @deprecate_func(
383
364
  since="1.2",
@@ -411,8 +392,8 @@ class Instruction(Operation):
411
392
  # Add condition parameters for assembler. This is needed to convert
412
393
  # to a qobj conditional instruction at assemble time and after
413
394
  # conversion will be deleted by the assembler.
414
- if self._condition:
415
- instruction._condition = self._condition
395
+ if self.condition:
396
+ instruction._condition = self.condition
416
397
  return instruction
417
398
 
418
399
  @property
@@ -518,7 +499,6 @@ class Instruction(Operation):
518
499
  inverse_gate.definition = inverse_definition
519
500
  return inverse_gate
520
501
 
521
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
522
502
  def c_if(self, classical, val):
523
503
  """Set a classical equality condition on this instruction between the register or cbit
524
504
  ``classical`` and value ``val``.
@@ -634,7 +614,7 @@ class Instruction(Operation):
634
614
  qargs = tuple(qc.qubits)
635
615
  cargs = tuple(qc.clbits)
636
616
  base = self.copy()
637
- if self._condition:
617
+ if self.condition:
638
618
  # Condition is handled on the outer instruction.
639
619
  base = base.to_mutable()
640
620
  base.condition = None
@@ -642,19 +622,18 @@ class Instruction(Operation):
642
622
  qc._append(CircuitInstruction(base, qargs, cargs))
643
623
 
644
624
  instruction.definition = qc
645
- if self._condition:
646
- instruction = instruction.c_if(*self._condition)
625
+ if self.condition:
626
+ instruction = instruction.c_if(*self.condition)
647
627
  return instruction
648
628
 
649
629
  @property
650
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0", is_property=True)
651
630
  def condition_bits(self) -> List[Clbit]:
652
631
  """Get Clbits in condition."""
653
632
  from qiskit.circuit.controlflow import condition_resources # pylint: disable=cyclic-import
654
633
 
655
- if self._condition is None:
634
+ if self.condition is None:
656
635
  return []
657
- return list(condition_resources(self._condition).clbits)
636
+ return list(condition_resources(self.condition).clbits)
658
637
 
659
638
  @property
660
639
  def name(self):
@@ -20,7 +20,6 @@ from collections.abc import MutableSequence
20
20
  from typing import Callable
21
21
 
22
22
  from qiskit.circuit.exceptions import CircuitError
23
- from qiskit.utils import deprecate_func
24
23
  from .classicalregister import Clbit, ClassicalRegister
25
24
  from .operation import Operation
26
25
  from .quantumcircuitdata import CircuitInstruction
@@ -106,7 +105,6 @@ class InstructionSet:
106
105
  )
107
106
  return self
108
107
 
109
- @deprecate_func(since="1.3.0", removal_timeline="in 2.0.0")
110
108
  def c_if(self, classical: Clbit | ClassicalRegister | int, val: int) -> "InstructionSet":
111
109
  """Set a classical equality condition on all the instructions in this set between the
112
110
  :obj:`.ClassicalRegister` or :obj:`.Clbit` ``classical`` and value ``val``.