@@ -141,23 +141,10 @@ def from_bsblan_format(cls, value: str) -> DaySchedule:
141141
142142
143143@dataclass
144- class DHWSchedule :
145- """Weekly hot water schedule for setting time programs.
146-
147- Use this dataclass to set DHW time programs via set_hot_water_schedule().
148- Each day can have up to 3 time slots.
144+ class WeeklySchedule :
145+ """Base weekly schedule with optional day schedules.
149146
150- Example:
151- >>> schedule = DHWSchedule(
152- ... monday=DaySchedule(slots=[
153- ... TimeSlot(time(6, 0), time(8, 0)),
154- ... TimeSlot(time(17, 0), time(21, 0)),
155- ... ]),
156- ... tuesday=DaySchedule(slots=[
157- ... TimeSlot(time(6, 0), time(8, 0)),
158- ... ])
159- ... )
160- >>> await client.set_hot_water_schedule(schedule)
147+ Each day can have up to 3 time slots (validated by DaySchedule).
161148
162149 """
163150
@@ -191,41 +178,35 @@ def has_any_schedule(self) -> bool:
191178
192179
193180@dataclass
194- class HeatingSchedule :
195- """Weekly heating schedule for setting time programs.
181+ class DHWSchedule ( WeeklySchedule ) :
182+ """Weekly hot water schedule for setting time programs.
196183
197- Use this dataclass to set heating time programs via set_heating_schedule ().
184+ Use this dataclass to set DHW time programs via set_hot_water_schedule ().
198185 Each day can have up to 3 time slots.
199186
187+ Example:
188+ >>> schedule = DHWSchedule(
189+ ... monday=DaySchedule(slots=[
190+ ... TimeSlot(time(6, 0), time(8, 0)),
191+ ... TimeSlot(time(17, 0), time(21, 0)),
192+ ... ]),
193+ ... tuesday=DaySchedule(slots=[
194+ ... TimeSlot(time(6, 0), time(8, 0)),
195+ ... ])
196+ ... )
197+ >>> await client.set_hot_water_schedule(schedule)
198+
200199 """
201200
202- monday : DaySchedule | None = None
203- tuesday : DaySchedule | None = None
204- wednesday : DaySchedule | None = None
205- thursday : DaySchedule | None = None
206- friday : DaySchedule | None = None
207- saturday : DaySchedule | None = None
208- sunday : DaySchedule | None = None
209201
210- def has_any_schedule (self ) -> bool :
211- """Check if any day has a schedule set.
202+ @dataclass
203+ class HeatingSchedule (WeeklySchedule ):
204+ """Weekly heating schedule for setting time programs.
212205
213- Returns:
214- bool: True if at least one day has a schedule .
206+ Use this dataclass to set heating time programs via set_heating_schedule().
207+ Each day can have up to 3 time slots .
215208
216- """
217- return any (
218- day is not None
219- for day in [
220- self .monday ,
221- self .tuesday ,
222- self .wednesday ,
223- self .thursday ,
224- self .friday ,
225- self .saturday ,
226- self .sunday ,
227- ]
228- )
209+ """
229210
230211
231212@dataclass
0 commit comments