1
mirror of https://github.com/home-assistant/core synced 2024-09-12 15:16:21 +02:00

Add support for setting NumberMode using NumberEntityDescription (#92427)

This commit is contained in:
rrooggiieerr 2023-05-04 21:41:32 +02:00 committed by GitHub
parent 7d00804f13
commit 7b8936b420
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 10 deletions

View File

@ -27,7 +27,6 @@ class BAFNumberDescriptionMixin:
"""Required values for BAF sensors."""
value_fn: Callable[[Device], int | None]
mode: NumberMode
@dataclass
@ -147,7 +146,6 @@ class BAFNumber(BAFEntity, NumberEntity):
self.entity_description = description
super().__init__(device, f"{device.name} {description.name}")
self._attr_unique_id = f"{self._device.mac_address}-{description.key}"
self._attr_mode = description.mode
@callback
def _async_update_attrs(self) -> None:

View File

@ -40,7 +40,6 @@ class BMWNumberEntityDescription(NumberEntityDescription, BMWRequiredKeysMixin):
is_available: Callable[[MyBMWVehicle], bool] = lambda _: False
dynamic_options: Callable[[MyBMWVehicle], list[str]] | None = None
mode: NumberMode = NumberMode.AUTO
NUMBER_TYPES: list[BMWNumberEntityDescription] = [
@ -99,7 +98,6 @@ class BMWNumber(BMWBaseEntity, NumberEntity):
super().__init__(coordinator, vehicle)
self.entity_description = description
self._attr_unique_id = f"{vehicle.vin}-{description.key}"
self._attr_mode = description.mode
@property
def native_value(self) -> float | None:

View File

@ -127,10 +127,11 @@ class NumberEntityDescription(EntityDescription):
device_class: NumberDeviceClass | None = None
max_value: None = None
min_value: None = None
mode: NumberMode | None = None
native_max_value: float | None = None
native_min_value: float | None = None
native_unit_of_measurement: str | None = None
native_step: float | None = None
native_unit_of_measurement: str | None = None
step: None = None
unit_of_measurement: None = None # Type override, use native_unit_of_measurement
@ -193,7 +194,7 @@ class NumberEntity(Entity):
_attr_device_class: NumberDeviceClass | None
_attr_max_value: None
_attr_min_value: None
_attr_mode: NumberMode = NumberMode.AUTO
_attr_mode: NumberMode
_attr_state: None = None
_attr_step: None
_attr_unit_of_measurement: None # Subclasses of NumberEntity should not set this
@ -201,8 +202,8 @@ class NumberEntity(Entity):
_attr_native_max_value: float
_attr_native_min_value: float
_attr_native_step: float
_attr_native_value: float | None = None
_attr_native_unit_of_measurement: str | None
_attr_native_value: float | None = None
_deprecated_number_entity_reported = False
_number_option_unit_of_measurement: str | None = None
@ -357,7 +358,14 @@ class NumberEntity(Entity):
@property
def mode(self) -> NumberMode:
"""Return the mode of the entity."""
return self._attr_mode
if hasattr(self, "_attr_mode"):
return self._attr_mode
if (
hasattr(self, "entity_description")
and self.entity_description.mode is not None
):
return self.entity_description.mode
return NumberMode.AUTO
@property
@final

View File

@ -30,7 +30,6 @@ from .entity import (
class BlockNumberDescription(BlockEntityDescription, NumberEntityDescription):
"""Class to describe a BLOCK sensor."""
mode: NumberMode = NumberMode("slider")
rest_path: str = ""
rest_arg: str = ""
@ -46,7 +45,7 @@ NUMBERS: Final = {
native_min_value=0,
native_max_value=100,
native_step=1,
mode=NumberMode("slider"),
mode=NumberMode.SLIDER,
rest_path="thermostat/0",
rest_arg="pos",
),