ha(H2): исправления по ревью — несколько устройств, suggested values, YAML-import, типы ошибок
- critical: listen_port по умолчанию 0 (эфемерный) — несколько ConfigEntry не конфликтуют; тест двух записей на дефолтном порту - manifest: добавлен обязательный ключ codeowners - unload: set_log_handler(None) вынесен в executor (не блокирует loop); рефкаунт лог-пампа без гонки (старт после успешного setup) - config flow: возврат введённого в форму при ошибке (add_suggested_values_to_schema; секреты исключены), YAML-import подключён через async_setup + SOURCE_IMPORT, ProvisionError.kind вместо разбора русского текста, валидация device_port/key_id из JSON - trial: требует получения всех базовых свойств шаблона (не пустой ok), безопасное создание Session - py-ci.sh: отсутствие .venv-ha — ошибка (PY_CI_SKIP_HA=1 для пропуска); pytest.ini testpaths
This commit is contained in:
@@ -147,18 +147,20 @@ class FglairClient:
|
||||
async def async_start(self) -> None:
|
||||
if self._session is not None:
|
||||
return
|
||||
self._session = await self.hass.async_add_executor_job(
|
||||
self._build_session
|
||||
)
|
||||
started = await self.hass.async_add_executor_job(self._session.start)
|
||||
session = await self.hass.async_add_executor_job(self._build_session)
|
||||
try:
|
||||
started = await self.hass.async_add_executor_job(session.start)
|
||||
except Exception:
|
||||
await session.async_stop()
|
||||
raise
|
||||
if not started:
|
||||
await self._session.async_stop()
|
||||
self._session = None
|
||||
await session.async_stop()
|
||||
raise ConfigEntryNotReady(
|
||||
"не удалось запустить локальный HTTP-сервер FGLair "
|
||||
f"(порт {self._data.get(CONF_LISTEN_PORT, DEFAULT_LISTEN_PORT)})"
|
||||
)
|
||||
self._state = self._session.state
|
||||
self._session = session
|
||||
self._state = session.state
|
||||
|
||||
async def async_stop(self) -> None:
|
||||
session, self._session = self._session, None
|
||||
|
||||
Reference in New Issue
Block a user