1
mirror of https://github.com/home-assistant/core synced 2024-08-02 23:40:32 +02:00

Add setup type hints [r] (#63472)

Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
epenet 2022-01-05 16:37:47 +01:00 committed by GitHub
parent 8756fa28e2
commit 64e7e62aa0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 154 additions and 36 deletions

View File

@ -1,11 +1,16 @@
"""Support for Melnor RainCloud sprinkler water timer.""" """Support for Melnor RainCloud sprinkler water timer."""
from __future__ import annotations
import logging import logging
import voluptuous as vol import voluptuous as vol
from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity
from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.const import CONF_MONITORED_CONDITIONS
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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 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.""" """Set up a sensor for a raincloud device."""
raincloud = hass.data[DATA_RAINCLOUD].data raincloud = hass.data[DATA_RAINCLOUD].data
sensors = [] sensors = []
for sensor_type in config.get(CONF_MONITORED_CONDITIONS): for sensor_type in config[CONF_MONITORED_CONDITIONS]:
if sensor_type == "status": if sensor_type == "status":
sensors.append(RainCloudBinarySensor(raincloud.controller, sensor_type)) sensors.append(RainCloudBinarySensor(raincloud.controller, sensor_type))
sensors.append( sensors.append(
@ -38,7 +48,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
sensors.append(RainCloudBinarySensor(zone, sensor_type)) sensors.append(RainCloudBinarySensor(zone, sensor_type))
add_entities(sensors, True) add_entities(sensors, True)
return True
class RainCloudBinarySensor(RainCloudEntity, BinarySensorEntity): class RainCloudBinarySensor(RainCloudEntity, BinarySensorEntity):

View File

@ -1,12 +1,17 @@
"""Support for Melnor RainCloud sprinkler water timer.""" """Support for Melnor RainCloud sprinkler water timer."""
from __future__ import annotations
import logging import logging
import voluptuous as vol import voluptuous as vol
from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
from homeassistant.const import CONF_MONITORED_CONDITIONS from homeassistant.const import CONF_MONITORED_CONDITIONS
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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.icon import icon_for_battery_level
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import ( from . import (
DATA_RAINCLOUD, 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.""" """Set up a sensor for a raincloud device."""
raincloud = hass.data[DATA_RAINCLOUD].data raincloud = hass.data[DATA_RAINCLOUD].data
sensors = [] sensors = []
for sensor_type in config.get(CONF_MONITORED_CONDITIONS): for sensor_type in config[CONF_MONITORED_CONDITIONS]:
if sensor_type == "battery": if sensor_type == "battery":
sensors.append(RainCloudSensor(raincloud.controller.faucet, sensor_type)) sensors.append(RainCloudSensor(raincloud.controller.faucet, sensor_type))
else: else:
@ -41,7 +51,6 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
sensors.append(RainCloudSensor(zone, sensor_type)) sensors.append(RainCloudSensor(zone, sensor_type))
add_entities(sensors, True) add_entities(sensors, True)
return True
class RainCloudSensor(RainCloudEntity, SensorEntity): class RainCloudSensor(RainCloudEntity, SensorEntity):

View File

@ -1,11 +1,16 @@
"""Support for Melnor RainCloud sprinkler water timer.""" """Support for Melnor RainCloud sprinkler water timer."""
from __future__ import annotations
import logging import logging
import voluptuous as vol import voluptuous as vol
from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity from homeassistant.components.switch import PLATFORM_SCHEMA, SwitchEntity
from homeassistant.const import ATTR_ATTRIBUTION, CONF_MONITORED_CONDITIONS from homeassistant.const import ATTR_ATTRIBUTION, CONF_MONITORED_CONDITIONS
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import ( from . import (
ALLOWED_WATERING_TIME, 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.""" """Set up a sensor for a raincloud device."""
raincloud = hass.data[DATA_RAINCLOUD].data raincloud = hass.data[DATA_RAINCLOUD].data
default_watering_timer = config.get(CONF_WATERING_TIME) default_watering_timer = config[CONF_WATERING_TIME]
sensors = [] 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 # create a sensor for each zone managed by faucet
for zone in raincloud.controller.faucet.zones: for zone in raincloud.controller.faucet.zones:
sensors.append(RainCloudSwitch(default_watering_timer, zone, sensor_type)) sensors.append(RainCloudSwitch(default_watering_timer, zone, sensor_type))

View File

@ -1,4 +1,6 @@
"""Support for RESTful switches.""" """Support for RESTful switches."""
from __future__ import annotations
import asyncio import asyncio
from http import HTTPStatus from http import HTTPStatus
import logging import logging
@ -24,8 +26,11 @@ from homeassistant.const import (
CONF_USERNAME, CONF_USERNAME,
CONF_VERIFY_SSL, CONF_VERIFY_SSL,
) )
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, template from homeassistant.helpers import config_validation as cv, template
from homeassistant.helpers.aiohttp_client import async_get_clientsession 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__) _LOGGER = logging.getLogger(__name__)
CONF_BODY_OFF = "body_off" 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.""" """Set up the RESTful switch."""
body_off = config.get(CONF_BODY_OFF) body_off = config.get(CONF_BODY_OFF)
body_on = config.get(CONF_BODY_ON) 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) name = config.get(CONF_NAME)
device_class = config.get(CONF_DEVICE_CLASS) device_class = config.get(CONF_DEVICE_CLASS)
username = config.get(CONF_USERNAME) username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
resource = config.get(CONF_RESOURCE) resource = config.get(CONF_RESOURCE)
state_resource = config.get(CONF_STATE_RESOURCE) or resource state_resource = config.get(CONF_STATE_RESOURCE) or resource
verify_ssl = config.get(CONF_VERIFY_SSL) verify_ssl = config.get(CONF_VERIFY_SSL)
auth = None auth = None
if username: if username:
auth = aiohttp.BasicAuth(username, password=password) auth = aiohttp.BasicAuth(username, password=config[CONF_PASSWORD])
if is_on_template is not None: if is_on_template is not None:
is_on_template.hass = hass is_on_template.hass = hass

View File

@ -1,4 +1,6 @@
"""Support for departure information for Rhein-Main public transport.""" """Support for departure information for Rhein-Main public transport."""
from __future__ import annotations
import asyncio import asyncio
from datetime import timedelta from datetime import timedelta
import logging import logging
@ -12,8 +14,11 @@ import voluptuous as vol
from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
from homeassistant.const import ATTR_ATTRIBUTION, CONF_NAME, CONF_TIMEOUT, TIME_MINUTES from homeassistant.const import ATTR_ATTRIBUTION, CONF_NAME, CONF_TIMEOUT, TIME_MINUTES
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady from homeassistant.exceptions import PlatformNotReady
import homeassistant.helpers.config_validation as cv 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 from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _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.""" """Set up the RMV departure sensor."""
timeout = config.get(CONF_TIMEOUT) 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), next_departure.get(CONF_NAME),
timeout, 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] tasks = [sensor.async_update() for sensor in sensors]

View File

@ -1,11 +1,22 @@
"""Support for Wi-Fi enabled iRobot Roombas.""" """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 . import roomba_reported_state
from .braava import BraavaJet from .braava import BraavaJet
from .const import BLID, DOMAIN, ROOMBA_SESSION from .const import BLID, DOMAIN, ROOMBA_SESSION
from .irobot_base import IRobotVacuum
from .roomba import RoombaVacuum, RoombaVacuumCarpetBoost 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.""" """Set up the iRobot Roomba vacuum cleaner."""
domain_data = hass.data[DOMAIN][config_entry.entry_id] domain_data = hass.data[DOMAIN][config_entry.entry_id]
roomba = domain_data[ROOMBA_SESSION] roomba = domain_data[ROOMBA_SESSION]
@ -16,6 +27,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
capabilities = state.get("cap", {}) capabilities = state.get("cap", {})
cap_carpet_boost = capabilities.get("carpetBoost") cap_carpet_boost = capabilities.get("carpetBoost")
detected_pad = state.get("detectedPad") detected_pad = state.get("detectedPad")
constructor: type[IRobotVacuum]
if detected_pad is not None: if detected_pad is not None:
constructor = BraavaJet constructor = BraavaJet
elif cap_carpet_boost == 1: elif cap_carpet_boost == 1:

View File

@ -1,4 +1,5 @@
"""Support for binary sensor using RPi GPIO.""" """Support for binary sensor using RPi GPIO."""
from __future__ import annotations
import asyncio import asyncio
@ -7,8 +8,11 @@ import voluptuous as vol
from homeassistant.components import rpi_gpio from homeassistant.components import rpi_gpio
from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity
from homeassistant.const import DEVICE_DEFAULT_NAME from homeassistant.const import DEVICE_DEFAULT_NAME
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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.reload import setup_reload_service
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import DOMAIN, PLATFORMS 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.""" """Set up the Raspberry PI GPIO devices."""
setup_reload_service(hass, DOMAIN, PLATFORMS) setup_reload_service(hass, DOMAIN, PLATFORMS)
pull_mode = config.get(CONF_PULL_MODE) pull_mode = config[CONF_PULL_MODE]
bouncetime = config.get(CONF_BOUNCETIME) bouncetime = config[CONF_BOUNCETIME]
invert_logic = config.get(CONF_INVERT_LOGIC) invert_logic = config[CONF_INVERT_LOGIC]
binary_sensors = [] binary_sensors = []
ports = config.get("ports") ports = config[CONF_PORTS]
for port_num, port_name in ports.items(): for port_num, port_name in ports.items():
binary_sensors.append( binary_sensors.append(
RPiGPIOBinarySensor( RPiGPIOBinarySensor(

View File

@ -1,4 +1,6 @@
"""Support for controlling a Raspberry Pi cover.""" """Support for controlling a Raspberry Pi cover."""
from __future__ import annotations
from time import sleep from time import sleep
import voluptuous as vol import voluptuous as vol
@ -6,8 +8,11 @@ import voluptuous as vol
from homeassistant.components import rpi_gpio from homeassistant.components import rpi_gpio
from homeassistant.components.cover import PLATFORM_SCHEMA, CoverEntity from homeassistant.components.cover import PLATFORM_SCHEMA, CoverEntity
from homeassistant.const import CONF_COVERS, CONF_NAME from homeassistant.const import CONF_COVERS, CONF_NAME
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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.reload import setup_reload_service
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import DOMAIN, PLATFORMS 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.""" """Set up the RPi cover platform."""
setup_reload_service(hass, DOMAIN, PLATFORMS) setup_reload_service(hass, DOMAIN, PLATFORMS)
relay_time = config.get(CONF_RELAY_TIME) relay_time = config[CONF_RELAY_TIME]
state_pull_mode = config.get(CONF_STATE_PULL_MODE) state_pull_mode = config[CONF_STATE_PULL_MODE]
invert_state = config.get(CONF_INVERT_STATE) invert_state = config[CONF_INVERT_STATE]
invert_relay = config.get(CONF_INVERT_RELAY) invert_relay = config[CONF_INVERT_RELAY]
covers = [] covers = []
covers_conf = config.get(CONF_COVERS) covers_conf = config[CONF_COVERS]
for cover in covers_conf: for cover in covers_conf:
covers.append( covers.append(

View File

@ -1,12 +1,17 @@
"""Allows to configure a switch using RPi GPIO.""" """Allows to configure a switch using RPi GPIO."""
from __future__ import annotations
import voluptuous as vol import voluptuous as vol
from homeassistant.components import rpi_gpio from homeassistant.components import rpi_gpio
from homeassistant.components.switch import PLATFORM_SCHEMA from homeassistant.components.switch import PLATFORM_SCHEMA
from homeassistant.const import DEVICE_DEFAULT_NAME from homeassistant.const import DEVICE_DEFAULT_NAME
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import ToggleEntity from homeassistant.helpers.entity import ToggleEntity
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.reload import setup_reload_service from homeassistant.helpers.reload import setup_reload_service
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from . import DOMAIN, PLATFORMS 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.""" """Set up the Raspberry PI GPIO devices."""
setup_reload_service(hass, DOMAIN, PLATFORMS) setup_reload_service(hass, DOMAIN, PLATFORMS)
invert_logic = config.get(CONF_INVERT_LOGIC) invert_logic = config[CONF_INVERT_LOGIC]
switches = [] switches = []
ports = config.get(CONF_PORTS) ports = config[CONF_PORTS]
for port, name in ports.items(): for port, name in ports.items():
switches.append(RPiGPIOSwitch(name, port, invert_logic)) switches.append(RPiGPIOSwitch(name, port, invert_logic))
add_entities(switches) add_entities(switches)

View File

@ -1,10 +1,15 @@
"""Support for binary sensor using the PiFace Digital I/O module on a RPi.""" """Support for binary sensor using the PiFace Digital I/O module on a RPi."""
from __future__ import annotations
import voluptuous as vol import voluptuous as vol
from homeassistant.components import rpi_pfio from homeassistant.components import rpi_pfio
from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity from homeassistant.components.binary_sensor import PLATFORM_SCHEMA, BinarySensorEntity
from homeassistant.const import CONF_NAME, DEVICE_DEFAULT_NAME from homeassistant.const import CONF_NAME, DEVICE_DEFAULT_NAME
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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_INVERT_LOGIC = "invert_logic"
CONF_PORTS = "ports" 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.""" """Set up the PiFace Digital Input devices."""
binary_sensors = [] binary_sensors = []
ports = config.get(CONF_PORTS) ports = config[CONF_PORTS]
for port, port_entity in ports.items(): for port, port_entity in ports.items():
name = port_entity.get(CONF_NAME) name = port_entity.get(CONF_NAME)
settle_time = port_entity[CONF_SETTLE_TIME] / 1000 settle_time = port_entity[CONF_SETTLE_TIME] / 1000

View File

@ -1,11 +1,16 @@
"""Support for switches using the PiFace Digital I/O module on a RPi.""" """Support for switches using the PiFace Digital I/O module on a RPi."""
from __future__ import annotations
import voluptuous as vol import voluptuous as vol
from homeassistant.components import rpi_pfio from homeassistant.components import rpi_pfio
from homeassistant.components.switch import PLATFORM_SCHEMA from homeassistant.components.switch import PLATFORM_SCHEMA
from homeassistant.const import ATTR_NAME, DEVICE_DEFAULT_NAME from homeassistant.const import ATTR_NAME, DEVICE_DEFAULT_NAME
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import ToggleEntity 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" 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.""" """Set up the PiFace Digital Output devices."""
switches = [] switches = []
ports = config.get(CONF_PORTS) ports = config[CONF_PORTS]
for port, port_entity in ports.items(): for port, port_entity in ports.items():
name = port_entity.get(ATTR_NAME) name = port_entity.get(ATTR_NAME)
invert_logic = port_entity[ATTR_INVERT_LOGIC] invert_logic = port_entity[ATTR_INVERT_LOGIC]

View File

@ -1,4 +1,6 @@
"""Support for a switch using a 433MHz module via GPIO on a Raspberry Pi.""" """Support for a switch using a 433MHz module via GPIO on a Raspberry Pi."""
from __future__ import annotations
import importlib import importlib
import logging import logging
from threading import RLock from threading import RLock
@ -12,7 +14,10 @@ from homeassistant.const import (
CONF_SWITCHES, CONF_SWITCHES,
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
) )
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv 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__) _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.""" """Find and return switches controlled by a generic RF device via GPIO."""
rpi_rf = importlib.import_module("rpi_rf") rpi_rf = importlib.import_module("rpi_rf")
gpio = config.get(CONF_GPIO) gpio = config[CONF_GPIO]
rfdevice = rpi_rf.RFDevice(gpio) rfdevice = rpi_rf.RFDevice(gpio)
rfdevice_lock = RLock() rfdevice_lock = RLock()
switches = config.get(CONF_SWITCHES) switches = config[CONF_SWITCHES]
devices = [] devices = []
for dev_name, properties in switches.items(): for dev_name, properties in switches.items():