Home Assistant Unofficial Reference 2024.12.1
const.py
Go to the documentation of this file.
1 """Constants for the Version integration."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 from logging import Logger, getLogger
7 from typing import Any, Final
8 
9 from pyhaversion.consts import HaVersionChannel, HaVersionSource
10 
11 from homeassistant.const import CONF_NAME, Platform
12 
13 DOMAIN: Final = "version"
14 LOGGER: Final[Logger] = getLogger(__package__)
15 PLATFORMS: Final[list[Platform]] = [Platform.BINARY_SENSOR, Platform.SENSOR]
16 UPDATE_COORDINATOR_UPDATE_INTERVAL: Final[timedelta] = timedelta(minutes=5)
17 
18 ENTRY_TYPE_SERVICE: Final = "service"
19 HOME_ASSISTANT: Final = "Home Assistant"
20 POSTFIX_CONTAINER_NAME: Final = "-homeassistant"
21 
22 
23 CONF_BETA: Final = "beta"
24 CONF_BOARD: Final = "board"
25 CONF_CHANNEL: Final = "channel"
26 CONF_IMAGE: Final = "image"
27 CONF_VERSION_SOURCE: Final = "version_source"
28 CONF_SOURCE: Final = "source"
29 
30 ATTR_CHANNEL: Final = CONF_CHANNEL
31 ATTR_VERSION_SOURCE: Final = CONF_VERSION_SOURCE
32 ATTR_SOURCE: Final = CONF_SOURCE
33 
34 SOURCE_DOCKER: Final = "docker" # Kept to not break existing configurations
35 
36 VERSION_SOURCE_DOCKER_HUB: Final = "Docker Hub"
37 VERSION_SOURCE_HAIO: Final = "Home Assistant Website"
38 VERSION_SOURCE_LOCAL: Final = "Local installation"
39 VERSION_SOURCE_PYPI: Final = "Python Package Index (PyPI)"
40 VERSION_SOURCE_VERSIONS: Final = "Home Assistant Versions"
41 
42 DEFAULT_BETA: Final = False
43 DEFAULT_BOARD: Final = "OVA"
44 DEFAULT_CHANNEL: Final = "stable"
45 DEFAULT_IMAGE: Final = "default"
46 DEFAULT_NAME_CURRENT: Final = "Current Version"
47 DEFAULT_NAME: Final = ""
48 DEFAULT_SOURCE: Final = "local"
49 DEFAULT_CONFIGURATION: Final[dict[str, Any]] = {
50  CONF_NAME: DEFAULT_NAME,
51  CONF_CHANNEL: DEFAULT_CHANNEL,
52  CONF_IMAGE: DEFAULT_IMAGE,
53  CONF_BOARD: DEFAULT_BOARD,
54  CONF_VERSION_SOURCE: VERSION_SOURCE_LOCAL,
55  CONF_SOURCE: DEFAULT_SOURCE,
56 }
57 
58 STEP_VERSION_SOURCE: Final = "version_source"
59 STEP_USER: Final = "user"
60 
61 HA_VERSION_SOURCES: Final[list[str]] = [source.value for source in HaVersionSource]
62 
63 BOARD_MAP: Final[dict[str, str]] = {
64  "OVA": "ova",
65  "RaspberryPi 2": "rpi2",
66  "RaspberryPi 3": "rpi3",
67  "RaspberryPi 3 64bit": "rpi3-64",
68  "RaspberryPi 4": "rpi4",
69  "RaspberryPi 4 64bit": "rpi4-64",
70  "RaspberryPi 5": "rpi5-64",
71  "ASUS Tinkerboard": "tinker",
72  "ODROID C2": "odroid-c2",
73  "ODROID C4": "odroid-c4",
74  "ODROID M1": "odroid-m1",
75  "ODROID M1S": "odroid-m1s",
76  "ODROID N2": "odroid-n2",
77  "ODROID XU4": "odroid-xu4",
78  "Generic AArch64": "generic-aarch64",
79  "Generic x86-64": "generic-x86-64",
80  "Home Assistant Yellow": "yellow",
81  "Home Assistant Green": "green",
82  "Khadas VIM3": "khadas-vim3",
83 }
84 
85 VALID_BOARDS: Final[list[str]] = list(BOARD_MAP)
86 
87 VERSION_SOURCE_MAP: Final[dict[str, str]] = {
88  VERSION_SOURCE_LOCAL: "local",
89  VERSION_SOURCE_VERSIONS: "supervisor",
90  VERSION_SOURCE_HAIO: "haio",
91  VERSION_SOURCE_DOCKER_HUB: "container",
92  VERSION_SOURCE_PYPI: "pypi",
93 }
94 
95 VALID_SOURCES: Final[list[str]] = [
96  *HA_VERSION_SOURCES,
97  "hassio", # Kept to not break existing configurations
98  "docker", # Kept to not break existing configurations
99 ]
100 
101 VALID_IMAGES: Final = [
102  "default",
103  "generic-x86-64",
104  "intel-nuc",
105  "odroid-c2",
106  "odroid-m1",
107  "odroid-n2",
108  "odroid-xu",
109  "qemuarm-64",
110  "qemuarm",
111  "qemux86-64",
112  "qemux86",
113  "raspberrypi",
114  "raspberrypi2",
115  "raspberrypi3-64",
116  "raspberrypi3",
117  "raspberrypi4-64",
118  "raspberrypi4",
119  "raspberrypi5-64",
120  "tinker",
121 ]
122 
123 VALID_CONTAINER_IMAGES: Final[list[str]] = [
124  f"{image}{POSTFIX_CONTAINER_NAME}" if image != DEFAULT_IMAGE else image
125  for image in VALID_IMAGES
126 ]
127 VALID_CHANNELS: Final[list[str]] = [
128  str(channel.value).title() for channel in HaVersionChannel
129 ]