Ensure mqtt subscriptions are in a set (#122201)

This commit is contained in:
Jan Bouwhuis 2024-07-21 12:36:06 +02:00 committed by GitHub
parent 8da630f8c6
commit 87e377cf84
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 6 deletions

View file

@ -254,7 +254,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
mqtt_data.client.async_restore_tracked_subscriptions( mqtt_data.client.async_restore_tracked_subscriptions(
mqtt_data.subscriptions_to_restore mqtt_data.subscriptions_to_restore
) )
mqtt_data.subscriptions_to_restore = [] mqtt_data.subscriptions_to_restore = set()
mqtt_data.reload_dispatchers.append( mqtt_data.reload_dispatchers.append(
entry.add_update_listener(_async_config_entry_updated) entry.add_update_listener(_async_config_entry_updated)
) )

View file

@ -427,12 +427,12 @@ class MQTT:
await self.async_init_client() await self.async_init_client()
@property @property
def subscriptions(self) -> list[Subscription]: def subscriptions(self) -> set[Subscription]:
"""Return the tracked subscriptions.""" """Return the tracked subscriptions."""
return [ return {
*chain.from_iterable(self._simple_subscriptions.values()), *chain.from_iterable(self._simple_subscriptions.values()),
*self._wildcard_subscriptions, *self._wildcard_subscriptions,
] }
def cleanup(self) -> None: def cleanup(self) -> None:
"""Clean up listeners.""" """Clean up listeners."""
@ -735,7 +735,7 @@ class MQTT:
@callback @callback
def async_restore_tracked_subscriptions( def async_restore_tracked_subscriptions(
self, subscriptions: list[Subscription] self, subscriptions: set[Subscription]
) -> None: ) -> None:
"""Restore tracked subscriptions after reload.""" """Restore tracked subscriptions after reload."""
for subscription in subscriptions: for subscription in subscriptions:

View file

@ -423,7 +423,7 @@ class MqttData:
reload_handlers: dict[str, CALLBACK_TYPE] = field(default_factory=dict) reload_handlers: dict[str, CALLBACK_TYPE] = field(default_factory=dict)
reload_schema: dict[str, VolSchemaType] = field(default_factory=dict) reload_schema: dict[str, VolSchemaType] = field(default_factory=dict)
state_write_requests: EntityTopicState = field(default_factory=EntityTopicState) state_write_requests: EntityTopicState = field(default_factory=EntityTopicState)
subscriptions_to_restore: list[Subscription] = field(default_factory=list) subscriptions_to_restore: set[Subscription] = field(default_factory=set)
tags: dict[str, dict[str, MQTTTagScanner]] = field(default_factory=dict) tags: dict[str, dict[str, MQTTTagScanner]] = field(default_factory=dict)