diff --git a/homeassistant/components/mailgun/notify.py b/homeassistant/components/mailgun/notify.py index 5ff57914be0..7bea67b596d 100644 --- a/homeassistant/components/mailgun/notify.py +++ b/homeassistant/components/mailgun/notify.py @@ -1,4 +1,6 @@ """Support for the Mailgun mail notifications.""" +from __future__ import annotations + import logging from pymailgunner import ( @@ -17,6 +19,8 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_API_KEY, CONF_DOMAIN, CONF_RECIPIENT, CONF_SENDER +from homeassistant.core import HomeAssistant +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import CONF_SANDBOX, DOMAIN as MAILGUN_DOMAIN @@ -33,7 +37,11 @@ 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, +) -> MailgunNotificationService | None: """Get the Mailgun notification service.""" data = hass.data[MAILGUN_DOMAIN] mailgun_service = MailgunNotificationService( diff --git a/homeassistant/components/matrix/notify.py b/homeassistant/components/matrix/notify.py index 197d84352df..3c90e9afbc0 100644 --- a/homeassistant/components/matrix/notify.py +++ b/homeassistant/components/matrix/notify.py @@ -1,4 +1,6 @@ """Support for Matrix notifications.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components.notify import ( @@ -8,7 +10,9 @@ from homeassistant.components.notify import ( PLATFORM_SCHEMA, BaseNotificationService, ) +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from .const import DOMAIN, SERVICE_SEND_MESSAGE @@ -17,7 +21,11 @@ CONF_DEFAULT_ROOM = "default_room" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_DEFAULT_ROOM): cv.string}) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> MatrixNotificationService: """Get the Matrix notification service.""" return MatrixNotificationService(config[CONF_DEFAULT_ROOM]) diff --git a/homeassistant/components/message_bird/notify.py b/homeassistant/components/message_bird/notify.py index 9a542836011..241646918c6 100644 --- a/homeassistant/components/message_bird/notify.py +++ b/homeassistant/components/message_bird/notify.py @@ -1,4 +1,6 @@ """MessageBird platform for notify component.""" +from __future__ import annotations + import logging import messagebird @@ -11,7 +13,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_API_KEY, CONF_SENDER +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -25,7 +29,11 @@ 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, +) -> MessageBirdNotificationService | None: """Get the MessageBird notification service.""" client = messagebird.Client(config[CONF_API_KEY]) try: diff --git a/homeassistant/components/mobile_app/notify.py b/homeassistant/components/mobile_app/notify.py index beca42aab7e..dc9f8aaedcd 100644 --- a/homeassistant/components/mobile_app/notify.py +++ b/homeassistant/components/mobile_app/notify.py @@ -1,4 +1,6 @@ """Support for mobile_app push notifications.""" +from __future__ import annotations + import asyncio from functools import partial from http import HTTPStatus @@ -15,8 +17,10 @@ from homeassistant.components.notify import ( ATTR_TITLE_DEFAULT, BaseNotificationService, ) +from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType import homeassistant.util.dt as dt_util from .const import ( @@ -81,7 +85,11 @@ def log_rate_limits(hass, device_name, resp, level=logging.INFO): ) -async def async_get_service(hass, config, discovery_info=None): +async def async_get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> MobileAppNotificationService: """Get the mobile_app notification service.""" service = hass.data[DOMAIN][DATA_NOTIFY] = MobileAppNotificationService(hass) return service diff --git a/homeassistant/components/msteams/notify.py b/homeassistant/components/msteams/notify.py index 421b8093a8d..7a729897e76 100644 --- a/homeassistant/components/msteams/notify.py +++ b/homeassistant/components/msteams/notify.py @@ -1,4 +1,6 @@ """Microsoft Teams platform for notify component.""" +from __future__ import annotations + import logging import pymsteams @@ -12,7 +14,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_URL +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -21,7 +25,11 @@ ATTR_FILE_URL = "image_url" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_URL): cv.url}) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> MSTeamsNotificationService | None: """Get the Microsoft Teams notification service.""" webhook_url = config.get(CONF_URL) diff --git a/homeassistant/components/mycroft/notify.py b/homeassistant/components/mycroft/notify.py index 335eff87546..a9dd82caef1 100644 --- a/homeassistant/components/mycroft/notify.py +++ b/homeassistant/components/mycroft/notify.py @@ -1,14 +1,22 @@ """Mycroft AI notification platform.""" +from __future__ import annotations + import logging from mycroftapi import MycroftAPI from homeassistant.components.notify import BaseNotificationService +from homeassistant.core import HomeAssistant +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> MycroftNotificationService: """Get the Mycroft notification service.""" return MycroftNotificationService(hass.data["mycroft"]) diff --git a/homeassistant/components/notify_events/notify.py b/homeassistant/components/notify_events/notify.py index 51705453edf..3eb1bbac9c9 100644 --- a/homeassistant/components/notify_events/notify.py +++ b/homeassistant/components/notify_events/notify.py @@ -1,4 +1,6 @@ """Notify.Events platform for notify component.""" +from __future__ import annotations + import logging import os.path @@ -10,6 +12,8 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_TOKEN +from homeassistant.core import HomeAssistant +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from .const import DOMAIN @@ -33,7 +37,11 @@ ATTR_TOKEN = "token" _LOGGER = logging.getLogger(__name__) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> NotifyEventsNotificationService: """Get the Notify.Events notification service.""" return NotifyEventsNotificationService(hass.data[DOMAIN][CONF_TOKEN]) diff --git a/homeassistant/components/prowl/notify.py b/homeassistant/components/prowl/notify.py index 837bad930f4..02d4f61f4e4 100644 --- a/homeassistant/components/prowl/notify.py +++ b/homeassistant/components/prowl/notify.py @@ -1,4 +1,6 @@ """Prowl notification service.""" +from __future__ import annotations + import asyncio from http import HTTPStatus import logging @@ -14,8 +16,10 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_API_KEY +from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) _RESOURCE = "https://api.prowlapp.com/publicapi/" @@ -23,7 +27,11 @@ _RESOURCE = "https://api.prowlapp.com/publicapi/" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_API_KEY): cv.string}) -async def async_get_service(hass, config, discovery_info=None): +async def async_get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> ProwlNotificationService: """Get the Prowl notification service.""" return ProwlNotificationService(hass, config[CONF_API_KEY]) diff --git a/homeassistant/components/pushsafer/notify.py b/homeassistant/components/pushsafer/notify.py index 521c1b2929a..ddf4ca5ef4b 100644 --- a/homeassistant/components/pushsafer/notify.py +++ b/homeassistant/components/pushsafer/notify.py @@ -1,4 +1,6 @@ """Pushsafer platform for notify component.""" +from __future__ import annotations + import base64 from http import HTTPStatus import logging @@ -17,7 +19,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import ATTR_ICON +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) _RESOURCE = "https://www.pushsafer.com/api" @@ -49,7 +53,11 @@ ATTR_PICTURE1_AUTH = "auth" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_DEVICE_KEY): cv.string}) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> PushsaferNotificationService: """Get the Pushsafer.com notification service.""" return PushsaferNotificationService( config.get(CONF_DEVICE_KEY), hass.config.is_allowed_path diff --git a/homeassistant/components/rocketchat/notify.py b/homeassistant/components/rocketchat/notify.py index 51a25d90b6e..317364b262a 100644 --- a/homeassistant/components/rocketchat/notify.py +++ b/homeassistant/components/rocketchat/notify.py @@ -1,4 +1,6 @@ """Rocket.Chat notification service.""" +from __future__ import annotations + from http import HTTPStatus import logging @@ -15,7 +17,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_PASSWORD, CONF_ROOM, CONF_URL, CONF_USERNAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -30,7 +34,11 @@ 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, +) -> RocketChatNotificationService | None: """Return the notify service.""" username = config.get(CONF_USERNAME) diff --git a/homeassistant/components/sendgrid/notify.py b/homeassistant/components/sendgrid/notify.py index e17f6ae60c4..4c47f497b36 100644 --- a/homeassistant/components/sendgrid/notify.py +++ b/homeassistant/components/sendgrid/notify.py @@ -1,4 +1,6 @@ """SendGrid notification service.""" +from __future__ import annotations + from http import HTTPStatus import logging @@ -17,7 +19,9 @@ from homeassistant.const import ( CONF_SENDER, CONTENT_TYPE_TEXT_PLAIN, ) +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -36,7 +40,11 @@ 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, +) -> SendgridNotificationService: """Get the SendGrid notification service.""" return SendgridNotificationService(config) diff --git a/homeassistant/components/sinch/notify.py b/homeassistant/components/sinch/notify.py index 5e48f7b314d..cd37f8bf627 100644 --- a/homeassistant/components/sinch/notify.py +++ b/homeassistant/components/sinch/notify.py @@ -1,4 +1,6 @@ """Support for Sinch notifications.""" +from __future__ import annotations + import logging from clx.xms.api import MtBatchTextSmsResult @@ -19,7 +21,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_API_KEY, CONF_SENDER +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType DOMAIN = "sinch" @@ -44,7 +48,11 @@ 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, +) -> SinchNotificationService: """Get the Sinch notification service.""" return SinchNotificationService(config) diff --git a/homeassistant/components/sms/notify.py b/homeassistant/components/sms/notify.py index 71ec04c5ef1..9d94472b1b8 100644 --- a/homeassistant/components/sms/notify.py +++ b/homeassistant/components/sms/notify.py @@ -1,17 +1,25 @@ """Support for SMS notification services.""" +from __future__ import annotations + import logging import gammu # pylint: disable=import-error from homeassistant.components.notify import ATTR_DATA, BaseNotificationService from homeassistant.const import CONF_TARGET +from homeassistant.core import HomeAssistant +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from .const import CONF_UNICODE, DOMAIN, GATEWAY, SMS_GATEWAY _LOGGER = logging.getLogger(__name__) -async def async_get_service(hass, config, discovery_info=None): +async def async_get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> SMSNotificationService | None: """Get the SMS notification service.""" if discovery_info is None: diff --git a/homeassistant/components/smtp/notify.py b/homeassistant/components/smtp/notify.py index 300e74a2cd6..32806889b3d 100644 --- a/homeassistant/components/smtp/notify.py +++ b/homeassistant/components/smtp/notify.py @@ -1,4 +1,6 @@ """Mail (SMTP) notification service.""" +from __future__ import annotations + from email.mime.application import MIMEApplication from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart @@ -27,8 +29,10 @@ from homeassistant.const import ( CONF_USERNAME, CONF_VERIFY_SSL, ) +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.reload import setup_reload_service +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType import homeassistant.util.dt as dt_util from homeassistant.util.ssl import client_context @@ -72,7 +76,11 @@ 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, +) -> MailNotificationService | None: """Get the mail notification service.""" setup_reload_service(hass, DOMAIN, PLATFORMS) mail_service = MailNotificationService( diff --git a/homeassistant/components/synology_chat/notify.py b/homeassistant/components/synology_chat/notify.py index e68968e94d0..ca8fba53120 100644 --- a/homeassistant/components/synology_chat/notify.py +++ b/homeassistant/components/synology_chat/notify.py @@ -1,4 +1,6 @@ """SynologyChat platform for notify component.""" +from __future__ import annotations + from http import HTTPStatus import json import logging @@ -12,7 +14,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_RESOURCE, CONF_VERIFY_SSL +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType ATTR_FILE_URL = "file_url" @@ -26,7 +30,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( _LOGGER = logging.getLogger(__name__) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> SynologyChatNotificationService: """Get the Synology Chat notification service.""" resource = config.get(CONF_RESOURCE) verify_ssl = config.get(CONF_VERIFY_SSL) diff --git a/homeassistant/components/telegram/notify.py b/homeassistant/components/telegram/notify.py index bca48e4b85a..05b966e66d7 100644 --- a/homeassistant/components/telegram/notify.py +++ b/homeassistant/components/telegram/notify.py @@ -1,4 +1,6 @@ """Telegram platform for notify component.""" +from __future__ import annotations + import logging import voluptuous as vol @@ -18,7 +20,9 @@ from homeassistant.components.telegram_bot import ( ATTR_PARSER, ) from homeassistant.const import ATTR_LOCATION +from homeassistant.core import HomeAssistant from homeassistant.helpers.reload import setup_reload_service +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import DOMAIN as TELEGRAM_DOMAIN, PLATFORMS @@ -37,7 +41,11 @@ CONF_CHAT_ID = "chat_id" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_CHAT_ID): vol.Coerce(int)}) -def get_service(hass, config, discovery_info=None): +def get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> TelegramNotificationService: """Get the Telegram notification service.""" setup_reload_service(hass, TELEGRAM_DOMAIN, PLATFORMS) diff --git a/homeassistant/components/twilio_call/notify.py b/homeassistant/components/twilio_call/notify.py index ca007a8231e..44eaa0bf994 100644 --- a/homeassistant/components/twilio_call/notify.py +++ b/homeassistant/components/twilio_call/notify.py @@ -1,4 +1,6 @@ """Twilio Call platform for notify component.""" +from __future__ import annotations + import logging import urllib @@ -11,7 +13,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.components.twilio import DATA_TWILIO +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -26,7 +30,11 @@ 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, +) -> TwilioCallNotificationService: """Get the Twilio Call notification service.""" return TwilioCallNotificationService( hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER] diff --git a/homeassistant/components/twilio_sms/notify.py b/homeassistant/components/twilio_sms/notify.py index da5e0e754b9..0b0c724e479 100644 --- a/homeassistant/components/twilio_sms/notify.py +++ b/homeassistant/components/twilio_sms/notify.py @@ -1,4 +1,6 @@ """Twilio SMS platform for notify component.""" +from __future__ import annotations + import logging import voluptuous as vol @@ -10,7 +12,9 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.components.twilio import DATA_TWILIO +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -32,7 +36,11 @@ 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, +) -> TwilioSMSNotificationService | None: """Get the Twilio SMS notification service.""" return TwilioSMSNotificationService( hass.data[DATA_TWILIO], config[CONF_FROM_NUMBER] diff --git a/homeassistant/components/twitter/notify.py b/homeassistant/components/twitter/notify.py index d89755969a1..c6d223d2413 100644 --- a/homeassistant/components/twitter/notify.py +++ b/homeassistant/components/twitter/notify.py @@ -1,4 +1,6 @@ """Twitter platform for notify component.""" +from __future__ import annotations + from datetime import datetime, timedelta from functools import partial from http import HTTPStatus @@ -17,8 +19,10 @@ from homeassistant.components.notify import ( BaseNotificationService, ) from homeassistant.const import CONF_ACCESS_TOKEN, CONF_USERNAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.event import async_track_point_in_time +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -39,7 +43,11 @@ 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, +) -> TwitterNotificationService: """Get the Twitter notification service.""" return TwitterNotificationService( hass, diff --git a/homeassistant/components/xmpp/notify.py b/homeassistant/components/xmpp/notify.py index 28d60d317e0..2f5bad116c4 100644 --- a/homeassistant/components/xmpp/notify.py +++ b/homeassistant/components/xmpp/notify.py @@ -1,4 +1,6 @@ """Jabber (XMPP) notification service.""" +from __future__ import annotations + from concurrent.futures import TimeoutError as FutTimeoutError from http import HTTPStatus import logging @@ -31,8 +33,10 @@ from homeassistant.const import ( CONF_ROOM, CONF_SENDER, ) +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv import homeassistant.helpers.template as template_helper +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -64,7 +68,11 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -async def async_get_service(hass, config, discovery_info=None): +async def async_get_service( + hass: HomeAssistant, + config: ConfigType, + discovery_info: DiscoveryInfoType | None = None, +) -> XmppNotificationService: """Get the Jabber (XMPP) notification service.""" return XmppNotificationService( config.get(CONF_SENDER),