Add support for attribute caching to the date platform (#106338)
This commit is contained in:
parent
24b14d07de
commit
b6c2842b01
1 changed files with 14 additions and 5 deletions
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||
|
||||
from datetime import date, timedelta
|
||||
import logging
|
||||
from typing import final
|
||||
from typing import TYPE_CHECKING, final
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
|
@ -21,6 +21,12 @@ from homeassistant.helpers.typing import ConfigType
|
|||
|
||||
from .const import DOMAIN, SERVICE_SET_VALUE
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from functools import cached_property
|
||||
else:
|
||||
from homeassistant.backports.functools import cached_property
|
||||
|
||||
|
||||
SCAN_INTERVAL = timedelta(seconds=30)
|
||||
|
||||
ENTITY_ID_FORMAT = DOMAIN + ".{}"
|
||||
|
@ -65,7 +71,10 @@ class DateEntityDescription(EntityDescription, frozen_or_thawed=True):
|
|||
"""A class that describes date entities."""
|
||||
|
||||
|
||||
class DateEntity(Entity):
|
||||
CACHED_PROPERTIES_WITH_ATTR_ = {"native_value"}
|
||||
|
||||
|
||||
class DateEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
||||
"""Representation of a Date entity."""
|
||||
|
||||
entity_description: DateEntityDescription
|
||||
|
@ -73,13 +82,13 @@ class DateEntity(Entity):
|
|||
_attr_native_value: date | None
|
||||
_attr_state: None = None
|
||||
|
||||
@property
|
||||
@cached_property
|
||||
@final
|
||||
def device_class(self) -> None:
|
||||
"""Return the device class for the entity."""
|
||||
return None
|
||||
|
||||
@property
|
||||
@cached_property
|
||||
@final
|
||||
def state_attributes(self) -> None:
|
||||
"""Return the state attributes."""
|
||||
|
@ -93,7 +102,7 @@ class DateEntity(Entity):
|
|||
return None
|
||||
return self.native_value.isoformat()
|
||||
|
||||
@property
|
||||
@cached_property
|
||||
def native_value(self) -> date | None:
|
||||
"""Return the value reported by the date."""
|
||||
return self._attr_native_value
|
||||
|
|
Loading…
Add table
Reference in a new issue