Skip to content

Commit 524209d

Browse files
authored
Fix cirq_quregs argument in composite_bloq (#962)
Pass kwargs as kwargs, otherwise, an extra dictionary layer is added. Adds a test that exercises this. Fixes: #955
1 parent 1a66fc8 commit 524209d

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

qualtran/_infra/composite_bloq.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def as_cirq_op(
139139
import cirq
140140

141141
circuit, out_quregs = self.to_cirq_circuit_and_quregs(
142-
qubit_manager=qubit_manager, cirq_quregs=cirq_quregs
142+
qubit_manager=qubit_manager, **cirq_quregs
143143
)
144144
return cirq.CircuitOperation(circuit), out_quregs
145145

qualtran/_infra/controlled_test.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from qualtran import (
2323
Bloq,
2424
BloqBuilder,
25+
CompositeBloq,
2526
Controlled,
2627
CtrlSpec,
2728
QBit,
@@ -130,6 +131,19 @@ def _test_cirq_equivalence(bloq: Bloq, gate: cirq.Gate):
130131
)
131132
cirq.testing.assert_same_circuits(circuit1, circuit2)
132133

134+
# controlled composite subbloqs
135+
circuit = cirq.Circuit(cirq.X(cirq.LineQubit(0)))
136+
cbloq = CompositeBloq.from_cirq_circuit(circuit).controlled().as_composite_bloq()
137+
quregs = get_named_qubits(cbloq.signature.lefts())
138+
139+
circuit1 = cbloq.to_cirq_circuit(qubit_manager=None, cirq_quregs=quregs)
140+
ctrl = quregs['ctrl'][0]
141+
q = quregs['qubits'][0][0]
142+
circuit2 = cirq.Circuit(
143+
cirq.CircuitOperation(cirq.Circuit(cirq.X(q)).freeze()).controlled_by(ctrl)
144+
)
145+
cirq.testing.assert_same_circuits(circuit1, circuit2)
146+
133147

134148
def test_ctrl_spec_activation_1():
135149
cspec1 = CtrlSpec()

0 commit comments

Comments
 (0)