mirror of
https://github.com/home-assistant/supervisor.git
synced 2026-08-18 02:43:18 +01:00
5bc795d2f215fdcff7608274d0ef107cc30f45e2
* 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>
Home Assistant Supervisor
First private cloud solution for home automation
Home Assistant (former Hass.io) is a container-based system for managing your Home Assistant Core installation and related applications. The system is controlled via Home Assistant which communicates with the Supervisor. The Supervisor provides an API to manage the installation. This includes changing network settings or installing and updating software.
Installation
Installation instructions can be found at https://home-assistant.io/getting-started.
Development
For small changes and bugfixes you can just follow this, but for significant changes open a RFC first. Development instructions can be found here.
Release
Releases are done in 3 stages (channels) with this structure:
- Pull requests are merged to the
mainbranch. - A new build is pushed to the
devstage. - Releases are published.
- A new build is pushed to the
betastage. - The
stable.jsonfile is updated. - The build that was pushed to
betawill now be pushed tostable.
Languages
Python
96%
JavaScript
3.9%
