Skip to content

Commit adc25ca

Browse files
committed
Use a base class to keep timestamp sensor inheritance
1 parent c47384f commit adc25ca

File tree

1 file changed

+28
-26
lines changed
  • homeassistant/components/jewish_calendar

1 file changed

+28
-26
lines changed

homeassistant/components/jewish_calendar/sensor.py

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
)
1818
from homeassistant.const import EntityCategory
1919
from homeassistant.core import HomeAssistant
20-
from homeassistant.helpers.entity import EntityDescription
2120
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
2221

2322
from .entity import (
@@ -28,15 +27,22 @@
2827

2928

3029
@dataclass(frozen=True, kw_only=True)
31-
class JewishCalendarSensorDescription(SensorEntityDescription):
30+
class JewishCalendarBaseSensorDescription(SensorEntityDescription):
31+
"""Base class describing Jewish Calendar sensor entities."""
32+
33+
value_fn: Callable | None
34+
35+
36+
@dataclass(frozen=True, kw_only=True)
37+
class JewishCalendarSensorDescription(JewishCalendarBaseSensorDescription):
3238
"""Class describing Jewish Calendar sensor entities."""
3339

3440
value_fn: Callable[[JewishCalendarDataResults], str | int]
3541

3642

3743
@dataclass(frozen=True, kw_only=True)
38-
class JewishCalendarTimestampSensorDescription(SensorEntityDescription):
39-
"""Class describing Jewish Calendar sensor entities."""
44+
class JewishCalendarTimestampSensorDescription(JewishCalendarBaseSensorDescription):
45+
"""Class describing Jewish Calendar sensor timestamp entities."""
4046

4147
value_fn: (
4248
Callable[[HDateInfo, Callable[[dt.date], Zmanim]], dt.datetime | None] | None
@@ -209,29 +215,32 @@ async def async_setup_entry(
209215
async_add_entities: AddConfigEntryEntitiesCallback,
210216
) -> None:
211217
"""Set up the Jewish calendar sensors ."""
212-
async_add_entities(
213-
[
214-
JewishCalendarSensor(config_entry, description)
215-
for description in INFO_SENSORS
216-
]
217-
)
218-
async_add_entities(
219-
[
220-
JewishCalendarTimeSensor(config_entry, description)
221-
for description in TIME_SENSORS
222-
]
218+
sensors: list[JewishCalendarBaseSensor] = [
219+
JewishCalendarSensor(config_entry, description) for description in INFO_SENSORS
220+
]
221+
sensors.extend(
222+
JewishCalendarTimeSensor(config_entry, description)
223+
for description in TIME_SENSORS
223224
)
225+
async_add_entities(sensors)
224226

225227

226-
class JewishCalendarSensor(JewishCalendarEntity, SensorEntity):
227-
"""Representation of an Jewish calendar sensor."""
228+
class JewishCalendarBaseSensor(JewishCalendarEntity, SensorEntity):
229+
"""Base class for Jewish calendar sensors."""
228230

229231
_attr_entity_category = EntityCategory.DIAGNOSTIC
232+
entity_description: JewishCalendarBaseSensorDescription
233+
234+
235+
class JewishCalendarSensor(JewishCalendarBaseSensor):
236+
"""Representation of an Jewish calendar sensor."""
230237

231238
entity_description: JewishCalendarSensorDescription
232239

233240
def __init__(
234-
self, config_entry: JewishCalendarConfigEntry, description: EntityDescription
241+
self,
242+
config_entry: JewishCalendarConfigEntry,
243+
description: SensorEntityDescription,
235244
) -> None:
236245
"""Initialize the Jewish calendar sensor."""
237246
super().__init__(config_entry, description)
@@ -276,12 +285,10 @@ def extra_state_attributes(self) -> dict[str, str]:
276285
return {}
277286

278287

279-
class JewishCalendarTimeSensor(JewishCalendarEntity, SensorEntity):
288+
class JewishCalendarTimeSensor(JewishCalendarBaseSensor):
280289
"""Implement attributes for sensors returning times."""
281290

282-
_attr_entity_category = EntityCategory.DIAGNOSTIC
283291
_attr_device_class = SensorDeviceClass.TIMESTAMP
284-
285292
entity_description: JewishCalendarTimestampSensorDescription
286293

287294
@property
@@ -294,8 +301,3 @@ def native_value(self) -> dt.datetime | None:
294301
return self.entity_description.value_fn(
295302
self.data.results.after_tzais_date, self.make_zmanim
296303
)
297-
298-
async def async_added_to_hass(self) -> None:
299-
"""Call when entity is added to hass."""
300-
await super().async_added_to_hass()
301-
await self.async_update_data()

0 commit comments

Comments
 (0)