mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Enable strict typing for duckdns (#108022)
This commit is contained in:
parent
5bde007048
commit
16f110658c
@ -146,6 +146,7 @@ homeassistant.components.doorbird.*
|
|||||||
homeassistant.components.dormakaba_dkey.*
|
homeassistant.components.dormakaba_dkey.*
|
||||||
homeassistant.components.downloader.*
|
homeassistant.components.downloader.*
|
||||||
homeassistant.components.dsmr.*
|
homeassistant.components.dsmr.*
|
||||||
|
homeassistant.components.duckdns.*
|
||||||
homeassistant.components.dunehd.*
|
homeassistant.components.dunehd.*
|
||||||
homeassistant.components.duotecno.*
|
homeassistant.components.duotecno.*
|
||||||
homeassistant.components.easyenergy.*
|
homeassistant.components.easyenergy.*
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
"""Integrate with DuckDNS."""
|
"""Integrate with DuckDNS."""
|
||||||
from collections.abc import Callable, Coroutine
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from collections.abc import Callable, Coroutine, Sequence
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any, cast
|
||||||
|
|
||||||
|
from aiohttp import ClientSession
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.const import CONF_ACCESS_TOKEN, CONF_DOMAIN
|
from homeassistant.const import CONF_ACCESS_TOKEN, CONF_DOMAIN
|
||||||
@ -50,11 +53,11 @@ SERVICE_TXT_SCHEMA = vol.Schema({vol.Required(ATTR_TXT): vol.Any(None, cv.string
|
|||||||
|
|
||||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||||
"""Initialize the DuckDNS component."""
|
"""Initialize the DuckDNS component."""
|
||||||
domain = config[DOMAIN][CONF_DOMAIN]
|
domain: str = config[DOMAIN][CONF_DOMAIN]
|
||||||
token = config[DOMAIN][CONF_ACCESS_TOKEN]
|
token: str = config[DOMAIN][CONF_ACCESS_TOKEN]
|
||||||
session = async_get_clientsession(hass)
|
session = async_get_clientsession(hass)
|
||||||
|
|
||||||
async def update_domain_interval(_now):
|
async def update_domain_interval(_now: datetime) -> bool:
|
||||||
"""Update the DuckDNS entry."""
|
"""Update the DuckDNS entry."""
|
||||||
return await _update_duckdns(session, domain, token)
|
return await _update_duckdns(session, domain, token)
|
||||||
|
|
||||||
@ -81,7 +84,14 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
_SENTINEL = object()
|
_SENTINEL = object()
|
||||||
|
|
||||||
|
|
||||||
async def _update_duckdns(session, domain, token, *, txt=_SENTINEL, clear=False):
|
async def _update_duckdns(
|
||||||
|
session: ClientSession,
|
||||||
|
domain: str,
|
||||||
|
token: str,
|
||||||
|
*,
|
||||||
|
txt: str | None | object = _SENTINEL,
|
||||||
|
clear: bool = False,
|
||||||
|
) -> bool:
|
||||||
"""Update DuckDNS."""
|
"""Update DuckDNS."""
|
||||||
params = {"domains": domain, "token": token}
|
params = {"domains": domain, "token": token}
|
||||||
|
|
||||||
@ -91,7 +101,7 @@ async def _update_duckdns(session, domain, token, *, txt=_SENTINEL, clear=False)
|
|||||||
params["txt"] = ""
|
params["txt"] = ""
|
||||||
clear = True
|
clear = True
|
||||||
else:
|
else:
|
||||||
params["txt"] = txt
|
params["txt"] = cast(str, txt)
|
||||||
|
|
||||||
if clear:
|
if clear:
|
||||||
params["clear"] = "true"
|
params["clear"] = "true"
|
||||||
@ -111,11 +121,9 @@ async def _update_duckdns(session, domain, token, *, txt=_SENTINEL, clear=False)
|
|||||||
def async_track_time_interval_backoff(
|
def async_track_time_interval_backoff(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
action: Callable[[datetime], Coroutine[Any, Any, bool]],
|
action: Callable[[datetime], Coroutine[Any, Any, bool]],
|
||||||
intervals,
|
intervals: Sequence[timedelta],
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Add a listener that fires repetitively at every timedelta interval."""
|
"""Add a listener that fires repetitively at every timedelta interval."""
|
||||||
if not isinstance(intervals, (list, tuple)):
|
|
||||||
intervals = (intervals,)
|
|
||||||
remove: CALLBACK_TYPE | None = None
|
remove: CALLBACK_TYPE | None = None
|
||||||
failed = 0
|
failed = 0
|
||||||
|
|
||||||
|
10
mypy.ini
10
mypy.ini
@ -1221,6 +1221,16 @@ disallow_untyped_defs = true
|
|||||||
warn_return_any = true
|
warn_return_any = true
|
||||||
warn_unreachable = true
|
warn_unreachable = true
|
||||||
|
|
||||||
|
[mypy-homeassistant.components.duckdns.*]
|
||||||
|
check_untyped_defs = true
|
||||||
|
disallow_incomplete_defs = true
|
||||||
|
disallow_subclassing_any = true
|
||||||
|
disallow_untyped_calls = true
|
||||||
|
disallow_untyped_decorators = true
|
||||||
|
disallow_untyped_defs = true
|
||||||
|
warn_return_any = true
|
||||||
|
warn_unreachable = true
|
||||||
|
|
||||||
[mypy-homeassistant.components.dunehd.*]
|
[mypy-homeassistant.components.dunehd.*]
|
||||||
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