From 0cc9b2e803c6d15dd78a068127aed797d3e2ddd3 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 4 Apr 2023 00:44:59 -1000 Subject: [PATCH] Use slots for discovery dataclasses (#90751) --- .../components/blebox/config_flow.py | 2 +- homeassistant/components/dhcp/__init__.py | 2 +- homeassistant/components/hassio/discovery.py | 2 +- homeassistant/components/ssdp/__init__.py | 32 +++---------------- homeassistant/components/usb/__init__.py | 2 +- homeassistant/components/zeroconf/__init__.py | 2 +- homeassistant/data_entry_flow.py | 2 +- 7 files changed, 11 insertions(+), 33 deletions(-) diff --git a/homeassistant/components/blebox/config_flow.py b/homeassistant/components/blebox/config_flow.py index cf9a943b3df..b43b1fb6b7f 100644 --- a/homeassistant/components/blebox/config_flow.py +++ b/homeassistant/components/blebox/config_flow.py @@ -84,7 +84,7 @@ class BleBoxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): ) -> FlowResult: """Handle zeroconf discovery.""" hass = self.hass - ipaddress = host_port(discovery_info.__dict__) + ipaddress = (discovery_info.host, discovery_info.port) self.device_config["host"] = discovery_info.host self.device_config["port"] = discovery_info.port diff --git a/homeassistant/components/dhcp/__init__.py b/homeassistant/components/dhcp/__init__.py index ea5a5fb79ad..81fd69f8ffe 100644 --- a/homeassistant/components/dhcp/__init__.py +++ b/homeassistant/components/dhcp/__init__.py @@ -77,7 +77,7 @@ SCAN_INTERVAL = timedelta(minutes=60) _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(slots=True) class DhcpServiceInfo(BaseServiceInfo): """Prepared info from dhcp entries.""" diff --git a/homeassistant/components/hassio/discovery.py b/homeassistant/components/hassio/discovery.py index 29cb53de70f..48fd005fc32 100644 --- a/homeassistant/components/hassio/discovery.py +++ b/homeassistant/components/hassio/discovery.py @@ -22,7 +22,7 @@ from .handler import HassIO, HassioAPIError _LOGGER = logging.getLogger(__name__) -@dataclass +@dataclass(slots=True) class HassioServiceInfo(BaseServiceInfo): """Prepared info from hassio entries.""" diff --git a/homeassistant/components/ssdp/__init__.py b/homeassistant/components/ssdp/__init__.py index b7ed28885cb..18d466099d0 100644 --- a/homeassistant/components/ssdp/__init__.py +++ b/homeassistant/components/ssdp/__init__.py @@ -106,42 +106,20 @@ PRIMARY_MATCH_KEYS = [ _LOGGER = logging.getLogger(__name__) -@dataclass -class _HaServiceDescription: - """Keys added by HA.""" - - x_homeassistant_matching_domains: set[str] = field(default_factory=set) - - -@dataclass -class _SsdpServiceDescription: - """SSDP info with optional keys.""" +@dataclass(slots=True) +class SsdpServiceInfo(BaseServiceInfo): + """Prepared info from ssdp/upnp entries.""" ssdp_usn: str ssdp_st: str + upnp: Mapping[str, Any] ssdp_location: str | None = None ssdp_nt: str | None = None ssdp_udn: str | None = None ssdp_ext: str | None = None ssdp_server: str | None = None ssdp_headers: Mapping[str, Any] = field(default_factory=dict) - - -@dataclass -class _UpnpServiceDescription: - """UPnP info.""" - - upnp: Mapping[str, Any] - - -@dataclass -class SsdpServiceInfo( - _HaServiceDescription, - _SsdpServiceDescription, - _UpnpServiceDescription, - BaseServiceInfo, -): - """Prepared info from ssdp/upnp entries.""" + x_homeassistant_matching_domains: set[str] = field(default_factory=set) SsdpChange = Enum("SsdpChange", "ALIVE BYEBYE UPDATE") diff --git a/homeassistant/components/usb/__init__.py b/homeassistant/components/usb/__init__.py index 17d6f679cf0..3a05da085d8 100644 --- a/homeassistant/components/usb/__init__.py +++ b/homeassistant/components/usb/__init__.py @@ -101,7 +101,7 @@ def async_is_plugged_in(hass: HomeAssistant, matcher: USBCallbackMatcher) -> boo ) -@dataclasses.dataclass +@dataclasses.dataclass(slots=True) class UsbServiceInfo(BaseServiceInfo): """Prepared info from usb entries.""" diff --git a/homeassistant/components/zeroconf/__init__.py b/homeassistant/components/zeroconf/__init__.py index 28c2b799f4c..17fb4c5856d 100644 --- a/homeassistant/components/zeroconf/__init__.py +++ b/homeassistant/components/zeroconf/__init__.py @@ -97,7 +97,7 @@ CONFIG_SCHEMA = vol.Schema( ) -@dataclass +@dataclass(slots=True) class ZeroconfServiceInfo(BaseServiceInfo): """Prepared info from mDNS entries.""" diff --git a/homeassistant/data_entry_flow.py b/homeassistant/data_entry_flow.py index 347ab89e452..e213814f52c 100644 --- a/homeassistant/data_entry_flow.py +++ b/homeassistant/data_entry_flow.py @@ -48,7 +48,7 @@ RESULT_TYPE_MENU = "menu" EVENT_DATA_ENTRY_FLOW_PROGRESSED = "data_entry_flow_progressed" -@dataclass +@dataclass(slots=True) class BaseServiceInfo: """Base class for discovery ServiceInfo."""