Skip to content

Commit a58b7fc

Browse files
authored
Deprecate SerializableDevice (#5522)
To be replaced by GridDevice.
1 parent f6bea2f commit a58b7fc

File tree

4 files changed

+153
-93
lines changed

4 files changed

+153
-93
lines changed

cirq-google/cirq_google/devices/grid_device_test.py

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -459,33 +459,37 @@ def test_to_proto_backward_compatibility():
459459
out=spec,
460460
)
461461

462-
# Deserialize both ways
463-
serializable_dev = cirq_google.SerializableDevice.from_proto(spec, [cirq_google.FSIM_GATESET])
464-
grid_dev = cirq_google.GridDevice.from_proto(spec)
465-
466-
assert serializable_dev.metadata.qubit_set == grid_dev.metadata.qubit_set
467-
assert serializable_dev.metadata.qubit_pairs == grid_dev.metadata.qubit_pairs
468-
469-
assert serializable_dev.metadata.gateset == cirq.Gateset(
470-
cirq.FSimGate,
471-
cirq.ISwapPowGate,
472-
cirq.CZPowGate,
473-
cirq.PhasedXPowGate,
474-
cirq.XPowGate,
475-
cirq.YPowGate,
476-
cirq.ZPowGate,
477-
cirq.PhasedXZGate,
478-
cirq.MeasurementGate,
479-
cirq.WaitGate,
480-
cirq.GlobalPhaseGate,
481-
)
462+
with cirq.testing.assert_deprecated('Use cirq_google.GridDevice', deadline='v0.16', count=None):
463+
# Deserialize both ways
464+
serializable_dev = cirq_google.SerializableDevice.from_proto(
465+
spec, [cirq_google.FSIM_GATESET]
466+
)
467+
grid_dev = cirq_google.GridDevice.from_proto(spec)
468+
469+
assert serializable_dev.metadata.qubit_set == grid_dev.metadata.qubit_set
470+
assert serializable_dev.metadata.qubit_pairs == grid_dev.metadata.qubit_pairs
471+
472+
assert serializable_dev.metadata.gateset == cirq.Gateset(
473+
cirq.FSimGate,
474+
cirq.ISwapPowGate,
475+
cirq.CZPowGate,
476+
cirq.PhasedXPowGate,
477+
cirq.XPowGate,
478+
cirq.YPowGate,
479+
cirq.ZPowGate,
480+
cirq.PhasedXZGate,
481+
cirq.MeasurementGate,
482+
cirq.WaitGate,
483+
cirq.GlobalPhaseGate,
484+
)
482485

483-
assert grid_dev.metadata.gateset == device_info.expected_gateset
484-
assert (
485-
tuple(grid_dev.metadata.compilation_target_gatesets) == device_info.expected_target_gatesets
486-
)
486+
assert grid_dev.metadata.gateset == device_info.expected_gateset
487+
assert (
488+
tuple(grid_dev.metadata.compilation_target_gatesets)
489+
== device_info.expected_target_gatesets
490+
)
487491

488-
assert grid_dev.metadata.gate_durations == device_info.expected_gate_durations
492+
assert grid_dev.metadata.gate_durations == device_info.expected_gate_durations
489493

490494

491495
def test_to_proto_empty():

cirq-google/cirq_google/devices/known_devices_test.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,11 @@ def test_multiple_gate_sets():
221221

222222

223223
def test_sycamore_circuitop_device():
224-
with cirq.testing.assert_deprecated('no longer be available', deadline='v0.16', count=1):
224+
# Deprecations: cirq_google.SerializableDevice and
225+
# cirq_google.devices.known_devices.create_device_proto_from_diagram
226+
with cirq.testing.assert_deprecated(
227+
'Use cirq_google.GridDevice', 'no longer be available', deadline='v0.16', count=3
228+
):
225229
circuitop_gateset = cirq_google.SerializableGateSet(
226230
gate_set_name='circuitop_gateset',
227231
serializers=[cgc.CIRCUIT_OP_SERIALIZER],
@@ -316,7 +320,11 @@ def test_proto_with_circuitop():
316320

317321

318322
def test_proto_with_waitgate():
319-
with cirq.testing.assert_deprecated('no longer be available', deadline='v0.16', count=1):
323+
# Deprecations: cirq_google.SerializableDevice and
324+
# cirq_google.devices.known_devices.create_device_proto_from_diagram
325+
with cirq.testing.assert_deprecated(
326+
'Use cirq_google.GridDevice', 'no longer be available', deadline='v0.16', count=3
327+
):
320328
wait_gateset = cirq_google.SerializableGateSet(
321329
gate_set_name='wait_gateset',
322330
serializers=[cgc.WAIT_GATE_SERIALIZER],
@@ -379,7 +387,11 @@ def test_proto_with_waitgate():
379387

380388

381389
def test_adding_gates_multiple_times():
382-
with cirq.testing.assert_deprecated('no longer be available', deadline='v0.16', count=1):
390+
# Deprecations: cirq_google.SerializableDevice and
391+
# cirq_google.devices.known_devices.create_device_proto_from_diagram
392+
with cirq.testing.assert_deprecated(
393+
'Use cirq_google.GridDevice', 'no longer be available', deadline='v0.16', count=3
394+
):
383395
waiting_for_godot = cirq_google.SerializableGateSet(
384396
gate_set_name='wait_gateset',
385397
serializers=[

cirq-google/cirq_google/devices/serializable_device.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
from typing import Any, Callable, cast, Dict, Iterable, List, Optional, Set, Tuple, Type, Union
1717
import cirq
18+
from cirq import _compat
1819
from cirq_google.serialization import serializable_gate_set
1920
from cirq_google.api import v2
2021

@@ -66,6 +67,7 @@ def __eq__(self, other):
6667
_GateOrFrozenCircuitTypes = Union[Type[cirq.Gate], Type[cirq.FrozenCircuit]]
6768

6869

70+
@_compat.deprecated_class(deadline='v0.16', fix='Use cirq_google.GridDevice instead.')
6971
class SerializableDevice(cirq.Device):
7072
"""Device object generated from a device specification proto.
7173
@@ -122,6 +124,11 @@ def metadata(self) -> cirq.GridDeviceMetadata:
122124
return self._metadata
123125

124126
@classmethod
127+
@_compat.deprecated(
128+
deadline='v0.16',
129+
fix='cirq_google.SerializableDevice is replaced cirq_google.GridDevice.'
130+
' Use cirq_google.GridDevice.from_proto() instead.',
131+
)
125132
def from_proto(
126133
cls,
127134
proto: v2.device_pb2.DeviceSpecification,

0 commit comments

Comments
 (0)