diff --git a/cirq-google/cirq_google/serialization/circuit_serializer.py b/cirq-google/cirq_google/serialization/circuit_serializer.py index 16fd0396755..ea4b52070a6 100644 --- a/cirq-google/cirq_google/serialization/circuit_serializer.py +++ b/cirq-google/cirq_google/serialization/circuit_serializer.py @@ -175,7 +175,9 @@ def _serialize_gate_op( out=msg.phasedxpowgate.exponent, arg_function_language=arg_function_language, ) - elif isinstance(gate, cirq.PhasedXZGate): + elif isinstance(gate, (cirq.PhasedXZGate, cirq.ops.SingleQubitCliffordGate)): + if isinstance(gate, cirq.ops.SingleQubitCliffordGate): + gate = gate.to_phased_xz_gate() arg_func_langs.float_arg_to_proto( gate.x_exponent, out=msg.phasedxzgate.x_exponent, diff --git a/cirq-google/cirq_google/serialization/circuit_serializer_test.py b/cirq-google/cirq_google/serialization/circuit_serializer_test.py index 107bf70004a..1e9a9e6d671 100644 --- a/cirq-google/cirq_google/serialization/circuit_serializer_test.py +++ b/cirq-google/cirq_google/serialization/circuit_serializer_test.py @@ -668,3 +668,16 @@ def test_measurement_gate_deserialize() -> None: msg = cg.CIRCUIT_SERIALIZER.serialize(circuit) assert cg.CIRCUIT_SERIALIZER.deserialize(msg) == circuit + + +def test_circuit_with_cliffords(): + q = cirq.NamedQubit('q') + circuit = cirq.Circuit( + g(q) for g in cirq.ops.SingleQubitCliffordGate.all_single_qubit_cliffords + ) + want = cirq.Circuit( + g.to_phased_xz_gate()(q) + for g in cirq.ops.SingleQubitCliffordGate.all_single_qubit_cliffords + ) + msg = cg.CIRCUIT_SERIALIZER.serialize(circuit) + assert cg.CIRCUIT_SERIALIZER.deserialize(msg) == want