Skip to content

Flush missed v0.13 backlog items. #4600

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 26, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions cirq-core/cirq/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -526,10 +526,8 @@
json_serializable_dataclass,
dataclass_json_dict,
kraus,
measurement_key,
measurement_key_name,
measurement_key_obj,
measurement_keys,
measurement_key_names,
measurement_key_objs,
mixture,
Expand Down
5 changes: 0 additions & 5 deletions cirq-core/cirq/circuits/circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
import numpy as np

import cirq._version
from cirq._compat import deprecated
from cirq import devices, ops, protocols, value, qis
from cirq.circuits._bucket_priority_queue import BucketPriorityQueue
from cirq.circuits.circuit_operation import CircuitOperation
Expand Down Expand Up @@ -915,10 +914,6 @@ def all_measurement_key_objs(self) -> AbstractSet[value.MeasurementKey]:
def _measurement_key_objs_(self) -> AbstractSet[value.MeasurementKey]:
return self.all_measurement_key_objs()

@deprecated(deadline='v0.13', fix='use all_measurement_key_names instead')
def all_measurement_keys(self) -> AbstractSet[str]:
return self.all_measurement_key_names()

def all_measurement_key_names(self) -> AbstractSet[str]:
return {key for op in self.all_operations() for key in protocols.measurement_key_names(op)}

Expand Down
3 changes: 0 additions & 3 deletions cirq-core/cirq/circuits/circuit_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4312,9 +4312,6 @@ def _measurement_key_name_(self):
assert c.all_measurement_key_names() == cirq.measurement_key_names(c)
assert c.all_measurement_key_names() == c.all_measurement_key_objs()

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert c.all_measurement_key_names() == c.all_measurement_keys()

# Empty case.
assert circuit_cls().all_measurement_key_names() == set()

Expand Down
17 changes: 0 additions & 17 deletions cirq-core/cirq/ops/gate_operation.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import numpy as np

from cirq import protocols, value
from cirq._compat import _warn_or_error
from cirq.ops import raw_types, gate_features
from cirq.type_workarounds import NotImplementedType

Expand Down Expand Up @@ -222,28 +221,12 @@ def _measurement_key_name_(self) -> Optional[str]:
getter = getattr(self.gate, '_measurement_key_name_', None)
if getter is not None:
return getter()
getter = getattr(self.gate, '_measurement_key_', None)
if getter is not None:
_warn_or_error(
f'_measurement_key_ was used but is deprecated.\n'
f'It will be removed in cirq v0.13.\n'
f'Use _measurement_key_name_ instead.\n'
)
return getter()
return NotImplemented

def _measurement_key_names_(self) -> Optional[AbstractSet[str]]:
getter = getattr(self.gate, '_measurement_key_names_', None)
if getter is not None:
return getter()
getter = getattr(self.gate, '_measurement_keys_', None)
if getter is not None:
_warn_or_error(
f'_measurement_keys_ was used but is deprecated.\n'
f'It will be removed in cirq v0.13.\n'
f'Use _measurement_key_names_ instead.\n'
)
return getter()
return NotImplemented

