Add workaround to avoid blocking imports by dnspython (#121702)

This commit is contained in:
elmurato 2024-09-25 09:36:27 +02:00 committed by GitHub
parent 2339211403
commit 65abe1c875
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -5,6 +5,10 @@ from __future__ import annotations
import logging
from typing import Any
import dns.rdata
import dns.rdataclass
import dns.rdatatype
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_ADDRESS,
@ -28,9 +32,19 @@ PLATFORMS = [Platform.BINARY_SENSOR, Platform.SENSOR]
_LOGGER = logging.getLogger(__name__)
def load_dnspython_rdata_classes() -> None:
"""Load dnspython rdata classes used by mcstatus."""
for rdtype in dns.rdatatype.RdataType:
if not dns.rdatatype.is_metatype(rdtype) or rdtype == dns.rdatatype.OPT:
dns.rdata.get_rdata_class(dns.rdataclass.IN, rdtype) # type: ignore[no-untyped-call]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Minecraft Server from a config entry."""
# Workaround to avoid blocking imports from dnspython (https://github.com/rthalley/dnspython/issues/1083)
hass.async_add_executor_job(load_dnspython_rdata_classes)
# Create API instance.
api = MinecraftServer(
hass,