Improve type hints in blebox climate (#145282)

This commit is contained in:
epenet 2025-05-20 09:31:42 +02:00 committed by GitHub
parent a12bc70543
commit fd1ddbd93d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 9 deletions

View File

@ -21,7 +21,6 @@ from .entity import BleBoxEntity
SCAN_INTERVAL = timedelta(seconds=5) SCAN_INTERVAL = timedelta(seconds=5)
BLEBOX_TO_HVACMODE = { BLEBOX_TO_HVACMODE = {
None: None,
0: HVACMode.OFF, 0: HVACMode.OFF,
1: HVACMode.HEAT, 1: HVACMode.HEAT,
2: HVACMode.COOL, 2: HVACMode.COOL,
@ -59,12 +58,14 @@ class BleBoxClimateEntity(BleBoxEntity[blebox_uniapi.climate.Climate], ClimateEn
_attr_temperature_unit = UnitOfTemperature.CELSIUS _attr_temperature_unit = UnitOfTemperature.CELSIUS
@property @property
def hvac_modes(self): def hvac_modes(self) -> list[HVACMode]:
"""Return list of supported HVAC modes.""" """Return list of supported HVAC modes."""
if self._feature.mode is None:
return [HVACMode.OFF]
return [HVACMode.OFF, BLEBOX_TO_HVACMODE[self._feature.mode]] return [HVACMode.OFF, BLEBOX_TO_HVACMODE[self._feature.mode]]
@property @property
def hvac_mode(self): def hvac_mode(self) -> HVACMode | None:
"""Return the desired HVAC mode.""" """Return the desired HVAC mode."""
if self._feature.is_on is None: if self._feature.is_on is None:
return None return None
@ -75,7 +76,7 @@ class BleBoxClimateEntity(BleBoxEntity[blebox_uniapi.climate.Climate], ClimateEn
return HVACMode.HEAT if self._feature.is_on else HVACMode.OFF return HVACMode.HEAT if self._feature.is_on else HVACMode.OFF
@property @property
def hvac_action(self): def hvac_action(self) -> HVACAction | None:
"""Return the actual current HVAC action.""" """Return the actual current HVAC action."""
if self._feature.hvac_action is not None: if self._feature.hvac_action is not None:
if not self._feature.is_on: if not self._feature.is_on:
@ -88,22 +89,22 @@ class BleBoxClimateEntity(BleBoxEntity[blebox_uniapi.climate.Climate], ClimateEn
return HVACAction.HEATING if self._feature.is_heating else HVACAction.IDLE return HVACAction.HEATING if self._feature.is_heating else HVACAction.IDLE
@property @property
def max_temp(self): def max_temp(self) -> float:
"""Return the maximum temperature supported.""" """Return the maximum temperature supported."""
return self._feature.max_temp return self._feature.max_temp
@property @property
def min_temp(self): def min_temp(self) -> float:
"""Return the maximum temperature supported.""" """Return the maximum temperature supported."""
return self._feature.min_temp return self._feature.min_temp
@property @property
def current_temperature(self): def current_temperature(self) -> float | None:
"""Return the current temperature.""" """Return the current temperature."""
return self._feature.current return self._feature.current
@property @property
def target_temperature(self): def target_temperature(self) -> float | None:
"""Return the desired thermostat temperature.""" """Return the desired thermostat temperature."""
return self._feature.desired return self._feature.desired

View File

@ -93,7 +93,7 @@ async def test_init(
supported_features = state.attributes[ATTR_SUPPORTED_FEATURES] supported_features = state.attributes[ATTR_SUPPORTED_FEATURES]
assert supported_features & ClimateEntityFeature.TARGET_TEMPERATURE assert supported_features & ClimateEntityFeature.TARGET_TEMPERATURE
assert state.attributes[ATTR_HVAC_MODES] == [HVACMode.OFF, None] assert state.attributes[ATTR_HVAC_MODES] == [HVACMode.OFF]
assert ATTR_DEVICE_CLASS not in state.attributes assert ATTR_DEVICE_CLASS not in state.attributes
assert ATTR_HVAC_MODE not in state.attributes assert ATTR_HVAC_MODE not in state.attributes