# Зависимости HA-харнесса, закреплённые точно (issue #392). # # Было так: `pip install pytest voluptuous pytest-homeassistant-custom-component # home-assistant-frontend` без единой версии. Резолвер выбирал набор сам, и # выбор зависел не от нашего коммита, а от того, что в этот день лежит на PyPI. # По SHA нельзя было сказать, чем его проверяли. # # Хуже того, выбирал он молча и неудачно. Все релизы phcc начиная с 0.13.348 # (25.07.2026) требуют Python >= 3.14, а job стоял на 3.13 — резолвер уезжал на # 0.13.316, а та тянет homeassistant 2026.2.3. Интеграция полгода проверялась # против февральского Home Assistant, и никакой гейт об этом не сообщал. # # Переход на актуальный HA оказался бесплатным: замер на ветке # experiment/392-py314 дал `450 passed, 2 skipped` — ровно то же, что на старом # наборе. Полугодовой дрейф API нашей интеграции не задел. # # Почему 0.13.357, а не последняя. Она — последняя, которая пинует стабильный # homeassistant 2026.8.3; начиная с 0.13.358 пинуются беты (2026.9.0bN). # Гейт на бете держать нельзя: её могут перевыпустить под тем же номером, и # «зелёный» перестанет быть воспроизводимым. # # pytest не закреплён намеренно: phcc сам задаёт совместимый диапазон, а жёсткий # пин с ним конфликтует (проверено — ResolutionImpossible на 9.0.0). # # Менять версии здесь можно, но только вместе с прогоном полного набора: это не # косметика, а смена того, что означает зелёный backend. # Версия фронтенда НЕ выбирается, а берётся из констрейнтов закреплённого # Home Assistant: homeassistant/package_constraints.txt тега 2026.8.3 требует # ровно 20260729.7 (#399). До этого здесь стояла 20260826.1 — набор, которого # нет ни в одном релизе HA: phcc фронтенд не объявляет, и версию однажды # назначили руками. Поднимая HA, обновлять эту строку из того же файла. voluptuous==0.15.2 pytest-homeassistant-custom-component==0.13.357 home-assistant-frontend==20260729.7 # Ставится транзитивно из phcc; закреплён явно, чтобы версия была видна тому, # кто читает этот файл, а не только тому, кто читает лог. homeassistant==2026.8.3 # #42: линт бэкенда (шаг «Линт бэкенда» в validate.yml ставится отсюда же). ruff==0.16.5 # #42: строгая типизация allowlist-модулей (шаг «Типы бэкенда»). Без пина # гейт типизации был бы не воспроизводим по SHA — ровно то, от чего этот # файл и заведён: новая версия mypy добавляет проверки и краснеет на коде, # который не менялся. mypy==2.3.1