@@ -198,17 +198,16 @@ def _get_groups(self) -> None:
198198 return
199199
200200 for group in self ._domain_objects .findall ("./group" ):
201- members : list [str ] = []
202201 group_id = group .get ("id" )
202+ if group_id is None :
203+ continue # pragma: no cover
204+
205+ if not (members := self ._collect_members (group )):
206+ continue
207+
203208 group_name = group .find ("name" ).text
204209 group_type = group .find ("type" ).text
205- group_appliances = group .findall ("appliances/appliance" )
206- for item in group_appliances :
207- # Check if members are not orphaned - stretch
208- if item .get ("id" ) in self .gw_entities :
209- members .append (item .get ("id" ))
210-
211- if group_type in GROUP_TYPES and members and group_id :
210+ if group_type in GROUP_TYPES :
212211 self .gw_entities [group_id ] = {
213212 "dev_class" : group_type ,
214213 "model" : "Group" ,
@@ -218,6 +217,16 @@ def _get_groups(self) -> None:
218217 }
219218 self ._count += 5
220219
220+ def _collect_members (self , element : etree .Element ) -> list [str ]:
221+ """Check and collect members."""
222+ members : list [str ] = []
223+ group_appliances = element .findall ("appliances/appliance" )
224+ for item in group_appliances :
225+ if (member_id := item .get ("id" )) in self .gw_entities :
226+ members .append (member_id )
227+
228+ return members
229+
221230 def _get_lock_state (
222231 self , xml : etree .Element , data : GwEntityData , stretch_v2 : bool = False
223232 ) -> None :
0 commit comments