diff --git a/homeassistant/components/kostal_plenticore/number.py b/homeassistant/components/kostal_plenticore/number.py index 69fba631b34..e8878deb48d 100644 --- a/homeassistant/components/kostal_plenticore/number.py +++ b/homeassistant/components/kostal_plenticore/number.py @@ -9,11 +9,11 @@ import logging from kostal.plenticore import SettingsData from homeassistant.components.number import ( + NumberDeviceClass, NumberEntity, NumberEntityDescription, NumberMode, ) -from homeassistant.components.sensor import SensorDeviceClass from homeassistant.config_entries import ConfigEntry from homeassistant.const import PERCENTAGE, POWER_WATT from homeassistant.core import HomeAssistant @@ -62,7 +62,7 @@ NUMBER_SETTINGS_DATA = [ ), PlenticoreNumberEntityDescription( key="battery_min_home_consumption", - device_class=SensorDeviceClass.POWER, + device_class=NumberDeviceClass.POWER, entity_category=EntityCategory.CONFIG, entity_registry_enabled_default=False, name="Battery min Home Consumption", diff --git a/homeassistant/components/number/__init__.py b/homeassistant/components/number/__init__.py index c8fd3c27972..ae4d2e5a762 100644 --- a/homeassistant/components/number/__init__.py +++ b/homeassistant/components/number/__init__.py @@ -376,6 +376,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: class NumberEntityDescription(EntityDescription): """A class that describes number entities.""" + device_class: NumberDeviceClass | None = None max_value: None = None min_value: None = None native_max_value: float | None = None @@ -437,6 +438,7 @@ class NumberEntity(Entity): """Representation of a Number entity.""" entity_description: NumberEntityDescription + _attr_device_class: NumberDeviceClass | None _attr_max_value: None _attr_min_value: None _attr_mode: NumberMode = NumberMode.AUTO @@ -501,6 +503,15 @@ class NumberEntity(Entity): ATTR_MODE: self.mode, } + @property + def device_class(self) -> NumberDeviceClass | None: + """Return the class of this entity.""" + if hasattr(self, "_attr_device_class"): + return self._attr_device_class + if hasattr(self, "entity_description"): + return self.entity_description.device_class + return None + @property def native_min_value(self) -> float: """Return the minimum value.""" diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index e159a110334..24f06bc8cd1 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -1987,7 +1987,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = { matches=[ TypeHintMatch( function_name="device_class", - return_type=["NumberDeviceClass", "str", None], + return_type=["NumberDeviceClass", None], ), TypeHintMatch( function_name="capability_attributes",