From 8756fa28e25a495a47d1eb0cb9eaca52c0b693a8 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 5 Jan 2022 16:29:21 +0100 Subject: [PATCH] Add setup type hints [o-q] (#63465) Co-authored-by: epenet --- .../components/onkyo/media_player.py | 16 +++++++++----- .../components/pi4ioe5v9xxxx/switch.py | 14 ++++++++++-- homeassistant/components/pilight/light.py | 14 ++++++++++-- homeassistant/components/pilight/switch.py | 14 ++++++++++-- homeassistant/components/powerwall/sensor.py | 13 +++++++++-- .../components/pulseaudio_loopback/switch.py | 12 +++++++++- homeassistant/components/pyload/sensor.py | 22 ++++++++++++++----- homeassistant/components/qnap/sensor.py | 12 ++++++++-- .../components/qwikswitch/__init__.py | 14 +++++++++--- 9 files changed, 106 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/onkyo/media_player.py b/homeassistant/components/onkyo/media_player.py index 8f824772467d..aafcbf6a54dd 100644 --- a/homeassistant/components/onkyo/media_player.py +++ b/homeassistant/components/onkyo/media_player.py @@ -26,8 +26,10 @@ from homeassistant.const import ( STATE_OFF, STATE_ON, ) -from homeassistant.core import ServiceCall +from homeassistant.core import HomeAssistant, ServiceCall import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) @@ -172,10 +174,14 @@ def determine_zones(receiver): return out -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the Onkyo platform.""" - host = config.get(CONF_HOST) - hosts = [] + hosts: list[OnkyoDevice] = [] def service_handle(service: ServiceCall) -> None: """Handle for services.""" @@ -193,7 +199,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): schema=ONKYO_SELECT_OUTPUT_SCHEMA, ) - if CONF_HOST in config and host not in KNOWN_HOSTS: + if CONF_HOST in config and (host := config[CONF_HOST]) not in KNOWN_HOSTS: try: receiver = eiscp.eISCP(host) hosts.append( diff --git a/homeassistant/components/pi4ioe5v9xxxx/switch.py b/homeassistant/components/pi4ioe5v9xxxx/switch.py index 0946bbefa8f1..28a963629e94 100644 --- a/homeassistant/components/pi4ioe5v9xxxx/switch.py +++ b/homeassistant/components/pi4ioe5v9xxxx/switch.py @@ -1,4 +1,6 @@ """Allows to configure a switch using RPi GPIO.""" +from __future__ import annotations + import logging from pi4ioe5v9xxxx import pi4ioe5v9xxxx @@ -6,7 +8,10 @@ import voluptuous as vol from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity from homeassistant.const import DEVICE_DEFAULT_NAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType CONF_PINS = "pins" CONF_INVERT_LOGIC = "invert_logic" @@ -34,7 +39,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( _LOGGER = logging.getLogger(__name__) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the swiches devices.""" _LOGGER.warning( "The pi4ioe5v9xxxx IO Expander integration is deprecated and will be removed " @@ -43,7 +53,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): "https://github.com/home-assistant/architecture/blob/master/adr/0019-GPIO.md" ) - pins = config.get(CONF_PINS) + pins = config[CONF_PINS] switches = [] pi4ioe5v9xxxx.setup( diff --git a/homeassistant/components/pilight/light.py b/homeassistant/components/pilight/light.py index 1ab7cd207c14..2838895159cd 100644 --- a/homeassistant/components/pilight/light.py +++ b/homeassistant/components/pilight/light.py @@ -1,4 +1,6 @@ """Support for switching devices via Pilight to on and off.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components.light import ( @@ -8,7 +10,10 @@ from homeassistant.components.light import ( LightEntity, ) from homeassistant.const import CONF_LIGHTS +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from .base_class import SWITCHES_SCHEMA, PilightBaseDevice from .const import CONF_DIMLEVEL_MAX, CONF_DIMLEVEL_MIN @@ -25,9 +30,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the Pilight platform.""" - switches = config.get(CONF_LIGHTS) + switches = config[CONF_LIGHTS] devices = [] for dev_name, dev_config in switches.items(): diff --git a/homeassistant/components/pilight/switch.py b/homeassistant/components/pilight/switch.py index e190df327320..75d286afad29 100644 --- a/homeassistant/components/pilight/switch.py +++ b/homeassistant/components/pilight/switch.py @@ -1,9 +1,14 @@ """Support for switching devices via Pilight to on and off.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity from homeassistant.const import CONF_SWITCHES +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from .base_class import SWITCHES_SCHEMA, PilightBaseDevice @@ -12,9 +17,14 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the Pilight platform.""" - switches = config.get(CONF_SWITCHES) + switches = config[CONF_SWITCHES] devices = [] for dev_name, dev_config in switches.items(): diff --git a/homeassistant/components/powerwall/sensor.py b/homeassistant/components/powerwall/sensor.py index 556159fa893b..ceba94c830d7 100644 --- a/homeassistant/components/powerwall/sensor.py +++ b/homeassistant/components/powerwall/sensor.py @@ -1,4 +1,6 @@ """Support for August sensors.""" +from __future__ import annotations + import logging from tesla_powerwall import MeterType @@ -8,7 +10,10 @@ from homeassistant.components.sensor import ( SensorEntity, SensorStateClass, ) +from homeassistant.config_entries import ConfigEntry from homeassistant.const import ENERGY_KILO_WATT_HOUR, PERCENTAGE, POWER_KILO_WATT +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback from .const import ( ATTR_FREQUENCY, @@ -34,7 +39,11 @@ _METER_DIRECTIONS = [_METER_DIRECTION_EXPORT, _METER_DIRECTION_IMPORT] _LOGGER = logging.getLogger(__name__) -async def async_setup_entry(hass, config_entry, async_add_entities): +async def async_setup_entry( + hass: HomeAssistant, + config_entry: ConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: """Set up the August sensors.""" powerwall_data = hass.data[DOMAIN][config_entry.entry_id] _LOGGER.debug("Powerwall_data: %s", powerwall_data) @@ -45,7 +54,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): status = powerwall_data[POWERWALL_API_STATUS] powerwalls_serial_numbers = powerwall_data[POWERWALL_API_SERIAL_NUMBERS] - entities = [] + entities: list[SensorEntity] = [] # coordinator.data[POWERWALL_API_METERS].meters holds all meters that are available for meter in coordinator.data[POWERWALL_API_METERS].meters: entities.append( diff --git a/homeassistant/components/pulseaudio_loopback/switch.py b/homeassistant/components/pulseaudio_loopback/switch.py index 260fbe65c1b1..df28b0ff38cf 100644 --- a/homeassistant/components/pulseaudio_loopback/switch.py +++ b/homeassistant/components/pulseaudio_loopback/switch.py @@ -1,4 +1,6 @@ """Switch logic for loading/unloading pulseaudio loopback modules.""" +from __future__ import annotations + import logging from pulsectl import Pulse, PulseError @@ -6,7 +8,10 @@ import voluptuous as vol from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PORT +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType DOMAIN = "pulseaudio_loopback" @@ -31,7 +36,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Read in all of our configuration, and initialize the loopback switch.""" name = config.get(CONF_NAME) sink_name = config.get(CONF_SINK_NAME) diff --git a/homeassistant/components/pyload/sensor.py b/homeassistant/components/pyload/sensor.py index b10abd282b4c..65c33a41ff32 100644 --- a/homeassistant/components/pyload/sensor.py +++ b/homeassistant/components/pyload/sensor.py @@ -1,4 +1,6 @@ """Support for monitoring pyLoad.""" +from __future__ import annotations + from datetime import timedelta import logging @@ -18,7 +20,10 @@ from homeassistant.const import ( CONTENT_TYPE_JSON, DATA_RATE_MEGABYTES_PER_SECOND, ) +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.util import Throttle _LOGGER = logging.getLogger(__name__) @@ -46,15 +51,20 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the pyLoad sensors.""" - host = config.get(CONF_HOST) - port = config.get(CONF_PORT) + host = config[CONF_HOST] + port = config[CONF_PORT] protocol = "https" if config[CONF_SSL] else "http" - name = config.get(CONF_NAME) + name = config[CONF_NAME] username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) - monitored_types = config.get(CONF_MONITORED_VARIABLES) + monitored_types = config[CONF_MONITORED_VARIABLES] url = f"{protocol}://{host}:{port}/api/" try: @@ -64,7 +74,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): requests.exceptions.HTTPError, ) as conn_err: _LOGGER.error("Error setting up pyLoad API: %s", conn_err) - return False + return devices = [] for ng_type in monitored_types: diff --git a/homeassistant/components/qnap/sensor.py b/homeassistant/components/qnap/sensor.py index 5580bb14673a..1e2bf5b68922 100644 --- a/homeassistant/components/qnap/sensor.py +++ b/homeassistant/components/qnap/sensor.py @@ -28,8 +28,11 @@ from homeassistant.const import ( PERCENTAGE, TEMP_CELSIUS, ) +from homeassistant.core import HomeAssistant from homeassistant.exceptions import PlatformNotReady import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.util import Throttle _LOGGER = logging.getLogger(__name__) @@ -193,7 +196,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -def setup_platform(hass, config, add_entities, discovery_info=None): +def setup_platform( + hass: HomeAssistant, + config: ConfigType, + add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the QNAP NAS sensor.""" api = QNAPStatsAPI(config) api.update() @@ -203,7 +211,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None): raise PlatformNotReady monitored_conditions = config[CONF_MONITORED_CONDITIONS] - sensors = [] + sensors: list[QNAPSensor] = [] # Basic sensors sensors.extend( diff --git a/homeassistant/components/qwikswitch/__init__.py b/homeassistant/components/qwikswitch/__init__.py index be9cff872504..a91440db1ed1 100644 --- a/homeassistant/components/qwikswitch/__init__.py +++ b/homeassistant/components/qwikswitch/__init__.py @@ -1,4 +1,6 @@ """Support for Qwikswitch devices.""" +from __future__ import annotations + import logging from pyqwikswitch.async_ import QSUsb @@ -14,11 +16,12 @@ from homeassistant.const import ( EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, ) -from homeassistant.core import callback +from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv from homeassistant.helpers.discovery import load_platform from homeassistant.helpers.entity import Entity +from homeassistant.helpers.typing import ConfigType _LOGGER = logging.getLogger(__name__) @@ -130,7 +133,7 @@ class QSToggleEntity(QSEntity): self.hass.data[DOMAIN].devices.set_value(self.qsid, 0) -async def async_setup(hass, config): +async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Qwiskswitch component setup.""" # Add cmd's to in /&listen packets will fire events @@ -163,7 +166,12 @@ async def async_setup(hass, config): hass.data[DOMAIN] = qsusb - comps = {"switch": [], "light": [], "sensor": [], "binary_sensor": []} + comps: dict[str, list] = { + "switch": [], + "light": [], + "sensor": [], + "binary_sensor": [], + } sensor_ids = [] for sens in sensors: