Teach CoordinatorEntity to cooperate with its siblings

This commit is contained in:
Erik 2023-09-13 21:29:22 +02:00
parent 07ceafed62
commit a76b1ef5b5
2 changed files with 21 additions and 5 deletions

View file

@ -155,8 +155,11 @@ class ScrapeSensor(CoordinatorEntity[ScrapeCoordinator], ManualTriggerSensorEnti
yaml: bool,
) -> None:
"""Initialize a web scrape sensor."""
CoordinatorEntity.__init__(self, coordinator)
ManualTriggerSensorEntity.__init__(self, hass, trigger_entity_config)
super().__init__(
config=trigger_entity_config,
coordinator=coordinator,
hass=hass,
)
self._select = select
self._attr = attr
self._index = index

View file

@ -7,6 +7,7 @@ import asyncio
from collections.abc import Awaitable, Callable, Coroutine, Generator
from datetime import datetime, timedelta
from functools import cached_property
from inspect import Parameter, signature
import logging
from random import randint
from time import monotonic
@ -466,9 +467,21 @@ class BaseCoordinatorEntity[
"""Base class for all Coordinator entities."""
def __init__(
self, coordinator: _BaseDataUpdateCoordinatorT, context: Any = None
self,
coordinator: _BaseDataUpdateCoordinatorT,
context: Any = None,
**kwargs: Any,
) -> None:
"""Create the entity with a DataUpdateCoordinator."""
call_super = True
if not kwargs:
super_parameters = signature(super().__init__).parameters
for param in super_parameters.values():
if param.default == Parameter.empty:
call_super = False
break
if call_super:
super().__init__(**kwargs)
self.coordinator = coordinator
self.coordinator_context = context
@ -503,7 +516,7 @@ class CoordinatorEntity(BaseCoordinatorEntity[_DataUpdateCoordinatorT]):
"""A class for entities using DataUpdateCoordinator."""
def __init__(
self, coordinator: _DataUpdateCoordinatorT, context: Any = None
self, coordinator: _DataUpdateCoordinatorT, context: Any = None, **kwargs: Any
) -> None:
"""Create the entity with a DataUpdateCoordinator.
@ -511,7 +524,7 @@ class CoordinatorEntity(BaseCoordinatorEntity[_DataUpdateCoordinatorT]):
Necessary to bind TypeVar to correct scope.
"""
super().__init__(coordinator, context)
super().__init__(coordinator=coordinator, context=context, **kwargs)
@property
def available(self) -> bool: