From 64e7e62aa074757546cea418a439e41a8d09d459 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 5 Jan 2022 16:37:47 +0100 Subject: [PATCH] Add setup type hints [r] (#63472) Co-authored-by: epenet --- .../components/raincloud/binary_sensor.py | 15 ++++++++++--- homeassistant/components/raincloud/sensor.py | 15 ++++++++++--- homeassistant/components/raincloud/switch.py | 16 +++++++++++--- homeassistant/components/rest/switch.py | 15 ++++++++++--- .../components/rmvtransport/sensor.py | 14 ++++++++++-- homeassistant/components/roomba/vacuum.py | 14 +++++++++++- .../components/rpi_gpio/binary_sensor.py | 19 +++++++++++----- homeassistant/components/rpi_gpio/cover.py | 22 ++++++++++++++----- homeassistant/components/rpi_gpio/switch.py | 16 +++++++++++--- .../components/rpi_pfio/binary_sensor.py | 14 ++++++++++-- homeassistant/components/rpi_pfio/switch.py | 14 ++++++++++-- homeassistant/components/rpi_rf/switch.py | 16 +++++++++++--- 12 files changed, 154 insertions(+), 36 deletions(-) diff --git a/homeassistant/components/raincloud/binary_sensor.py b/homeassistant/components/raincloud/binary_sensor.py index d2659e133b0b..888529b5c386 100644 --- a/homeassistant/components/raincloud/binary_sensor.py +++ b/homeassistant/components/raincloud/binary_sensor.py @@ -1,11 +1,16 @@ """Support for Melnor RainCloud sprinkler water timer.""" +from __future__ import annotations + import logging import voluptuous as vol from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity from homeassistant.const import CONF_MONITORED_CONDITIONS +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 . import BINARY_SENSORS, DATA_RAINCLOUD, ICON_MAP, RainCloudEntity @@ -20,12 +25,17 @@ 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 a sensor for a raincloud device.""" raincloud = hass.data[DATA_RAINCLOUD].data sensors = [] - for sensor_type in config.get(CONF_MONITORED_CONDITIONS): + for sensor_type in config[CONF_MONITORED_CONDITIONS]: if sensor_type == "status": sensors.append(RainCloudBinarySensor(raincloud.controller, sensor_type)) sensors.append( @@ -38,7 +48,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None): sensors.append(RainCloudBinarySensor(zone, sensor_type)) add_entities(sensors, True) - return True class RainCloudBinarySensor(RainCloudEntity, BinarySensorEntity): diff --git a/homeassistant/components/raincloud/sensor.py b/homeassistant/components/raincloud/sensor.py index c550e43285b6..b07ccd1e7ac8 100644 --- a/homeassistant/components/raincloud/sensor.py +++ b/homeassistant/components/raincloud/sensor.py @@ -1,12 +1,17 @@ """Support for Melnor RainCloud sprinkler water timer.""" +from __future__ import annotations + import logging import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.const import CONF_MONITORED_CONDITIONS +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.icon import icon_for_battery_level +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import ( DATA_RAINCLOUD, @@ -27,12 +32,17 @@ 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 a sensor for a raincloud device.""" raincloud = hass.data[DATA_RAINCLOUD].data sensors = [] - for sensor_type in config.get(CONF_MONITORED_CONDITIONS): + for sensor_type in config[CONF_MONITORED_CONDITIONS]: if sensor_type == "battery": sensors.append(RainCloudSensor(raincloud.controller.faucet, sensor_type)) else: @@ -41,7 +51,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None): sensors.append(RainCloudSensor(zone, sensor_type)) add_entities(sensors, True) - return True class RainCloudSensor(RainCloudEntity, SensorEntity): diff --git a/homeassistant/components/raincloud/switch.py b/homeassistant/components/raincloud/switch.py index d15f5c7c0475..b783a3d93754 100644 --- a/homeassistant/components/raincloud/switch.py +++ b/homeassistant/components/raincloud/switch.py @@ -1,11 +1,16 @@ """Support for Melnor RainCloud sprinkler water timer.""" +from __future__ import annotations + import logging import voluptuous as vol from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity from homeassistant.const import ATTR_ATTRIBUTION, CONF_MONITORED_CONDITIONS +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 . import ( ALLOWED_WATERING_TIME, @@ -31,13 +36,18 @@ 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 a sensor for a raincloud device.""" raincloud = hass.data[DATA_RAINCLOUD].data - default_watering_timer = config.get(CONF_WATERING_TIME) + default_watering_timer = config[CONF_WATERING_TIME] sensors = [] - for sensor_type in config.get(CONF_MONITORED_CONDITIONS): + for sensor_type in config[CONF_MONITORED_CONDITIONS]: # create a sensor for each zone managed by faucet for zone in raincloud.controller.faucet.zones: sensors.append(RainCloudSwitch(default_watering_timer, zone, sensor_type)) diff --git a/homeassistant/components/rest/switch.py b/homeassistant/components/rest/switch.py index 3e5fd7e2c68a..10214970cce8 100644 --- a/homeassistant/components/rest/switch.py +++ b/homeassistant/components/rest/switch.py @@ -1,4 +1,6 @@ """Support for RESTful switches.""" +from __future__ import annotations + import asyncio from http import HTTPStatus import logging @@ -24,8 +26,11 @@ from homeassistant.const import ( CONF_USERNAME, CONF_VERIFY_SSL, ) +from homeassistant.core import HomeAssistant from homeassistant.helpers import config_validation as cv, template from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType _LOGGER = logging.getLogger(__name__) CONF_BODY_OFF = "body_off" @@ -64,7 +69,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): +async def async_setup_platform( + hass: HomeAssistant, + config: ConfigType, + async_add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the RESTful switch.""" body_off = config.get(CONF_BODY_OFF) body_on = config.get(CONF_BODY_ON) @@ -75,14 +85,13 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= name = config.get(CONF_NAME) device_class = config.get(CONF_DEVICE_CLASS) username = config.get(CONF_USERNAME) - password = config.get(CONF_PASSWORD) resource = config.get(CONF_RESOURCE) state_resource = config.get(CONF_STATE_RESOURCE) or resource verify_ssl = config.get(CONF_VERIFY_SSL) auth = None if username: - auth = aiohttp.BasicAuth(username, password=password) + auth = aiohttp.BasicAuth(username, password=config[CONF_PASSWORD]) if is_on_template is not None: is_on_template.hass = hass diff --git a/homeassistant/components/rmvtransport/sensor.py b/homeassistant/components/rmvtransport/sensor.py index bf2eab2d7b71..92455329deaa 100644 --- a/homeassistant/components/rmvtransport/sensor.py +++ b/homeassistant/components/rmvtransport/sensor.py @@ -1,4 +1,6 @@ """Support for departure information for Rhein-Main public transport.""" +from __future__ import annotations + import asyncio from datetime import timedelta import logging @@ -12,8 +14,11 @@ import voluptuous as vol from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.const import ATTR_ATTRIBUTION, CONF_NAME, CONF_TIMEOUT, TIME_MINUTES +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__) @@ -74,7 +79,12 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( ) -async def async_setup_platform(hass, config, async_add_entities, discovery_info=None): +async def async_setup_platform( + hass: HomeAssistant, + config: ConfigType, + async_add_entities: AddEntitiesCallback, + discovery_info: DiscoveryInfoType | None = None, +) -> None: """Set up the RMV departure sensor.""" timeout = config.get(CONF_TIMEOUT) @@ -90,7 +100,7 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info= next_departure.get(CONF_NAME), timeout, ) - for next_departure in config.get(CONF_NEXT_DEPARTURE) + for next_departure in config[CONF_NEXT_DEPARTURE] ] tasks = [sensor.async_update() for sensor in sensors] diff --git a/homeassistant/components/roomba/vacuum.py b/homeassistant/components/roomba/vacuum.py index f4e0d4f0138e..4333f926ba5d 100644 --- a/homeassistant/components/roomba/vacuum.py +++ b/homeassistant/components/roomba/vacuum.py @@ -1,11 +1,22 @@ """Support for Wi-Fi enabled iRobot Roombas.""" +from __future__ import annotations + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + from . import roomba_reported_state from .braava import BraavaJet from .const import BLID, DOMAIN, ROOMBA_SESSION +from .irobot_base import IRobotVacuum from .roomba import RoombaVacuum, RoombaVacuumCarpetBoost -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 iRobot Roomba vacuum cleaner.""" domain_data = hass.data[DOMAIN][config_entry.entry_id] roomba = domain_data[ROOMBA_SESSION] @@ -16,6 +27,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities): capabilities = state.get("cap", {}) cap_carpet_boost = capabilities.get("carpetBoost") detected_pad = state.get("detectedPad") + constructor: type[IRobotVacuum] if detected_pad is not None: constructor = BraavaJet elif cap_carpet_boost == 1: diff --git a/homeassistant/components/rpi_gpio/binary_sensor.py b/homeassistant/components/rpi_gpio/binary_sensor.py index 318b29131b60..e183b463e45f 100644 --- a/homeassistant/components/rpi_gpio/binary_sensor.py +++ b/homeassistant/components/rpi_gpio/binary_sensor.py @@ -1,4 +1,5 @@ """Support for binary sensor using RPi GPIO.""" +from __future__ import annotations import asyncio @@ -7,8 +8,11 @@ import voluptuous as vol from homeassistant.components import rpi_gpio from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity 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.reload import setup_reload_service +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import DOMAIN, PLATFORMS @@ -33,16 +37,21 @@ 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 Raspberry PI GPIO devices.""" setup_reload_service(hass, DOMAIN, PLATFORMS) - pull_mode = config.get(CONF_PULL_MODE) - bouncetime = config.get(CONF_BOUNCETIME) - invert_logic = config.get(CONF_INVERT_LOGIC) + pull_mode = config[CONF_PULL_MODE] + bouncetime = config[CONF_BOUNCETIME] + invert_logic = config[CONF_INVERT_LOGIC] binary_sensors = [] - ports = config.get("ports") + ports = config[CONF_PORTS] for port_num, port_name in ports.items(): binary_sensors.append( RPiGPIOBinarySensor( diff --git a/homeassistant/components/rpi_gpio/cover.py b/homeassistant/components/rpi_gpio/cover.py index 15eae3b4b077..e4b07d3c5774 100644 --- a/homeassistant/components/rpi_gpio/cover.py +++ b/homeassistant/components/rpi_gpio/cover.py @@ -1,4 +1,6 @@ """Support for controlling a Raspberry Pi cover.""" +from __future__ import annotations + from time import sleep import voluptuous as vol @@ -6,8 +8,11 @@ import voluptuous as vol from homeassistant.components import rpi_gpio from homeassistant.components.cover import PLATFORM_SCHEMA, CoverEntity from homeassistant.const import CONF_COVERS, CONF_NAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.reload import setup_reload_service +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import DOMAIN, PLATFORMS @@ -46,16 +51,21 @@ 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 RPi cover platform.""" setup_reload_service(hass, DOMAIN, PLATFORMS) - relay_time = config.get(CONF_RELAY_TIME) - state_pull_mode = config.get(CONF_STATE_PULL_MODE) - invert_state = config.get(CONF_INVERT_STATE) - invert_relay = config.get(CONF_INVERT_RELAY) + relay_time = config[CONF_RELAY_TIME] + state_pull_mode = config[CONF_STATE_PULL_MODE] + invert_state = config[CONF_INVERT_STATE] + invert_relay = config[CONF_INVERT_RELAY] covers = [] - covers_conf = config.get(CONF_COVERS) + covers_conf = config[CONF_COVERS] for cover in covers_conf: covers.append( diff --git a/homeassistant/components/rpi_gpio/switch.py b/homeassistant/components/rpi_gpio/switch.py index 3fba7b4b2cb0..3c3232954115 100644 --- a/homeassistant/components/rpi_gpio/switch.py +++ b/homeassistant/components/rpi_gpio/switch.py @@ -1,12 +1,17 @@ """Allows to configure a switch using RPi GPIO.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components import rpi_gpio from homeassistant.components.switch import PLATFORM_SCHEMA from homeassistant.const import DEVICE_DEFAULT_NAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import ToggleEntity +from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.reload import setup_reload_service +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from . import DOMAIN, PLATFORMS @@ -26,14 +31,19 @@ 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 Raspberry PI GPIO devices.""" setup_reload_service(hass, DOMAIN, PLATFORMS) - invert_logic = config.get(CONF_INVERT_LOGIC) + invert_logic = config[CONF_INVERT_LOGIC] switches = [] - ports = config.get(CONF_PORTS) + ports = config[CONF_PORTS] for port, name in ports.items(): switches.append(RPiGPIOSwitch(name, port, invert_logic)) add_entities(switches) diff --git a/homeassistant/components/rpi_pfio/binary_sensor.py b/homeassistant/components/rpi_pfio/binary_sensor.py index 5d1d46e8a392..ddce88949fdd 100644 --- a/homeassistant/components/rpi_pfio/binary_sensor.py +++ b/homeassistant/components/rpi_pfio/binary_sensor.py @@ -1,10 +1,15 @@ """Support for binary sensor using the PiFace Digital I/O module on a RPi.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components import rpi_pfio from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity from homeassistant.const import CONF_NAME, 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_INVERT_LOGIC = "invert_logic" CONF_PORTS = "ports" @@ -26,10 +31,15 @@ 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 PiFace Digital Input devices.""" binary_sensors = [] - ports = config.get(CONF_PORTS) + ports = config[CONF_PORTS] for port, port_entity in ports.items(): name = port_entity.get(CONF_NAME) settle_time = port_entity[CONF_SETTLE_TIME] / 1000 diff --git a/homeassistant/components/rpi_pfio/switch.py b/homeassistant/components/rpi_pfio/switch.py index 91a98cdec59a..c5af1bbf2e1d 100644 --- a/homeassistant/components/rpi_pfio/switch.py +++ b/homeassistant/components/rpi_pfio/switch.py @@ -1,11 +1,16 @@ """Support for switches using the PiFace Digital I/O module on a RPi.""" +from __future__ import annotations + import voluptuous as vol from homeassistant.components import rpi_pfio from homeassistant.components.switch import PLATFORM_SCHEMA from homeassistant.const import ATTR_NAME, DEVICE_DEFAULT_NAME +from homeassistant.core import HomeAssistant import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import ToggleEntity +from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType ATTR_INVERT_LOGIC = "invert_logic" @@ -25,10 +30,15 @@ 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 PiFace Digital Output devices.""" switches = [] - ports = config.get(CONF_PORTS) + ports = config[CONF_PORTS] for port, port_entity in ports.items(): name = port_entity.get(ATTR_NAME) invert_logic = port_entity[ATTR_INVERT_LOGIC] diff --git a/homeassistant/components/rpi_rf/switch.py b/homeassistant/components/rpi_rf/switch.py index a374300a2645..101edddee7d5 100644 --- a/homeassistant/components/rpi_rf/switch.py +++ b/homeassistant/components/rpi_rf/switch.py @@ -1,4 +1,6 @@ """Support for a switch using a 433MHz module via GPIO on a Raspberry Pi.""" +from __future__ import annotations + import importlib import logging from threading import RLock @@ -12,7 +14,10 @@ from homeassistant.const import ( CONF_SWITCHES, EVENT_HOMEASSISTANT_STOP, ) +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 _LOGGER = logging.getLogger(__name__) @@ -45,14 +50,19 @@ 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: """Find and return switches controlled by a generic RF device via GPIO.""" rpi_rf = importlib.import_module("rpi_rf") - gpio = config.get(CONF_GPIO) + gpio = config[CONF_GPIO] rfdevice = rpi_rf.RFDevice(gpio) rfdevice_lock = RLock() - switches = config.get(CONF_SWITCHES) + switches = config[CONF_SWITCHES] devices = [] for dev_name, properties in switches.items():