""" Chromecast types """ from __future__ import annotations import asyncio from dataclasses import dataclass from uuid import UUID import zeroconf # pylint: disable=invalid-name ZEROCONF_ERRORS: tuple[type[Exception], ...] = (IOError, asyncio.TimeoutError) if hasattr(zeroconf, "EventLoopBlocked"): # Added in zeroconf 0.37.0 ZEROCONF_ERRORS = (*ZEROCONF_ERRORS, zeroconf.EventLoopBlocked) @dataclass(frozen=True) class CastInfo: """Cast info container.""" services: set[HostServiceInfo | MDNSServiceInfo] uuid: UUID model_name: str | None friendly_name: str | None host: str port: int cast_type: str | None manufacturer: str | None @dataclass(frozen=True) class HostServiceInfo: """Service info container.""" host: str port: int @dataclass(frozen=True) class MDNSServiceInfo: """Service info container.""" name: str