From 05d205ae7a92a71fdb2eb9668a2d2f66a25b788e Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Mon, 8 Jan 2024 20:20:15 -1000 Subject: [PATCH] Small cleanups to number entity (#107624) --- homeassistant/components/number/__init__.py | 25 +++++++++++---------- homeassistant/components/number/const.py | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/number/__init__.py b/homeassistant/components/number/__init__.py index 55b281e02e1..c95381d09c2 100644 --- a/homeassistant/components/number/__init__.py +++ b/homeassistant/components/number/__init__.py @@ -424,22 +424,22 @@ class NumberEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_): native_unit_of_measurement = self.native_unit_of_measurement unit_of_measurement = self.unit_of_measurement if native_unit_of_measurement != unit_of_measurement: - assert native_unit_of_measurement - assert unit_of_measurement + if TYPE_CHECKING: + assert native_unit_of_measurement + assert unit_of_measurement value_s = str(value) prec = len(value_s) - value_s.index(".") - 1 if "." in value_s else 0 # Suppress ValueError (Could not convert value to float) with suppress(ValueError): - value_new: float = UNIT_CONVERTERS[device_class].convert( - value, + value_new: float = UNIT_CONVERTERS[device_class].converter_factory( native_unit_of_measurement, unit_of_measurement, - ) + )(value) # Round to the wanted precision - value = method(value_new, prec) + return method(value_new, prec) return value @@ -453,21 +453,22 @@ class NumberEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_): native_unit_of_measurement = self.native_unit_of_measurement unit_of_measurement = self.unit_of_measurement if native_unit_of_measurement != unit_of_measurement: - assert native_unit_of_measurement - assert unit_of_measurement + if TYPE_CHECKING: + assert native_unit_of_measurement + assert unit_of_measurement - value = UNIT_CONVERTERS[device_class].convert( - value, + return UNIT_CONVERTERS[device_class].converter_factory( unit_of_measurement, native_unit_of_measurement, - ) + )(value) return value @callback def async_registry_entry_updated(self) -> None: """Run when the entity registry entry has been updated.""" - assert self.registry_entry + if TYPE_CHECKING: + assert self.registry_entry if ( (number_options := self.registry_entry.options.get(DOMAIN)) and (custom_unit := number_options.get(CONF_UNIT_OF_MEASUREMENT)) diff --git a/homeassistant/components/number/const.py b/homeassistant/components/number/const.py index a2d7c066af7..aa9988f8987 100644 --- a/homeassistant/components/number/const.py +++ b/homeassistant/components/number/const.py @@ -475,7 +475,7 @@ DEVICE_CLASS_UNITS: dict[NumberDeviceClass, set[type[StrEnum] | str | None]] = { NumberDeviceClass.WIND_SPEED: set(UnitOfSpeed), } -UNIT_CONVERTERS: dict[str, type[BaseUnitConverter]] = { +UNIT_CONVERTERS: dict[NumberDeviceClass, type[BaseUnitConverter]] = { NumberDeviceClass.TEMPERATURE: TemperatureConverter, }