Update typing 10 (#48071)

This commit is contained in:
Marc Mueller 2021-03-18 13:07:04 +01:00 committed by GitHub
parent 00dca88024
commit 25a13d1554
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
73 changed files with 412 additions and 333 deletions

View file

@ -1,8 +1,10 @@
"""Helper functions for mysensors package."""
from __future__ import annotations
from collections import defaultdict
from enum import IntEnum
import logging
from typing import Callable, DefaultDict, Dict, List, Optional, Set, Union
from typing import Callable, DefaultDict
from mysensors import BaseAsyncGateway, Message
from mysensors.sensor import ChildSensor
@ -35,7 +37,7 @@ SCHEMAS = Registry()
async def on_unload(
hass: HomeAssistantType, entry: Union[ConfigEntry, GatewayId], fnct: Callable
hass: HomeAssistantType, entry: ConfigEntry | GatewayId, fnct: Callable
) -> None:
"""Register a callback to be called when entry is unloaded.
@ -53,7 +55,7 @@ async def on_unload(
@callback
def discover_mysensors_platform(
hass: HomeAssistant, gateway_id: GatewayId, platform: str, new_devices: List[DevId]
hass: HomeAssistant, gateway_id: GatewayId, platform: str, new_devices: list[DevId]
) -> None:
"""Discover a MySensors platform."""
_LOGGER.debug("Discovering platform %s with devIds: %s", platform, new_devices)
@ -150,7 +152,7 @@ def invalid_msg(
)
def validate_set_msg(gateway_id: GatewayId, msg: Message) -> Dict[str, List[DevId]]:
def validate_set_msg(gateway_id: GatewayId, msg: Message) -> dict[str, list[DevId]]:
"""Validate a set message."""
if not validate_node(msg.gateway, msg.node_id):
return {}
@ -171,34 +173,34 @@ def validate_child(
gateway: BaseAsyncGateway,
node_id: int,
child: ChildSensor,
value_type: Optional[int] = None,
) -> DefaultDict[str, List[DevId]]:
value_type: int | None = None,
) -> DefaultDict[str, list[DevId]]:
"""Validate a child. Returns a dict mapping hass platform names to list of DevId."""
validated: DefaultDict[str, List[DevId]] = defaultdict(list)
validated: DefaultDict[str, list[DevId]] = defaultdict(list)
pres: IntEnum = gateway.const.Presentation
set_req: IntEnum = gateway.const.SetReq
child_type_name: Optional[SensorType] = next(
child_type_name: SensorType | None = next(
(member.name for member in pres if member.value == child.type), None
)
value_types: Set[int] = {value_type} if value_type else {*child.values}
value_type_names: Set[ValueType] = {
value_types: set[int] = {value_type} if value_type else {*child.values}
value_type_names: set[ValueType] = {
member.name for member in set_req if member.value in value_types
}
platforms: List[str] = TYPE_TO_PLATFORMS.get(child_type_name, [])
platforms: list[str] = TYPE_TO_PLATFORMS.get(child_type_name, [])
if not platforms:
_LOGGER.warning("Child type %s is not supported", child.type)
return validated
for platform in platforms:
platform_v_names: Set[ValueType] = FLAT_PLATFORM_TYPES[
platform_v_names: set[ValueType] = FLAT_PLATFORM_TYPES[
platform, child_type_name
]
v_names: Set[ValueType] = platform_v_names & value_type_names
v_names: set[ValueType] = platform_v_names & value_type_names
if not v_names:
child_value_names: Set[ValueType] = {
child_value_names: set[ValueType] = {
member.name for member in set_req if member.value in child.values
}
v_names: Set[ValueType] = platform_v_names & child_value_names
v_names: set[ValueType] = platform_v_names & child_value_names
for v_name in v_names:
child_schema_gen = SCHEMAS.get((platform, v_name), default_schema)