1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-08 17:49:37 +01:00

Allows defining list of attributes excluded from history in manifest.json (#99283)

* Move list of attributes excluded from history to manifest.json

* Address comments
This commit is contained in:
Erik Montnemery
2023-08-29 20:14:33 +02:00
committed by GitHub
parent 50150f5577
commit 0366e14630
8 changed files with 72 additions and 21 deletions
+2
View File
@@ -20,6 +20,7 @@ from . import (
metadata,
mqtt,
mypy_config,
recorder,
requirements,
services,
ssdp,
@@ -39,6 +40,7 @@ INTEGRATION_PLUGINS = [
json,
manifest,
mqtt,
recorder,
requirements,
services,
ssdp,
+1
View File
@@ -264,6 +264,7 @@ INTEGRATION_MANIFEST_SCHEMA = vol.Schema(
vol.Optional("loggers"): [str],
vol.Optional("disabled"): str,
vol.Optional("iot_class"): vol.In(SUPPORTED_IOT_CLASSES),
vol.Optional("recorder_excluded_attributes"): [str],
}
)
+45
View File
@@ -0,0 +1,45 @@
"""Generate recorder file."""
from __future__ import annotations
from .model import Config, Integration
from .serializer import format_python_namespace
def generate_and_validate(integrations: dict[str, Integration]) -> str:
"""Validate and generate recorder data."""
data: dict[str, set[str]] = {}
for domain in sorted(integrations):
exclude_list = integrations[domain].manifest.get("recorder_excluded_attributes")
if not exclude_list:
continue
data[domain] = set(exclude_list)
return format_python_namespace({"EXCLUDED_ATTRIBUTES": data})
def validate(integrations: dict[str, Integration], config: Config) -> None:
"""Validate recorder file."""
recorder_path = config.root / "homeassistant/generated/recorder.py"
config.cache["recorder"] = content = generate_and_validate(integrations)
if config.specific_integrations:
return
with open(str(recorder_path)) as fp:
if fp.read() != content:
config.add_error(
"recorder",
"File recorder.py is not up to date. Run python3 -m script.hassfest",
fixable=True,
)
def generate(integrations: dict[str, Integration], config: Config) -> None:
"""Generate recorder file."""
recorder_path = config.root / "homeassistant/generated/recorder.py"
with open(str(recorder_path), "w") as fp:
fp.write(f"{config.cache['recorder']}")