Ensure service calls are typed [s-u] (#62922)

Co-authored-by: epenet <epenet@users.noreply.github.com>
pull/62934/head
epenet 2021-12-28 14:23:42 +01:00 committed by GitHub
parent 656d383ba6
commit 92ace6c2e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 50 additions and 45 deletions

View File

@ -22,7 +22,7 @@ from homeassistant.const import (
DATA_MEGABYTES,
DATA_RATE_MEGABYTES_PER_SECOND,
)
from homeassistant.core import callback
from homeassistant.core import ServiceCall, callback
from homeassistant.helpers import discovery
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
@ -225,7 +225,7 @@ def async_setup_sabnzbd(hass, sab_api, config, name):
discovery.async_load_platform(hass, "sensor", DOMAIN, {}, config)
)
async def async_service_handler(service):
async def async_service_handler(service: ServiceCall) -> None:
"""Handle service calls."""
if service.service == SERVICE_PAUSE:
await sab_api_data.async_pause_queue()

View File

@ -40,7 +40,7 @@ def async_load_screenlogic_services(hass: HomeAssistant):
if hass.config_entries.async_get_entry(entry_id).domain == DOMAIN
]
async def async_set_color_mode(service_call: ServiceCall):
async def async_set_color_mode(service_call: ServiceCall) -> None:
if not (
screenlogic_entry_ids := await extract_screenlogic_config_entry_ids(
service_call

View File

@ -26,7 +26,7 @@ from homeassistant.const import (
SERVICE_TURN_ON,
STATE_ON,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.core import HomeAssistant, ServiceCall, callback
from homeassistant.helpers import extract_domain_configs
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.config_validation import make_entity_service_schema
@ -170,14 +170,14 @@ async def async_setup(hass, config):
if not await _async_process_config(hass, config, component):
await async_get_blueprints(hass).async_populate()
async def reload_service(service):
async def reload_service(service: ServiceCall) -> None:
"""Call a service to reload scripts."""
if (conf := await component.async_prepare_reload()) is None:
return
await _async_process_config(hass, conf, component)
async def turn_on_service(service):
async def turn_on_service(service: ServiceCall) -> None:
"""Call a service to turn script on."""
variables = service.data.get(ATTR_VARIABLES)
for script_entity in await component.async_extract_from_service(service):
@ -185,7 +185,7 @@ async def async_setup(hass, config):
variables=variables, context=service.context, wait=False
)
async def turn_off_service(service):
async def turn_off_service(service: ServiceCall) -> None:
"""Cancel a script."""
# Stopping a script is ok to be done in parallel
script_entities = await component.async_extract_from_service(service)
@ -200,7 +200,7 @@ async def async_setup(hass, config):
]
)
async def toggle_service(service):
async def toggle_service(service: ServiceCall) -> None:
"""Toggle a script."""
for script_entity in await component.async_extract_from_service(service):
await script_entity.async_toggle(context=service.context, wait=False)
@ -266,7 +266,7 @@ async def _async_process_config(hass, config, component) -> bool:
await component.async_add_entities(entities)
async def service_handler(service):
async def service_handler(service: ServiceCall) -> None:
"""Execute a service call to script.<script name>."""
entity_id = ENTITY_ID_FORMAT.format(service.service)
script_entity = component.get_entity(entity_id)

View File

