@@ -203,24 +203,20 @@ def _get_groups(self) -> None:
203203 return
204204
205205 for group in self ._domain_objects .findall ("./group" ):
206- members : list [str ] = []
207206 group_id = group .get ("id" )
208207 group_name = group .find ("name" ).text
209208 if group_id is None :
210209 continue # pragma: no cover
211210
212211 self ._new_groups .append (group_id )
213212 if (
214- group_id in self ._existing_groups
213+ (members := self ._collect_members (group ))
214+ and group_id in self ._existing_groups
215215 and self .gw_entities [group_id ]["name" ] == group_name
216216 ):
217217 continue
218218
219219 group_type = group .find ("type" ).text
220- group_appliances = group .findall ("appliances/appliance" )
221- for item in group_appliances :
222- self ._add_member (item , members )
223-
224220 if group_type in GROUP_TYPES and members :
225221 self .gw_entities [group_id ] = {
226222 "dev_class" : group_type ,
@@ -242,10 +238,15 @@ def _get_groups(self) -> None:
242238 self ._existing_groups = self ._new_groups
243239 self ._new_groups = []
244240
245- def _add_member (self , element : etree .Element , members : list [str ]) -> None :
246- """Check and add member to list."""
247- if (member_id := element .attrib ["id" ]) in self .gw_entities :
248- members .append (member_id )
241+ def _collect_members (self , element : etree .Element ) -> list [str ]:
242+ """Check and collect members."""
243+ members : list [str ] = []
244+ group_appliances = element .findall ("appliances/appliance" )
245+ for item in group_appliances :
246+ if (member_id := item .get ("id" )) in self .gw_entities :
247+ members .append (member_id )
248+
249+ return members
249250
250251 def _get_lock_state (
251252 self , xml : etree .Element , data : GwEntityData , stretch_v2 : bool = False
0 commit comments