From 84d7cb3a760ffe6b379781ed84ba6019f7f4f4c4 Mon Sep 17 00:00:00 2001 From: Manu <4445816+tr4nt0r@users.noreply.github.com> Date: Thu, 6 Feb 2025 11:35:41 +0100 Subject: [PATCH] Enable strict-typing for Bring! integration (#137518) * Enable strict-typing for Bring! integration * Explicitly pass in the config_entry in coordinator init --- .strict-typing | 1 + homeassistant/components/bring/__init__.py | 9 +++------ homeassistant/components/bring/coordinator.py | 9 +++++++-- homeassistant/components/bring/diagnostics.py | 2 +- homeassistant/components/bring/quality_scale.yaml | 2 +- homeassistant/components/bring/sensor.py | 3 +-- homeassistant/components/bring/todo.py | 3 +-- mypy.ini | 10 ++++++++++ 8 files changed, 25 insertions(+), 14 deletions(-) diff --git a/.strict-typing b/.strict-typing index 4cebcb6f445..1e3187980cc 100644 --- a/.strict-typing +++ b/.strict-typing @@ -119,6 +119,7 @@ homeassistant.components.bluetooth_tracker.* homeassistant.components.bmw_connected_drive.* homeassistant.components.bond.* homeassistant.components.braviatv.* +homeassistant.components.bring.* homeassistant.components.brother.* homeassistant.components.browser.* homeassistant.components.bryant_evolution.* diff --git a/homeassistant/components/bring/__init__.py b/homeassistant/components/bring/__init__.py index 0ee8e3b3155..a4695e4f958 100644 --- a/homeassistant/components/bring/__init__.py +++ b/homeassistant/components/bring/__init__.py @@ -6,19 +6,16 @@ import logging from bring_api import Bring -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_EMAIL, CONF_PASSWORD, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession -from .coordinator import BringDataUpdateCoordinator +from .coordinator import BringConfigEntry, BringDataUpdateCoordinator PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.TODO] _LOGGER = logging.getLogger(__name__) -type BringConfigEntry = ConfigEntry[BringDataUpdateCoordinator] - async def async_setup_entry(hass: HomeAssistant, entry: BringConfigEntry) -> bool: """Set up Bring! from a config entry.""" @@ -26,7 +23,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: BringConfigEntry) -> boo session = async_get_clientsession(hass) bring = Bring(session, entry.data[CONF_EMAIL], entry.data[CONF_PASSWORD]) - coordinator = BringDataUpdateCoordinator(hass, bring) + coordinator = BringDataUpdateCoordinator(hass, entry, bring) await coordinator.async_config_entry_first_refresh() entry.runtime_data = coordinator @@ -36,6 +33,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: BringConfigEntry) -> boo return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: BringConfigEntry) -> bool: """Unload a config entry.""" return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/bring/coordinator.py b/homeassistant/components/bring/coordinator.py index 5c5e1567e7e..23082180fe1 100644 --- a/homeassistant/components/bring/coordinator.py +++ b/homeassistant/components/bring/coordinator.py @@ -28,6 +28,8 @@ from .const import DOMAIN _LOGGER = logging.getLogger(__name__) +type BringConfigEntry = ConfigEntry[BringDataUpdateCoordinator] + @dataclass(frozen=True) class BringData(DataClassORJSONMixin): @@ -40,15 +42,18 @@ class BringData(DataClassORJSONMixin): class BringDataUpdateCoordinator(DataUpdateCoordinator[dict[str, BringData]]): """A Bring Data Update Coordinator.""" - config_entry: ConfigEntry + config_entry: BringConfigEntry user_settings: BringUserSettingsResponse lists: list[BringList] - def __init__(self, hass: HomeAssistant, bring: Bring) -> None: + def __init__( + self, hass: HomeAssistant, config_entry: BringConfigEntry, bring: Bring + ) -> None: """Initialize the Bring data coordinator.""" super().__init__( hass, _LOGGER, + config_entry=config_entry, name=DOMAIN, update_interval=timedelta(seconds=90), ) diff --git a/homeassistant/components/bring/diagnostics.py b/homeassistant/components/bring/diagnostics.py index 1dec8f3a5ed..f4540547c4d 100644 --- a/homeassistant/components/bring/diagnostics.py +++ b/homeassistant/components/bring/diagnostics.py @@ -6,7 +6,7 @@ from typing import Any from homeassistant.core import HomeAssistant -from . import BringConfigEntry +from .coordinator import BringConfigEntry async def async_get_config_entry_diagnostics( diff --git a/homeassistant/components/bring/quality_scale.yaml b/homeassistant/components/bring/quality_scale.yaml index 53329ad637f..13f590ee7c8 100644 --- a/homeassistant/components/bring/quality_scale.yaml +++ b/homeassistant/components/bring/quality_scale.yaml @@ -69,4 +69,4 @@ rules: # Platinum async-dependency: done inject-websession: done - strict-typing: todo + strict-typing: done diff --git a/homeassistant/components/bring/sensor.py b/homeassistant/components/bring/sensor.py index 6c1e8fe9600..bfe93619dbb 100644 --- a/homeassistant/components/bring/sensor.py +++ b/homeassistant/components/bring/sensor.py @@ -19,8 +19,7 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from . import BringConfigEntry -from .coordinator import BringData, BringDataUpdateCoordinator +from .coordinator import BringConfigEntry, BringData, BringDataUpdateCoordinator from .entity import BringBaseEntity from .util import list_language, sum_attributes diff --git a/homeassistant/components/bring/todo.py b/homeassistant/components/bring/todo.py index 9b17deb55a8..4de306273f3 100644 --- a/homeassistant/components/bring/todo.py +++ b/homeassistant/components/bring/todo.py @@ -26,14 +26,13 @@ from homeassistant.exceptions import HomeAssistantError, ServiceValidationError from homeassistant.helpers import config_validation as cv, entity_platform from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import BringConfigEntry from .const import ( ATTR_ITEM_NAME, ATTR_NOTIFICATION_TYPE, DOMAIN, SERVICE_PUSH_NOTIFICATION, ) -from .coordinator import BringData, BringDataUpdateCoordinator +from .coordinator import BringConfigEntry, BringData, BringDataUpdateCoordinator from .entity import BringBaseEntity PARALLEL_UPDATES = 0 diff --git a/mypy.ini b/mypy.ini index ddc5589dc09..2d9821b1c64 100644 --- a/mypy.ini +++ b/mypy.ini @@ -945,6 +945,16 @@ disallow_untyped_defs = true warn_return_any = true warn_unreachable = true +[mypy-homeassistant.components.bring.*] +check_untyped_defs = true +disallow_incomplete_defs = true +disallow_subclassing_any = true +disallow_untyped_calls = true +disallow_untyped_decorators = true +disallow_untyped_defs = true +warn_return_any = true +warn_unreachable = true + [mypy-homeassistant.components.brother.*] check_untyped_defs = true disallow_incomplete_defs = true