Improve haveibeenpwned type hints (#163280)

This commit is contained in:
epenet
2026-02-17 15:48:14 +01:00
committed by GitHub
parent 91c36fcdf6
commit b23c402d0a

View File

@@ -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: