From d40cd20692db6ba84c02c1e3733237d6962ab3e7 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 24 May 2022 16:07:18 +0200 Subject: [PATCH] Enforce type hints for backup and cast platforms (#72223) * Enforce backup type hints * Enforce cast type hints --- pylint/plugins/hass_enforce_type_hints.py | 52 +++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index 9d35d07fab2..e230c27b4ee 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -46,6 +46,10 @@ _MODULE_FILTERS: dict[str, re.Pattern] = { "application_credentials": re.compile( r"^homeassistant\.components\.\w+\.(application_credentials)$" ), + # backup matches only in the package root (backup.py) + "backup": re.compile(r"^homeassistant\.components\.\w+\.(backup)$"), + # cast matches only in the package root (cast.py) + "cast": re.compile(r"^homeassistant\.components\.\w+\.(cast)$"), # config_flow matches only in the package root (config_flow.py) "config_flow": re.compile(r"^homeassistant\.components\.\w+\.(config_flow)$"), # device_action matches only in the package root (device_action.py) @@ -167,6 +171,54 @@ _METHOD_MATCH: list[TypeHintMatch] = [ }, return_type="AuthorizationServer", ), + TypeHintMatch( + module_filter=_MODULE_FILTERS["backup"], + function_name="async_pre_backup", + arg_types={ + 0: "HomeAssistant", + }, + return_type=None, + ), + TypeHintMatch( + module_filter=_MODULE_FILTERS["backup"], + function_name="async_post_backup", + arg_types={ + 0: "HomeAssistant", + }, + return_type=None, + ), + TypeHintMatch( + module_filter=_MODULE_FILTERS["cast"], + function_name="async_get_media_browser_root_object", + arg_types={ + 0: "HomeAssistant", + 1: "str", + }, + return_type="list[BrowseMedia]", + ), + TypeHintMatch( + module_filter=_MODULE_FILTERS["cast"], + function_name="async_browse_media", + arg_types={ + 0: "HomeAssistant", + 1: "str", + 2: "str", + 3: "str", + }, + return_type=["BrowseMedia", "BrowseMedia | None"], + ), + TypeHintMatch( + module_filter=_MODULE_FILTERS["cast"], + function_name="async_play_media", + arg_types={ + 0: "HomeAssistant", + 1: "str", + 2: "Chromecast", + 3: "str", + 4: "str", + }, + return_type="bool", + ), TypeHintMatch( module_filter=_MODULE_FILTERS["config_flow"], function_name="_async_has_devices",