mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-21 03:03:17 +01:00
Improve haveibeenpwned type hints (#163280)
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user