"""Helpers for sensor entities.""" from __future__ import annotations from datetime import date, datetime import logging from homeassistant.core import callback from homeassistant.util import dt as dt_util from . import SensorDeviceClass _LOGGER = logging.getLogger(__name__) @callback def async_parse_date_datetime( value: str, entity_id: str, device_class: SensorDeviceClass | str | None ) -> datetime | date | None: """Parse datetime string to a data or datetime.""" if device_class == SensorDeviceClass.TIMESTAMP: if (parsed_timestamp := dt_util.parse_datetime(value)) is None: _LOGGER.warning("%s rendered invalid timestamp: %s", entity_id, value) return None if parsed_timestamp.tzinfo is None: _LOGGER.warning( "%s rendered timestamp without timezone: %s", entity_id, value ) return None return parsed_timestamp # Date device class if (parsed_date := dt_util.parse_date(value)) is not None: return parsed_date _LOGGER.warning("%s rendered invalid date %s", entity_id, value) return None