1 """Constants for the Version integration."""
3 from __future__
import annotations
5 from datetime
import timedelta
6 from logging
import Logger, getLogger
7 from typing
import Any, Final
9 from pyhaversion.consts
import HaVersionChannel, HaVersionSource
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)
18 ENTRY_TYPE_SERVICE: Final =
"service"
19 HOME_ASSISTANT: Final =
"Home Assistant"
20 POSTFIX_CONTAINER_NAME: Final =
"-homeassistant"
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"
30 ATTR_CHANNEL: Final = CONF_CHANNEL
31 ATTR_VERSION_SOURCE: Final = CONF_VERSION_SOURCE
32 ATTR_SOURCE: Final = CONF_SOURCE
34 SOURCE_DOCKER: Final =
"docker"
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"
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,
58 STEP_VERSION_SOURCE: Final =
"version_source"
59 STEP_USER: Final =
"user"
61 HA_VERSION_SOURCES: Final[list[str]] = [source.value
for source
in HaVersionSource]
63 BOARD_MAP: Final[dict[str, str]] = {
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",
85 VALID_BOARDS: Final[list[str]] =
list(BOARD_MAP)
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",
95 VALID_SOURCES: Final[list[str]] = [
101 VALID_IMAGES: Final = [
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
127 VALID_CHANNELS: Final[list[str]] = [
128 str(channel.value).title()
for channel
in HaVersionChannel