Add setup type hints [s] (part 2) (#63479)

Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
epenet 2022-01-05 17:34:18 +01:00 committed by GitHub
parent d61a96f0ab
commit 992f9c3c6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 130 additions and 35 deletions

View File

@ -1,9 +1,14 @@
"""Support for monitoring a Smappee appliance binary sensor.""" """Support for monitoring a Smappee appliance binary sensor."""
from __future__ import annotations
from homeassistant.components.binary_sensor import ( from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass, BinarySensorDeviceClass,
BinarySensorEntity, BinarySensorEntity,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from .const import DOMAIN
@ -11,11 +16,15 @@ BINARY_SENSOR_PREFIX = "Appliance"
PRESENCE_PREFIX = "Presence" PRESENCE_PREFIX = "Presence"
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 Smappee binary sensor.""" """Set up the Smappee binary sensor."""
smappee_base = hass.data[DOMAIN][config_entry.entry_id] smappee_base = hass.data[DOMAIN][config_entry.entry_id]
entities = [] entities: list[BinarySensorEntity] = []
for service_location in smappee_base.smappee.service_locations.values(): for service_location in smappee_base.smappee.service_locations.values():
for appliance_id, appliance in service_location.appliances.items(): for appliance_id, appliance in service_location.appliances.items():
if appliance.type != "Find me" and appliance.source_type == "NILM": if appliance.type != "Find me" and appliance.source_type == "NILM":

View File

@ -8,7 +8,10 @@ from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass, BinarySensorDeviceClass,
BinarySensorEntity, BinarySensorEntity,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_platform from homeassistant.helpers import entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import ATTR_ERRORS, ATTR_REMINDERS, DOMAIN, SMARTTUB_CONTROLLER from .const import ATTR_ERRORS, ATTR_REMINDERS, DOMAIN, SMARTTUB_CONTROLLER
from .entity import SmartTubEntity, SmartTubSensorBase from .entity import SmartTubEntity, SmartTubSensorBase
@ -37,12 +40,14 @@ SNOOZE_REMINDER_SCHEMA = {
} }
async def async_setup_entry(hass, entry, async_add_entities): async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up binary sensor entities for the binary sensors in the tub.""" """Set up binary sensor entities for the binary sensors in the tub."""
controller = hass.data[DOMAIN][entry.entry_id][SMARTTUB_CONTROLLER] controller = hass.data[DOMAIN][entry.entry_id][SMARTTUB_CONTROLLER]
entities = [] entities: list[BinarySensorEntity] = []
for spa in controller.spas: for spa in controller.spas:
entities.append(SmartTubOnline(controller.coordinator, spa)) entities.append(SmartTubOnline(controller.coordinator, spa))
entities.append(SmartTubError(controller.coordinator, spa)) entities.append(SmartTubError(controller.coordinator, spa))
@ -53,7 +58,7 @@ async def async_setup_entry(hass, entry, async_add_entities):
async_add_entities(entities) async_add_entities(entities)
platform = entity_platform.current_platform.get() platform = entity_platform.async_get_current_platform()
platform.async_register_entity_service( platform.async_register_entity_service(
"snooze_reminder", "snooze_reminder",

View File

@ -5,7 +5,10 @@ import smarttub
import voluptuous as vol import voluptuous as vol
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers import config_validation as cv, entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN, SMARTTUB_CONTROLLER from .const import DOMAIN, SMARTTUB_CONTROLLER
from .entity import SmartTubSensorBase from .entity import SmartTubSensorBase
@ -37,7 +40,9 @@ SET_SECONDARY_FILTRATION_SCHEMA = {
} }
async def async_setup_entry(hass, entry, async_add_entities): async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up sensor entities for the sensors in the tub.""" """Set up sensor entities for the sensors in the tub."""
controller = hass.data[DOMAIN][entry.entry_id][SMARTTUB_CONTROLLER] controller = hass.data[DOMAIN][entry.entry_id][SMARTTUB_CONTROLLER]
@ -65,7 +70,7 @@ async def async_setup_entry(hass, entry, async_add_entities):
async_add_entities(entities) async_add_entities(entities)
platform = entity_platform.current_platform.get() platform = entity_platform.async_get_current_platform()
platform.async_register_entity_service( platform.async_register_entity_service(
"set_primary_filtration", "set_primary_filtration",

View File

@ -1,4 +1,6 @@
"""Support for interacting with Snapcast clients.""" """Support for interacting with Snapcast clients."""
from __future__ import annotations
import logging import logging
import socket import socket
@ -21,7 +23,10 @@ from homeassistant.const import (
STATE_PLAYING, STATE_PLAYING,
STATE_UNKNOWN, STATE_UNKNOWN,
) )
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers import config_validation as cv, entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from .const import ( from .const import (
ATTR_LATENCY, ATTR_LATENCY,
@ -52,7 +57,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 Snapcast platform.""" """Set up the Snapcast platform."""
host = config.get(CONF_HOST) host = config.get(CONF_HOST)
@ -82,9 +92,10 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
# Note: Host part is needed, when using multiple snapservers # Note: Host part is needed, when using multiple snapservers
hpid = f"{host}:{port}" hpid = f"{host}:{port}"
groups = [SnapcastGroupDevice(group, hpid) for group in server.groups] devices: list[MediaPlayerEntity] = [
clients = [SnapcastClientDevice(client, hpid) for client in server.clients] SnapcastGroupDevice(group, hpid) for group in server.groups
devices = groups + clients ]
devices.extend(SnapcastClientDevice(client, hpid) for client in server.clients)
hass.data[DATA_KEY] = devices hass.data[DATA_KEY] = devices
async_add_entities(devices) async_add_entities(devices)

View File

@ -1,4 +1,6 @@
"""Support for displaying collected data over SNMP.""" """Support for displaying collected data over SNMP."""
from __future__ import annotations
from datetime import timedelta from datetime import timedelta
import logging import logging
@ -25,7 +27,10 @@ from homeassistant.const import (
CONF_VALUE_TEMPLATE, CONF_VALUE_TEMPLATE,
STATE_UNKNOWN, STATE_UNKNOWN,
) )
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 .const import ( from .const import (
CONF_ACCEPT_ERRORS, CONF_ACCEPT_ERRORS,
@ -78,7 +83,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 SNMP sensor.""" """Set up the SNMP sensor."""
name = config.get(CONF_NAME) name = config.get(CONF_NAME)
host = config.get(CONF_HOST) host = config.get(CONF_HOST)
@ -86,12 +96,12 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
community = config.get(CONF_COMMUNITY) community = config.get(CONF_COMMUNITY)
baseoid = config.get(CONF_BASEOID) baseoid = config.get(CONF_BASEOID)
unit = config.get(CONF_UNIT_OF_MEASUREMENT) unit = config.get(CONF_UNIT_OF_MEASUREMENT)
version = config.get(CONF_VERSION) version = config[CONF_VERSION]
username = config.get(CONF_USERNAME) username = config.get(CONF_USERNAME)
authkey = config.get(CONF_AUTH_KEY) authkey = config.get(CONF_AUTH_KEY)
authproto = config.get(CONF_AUTH_PROTOCOL) authproto = config[CONF_AUTH_PROTOCOL]
privkey = config.get(CONF_PRIV_KEY) privkey = config.get(CONF_PRIV_KEY)
privproto = config.get(CONF_PRIV_PROTOCOL) privproto = config[CONF_PRIV_PROTOCOL]
accept_errors = config.get(CONF_ACCEPT_ERRORS) accept_errors = config.get(CONF_ACCEPT_ERRORS)
default_value = config.get(CONF_DEFAULT_VALUE) default_value = config.get(CONF_DEFAULT_VALUE)
value_template = config.get(CONF_VALUE_TEMPLATE) value_template = config.get(CONF_VALUE_TEMPLATE)

View File

@ -1,4 +1,6 @@
"""Support for watching multiple cryptocurrencies.""" """Support for watching multiple cryptocurrencies."""
from __future__ import annotations
from datetime import timedelta from datetime import timedelta
from pysochain import ChainSo from pysochain import ChainSo
@ -6,8 +8,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_ADDRESS, CONF_NAME from homeassistant.const import ATTR_ATTRIBUTION, CONF_ADDRESS, CONF_NAME
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
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
ATTRIBUTION = "Data provided by chain.so" ATTRIBUTION = "Data provided by chain.so"
@ -26,12 +31,17 @@ 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 sochain sensors.""" """Set up the sochain sensors."""
address = config.get(CONF_ADDRESS) address = config[CONF_ADDRESS]
network = config.get(CONF_NETWORK) network = config[CONF_NETWORK]
name = config.get(CONF_NAME) name = config[CONF_NAME]
session = async_get_clientsession(hass) session = async_get_clientsession(hass)
chainso = ChainSo(network, address, hass.loop, session) chainso = ChainSo(network, address, hass.loop, session)

View File

@ -19,7 +19,9 @@ from homeassistant.const import (
CONF_URL, CONF_URL,
) )
import homeassistant.core as ha import homeassistant.core as ha
from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.typing import ConfigType
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
ATTR_ADDRESS = "address" ATTR_ADDRESS = "address"
@ -232,7 +234,7 @@ CONFIG_SCHEMA = vol.Schema(
) )
def setup(hass, config): def setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Register the SpaceAPI with the HTTP interface.""" """Register the SpaceAPI with the HTTP interface."""
hass.data[DATA_SPACEAPI] = config[DOMAIN] hass.data[DATA_SPACEAPI] = config[DOMAIN]
hass.http.register_view(APISpaceApiView) hass.http.register_view(APISpaceApiView)

View File

@ -1,19 +1,26 @@
"""Support for Spider Powerplugs (energy & power).""" """Support for Spider Powerplugs (energy & power)."""
from __future__ import annotations
from homeassistant.components.sensor import ( from homeassistant.components.sensor import (
SensorDeviceClass, SensorDeviceClass,
SensorEntity, SensorEntity,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ENERGY_KILO_WATT_HOUR, POWER_WATT from homeassistant.const import ENERGY_KILO_WATT_HOUR, POWER_WATT
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN from .const import DOMAIN
async def async_setup_entry(hass, config, async_add_entities): async def async_setup_entry(
hass: HomeAssistant, config: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Initialize a Spider Power Plug.""" """Initialize a Spider Power Plug."""
api = hass.data[DOMAIN][config.entry_id] api = hass.data[DOMAIN][config.entry_id]
entities = [] entities: list[SensorEntity] = []
for entity in await hass.async_add_executor_job(api.get_power_plugs): for entity in await hass.async_add_executor_job(api.get_power_plugs):
entities.append(SpiderPowerPlugEnergy(api, entity)) entities.append(SpiderPowerPlugEnergy(api, entity))

View File

@ -1,4 +1,6 @@
"""Sensor from an SQL Query.""" """Sensor from an SQL Query."""
from __future__ import annotations
import datetime import datetime
import decimal import decimal
import logging import logging
@ -11,7 +13,10 @@ import voluptuous as vol
from homeassistant.components.recorder import CONF_DB_URL, DEFAULT_DB_FILE, DEFAULT_URL from homeassistant.components.recorder import CONF_DB_URL, DEFAULT_DB_FILE, DEFAULT_URL
from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity from homeassistant.components.sensor import PLATFORM_SCHEMA, SensorEntity
from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE from homeassistant.const import CONF_NAME, CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE
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__)
@ -49,7 +54,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 SQL sensor platform.""" """Set up the SQL sensor platform."""
if not (db_url := config.get(CONF_DB_URL)): if not (db_url := config.get(CONF_DB_URL)):
db_url = DEFAULT_URL.format(hass_config_path=hass.config.path(DEFAULT_DB_FILE)) db_url = DEFAULT_URL.format(hass_config_path=hass.config.path(DEFAULT_DB_FILE))
@ -76,7 +86,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
queries = [] queries = []
for query in config.get(CONF_QUERIES): for query in config[CONF_QUERIES]:
name = query.get(CONF_NAME) name = query.get(CONF_NAME)
query_str = query.get(CONF_QUERY) query_str = query.get(CONF_QUERY)
unit = query.get(CONF_UNIT_OF_MEASUREMENT) unit = query.get(CONF_UNIT_OF_MEASUREMENT)

View File

@ -1,4 +1,6 @@
"""Sensor for Steam account status.""" """Sensor for Steam account status."""
from __future__ import annotations
from datetime import timedelta from datetime import timedelta
import logging import logging
from time import mktime from time import mktime
@ -8,9 +10,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 CONF_API_KEY from homeassistant.const import CONF_API_KEY
from homeassistant.core import callback from homeassistant.core import HomeAssistant, callback
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.event import track_time_interval from homeassistant.helpers.event import track_time_interval
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util.dt import utc_from_timestamp from homeassistant.util.dt import utc_from_timestamp
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -45,14 +49,19 @@ APP_LIST_KEY = "steam_online.app_list"
BASE_INTERVAL = timedelta(minutes=1) BASE_INTERVAL = timedelta(minutes=1)
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 Steam platform.""" """Set up the Steam platform."""
steam.api.key.set(config.get(CONF_API_KEY)) steam.api.key.set(config[CONF_API_KEY])
# Initialize steammods app list before creating sensors # Initialize steammods app list before creating sensors
# to benefit from internal caching of the list. # to benefit from internal caching of the list.
hass.data[APP_LIST_KEY] = steam.apps.app_list() hass.data[APP_LIST_KEY] = steam.apps.app_list()
entities = [SteamSensor(account, steam) for account in config.get(CONF_ACCOUNTS)] entities = [SteamSensor(account, steam) for account in config[CONF_ACCOUNTS]]
if not entities: if not entities:
return return
add_entities(entities, True) add_entities(entities, True)

View File

@ -1,4 +1,6 @@
"""Support for hydrological data from the Fed. Office for the Environment.""" """Support for hydrological data from the Fed. Office for the Environment."""
from __future__ import annotations
from datetime import timedelta from datetime import timedelta
import logging import logging
@ -7,7 +9,10 @@ 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_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 homeassistant.util import Throttle from homeassistant.util import Throttle
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -52,10 +57,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 Swiss hydrological sensor.""" """Set up the Swiss hydrological sensor."""
station = config.get(CONF_STATION) station = config[CONF_STATION]
monitored_conditions = config.get(CONF_MONITORED_CONDITIONS) monitored_conditions = config[CONF_MONITORED_CONDITIONS]
hydro_data = HydrologicalData(station) hydro_data = HydrologicalData(station)
hydro_data.update() hydro_data.update()

View File

@ -4,8 +4,11 @@ from __future__ import annotations
from pysyncthru import SyncThru, SyncthruState from pysyncthru import SyncThru, SyncthruState
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_NAME, PERCENTAGE from homeassistant.const import CONF_NAME, PERCENTAGE
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import ( from homeassistant.helpers.update_coordinator import (
CoordinatorEntity, CoordinatorEntity,
DataUpdateCoordinator, DataUpdateCoordinator,
@ -36,7 +39,11 @@ SYNCTHRU_STATE_HUMAN = {
} }
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 from config entry.""" """Set up from config entry."""
coordinator: DataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] coordinator: DataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id]
@ -48,7 +55,7 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
supp_output_tray = printer.output_tray_status() supp_output_tray = printer.output_tray_status()
name = config_entry.data[CONF_NAME] name = config_entry.data[CONF_NAME]
entities = [SyncThruMainSensor(coordinator, name)] entities: list[SyncThruSensor] = [SyncThruMainSensor(coordinator, name)]
for key in supp_toner: for key in supp_toner:
entities.append(SyncThruTonerSensor(coordinator, name, key)) entities.append(SyncThruTonerSensor(coordinator, name, key))
@ -56,8 +63,8 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
entities.append(SyncThruDrumSensor(coordinator, name, key)) entities.append(SyncThruDrumSensor(coordinator, name, key))
for key in supp_tray: for key in supp_tray:
entities.append(SyncThruInputTraySensor(coordinator, name, key)) entities.append(SyncThruInputTraySensor(coordinator, name, key))
for key in supp_output_tray: for int_key in supp_output_tray:
entities.append(SyncThruOutputTraySensor(coordinator, name, key)) entities.append(SyncThruOutputTraySensor(coordinator, name, int_key))
async_add_entities(entities) async_add_entities(entities)