Improve config flow type hints in ukraine_alarm (#125302)

This commit is contained in:
epenet 2024-09-05 09:55:57 +02:00 committed by GitHub
parent a8f2204f4f
commit f778033bd8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,7 +3,7 @@
from __future__ import annotations
import logging
from typing import Any
from typing import TYPE_CHECKING, Any
import aiohttp
from uasiren.client import Client
@ -25,7 +25,7 @@ class UkraineAlarmConfigFlow(ConfigFlow, domain=DOMAIN):
def __init__(self) -> None:
"""Initialize a new UkraineAlarmConfigFlow."""
self.states = None
self.states: list[dict[str, Any]] | None = None
self.selected_region: dict[str, Any] | None = None
async def async_step_user(
@ -69,17 +69,25 @@ class UkraineAlarmConfigFlow(ConfigFlow, domain=DOMAIN):
return await self._handle_pick_region("user", "district", user_input)
async def async_step_district(self, user_input=None):
async def async_step_district(
self, user_input: dict[str, str] | None = None
) -> ConfigFlowResult:
"""Handle user-chosen district."""
return await self._handle_pick_region("district", "community", user_input)
async def async_step_community(self, user_input=None):
async def async_step_community(
self, user_input: dict[str, str] | None = None
) -> ConfigFlowResult:
"""Handle user-chosen community."""
return await self._handle_pick_region("community", None, user_input, True)
async def _handle_pick_region(
self, step_id: str, next_step: str | None, user_input, last_step=False
):
self,
step_id: str,
next_step: str | None,
user_input: dict[str, str] | None,
last_step: bool = False,
) -> ConfigFlowResult:
"""Handle picking a (sub)region."""
if self.selected_region:
source = self.selected_region["regionChildIds"]
@ -121,8 +129,10 @@ class UkraineAlarmConfigFlow(ConfigFlow, domain=DOMAIN):
step_id=step_id, data_schema=schema, last_step=last_step
)
async def _async_finish_flow(self):
async def _async_finish_flow(self) -> ConfigFlowResult:
"""Finish the setup."""
if TYPE_CHECKING:
assert self.selected_region is not None
await self.async_set_unique_id(self.selected_region["regionId"])
self._abort_if_unique_id_configured()
@ -135,10 +145,10 @@ class UkraineAlarmConfigFlow(ConfigFlow, domain=DOMAIN):
)
def _find(regions, region_id):
def _find(regions: list[dict[str, Any]], region_id):
return next((region for region in regions if region["regionId"] == region_id), None)
def _make_regions_object(regions):
def _make_regions_object(regions: list[dict[str, Any]]) -> dict[str, str]:
regions = sorted(regions, key=lambda region: region["regionName"].lower())
return {region["regionId"]: region["regionName"] for region in regions}