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.
Deserialize a Circuit from a cirq_google.api.v2.Program.
Args
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.
Returns
The deserialized Circuit, with a device if device was not None.
Raises
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.