Enforce NumberDeviceClass in number entities (#83402)

This commit is contained in:
Franck Nijhof 2022-12-06 14:58:22 +01:00 committed by GitHub
parent 647469f472
commit ba0d6fe611
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 3 deletions

View file

@ -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",

View file

@ -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."""

View file

@ -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",