def _measurement_key_obj_(self) -> Optional[value.MeasurementKey]:
Expand Down
2 changes: 0 additions & 2 deletions cirq-core/cirq/protocols/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,8 @@
)
from cirq.protocols.measurement_key_protocol import (
is_measurement,
measurement_key,
measurement_key_name,
measurement_key_obj,
measurement_keys,
measurement_key_names,
measurement_key_objs,
with_key_path,
Expand Down
30 changes: 1 addition & 29 deletions cirq-core/cirq/protocols/measurement_key_protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

from typing_extensions import Protocol

from cirq._compat import deprecated, deprecated_parameter, _warn_or_error
from cirq._compat import deprecated_parameter
from cirq._doc import doc_private
from cirq import value

Expand Down Expand Up @@ -100,11 +100,6 @@ def _with_measurement_key_mapping_(self, key_map: Dict[str, str]):
"""


@deprecated(deadline='v0.13', fix='use cirq.measurement_key_name instead')
def measurement_key(val: Any, default: Any = RaiseTypeErrorIfNotProvided):
return measurement_key_name(val, default)


def measurement_key_obj(val: Any, default: Any = RaiseTypeErrorIfNotProvided):
"""Get the single measurement key object for the given value.

Expand Down Expand Up @@ -198,38 +193,15 @@ def _measurement_key_names_from_magic_methods(val: Any) -> Optional[AbstractSet[
result = NotImplemented if getter is None else getter()
if result is not NotImplemented and result is not None:
return set(result)
getter = getattr(val, '_measurement_keys_', None)
result = NotImplemented if getter is None else getter()
if result is not NotImplemented and result is not None:
_warn_or_error(
f'_measurement_keys_ was used but is deprecated.\n'
f'It will be removed in cirq v0.13.\n'
f'Use _measurement_key_names_ instead.\n'
)
return set(result)

getter = getattr(val, '_measurement_key_name_', None)
result = NotImplemented if getter is None else getter()
if result is not NotImplemented and result is not None:
return {result}
getter = getattr(val, '_measurement_key_', None)
result = NotImplemented if getter is None else getter()
if result is not NotImplemented and result is not None:
_warn_or_error(
f'_measurement_key_ was used but is deprecated.\n'
f'It will be removed in cirq v0.13.\n'
f'Use _measurement_key_name_ instead.\n'
)
return {result}

return result


@deprecated(deadline='v0.13', fix='use cirq.measurement_key_names instead')
def measurement_keys(val: Any, *, allow_decompose: bool = True):
return measurement_key_names(val, allow_decompose=allow_decompose)


def measurement_key_objs(val: Any) -> AbstractSet[value.MeasurementKey]:
"""Gets the measurement key objects of measurements within the given value.

Expand Down
59 changes: 0 additions & 59 deletions cirq-core/cirq/protocols/measurement_key_protocol_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,49 +49,6 @@ def test_measurement_key_obj(gate):
assert cirq.measurement_key_obj(gate, 'a') == 'door locker'


@pytest.mark.parametrize('gate', [ReturnsStr(), ReturnsObj()])
def test_measurement_key_deprecated(gate):
with cirq.testing.assert_deprecated(deadline="v0.13"):
assert isinstance(cirq.measurement_key(gate), str)

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert cirq.measurement_key(gate) == cirq.MeasurementKey(name='door locker')

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert cirq.measurement_key(gate) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert cirq.measurement_key(gate, None) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert cirq.measurement_key(gate, NotImplemented) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert cirq.measurement_key(gate, 'a') == 'door locker'


@pytest.mark.parametrize('key_method', [cirq.measurement_key_name, cirq.measurement_key_obj])
def test_measurement_key_magic_method_deprecated(key_method):
class DeprecatedMagicMethod(cirq.SingleQubitGate):
def _measurement_key_(self):
return 'door locker'

gate = DeprecatedMagicMethod()
with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(gate) == 'door locker'
with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(gate.on(cirq.LineQubit(0))) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(gate, None) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(gate, NotImplemented) == 'door locker'

with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(gate, 'a') == 'door locker'


@pytest.mark.parametrize('key_method', [cirq.measurement_key_name, cirq.measurement_key_obj])
def test_measurement_key_no_method(key_method):
class NoMethod:
Expand Down Expand Up @@ -223,22 +180,6 @@ def num_qubits(self) -> int:
assert key_method(MeasurementKeysGate().on(a)) == keys


@pytest.mark.parametrize('key_method', [cirq.measurement_key_names, cirq.measurement_key_objs])
def test_measurement_keys_magic_method_deprecated(key_method):
class DeprecatedMagicMethod(cirq.Gate):
def _measurement_keys_(self):
return ['a', 'b']

def num_qubits(self) -> int:
return 1

a = cirq.LineQubit(0)
with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(DeprecatedMagicMethod()) == {'a', 'b'}
with cirq.testing.assert_deprecated(deadline="v0.13"):
assert key_method(DeprecatedMagicMethod().on(a)) == {'a', 'b'}


def test_measurement_keys_allow_decompose_deprecated():
a = cirq.LineQubit(0)
with cirq.testing.assert_deprecated(deadline="v0.14"):
Expand Down