mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 10:17:51 +00:00
Enable strict typing for Fritz (#50668)
Co-authored-by: Ruslan Sayfutdinov <ruslan@sayfutdinov.com>
This commit is contained in:
parent
12082736a8
commit
a70dae0843
@ -36,6 +36,7 @@ homeassistant.components.fitbit.*
|
|||||||
homeassistant.components.forecast_solar.*
|
homeassistant.components.forecast_solar.*
|
||||||
homeassistant.components.fritzbox.*
|
homeassistant.components.fritzbox.*
|
||||||
homeassistant.components.frontend.*
|
homeassistant.components.frontend.*
|
||||||
|
homeassistant.components.fritz.*
|
||||||
homeassistant.components.geo_location.*
|
homeassistant.components.geo_location.*
|
||||||
homeassistant.components.gios.*
|
homeassistant.components.gios.*
|
||||||
homeassistant.components.group.*
|
homeassistant.components.group.*
|
||||||
|
@ -111,6 +111,10 @@ class FritzBoxTools:
|
|||||||
timeout=60.0,
|
timeout=60.0,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not self.connection:
|
||||||
|
_LOGGER.error("Unable to establish a connection with %s", self.host)
|
||||||
|
return
|
||||||
|
|
||||||
self.fritz_status = FritzStatus(fc=self.connection)
|
self.fritz_status = FritzStatus(fc=self.connection)
|
||||||
info = self.connection.call_action("DeviceInfo:1", "GetInfo")
|
info = self.connection.call_action("DeviceInfo:1", "GetInfo")
|
||||||
if not self._unique_id:
|
if not self._unique_id:
|
||||||
@ -189,7 +193,7 @@ class FritzBoxTools:
|
|||||||
|
|
||||||
def _update_info(self) -> list[HostInfo]:
|
def _update_info(self) -> list[HostInfo]:
|
||||||
"""Retrieve latest information from the FRITZ!Box."""
|
"""Retrieve latest information from the FRITZ!Box."""
|
||||||
return self.fritz_hosts.get_hosts_info()
|
return self.fritz_hosts.get_hosts_info() # type: ignore [no-any-return]
|
||||||
|
|
||||||
def scan_devices(self, now: datetime | None = None) -> None:
|
def scan_devices(self, now: datetime | None = None) -> None:
|
||||||
"""Scan for new devices and return a list of found device ids."""
|
"""Scan for new devices and return a list of found device ids."""
|
||||||
|
@ -145,7 +145,7 @@ class FritzBoxTracker(ScannerEntity):
|
|||||||
def ip_address(self) -> str | None:
|
def ip_address(self) -> str | None:
|
||||||
"""Return the primary ip address of the device."""
|
"""Return the primary ip address of the device."""
|
||||||
if self._mac:
|
if self._mac:
|
||||||
return self._router.devices[self._mac].ip_address
|
return self._router.devices[self._mac].ip_address # type: ignore[no-any-return]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -157,7 +157,7 @@ class FritzBoxTracker(ScannerEntity):
|
|||||||
def hostname(self) -> str | None:
|
def hostname(self) -> str | None:
|
||||||
"""Return hostname of the device."""
|
"""Return hostname of the device."""
|
||||||
if self._mac:
|
if self._mac:
|
||||||
return self._router.devices[self._mac].hostname
|
return self._router.devices[self._mac].hostname # type: ignore[no-any-return]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -39,37 +39,37 @@ def _retrieve_uptime_state(status: FritzStatus, last_value: str) -> str:
|
|||||||
|
|
||||||
def _retrieve_external_ip_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_external_ip_state(status: FritzStatus, last_value: str) -> str:
|
||||||
"""Return external ip from device."""
|
"""Return external ip from device."""
|
||||||
return status.external_ip
|
return status.external_ip # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_kib_s_sent_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_kib_s_sent_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return upload transmission rate."""
|
"""Return upload transmission rate."""
|
||||||
return round(status.transmission_rate[0] * 8 / 1024, 1)
|
return round(status.transmission_rate[0] * 8 / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_kib_s_received_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_kib_s_received_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return download transmission rate."""
|
"""Return download transmission rate."""
|
||||||
return round(status.transmission_rate[1] * 8 / 1024, 1)
|
return round(status.transmission_rate[1] * 8 / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_max_kib_s_sent_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_max_kib_s_sent_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return upload max transmission rate."""
|
"""Return upload max transmission rate."""
|
||||||
return round(status.max_bit_rate[0] / 1024, 1)
|
return round(status.max_bit_rate[0] / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_max_kib_s_received_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_max_kib_s_received_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return download max transmission rate."""
|
"""Return download max transmission rate."""
|
||||||
return round(status.max_bit_rate[1] / 1024, 1)
|
return round(status.max_bit_rate[1] / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_gb_sent_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_gb_sent_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return upload total data."""
|
"""Return upload total data."""
|
||||||
return round(status.bytes_sent * 8 / 1024 / 1024 / 1024, 1)
|
return round(status.bytes_sent * 8 / 1024 / 1024 / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
def _retrieve_gb_received_state(status: FritzStatus, last_value: str) -> str:
|
def _retrieve_gb_received_state(status: FritzStatus, last_value: str) -> float:
|
||||||
"""Return download total data."""
|
"""Return download total data."""
|
||||||
return round(status.bytes_received * 8 / 1024 / 1024 / 1024, 1)
|
return round(status.bytes_received * 8 / 1024 / 1024 / 1024, 1) # type: ignore[no-any-return]
|
||||||
|
|
||||||
|
|
||||||
class SensorData(TypedDict, total=False):
|
class SensorData(TypedDict, total=False):
|
||||||
|
@ -69,7 +69,7 @@ def service_call_action(
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return fritzbox_tools.connection.call_action(
|
return fritzbox_tools.connection.call_action( # type: ignore[no-any-return]
|
||||||
f"{service_name}:{service_suffix}",
|
f"{service_name}:{service_suffix}",
|
||||||
action_name,
|
action_name,
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
11
mypy.ini
11
mypy.ini
@ -407,6 +407,17 @@ no_implicit_optional = true
|
|||||||
warn_return_any = true
|
warn_return_any = true
|
||||||
warn_unreachable = true
|
warn_unreachable = true
|
||||||
|
|
||||||
|
[mypy-homeassistant.components.fritz.*]
|
||||||
|
check_untyped_defs = true
|
||||||
|
disallow_incomplete_defs = true
|
||||||
|
disallow_subclassing_any = true
|
||||||
|
disallow_untyped_calls = true
|
||||||
|
disallow_untyped_decorators = true
|
||||||
|
disallow_untyped_defs = true
|
||||||
|
no_implicit_optional = true
|
||||||
|
warn_return_any = true
|
||||||
|
warn_unreachable = true
|
||||||
|
|
||||||
[mypy-homeassistant.components.geo_location.*]
|
[mypy-homeassistant.components.geo_location.*]
|
||||||
check_untyped_defs = true
|
check_untyped_defs = true
|
||||||
disallow_incomplete_defs = true
|
disallow_incomplete_defs = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user