From 3e3936e783342eaaf81cfcbc04c35949bafd64b5 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 15 Feb 2023 12:17:03 -0500 Subject: [PATCH] backport try_parse_enum --- homeassistant/components/statistics/sensor.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/statistics/sensor.py b/homeassistant/components/statistics/sensor.py index 2025eebd650..60dc8f54ed7 100644 --- a/homeassistant/components/statistics/sensor.py +++ b/homeassistant/components/statistics/sensor.py @@ -5,9 +5,10 @@ from collections import deque from collections.abc import Callable import contextlib from datetime import datetime, timedelta +from enum import Enum import logging import statistics -from typing import Any, Literal, cast +from typing import Any, Literal, TypeVar, cast import voluptuous as vol @@ -48,7 +49,6 @@ from homeassistant.helpers.reload import async_setup_reload_service from homeassistant.helpers.start import async_at_start from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType from homeassistant.util import dt as dt_util -from homeassistant.util.enum import try_parse_enum from . import DOMAIN, PLATFORMS @@ -769,3 +769,16 @@ class StatisticsSensor(SensorEntity): if len(self.states) > 0: return 100.0 / len(self.states) * self.states.count(True) return None + + +_EnumT = TypeVar("_EnumT", bound=Enum) + + +def try_parse_enum(cls: type[_EnumT], value: Any) -> _EnumT | None: + """Try to parse the value into an Enum. + + Return None if parsing fails. + """ + with contextlib.suppress(ValueError): + return cls(value) + return None