Add strict typing to LaMetric (#63891)

* Add strict typing to LaMetric

* Forgot about Pylint 🙈
This commit is contained in:
Franck Nijhof 2022-01-12 13:39:12 +01:00 committed by GitHub
parent 1d9318233d
commit 7a699480d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 9 deletions

View File

@ -100,6 +100,7 @@ homeassistant.components.jellyfin.*
homeassistant.components.jewish_calendar.* homeassistant.components.jewish_calendar.*
homeassistant.components.knx.* homeassistant.components.knx.*
homeassistant.components.kraken.* homeassistant.components.kraken.*
homeassistant.components.lametric.*
homeassistant.components.lcn.* homeassistant.components.lcn.*
homeassistant.components.light.* homeassistant.components.light.*
homeassistant.components.local_ip.* homeassistant.components.local_ip.*

View File

@ -50,7 +50,7 @@ def setup(hass: HomeAssistant, config: ConfigType) -> bool:
class HassLaMetricManager: class HassLaMetricManager:
"""A class that encapsulated requests to the LaMetric manager.""" """A class that encapsulated requests to the LaMetric manager."""
def __init__(self, client_id, client_secret): def __init__(self, client_id: str, client_secret: str) -> None:
"""Initialize HassLaMetricManager and connect to LaMetric.""" """Initialize HassLaMetricManager and connect to LaMetric."""
_LOGGER.debug("Connecting to LaMetric") _LOGGER.debug("Connecting to LaMetric")

View File

@ -1,5 +1,8 @@
"""Support for LaMetric notifications.""" """Support for LaMetric notifications."""
from __future__ import annotations
import logging import logging
from typing import Any
from lmnotify import Model, SimpleFrame, Sound from lmnotify import Model, SimpleFrame, Sound
from oauthlib.oauth2 import TokenExpiredError from oauthlib.oauth2 import TokenExpiredError
@ -13,9 +16,11 @@ from homeassistant.components.notify import (
BaseNotificationService, BaseNotificationService,
) )
from homeassistant.const import CONF_ICON from homeassistant.const import CONF_ICON
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import DOMAIN as LAMETRIC_DOMAIN from . import DOMAIN, HassLaMetricManager
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -38,11 +43,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
) )
def get_service(hass, config, discovery_info=None): def get_service(
hass: HomeAssistant,
config: ConfigType,
discovery_info: DiscoveryInfoType | None = None,
) -> LaMetricNotificationService:
"""Get the LaMetric notification service.""" """Get the LaMetric notification service."""
hlmn = hass.data.get(LAMETRIC_DOMAIN)
return LaMetricNotificationService( return LaMetricNotificationService(
hlmn, hass.data[DOMAIN],
config[CONF_ICON], config[CONF_ICON],
config[CONF_LIFETIME] * 1000, config[CONF_LIFETIME] * 1000,
config[CONF_CYCLES], config[CONF_CYCLES],
@ -55,8 +63,14 @@ class LaMetricNotificationService(BaseNotificationService):
"""Implement the notification service for LaMetric.""" """Implement the notification service for LaMetric."""
def __init__( def __init__(
self, hasslametricmanager, icon, lifetime, cycles, priority, icon_type self,
): hasslametricmanager: HassLaMetricManager,
icon: str,
lifetime: int,
cycles: int,
priority: str,
icon_type: str,
) -> None:
"""Initialize the service.""" """Initialize the service."""
self.hasslametricmanager = hasslametricmanager self.hasslametricmanager = hasslametricmanager
self._icon = icon self._icon = icon
@ -64,9 +78,9 @@ class LaMetricNotificationService(BaseNotificationService):
self._cycles = cycles self._cycles = cycles
self._priority = priority self._priority = priority
self._icon_type = icon_type self._icon_type = icon_type
self._devices = [] self._devices: list[dict[str, Any]] = []
def send_message(self, message="", **kwargs): def send_message(self, message: str = "", **kwargs: Any) -> None:
"""Send a message to some LaMetric device.""" """Send a message to some LaMetric device."""
targets = kwargs.get(ATTR_TARGET) targets = kwargs.get(ATTR_TARGET)

View File

@ -912,6 +912,17 @@ no_implicit_optional = true
warn_return_any = true warn_return_any = true
warn_unreachable = true warn_unreachable = true
[mypy-homeassistant.components.lametric.*]
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.lcn.*] [mypy-homeassistant.components.lcn.*]
check_untyped_defs = true check_untyped_defs = true
disallow_incomplete_defs = true disallow_incomplete_defs = true