diff --git a/homeassistant/components/baf/number.py b/homeassistant/components/baf/number.py index 91fe110d388..020f34fefaf 100644 --- a/homeassistant/components/baf/number.py +++ b/homeassistant/components/baf/number.py @@ -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: diff --git a/homeassistant/components/bmw_connected_drive/number.py b/homeassistant/components/bmw_connected_drive/number.py index f26a2027f72..820257f6163 100644 --- a/homeassistant/components/bmw_connected_drive/number.py +++ b/homeassistant/components/bmw_connected_drive/number.py @@ -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: diff --git a/homeassistant/components/number/__init__.py b/homeassistant/components/number/__init__.py index e090a21a23e..2ad63c75e04 100644 --- a/homeassistant/components/number/__init__.py +++ b/homeassistant/components/number/__init__.py @@ -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 diff --git a/homeassistant/components/shelly/number.py b/homeassistant/components/shelly/number.py index 5a00a1df0dd..fb95a180e76 100644 --- a/homeassistant/components/shelly/number.py +++ b/homeassistant/components/shelly/number.py @@ -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", ),