Enforce NumberDeviceClass in number entities (#83402)
This commit is contained in:
parent
647469f472
commit
ba0d6fe611
3 changed files with 14 additions and 3 deletions
|
@ -9,11 +9,11 @@ import logging
|
||||||
from kostal.plenticore import SettingsData
|
from kostal.plenticore import SettingsData
|
||||||
|
|
||||||
from homeassistant.components.number import (
|
from homeassistant.components.number import (
|
||||||
|
NumberDeviceClass,
|
||||||
NumberEntity,
|
NumberEntity,
|
||||||
NumberEntityDescription,
|
NumberEntityDescription,
|
||||||
NumberMode,
|
NumberMode,
|
||||||
)
|
)
|
||||||
from homeassistant.components.sensor import SensorDeviceClass
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import PERCENTAGE, POWER_WATT
|
from homeassistant.const import PERCENTAGE, POWER_WATT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
@ -62,7 +62,7 @@ NUMBER_SETTINGS_DATA = [
|
||||||
),
|
),
|
||||||
PlenticoreNumberEntityDescription(
|
PlenticoreNumberEntityDescription(
|
||||||
key="battery_min_home_consumption",
|
key="battery_min_home_consumption",
|
||||||
device_class=SensorDeviceClass.POWER,
|
device_class=NumberDeviceClass.POWER,
|
||||||
entity_category=EntityCategory.CONFIG,
|
entity_category=EntityCategory.CONFIG,
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
name="Battery min Home Consumption",
|
name="Battery min Home Consumption",
|
||||||
|
|
|
@ -376,6 +376,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
class NumberEntityDescription(EntityDescription):
|
class NumberEntityDescription(EntityDescription):
|
||||||
"""A class that describes number entities."""
|
"""A class that describes number entities."""
|
||||||
|
|
||||||
|
device_class: NumberDeviceClass | None = None
|
||||||
max_value: None = None
|
max_value: None = None
|
||||||
min_value: None = None
|
min_value: None = None
|
||||||
native_max_value: float | None = None
|
native_max_value: float | None = None
|
||||||
|
@ -437,6 +438,7 @@ class NumberEntity(Entity):
|
||||||
"""Representation of a Number entity."""
|
"""Representation of a Number entity."""
|
||||||
|
|
||||||
entity_description: NumberEntityDescription
|
entity_description: NumberEntityDescription
|
||||||
|
_attr_device_class: NumberDeviceClass | None
|
||||||
_attr_max_value: None
|
_attr_max_value: None
|
||||||
_attr_min_value: None
|
_attr_min_value: None
|
||||||
_attr_mode: NumberMode = NumberMode.AUTO
|
_attr_mode: NumberMode = NumberMode.AUTO
|
||||||
|
@ -501,6 +503,15 @@ class NumberEntity(Entity):
|
||||||
ATTR_MODE: self.mode,
|
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
|
@property
|
||||||
def native_min_value(self) -> float:
|
def native_min_value(self) -> float:
|
||||||
"""Return the minimum value."""
|
"""Return the minimum value."""
|
||||||
|
|
|
@ -1987,7 +1987,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
|
||||||
matches=[
|
matches=[
|
||||||
TypeHintMatch(
|
TypeHintMatch(
|
||||||
function_name="device_class",
|
function_name="device_class",
|
||||||
return_type=["NumberDeviceClass", "str", None],
|
return_type=["NumberDeviceClass", None],
|
||||||
),
|
),
|
||||||
TypeHintMatch(
|
TypeHintMatch(
|
||||||
function_name="capability_attributes",
|
function_name="capability_attributes",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue