mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-08-18 02:43:18 +01:00
* Migrate simple attrs classes to stdlib dataclasses Several plain data-holder classes still used the attrs library while newer code in the project uses stdlib dataclasses. Convert EventListener, Issue, Suggestion, HealthChanged, SupportedChanged, Device, Message, HostEntry, ServiceInfo, WhoamiData and the scheduler _Task to @dataclass, and switch the attr.evolve/attr.asdict call sites to dataclasses.replace/asdict. Field semantics are preserved: eq=False maps to compare=False, hash=False and default factories map directly, and the frozen/slots flags are kept, so equality, hashing and copy behavior are unchanged. The jobs module keeps using attrs for its validators and setter hooks, which have no stdlib dataclass equivalent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Add slots to remaining dataclasses, freeze HostEntry Address review feedback: ServiceInfo, Message and HostEntry kept the flags of their attrs originals, which did not use slots. Enable slots on all three. HostEntry instances are never mutated after creation, so it can also be frozen. Message cannot be frozen because Discovery.send updates the config field of an existing message when an app re-sends a discovery message with changed configuration. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>