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
-- 
GitLab