Cache entity properties that are never expected to change in the base class (#95315)

This commit is contained in:
J. Nick Koston 2023-09-14 17:48:48 -05:00 committed by GitHub
parent 5f20725fd5
commit 042776ebb8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 146 additions and 48 deletions

View file

@ -645,6 +645,13 @@ class ZwaveSensor(ZWaveBaseEntity, SensorEntity):
return None
return str(self.info.primary_value.metadata.unit)
@property # type: ignore[override]
# fget is used in the child classes which is not compatible with cached_property
# mypy also doesn't know about fget: https://github.com/python/mypy/issues/6185
def device_class(self) -> SensorDeviceClass | None:
"""Return device class of sensor."""
return super().device_class
class ZWaveNumericSensor(ZwaveSensor):
"""Representation of a Z-Wave Numeric sensor."""
@ -737,7 +744,9 @@ class ZWaveListSensor(ZwaveSensor):
return list(self.info.primary_value.metadata.states.values())
return None
@property
@property # type: ignore[override]
# fget is used which is not compatible with cached_property
# mypy also doesn't know about fget: https://github.com/python/mypy/issues/6185
def device_class(self) -> SensorDeviceClass | None:
"""Return sensor device class."""
if (device_class := super().device_class) is not None:
@ -781,7 +790,7 @@ class ZWaveConfigParameterSensor(ZWaveListSensor):
additional_info=[property_key_name] if property_key_name else None,
)
@property
@property # type: ignore[override]
def device_class(self) -> SensorDeviceClass | None:
"""Return sensor device class."""
# mypy doesn't know about fget: https://github.com/python/mypy/issues/6185