From 86bacdbdded044088899374e1fe2706b53096bb7 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 16 Jan 2026 09:34:51 +0100 Subject: [PATCH] Use shorthand attributes in oasa_telematics (#160990) --- .../components/oasa_telematics/sensor.py | 55 ++++++++----------- 1 file changed, 23 insertions(+), 32 deletions(-) diff --git a/homeassistant/components/oasa_telematics/sensor.py b/homeassistant/components/oasa_telematics/sensor.py index a1ea90a7b16..920af78b4ee 100644 --- a/homeassistant/components/oasa_telematics/sensor.py +++ b/homeassistant/components/oasa_telematics/sensor.py @@ -2,9 +2,10 @@ from __future__ import annotations -from datetime import timedelta +from datetime import datetime, timedelta import logging from operator import itemgetter +from typing import Any import oasatelematics import voluptuous as vol @@ -55,9 +56,9 @@ def setup_platform( discovery_info: DiscoveryInfoType | None = None, ) -> None: """Set up the OASA Telematics sensor.""" - name = config[CONF_NAME] - stop_id = config[CONF_STOP_ID] - route_id = config.get(CONF_ROUTE_ID) + name: str = config[CONF_NAME] + stop_id: str = config[CONF_STOP_ID] + route_id: str = config[CONF_ROUTE_ID] data = OASATelematicsData(stop_id, route_id) @@ -68,42 +69,31 @@ class OASATelematicsSensor(SensorEntity): """Implementation of the OASA Telematics sensor.""" _attr_attribution = "Data retrieved from telematics.oasa.gr" + _attr_device_class = SensorDeviceClass.TIMESTAMP _attr_icon = "mdi:bus" - def __init__(self, data, stop_id, route_id, name): + def __init__( + self, data: OASATelematicsData, stop_id: str, route_id: str, name: str + ) -> None: """Initialize the sensor.""" self.data = data - self._name = name + self._attr_name = name self._stop_id = stop_id self._route_id = route_id - self._name_data = self._times = self._state = None + self._name_data: dict[str, Any] | None = None + self._times: list[dict[str, Any]] | None = None @property - def name(self): - """Return the name of the sensor.""" - return self._name - - @property - def device_class(self) -> SensorDeviceClass: - """Return the class of this sensor.""" - return SensorDeviceClass.TIMESTAMP - - @property - def native_value(self): - """Return the state of the sensor.""" - return self._state - - @property - def extra_state_attributes(self): + def extra_state_attributes(self) -> dict[str, Any]: """Return the state attributes.""" params = {} if self._times is not None: next_arrival_data = self._times[0] if ATTR_NEXT_ARRIVAL in next_arrival_data: - next_arrival = next_arrival_data[ATTR_NEXT_ARRIVAL] + next_arrival: datetime = next_arrival_data[ATTR_NEXT_ARRIVAL] params.update({ATTR_NEXT_ARRIVAL: next_arrival.isoformat()}) if len(self._times) > 1: - second_next_arrival_time = self._times[1][ATTR_NEXT_ARRIVAL] + second_next_arrival_time: datetime = self._times[1][ATTR_NEXT_ARRIVAL] if second_next_arrival_time is not None: second_arrival = second_next_arrival_time params.update( @@ -115,12 +105,13 @@ class OASATelematicsSensor(SensorEntity): ATTR_STOP_ID: self._stop_id, } ) - params.update( - { - ATTR_ROUTE_NAME: self._name_data[ATTR_ROUTE_NAME], - ATTR_STOP_NAME: self._name_data[ATTR_STOP_NAME], - } - ) + if self._name_data is not None: + params.update( + { + ATTR_ROUTE_NAME: self._name_data[ATTR_ROUTE_NAME], + ATTR_STOP_NAME: self._name_data[ATTR_STOP_NAME], + } + ) return {k: v for k, v in params.items() if v} def update(self) -> None: @@ -130,7 +121,7 @@ class OASATelematicsSensor(SensorEntity): self._name_data = self.data.name_data next_arrival_data = self._times[0] if ATTR_NEXT_ARRIVAL in next_arrival_data: - self._state = next_arrival_data[ATTR_NEXT_ARRIVAL] + self._attr_native_value = next_arrival_data[ATTR_NEXT_ARRIVAL] class OASATelematicsData: