A class for serializing and deserializing programs and operations.

Inherits From: Serializer

This class is for serializing cirq_google.api.v2. protos using one message type per gate type. It serializes qubits by adding a field into the constants table. Usage is by passing a cirq.Circuit to the serialize() method of the class, which will produce a Program proto. Likewise, the deserialize method will produce a cirq.Circuit object from a Program proto.

This class is more performant than the previous SerializableGateSet at the cost of some extendability.

gate_set_name The name used to identify the gate set.

name The name of the serializer.



View source

Deserialize a Circuit from a cirq_google.api.v2.Program.

proto A dictionary representing a cirq_google.api.v2.Program proto.
device If the proto is for a schedule, a device is required Otherwise optional.

The deserialized Circuit, with a device if device was not None.

ValueError If the given proto has no language or the langauge gate set mismatches that specified in as the name of this serialized gate set. Also if deserializing a schedule is attempted.
NotImplementedError If the program proto does not contain a circuit or schedule.


View source

Serialize a Circuit to cirq_google.api.v2.Program proto.

program The Circuit to serialize.
msg An optional proto object to populate with the serialization results.
arg_function_language The arg_function_language field from Program.Language.

NotImplementedError If the program is of a type that is supported.