diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index bf30943fb58..8f344aff484 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -227,6 +227,9 @@ class EntityPlatformState(Enum): REMOVED = auto() +_SENTINEL = object() + + class EntityDescription(metaclass=FrozenOrThawed, frozen_or_thawed=True): """A class that describes Home Assistant entities.""" @@ -346,6 +349,8 @@ class CachedProperties(type): Also invalidates the corresponding cached_property by calling delattr on it. """ + if getattr(o, private_attr_name, _SENTINEL) == val: + return setattr(o, private_attr_name, val) try: # noqa: SIM105 suppress is much slower delattr(o, name) diff --git a/tests/components/konnected/test_init.py b/tests/components/konnected/test_init.py index 2dff9672f17..658f1053f93 100644 --- a/tests/components/konnected/test_init.py +++ b/tests/components/konnected/test_init.py @@ -706,7 +706,7 @@ async def test_state_updates_zone( resp = await client.post( "/api/konnected/device/112233445566", headers={"Authorization": "Bearer abcdefgh"}, - json={"zone": "5", "temp": 32, "addr": 1}, + json={"zone": "5", "temp": 32.0, "addr": 1}, ) assert resp.status == HTTPStatus.OK result = await resp.json() @@ -863,7 +863,7 @@ async def test_state_updates_pin( resp = await client.post( "/api/konnected/device/112233445566", headers={"Authorization": "Bearer abcdefgh"}, - json={"pin": "7", "temp": 32, "addr": 1}, + json={"pin": "7", "temp": 32.0, "addr": 1}, ) assert resp.status == HTTPStatus.OK result = await resp.json()