Avoid clearing the attr cache in setter when nothing has changed (#106384)

This commit is contained in:
J. Nick Koston 2023-12-25 09:13:48 -10:00 committed by GitHub
parent 50f64e053e
commit eb3fde7261
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View file

@ -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)

View file

@ -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()