|
19 | 19 | from attrs import field, frozen |
20 | 20 | from numpy.typing import NDArray |
21 | 21 |
|
22 | | -from qualtran import Bloq, bloq_example, BloqDocSpec, CtrlSpec, Signature, Soquet |
| 22 | +from qualtran import Bloq, bloq_example, BloqBuilder, BloqDocSpec, CtrlSpec, Signature, SoquetT |
23 | 23 | from qualtran.bloqs.basic_gates.su2_rotation import SU2RotationGate |
24 | 24 | from qualtran.bloqs.bookkeeping import Always |
25 | 25 | from qualtran.bloqs.qsp.generalized_qsp import GeneralizedQSP |
|
32 | 32 | from qualtran.symbolics import is_symbolic, Shaped, SymbolicFloat, SymbolicInt |
33 | 33 |
|
34 | 34 | if TYPE_CHECKING: |
35 | | - from qualtran import BloqBuilder, SoquetT |
36 | 35 | from qualtran.resource_counting import BloqCountDictT, SympySymbolAllocator |
37 | 36 |
|
38 | 37 |
|
@@ -175,11 +174,11 @@ def build_composite_bloq(self, bb: 'BloqBuilder', **soqs: 'SoquetT') -> Dict[str |
175 | 174 | soqs, state_prep_ancilla = self.__add_prepare(bb, soqs, state_prep_ancilla, adjoint=True) |
176 | 175 |
|
177 | 176 | for soq in state_prep_ancilla.values(): |
178 | | - if isinstance(soq, Soquet): |
179 | | - bb.free(soq) |
| 177 | + if BloqBuilder.is_ndarray(soq): |
| 178 | + for soq_element in soq.reshape(-1): |
| 179 | + bb.free(soq_element.item()) |
180 | 180 | else: |
181 | | - for soq_element in soq: |
182 | | - bb.free(cast(Soquet, soq_element)) |
| 181 | + bb.free(soq.item()) |
183 | 182 |
|
184 | 183 | return soqs |
185 | 184 |
|
|
0 commit comments