diff --git a/homeassistant/components/haveibeenpwned/sensor.py b/homeassistant/components/haveibeenpwned/sensor.py index d9d2889848e..0e8de64d7c6 100644 --- a/homeassistant/components/haveibeenpwned/sensor.py +++ b/homeassistant/components/haveibeenpwned/sensor.py @@ -5,6 +5,7 @@ from __future__ import annotations from datetime import timedelta from http import HTTPStatus import logging +from typing import TYPE_CHECKING, Any import requests import voluptuous as vol @@ -59,40 +60,26 @@ class HaveIBeenPwnedSensor(SensorEntity): _attr_attribution = "Data provided by Have I Been Pwned (HIBP)" - def __init__(self, data, email): + def __init__(self, data: HaveIBeenPwnedData, email: str) -> None: """Initialize the HaveIBeenPwned sensor.""" - self._state = None self._data = data self._email = email - self._unit_of_measurement = "Breaches" + self._attr_name = f"Breaches {email}" + self._attr_native_unit_of_measurement = "Breaches" @property - def name(self): - """Return the name of the sensor.""" - return f"Breaches {self._email}" - - @property - def native_unit_of_measurement(self): - """Return the unit the value is expressed in.""" - return self._unit_of_measurement - - @property - def native_value(self): - """Return the state of the device.""" - return self._state - - @property - def extra_state_attributes(self): + def extra_state_attributes(self) -> dict[str, Any]: """Return the attributes of the sensor.""" - val = {} + val: dict[str, Any] = {} if self._email not in self._data.data: return val for idx, value in enumerate(self._data.data[self._email]): tmpname = f"breach {idx + 1}" - datetime_local = dt_util.as_local( - dt_util.parse_datetime(value["AddedDate"]) - ) + parsed_datetime = dt_util.parse_datetime(value["AddedDate"]) + if TYPE_CHECKING: + assert parsed_datetime is not None + datetime_local = dt_util.as_local(parsed_datetime) tmpvalue = f"{value['Title']} {datetime_local.strftime(DATE_STR_FORMAT)}" val[tmpname] = tmpvalue @@ -121,7 +108,7 @@ class HaveIBeenPwnedSensor(SensorEntity): ) return - self._state = len(self._data.data[self._email]) + self._attr_native_value = len(self._data.data[self._email]) self.schedule_update_ha_state() def update(self) -> None: @@ -129,7 +116,7 @@ class HaveIBeenPwnedSensor(SensorEntity): self._data.update() if self._email in self._data.data: - self._state = len(self._data.data[self._email]) + self._attr_native_value = len(self._data.data[self._email]) class HaveIBeenPwnedData: