mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Fix workday doing blocking I/O in the event loop (#114492)
This commit is contained in:
parent
d63adb6350
commit
0b9c40a233
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
from holidays import HolidayBase, country_holidays
|
from holidays import HolidayBase, country_holidays
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
@ -13,7 +15,7 @@ from homeassistant.helpers.issue_registry import IssueSeverity, async_create_iss
|
|||||||
from .const import CONF_PROVINCE, DOMAIN, PLATFORMS
|
from .const import CONF_PROVINCE, DOMAIN, PLATFORMS
|
||||||
|
|
||||||
|
|
||||||
def _validate_country_and_province(
|
async def _async_validate_country_and_province(
|
||||||
hass: HomeAssistant, entry: ConfigEntry, country: str | None, province: str | None
|
hass: HomeAssistant, entry: ConfigEntry, country: str | None, province: str | None
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Validate country and province."""
|
"""Validate country and province."""
|
||||||
@ -21,7 +23,7 @@ def _validate_country_and_province(
|
|||||||
if not country:
|
if not country:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
country_holidays(country)
|
await hass.async_add_executor_job(country_holidays, country)
|
||||||
except NotImplementedError as ex:
|
except NotImplementedError as ex:
|
||||||
async_create_issue(
|
async_create_issue(
|
||||||
hass,
|
hass,
|
||||||
@ -39,7 +41,9 @@ def _validate_country_and_province(
|
|||||||
if not province:
|
if not province:
|
||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
country_holidays(country, subdiv=province)
|
await hass.async_add_executor_job(
|
||||||
|
partial(country_holidays, country, subdiv=province)
|
||||||
|
)
|
||||||
except NotImplementedError as ex:
|
except NotImplementedError as ex:
|
||||||
async_create_issue(
|
async_create_issue(
|
||||||
hass,
|
hass,
|
||||||
@ -66,10 +70,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
country: str | None = entry.options.get(CONF_COUNTRY)
|
country: str | None = entry.options.get(CONF_COUNTRY)
|
||||||
province: str | None = entry.options.get(CONF_PROVINCE)
|
province: str | None = entry.options.get(CONF_PROVINCE)
|
||||||
|
|
||||||
_validate_country_and_province(hass, entry, country, province)
|
await _async_validate_country_and_province(hass, entry, country, province)
|
||||||
|
|
||||||
if country and CONF_LANGUAGE not in entry.options:
|
if country and CONF_LANGUAGE not in entry.options:
|
||||||
cls: HolidayBase = country_holidays(country, subdiv=province)
|
cls: HolidayBase = await hass.async_add_executor_job(
|
||||||
|
partial(country_holidays, country, subdiv=province)
|
||||||
|
)
|
||||||
default_language = cls.default_language
|
default_language = cls.default_language
|
||||||
new_options = entry.options.copy()
|
new_options = entry.options.copy()
|
||||||
new_options[CONF_LANGUAGE] = default_language
|
new_options[CONF_LANGUAGE] = default_language
|
||||||
|
Loading…
x
Reference in New Issue
Block a user