Use generics for deprecation helpers (#138171)

This commit is contained in:
Marc Mueller 2025-02-09 23:38:58 +01:00 committed by GitHub
parent 57ab567d08
commit 9467709068
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -244,35 +244,35 @@ def _print_deprecation_warning_internal_impl(
) )
class DeprecatedConstant(NamedTuple): class DeprecatedConstant[T](NamedTuple):
"""Deprecated constant.""" """Deprecated constant."""
value: Any value: T
replacement: str replacement: str
breaks_in_ha_version: str | None breaks_in_ha_version: str | None
class DeprecatedConstantEnum(NamedTuple): class DeprecatedConstantEnum[T: (StrEnum | IntEnum | IntFlag)](NamedTuple):
"""Deprecated constant.""" """Deprecated constant."""
enum: StrEnum | IntEnum | IntFlag enum: T
breaks_in_ha_version: str | None breaks_in_ha_version: str | None
class DeprecatedAlias(NamedTuple): class DeprecatedAlias[T](NamedTuple):
"""Deprecated alias.""" """Deprecated alias."""
value: Any value: T
replacement: str replacement: str
breaks_in_ha_version: str | None breaks_in_ha_version: str | None
class DeferredDeprecatedAlias: class DeferredDeprecatedAlias[T]:
"""Deprecated alias with deferred evaluation of the value.""" """Deprecated alias with deferred evaluation of the value."""
def __init__( def __init__(
self, self,
value_fn: Callable[[], Any], value_fn: Callable[[], T],
replacement: str, replacement: str,
breaks_in_ha_version: str | None, breaks_in_ha_version: str | None,
) -> None: ) -> None:
@ -282,7 +282,7 @@ class DeferredDeprecatedAlias:
self._value_fn = value_fn self._value_fn = value_fn
@functools.cached_property @functools.cached_property
def value(self) -> Any: def value(self) -> T:
"""Return the value.""" """Return the value."""
return self._value_fn() return self._value_fn()