@ -36,7 +36,7 @@ from homeassistant.const import (
TEMP_CELSIUS,
TEMP_FAHRENHEIT,
)
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import (
@ -116,7 +116,7 @@ async def async_setup_entry(
async_add_entities(entities)
async def async_assume_state(service):
async def async_assume_state(service: ServiceCall) -> None:
"""Set state according to external service call.."""
if entity_ids := service.data.get(ATTR_ENTITY_ID):
target_climate = [

View File

@ -9,7 +9,7 @@ from homeassistant import config_entries
from homeassistant.components import http, websocket_api
from homeassistant.components.http.data_validator import RequestDataValidator
from homeassistant.const import ATTR_NAME
from homeassistant.core import callback
from homeassistant.core import ServiceCall, callback
import homeassistant.helpers.config_validation as cv
from homeassistant.util.json import load_json, save_json
@ -79,13 +79,13 @@ async def async_setup(hass, config):
async def async_setup_entry(hass, config_entry):
"""Set up shopping list from config flow."""
async def add_item_service(call):
async def add_item_service(call: ServiceCall) -> None:
"""Add an item with `name`."""
data = hass.data[DOMAIN]
if (name := call.data.get(ATTR_NAME)) is not None:
await data.async_add(name)
async def complete_item_service(call):
async def complete_item_service(call: ServiceCall) -> None:
"""Mark the item provided via `name` as completed."""
data = hass.data[DOMAIN]
if (name := call.data.get(ATTR_NAME)) is None:
@ -97,7 +97,7 @@ async def async_setup_entry(hass, config_entry):
else:
await data.async_update(item["id"], {"name": name, "complete": True})
async def incomplete_item_service(call):
async def incomplete_item_service(call: ServiceCall) -> None:
"""Mark the item provided via `name` as incomplete."""
data = hass.data[DOMAIN]
if (name := call.data.get(ATTR_NAME)) is None:
@ -109,15 +109,15 @@ async def async_setup_entry(hass, config_entry):
else:
await data.async_update(item["id"], {"name": name, "complete": False})
async def complete_all_service(call):
async def complete_all_service(call: ServiceCall) -> None:
"""Mark all items in the list as complete."""
await data.async_update_list({"complete": True})
async def incomplete_all_service(call):
async def incomplete_all_service(call: ServiceCall) -> None:
"""Mark all items in the list as incomplete."""
await data.async_update_list({"complete": False})
async def clear_completed_items_service(call):
async def clear_completed_items_service(call: ServiceCall) -> None:
"""Clear all completed items from the list."""
await data.async_clear_completed()

View File

@ -6,6 +6,7 @@ import logging
import voluptuous as vol
from homeassistant.components import mqtt
from homeassistant.core import ServiceCall
from homeassistant.helpers import config_validation as cv, intent
DOMAIN = "snips"
@ -159,7 +160,7 @@ async def async_setup(hass, config):
await mqtt.async_subscribe(hass, INTENT_TOPIC, message_received)
async def snips_say(call):
async def snips_say(call: ServiceCall) -> None:
"""Send a Snips notification message."""
notification = {
"siteId": call.data.get(ATTR_SITE_ID, "default"),
@ -171,7 +172,7 @@ async def async_setup(hass, config):
)
return
async def snips_say_action(call):
async def snips_say_action(call: ServiceCall) -> None:
"""Send a Snips action message."""
notification = {
"siteId": call.data.get(ATTR_SITE_ID, "default"),
@ -188,11 +189,11 @@ async def async_setup(hass, config):
)
return
async def feedback_on(call):
async def feedback_on(call: ServiceCall) -> None:
"""Turn feedback sounds on."""
await async_set_feedback(call.data.get(ATTR_SITE_ID), True)
async def feedback_off(call):
async def feedback_off(call: ServiceCall) -> None:
"""Turn feedback sounds off."""
await async_set_feedback(call.data.get(ATTR_SITE_ID), False)

View File

@ -8,7 +8,7 @@ import speedtest
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_SCAN_INTERVAL, EVENT_HOMEASSISTANT_STARTED
from homeassistant.core import CoreState, HomeAssistant
from homeassistant.core import CoreState, HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
@ -140,7 +140,7 @@ class SpeedTestDataCoordinator(DataUpdateCoordinator):
except speedtest.SpeedtestException as err:
raise ConfigEntryNotReady from err
async def request_update(call):
async def request_update(call: ServiceCall) -> None:
"""Request update."""
await self.async_request_refresh()

View File

@ -1,9 +1,11 @@
"""The StarLine component."""
from __future__ import annotations
import voluptuous as vol
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_SCAN_INTERVAL
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryNotReady
from .account import StarlineAccount
@ -39,19 +41,19 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
async def async_set_scan_interval(call):
async def async_set_scan_interval(call: ServiceCall) -> None:
"""Set scan interval."""
options = dict(entry.options)
options[CONF_SCAN_INTERVAL] = call.data[CONF_SCAN_INTERVAL]
hass.config_entries.async_update_entry(entry=entry, options=options)
async def async_set_scan_obd_interval(call):
async def async_set_scan_obd_interval(call: ServiceCall) -> None:
"""Set OBD info scan interval."""
options = dict(entry.options)
options[CONF_SCAN_OBD_INTERVAL] = call.data[CONF_SCAN_INTERVAL]
hass.config_entries.async_update_entry(entry=entry, options=options)
async def async_update(call=None):
async def async_update(call: ServiceCall | None = None) -> None:
"""Update all data."""
await account.update()
await account.update_obd()

View File

@ -22,7 +22,7 @@ from homeassistant.const import (
CONF_PORT,
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, ServiceCall
from homeassistant.exceptions import (
ConfigEntryAuthFailed,
ConfigEntryNotReady,
@ -129,7 +129,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
raise vol.Invalid from exception
raise vol.Invalid(f"Device {device} does not exist")
async def handle_send_command(call):
async def handle_send_command(call: ServiceCall) -> None:
"""Handle the send_command service call."""
coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][
call.data[CONF_BRIDGE]
@ -155,7 +155,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
raise HomeAssistantError("Error sending command") from exception
_LOGGER.debug("Sent command. Response message was: %s", response.message)
async def handle_open(call):
async def handle_open(call: ServiceCall) -> None:
"""Handle the open service call."""
coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][
call.data[CONF_BRIDGE]
@ -171,7 +171,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
raise HomeAssistantError("Error sending") from exception
_LOGGER.debug("Sent open request")
async def handle_send_keypress(call):
async def handle_send_keypress(call: ServiceCall) -> None:
"""Handle the send_keypress service call."""
coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][
call.data[CONF_BRIDGE]
@ -190,7 +190,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
raise HomeAssistantError("Error sending") from exception
_LOGGER.debug("Sent keypress request")
async def handle_send_text(call):
async def handle_send_text(call: ServiceCall) -> None:
"""Handle the send_keypress service call."""
coordinator: SystemBridgeDataUpdateCoordinator = hass.data[DOMAIN][
call.data[CONF_BRIDGE]

View File

@ -10,7 +10,7 @@ import voluptuous as vol
from homeassistant import __path__ as HOMEASSISTANT_PATH
from homeassistant.components.http import HomeAssistantView
from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE, EVENT_HOMEASSISTANT_STOP
from homeassistant.core import callback
from homeassistant.core import ServiceCall, callback
import homeassistant.helpers.config_validation as cv
CONF_MAX_ENTRIES = "max_entries"
@ -225,7 +225,7 @@ async def async_setup(hass, config):
hass.http.register_view(AllErrorsView(handler))
async def async_service_handler(service):
async def async_service_handler(service: ServiceCall) -> None:
"""Handle logger services."""
if service.service == "clear":
handler.records.clear()

View File

@ -29,6 +29,7 @@ from homeassistant.const import (
HTTP_BEARER_AUTHENTICATION,
HTTP_DIGEST_AUTHENTICATION,
)
from homeassistant.core import ServiceCall
from homeassistant.exceptions import TemplateError
import homeassistant.helpers.config_validation as cv
@ -325,7 +326,7 @@ async def async_setup(hass, config):
hass, bot, p_config.get(CONF_ALLOWED_CHAT_IDS), p_config.get(ATTR_PARSER)
)
async def async_send_telegram_message(service):
async def async_send_telegram_message(service: ServiceCall) -> None:
"""Handle sending Telegram Bot message service calls."""
def _render_template_attr(data, attribute):

View File

@ -19,6 +19,7 @@ from homeassistant.const import (
CONF_USERNAME,
Platform,
)
from homeassistant.core import ServiceCall
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.dispatcher import dispatcher_send
@ -203,7 +204,7 @@ class TransmissionClient:
self.hass.config_entries.async_setup_platforms(self.config_entry, PLATFORMS)
def add_torrent(service):
def add_torrent(service: ServiceCall) -> None:
"""Add new torrent to download."""
tm_client = None
for entry in self.hass.config_entries.async_entries(DOMAIN):
@ -224,7 +225,7 @@ class TransmissionClient:
"Could not add torrent: unsupported type or no permission"
)
def start_torrent(service):
def start_torrent(service: ServiceCall) -> None:
"""Start torrent."""
tm_client = None
for entry in self.hass.config_entries.async_entries(DOMAIN):
@ -238,7 +239,7 @@ class TransmissionClient:
tm_client.tm_api.start_torrent(torrent_id)
tm_client.api.update()
def stop_torrent(service):
def stop_torrent(service: ServiceCall) -> None:
"""Stop torrent."""
tm_client = None
for entry in self.hass.config_entries.async_entries(DOMAIN):
@ -252,7 +253,7 @@ class TransmissionClient:
tm_client.tm_api.stop_torrent(torrent_id)
tm_client.api.update()
def remove_torrent(service):
def remove_torrent(service: ServiceCall) -> None:
"""Remove torrent."""
tm_client = None
for entry in self.hass.config_entries.async_entries(DOMAIN):

View File

@ -32,7 +32,7 @@ from homeassistant.const import (
CONF_PLATFORM,
PLATFORM_FORMAT,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.core import HomeAssistant, ServiceCall, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import config_per_platform, discovery
import homeassistant.helpers.config_validation as cv
@ -172,7 +172,7 @@ async def async_setup(hass, config):
_LOGGER.exception("Error setting up platform: %s", p_type)
return
async def async_say_handle(service):
async def async_say_handle(service: ServiceCall) -> None:
"""Service handle for say."""
entity_ids = service.data[ATTR_ENTITY_ID]
message = service.data.get(ATTR_MESSAGE)
@ -232,7 +232,7 @@ async def async_setup(hass, config):
discovery.async_listen_platform(hass, DOMAIN, async_platform_discovered)
async def async_clear_cache_handle(service):
async def async_clear_cache_handle(service: ServiceCall) -> None:
"""Handle clear cache service call."""
await tts.async_clear_cache()

View File

@ -3,7 +3,7 @@
import voluptuous as vol
from homeassistant.const import ATTR_DEVICE_ID
from homeassistant.core import callback
from homeassistant.core import ServiceCall, callback
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
@ -32,7 +32,7 @@ def async_setup_services(hass) -> None:
SERVICE_REMOVE_CLIENTS: async_remove_clients,
}
async def async_call_unifi_service(service_call) -> None:
async def async_call_unifi_service(service_call: ServiceCall) -> None:
"""Call correct UniFi service."""
await services[service_call.service](hass, service_call.data)