diff --git a/homeassistant/components/eddystone_temperature/sensor.py b/homeassistant/components/eddystone_temperature/sensor.py index 66b0ce6731e..4178f577021 100644 --- a/homeassistant/components/eddystone_temperature/sensor.py +++ b/homeassistant/components/eddystone_temperature/sensor.py @@ -4,6 +4,8 @@ Read temperature information from Eddystone beacons. Your beacons must be configured to transmit UID (for identification) and TLM (for temperature) frames. """ +from __future__ import annotations + import logging # pylint: disable=import-error @@ -22,7 +24,10 @@ from homeassistant.const import ( STATE_UNKNOWN, TEMP_CELSIUS, ) +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__) @@ -47,11 +52,16 @@ 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: """Validate configuration, create devices and start monitoring thread.""" bt_device_id = config.get("bt_device_id") - beacons = config.get(CONF_BEACONS) + beacons = config[CONF_BEACONS] devices = [] for dev_name, properties in beacons.items(): diff --git a/homeassistant/components/elkm1/alarm_control_panel.py b/homeassistant/components/elkm1/alarm_control_panel.py index 04881b9f085..e9b1c5a3ccb 100644 --- a/homeassistant/components/elkm1/alarm_control_panel.py +++ b/homeassistant/components/elkm1/alarm_control_panel.py @@ -1,4 +1,6 @@ """Each ElkM1 area will be created as a separate alarm_control_panel.""" +from __future__ import annotations + from elkm1_lib.const import AlarmState, ArmedStatus, ArmLevel, ArmUpState from elkm1_lib.util import username import voluptuous as vol @@ -13,6 +15,7 @@ from homeassistant.components.alarm_control_panel.const import ( SUPPORT_ALARM_ARM_HOME, SUPPORT_ALARM_ARM_NIGHT, ) +from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME, @@ -22,8 +25,10 @@ from homeassistant.const import ( STATE_ALARM_PENDING, STATE_ALARM_TRIGGERED, ) +from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_platform import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.restore_state import RestoreEntity from . import ElkAttachedEntity, create_elk_entities @@ -53,11 +58,15 @@ SERVICE_ALARM_BYPASS = "alarm_bypass" SERVICE_ALARM_CLEAR_BYPASS = "alarm_clear_bypass" -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 ElkM1 alarm platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] elk = elk_data["elk"] - entities = [] + entities: list[ElkArea] = [] create_elk_entities(elk_data, elk.areas, "area", ElkArea, entities) async_add_entities(entities, True) diff --git a/homeassistant/components/elkm1/climate.py b/homeassistant/components/elkm1/climate.py index bc5f3ae4b7a..84466266d93 100644 --- a/homeassistant/components/elkm1/climate.py +++ b/homeassistant/components/elkm1/climate.py @@ -1,4 +1,6 @@ """Support for control of Elk-M1 connected thermostats.""" +from __future__ import annotations + from elkm1_lib.const import ThermostatFan, ThermostatMode, ThermostatSetting from homeassistant.components.climate import ClimateEntity @@ -14,7 +16,10 @@ from homeassistant.components.climate.const import ( SUPPORT_FAN_MODE, SUPPORT_TARGET_TEMPERATURE_RANGE, ) +from homeassistant.config_entries import ConfigEntry from homeassistant.const import PRECISION_WHOLE, STATE_ON +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ElkEntity, create_elk_entities from .const import DOMAIN @@ -28,10 +33,14 @@ SUPPORT_HVAC = [ ] -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: """Create the Elk-M1 thermostat platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] - entities = [] + entities: list[ElkThermostat] = [] elk = elk_data["elk"] create_elk_entities( elk_data, elk.thermostats, "thermostat", ElkThermostat, entities diff --git a/homeassistant/components/elkm1/light.py b/homeassistant/components/elkm1/light.py index 19a09d13975..e690ad1c575 100644 --- a/homeassistant/components/elkm1/light.py +++ b/homeassistant/components/elkm1/light.py @@ -1,19 +1,27 @@ """Support for control of ElkM1 lighting (X10, UPB, etc).""" +from __future__ import annotations from homeassistant.components.light import ( ATTR_BRIGHTNESS, SUPPORT_BRIGHTNESS, LightEntity, ) +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ElkEntity, create_elk_entities from .const import DOMAIN -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 Elk light platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] - entities = [] + entities: list[ElkLight] = [] elk = elk_data["elk"] create_elk_entities(elk_data, elk.lights, "plc", ElkLight, entities) async_add_entities(entities, True) diff --git a/homeassistant/components/elkm1/scene.py b/homeassistant/components/elkm1/scene.py index 208779b99d0..597080d9de5 100644 --- a/homeassistant/components/elkm1/scene.py +++ b/homeassistant/components/elkm1/scene.py @@ -1,16 +1,25 @@ """Support for control of ElkM1 tasks ("macros").""" +from __future__ import annotations + from typing import Any from homeassistant.components.scene import Scene +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ElkAttachedEntity, create_elk_entities from .const import DOMAIN -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: """Create the Elk-M1 scene platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] - entities = [] + entities: list[ElkTask] = [] elk = elk_data["elk"] create_elk_entities(elk_data, elk.tasks, "task", ElkTask, entities) async_add_entities(entities, True) diff --git a/homeassistant/components/elkm1/sensor.py b/homeassistant/components/elkm1/sensor.py index a488ce02ece..b2c7140d6b3 100644 --- a/homeassistant/components/elkm1/sensor.py +++ b/homeassistant/components/elkm1/sensor.py @@ -1,4 +1,6 @@ """Support for control of ElkM1 sensors.""" +from __future__ import annotations + from elkm1_lib.const import ( SettingFormat, ZoneLogicalStatus, @@ -9,10 +11,13 @@ from elkm1_lib.util import pretty_const, username import voluptuous as vol from homeassistant.components.sensor import SensorEntity +from homeassistant.config_entries import ConfigEntry from homeassistant.const import ELECTRIC_POTENTIAL_VOLT +from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers import entity_platform from homeassistant.helpers.entity import EntityCategory +from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ElkAttachedEntity, create_elk_entities from .const import ATTR_VALUE, DOMAIN, ELK_USER_CODE_SERVICE_SCHEMA @@ -28,10 +33,14 @@ ELK_SET_COUNTER_SERVICE_SCHEMA = { } -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: """Create the Elk-M1 sensor platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] - entities = [] + entities: list[ElkSensor] = [] elk = elk_data["elk"] create_elk_entities(elk_data, elk.counters, "counter", ElkCounter, entities) create_elk_entities(elk_data, elk.keypads, "keypad", ElkKeypad, entities) diff --git a/homeassistant/components/elkm1/switch.py b/homeassistant/components/elkm1/switch.py index d9eb59737b6..6c5564975bb 100644 --- a/homeassistant/components/elkm1/switch.py +++ b/homeassistant/components/elkm1/switch.py @@ -1,14 +1,23 @@ """Support for control of ElkM1 outputs (relays).""" +from __future__ import annotations + from homeassistant.components.switch import SwitchEntity +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import ElkAttachedEntity, create_elk_entities from .const import DOMAIN -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: """Create the Elk-M1 switch platform.""" elk_data = hass.data[DOMAIN][config_entry.entry_id] - entities = [] + entities: list[ElkOutput] = [] elk = elk_data["elk"] create_elk_entities(elk_data, elk.outputs, "output", ElkOutput, entities) async_add_entities(entities, True) diff --git a/homeassistant/components/entur_public_transport/sensor.py b/homeassistant/components/entur_public_transport/sensor.py index 776d1c17618..e980ef0e396 100644 --- a/homeassistant/components/entur_public_transport/sensor.py +++ b/homeassistant/components/entur_public_transport/sensor.py @@ -15,8 +15,11 @@ from homeassistant.const import ( CONF_SHOW_ON_MAP, TIME_MINUTES, ) +from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession 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 import homeassistant.util.dt as dt_util @@ -85,16 +88,21 @@ def due_in_minutes(timestamp: datetime) -> int: return int(diff.total_seconds() / 60) -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 Entur public transport sensor.""" - expand = config.get(CONF_EXPAND_PLATFORMS) - line_whitelist = config.get(CONF_WHITELIST_LINES) - name = config.get(CONF_NAME) - show_on_map = config.get(CONF_SHOW_ON_MAP) - stop_ids = config.get(CONF_STOP_IDS) - omit_non_boarding = config.get(CONF_OMIT_NON_BOARDING) - number_of_departures = config.get(CONF_NUMBER_OF_DEPARTURES) + expand = config[CONF_EXPAND_PLATFORMS] + line_whitelist = config[CONF_WHITELIST_LINES] + name = config[CONF_NAME] + show_on_map = config[CONF_SHOW_ON_MAP] + stop_ids = config[CONF_STOP_IDS] + omit_non_boarding = config[CONF_OMIT_NON_BOARDING] + number_of_departures = config[CONF_NUMBER_OF_DEPARTURES] stops = [s for s in stop_ids if "StopPlace" in s] quays = [s for s in stop_ids if "Quay" in s]