1717)
1818from homeassistant .const import EntityCategory
1919from homeassistant .core import HomeAssistant
20- from homeassistant .helpers .entity import EntityDescription
2120from homeassistant .helpers .entity_platform import AddConfigEntryEntitiesCallback
2221
2322from .entity import (
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