From 7c6a31861eb30ea4fa28cbb692d9e157a6d891aa Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 16 Jan 2026 10:08:24 +0100 Subject: [PATCH] Improve type hints in egardia (#161048) --- homeassistant/components/egardia/__init__.py | 3 +- .../components/egardia/alarm_control_panel.py | 19 +++++++---- .../components/egardia/binary_sensor.py | 33 +++++++------------ 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/homeassistant/components/egardia/__init__.py b/homeassistant/components/egardia/__init__.py index eb6b4cd49d8..dc94bb79a4e 100644 --- a/homeassistant/components/egardia/__init__.py +++ b/homeassistant/components/egardia/__init__.py @@ -18,6 +18,7 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant from homeassistant.helpers import config_validation as cv, discovery from homeassistant.helpers.typing import ConfigType +from homeassistant.util.hass_dict import HassKey _LOGGER = logging.getLogger(__name__) @@ -35,7 +36,7 @@ DEFAULT_REPORT_SERVER_PORT = 52010 DEFAULT_VERSION = "GATE-01" DOMAIN = "egardia" -EGARDIA_DEVICE = "egardiadevice" +EGARDIA_DEVICE: HassKey[egardiadevice.EgardiaDevice] = HassKey(DOMAIN) EGARDIA_NAME = "egardianame" EGARDIA_REPORT_SERVER_CODES = "egardia_rs_codes" EGARDIA_REPORT_SERVER_ENABLED = "egardia_rs_enabled" diff --git a/homeassistant/components/egardia/alarm_control_panel.py b/homeassistant/components/egardia/alarm_control_panel.py index 5a18a23541a..9ebe8c1704e 100644 --- a/homeassistant/components/egardia/alarm_control_panel.py +++ b/homeassistant/components/egardia/alarm_control_panel.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging +from pythonegardia.egardiadevice import EgardiaDevice import requests from homeassistant.components.alarm_control_panel import ( @@ -11,6 +12,7 @@ from homeassistant.components.alarm_control_panel import ( AlarmControlPanelEntityFeature, AlarmControlPanelState, ) +from homeassistant.const import CONF_NAME from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType @@ -47,10 +49,10 @@ def setup_platform( if discovery_info is None: return device = EgardiaAlarm( - discovery_info["name"], + discovery_info[CONF_NAME], hass.data[EGARDIA_DEVICE], discovery_info[CONF_REPORT_SERVER_ENABLED], - discovery_info.get(CONF_REPORT_SERVER_CODES), + discovery_info[CONF_REPORT_SERVER_CODES], discovery_info[CONF_REPORT_SERVER_PORT], ) @@ -67,8 +69,13 @@ class EgardiaAlarm(AlarmControlPanelEntity): ) def __init__( - self, name, egardiasystem, rs_enabled=False, rs_codes=None, rs_port=52010 - ): + self, + name: str, + egardiasystem: EgardiaDevice, + rs_enabled: bool, + rs_codes: dict[str, list[str]], + rs_port: int, + ) -> None: """Initialize the Egardia alarm.""" self._attr_name = name self._egardiasystem = egardiasystem @@ -85,9 +92,7 @@ class EgardiaAlarm(AlarmControlPanelEntity): @property def should_poll(self) -> bool: """Poll if no report server is enabled.""" - if not self._rs_enabled: - return True - return False + return not self._rs_enabled def handle_status_event(self, event): """Handle the Egardia system status event.""" diff --git a/homeassistant/components/egardia/binary_sensor.py b/homeassistant/components/egardia/binary_sensor.py index 8124b5516f8..9c778cdad5a 100644 --- a/homeassistant/components/egardia/binary_sensor.py +++ b/homeassistant/components/egardia/binary_sensor.py @@ -2,11 +2,12 @@ from __future__ import annotations +from pythonegardia.egardiadevice import EgardiaDevice + from homeassistant.components.binary_sensor import ( BinarySensorDeviceClass, BinarySensorEntity, ) -from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType @@ -51,30 +52,20 @@ async def async_setup_platform( class EgardiaBinarySensor(BinarySensorEntity): """Represents a sensor based on an Egardia sensor (IR, Door Contact).""" - def __init__(self, sensor_id, name, egardia_system, device_class): + def __init__( + self, + sensor_id: str, + name: str, + egardia_system: EgardiaDevice, + device_class: BinarySensorDeviceClass | None, + ) -> None: """Initialize the sensor device.""" self._id = sensor_id - self._name = name - self._state = None - self._device_class = device_class + self._attr_name = name + self._attr_device_class = device_class self._egardia_system = egardia_system def update(self) -> None: """Update the status.""" egardia_input = self._egardia_system.getsensorstate(self._id) - self._state = STATE_ON if egardia_input else STATE_OFF - - @property - def name(self): - """Return the name of the device.""" - return self._name - - @property - def is_on(self): - """Whether the device is switched on.""" - return self._state == STATE_ON - - @property - def device_class(self) -> BinarySensorDeviceClass | None: - """Return the device class.""" - return self._device_class + self._attr_is_on = bool(egardia_input)