mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-11 14:24:03 +02:00
* fix: replace deprecated get_astral_location with get_astral_observer (#1481) HA 2026.7 deprecates homeassistant.helpers.sun.get_astral_location (removal planned for 2027.7) in favor of get_astral_observer, causing a deprecation warning in the HA logs. - Switch SunEvents/SunLightSettings from astral.location.Location to astral.Observer, using the astral.sun module functions (which return UTC times by default, matching the previous local=False calls). - Use get_astral_observer in switch.py, with a fallback for HA < 2026.7 that constructs the Observer directly from the HA config. - Update tests and the webapp simulator accordingly. * ci: handle removal of requirements_test_all.txt in HA 2026.8 dev HA core removed requirements_test_all.txt (home-assistant/core#171530), which made test_dependencies.py crash with FileNotFoundError and broke the dev pytest job and the Docker builds. Fall back to requirements_all.txt, which carries the same per-integration '# homeassistant.components.x' annotations. Also extend the aiohasupervisor pin lookup in scripts/setup-dependencies accordingly. * test: support modern template light config for HA 2026.6+ HA 2026.6 removed the legacy `light: platform: template` YAML format (home-assistant/core#169615), so setup_lights found no template platform on HA dev and every test using it failed with IndexError. Detect legacy support at runtime (PLATFORM_SCHEMA presence) and fall back to the modern `template:` config format. The group platform is set up before the template integration in the modern path, because setting up `template` also sets up the `light` domain, which would make a later async_setup_component(hass, LIGHT_DOMAIN, ...) a no-op.
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
"""Extracts the dependencies of the components required for testing."""
|
|
|
|
from collections import defaultdict
|
|
from pathlib import Path
|
|
|
|
deps = defaultdict(list)
|
|
components, packages = [], []
|
|
|
|
requirements = Path("core") / "requirements_test_all.txt"
|
|
if not requirements.exists():
|
|
# Removed from HA core in 2026.8 (home-assistant/core#171530); the same
|
|
# per-integration annotations live in requirements_all.txt.
|
|
requirements = Path("core") / "requirements_all.txt"
|
|
|
|
with requirements.open() as f:
|
|
lines = f.readlines()
|
|
|
|
for line in lines:
|
|
line = line.strip() # noqa: PLW2901
|
|
|
|
if line.startswith("# homeassistant."):
|
|
if components and packages:
|
|
for component in components:
|
|
deps[component].extend(packages)
|
|
components, packages = [], []
|
|
components.append(line.split("# homeassistant.")[1])
|
|
elif components and line:
|
|
packages.append(line)
|
|
|
|
# The last batch of components and packages
|
|
if components and packages:
|
|
for component in components:
|
|
deps[component].extend(packages)
|
|
|
|
required = [
|
|
"components.recorder",
|
|
"components.mqtt",
|
|
"components.zeroconf",
|
|
"components.http",
|
|
"components.stream",
|
|
"components.conversation", # only available after HA≥2023.2
|
|
"components.cloud",
|
|
"components.ffmpeg", # needed since 2024.1
|
|
]
|
|
to_install = [package for r in required for package in deps[r]]
|
|
to_install.append("flaky")
|
|
|
|
print(" ".join(to_install)) # noqa: T201
|