Skip to content
Snippets Groups Projects

ENH: add new member function filter to Container class

Merged Henrik tom Wörden requested to merge f-filter-container into dev
Files
2
@@ -2575,8 +2575,6 @@ class PropertyList(list):
@@ -2575,8 +2575,6 @@ class PropertyList(list):
Params
Params
------
------
listobject : Iterable(Property)
List to be filtered
prop : Property
prop : Property
Property to match name and ID with. Cannot be set
Property to match name and ID with. Cannot be set
simultaneously with ID or name.
simultaneously with ID or name.
@@ -3093,12 +3091,12 @@ def _basic_sync(e_local, e_remote):
@@ -3093,12 +3091,12 @@ def _basic_sync(e_local, e_remote):
if e_local.role is None:
if e_local.role is None:
e_local.role = e_remote.role
e_local.role = e_remote.role
elif e_remote.role is not None and not e_local.role.lower() == e_remote.role.lower():
elif e_remote.role is not None and not e_local.role.lower() == e_remote.role.lower():
raise ValueError("The resulting entity had a different role ({0}) "
raise ValueError(f"The resulting entity had a different role ({e_remote.role}) "
"than the local one ({1}). This probably means, that "
f"than the local one ({e_local.role}). This probably means, that "
"the entity was intialized with a wrong class "
"the entity was intialized with a wrong class "
"by this client or it has changed in the past and "
"by this client or it has changed in the past and "
"this client did't know about it yet.".format(
"this client did't know about it yet.\nThis is the local version of the"
e_remote.role, e_local.role))
f" Entity:\n{e_local}\nThis is the remote one:\n{e_remote}")
e_local.id = e_remote.id
e_local.id = e_remote.id
e_local.name = e_remote.name
e_local.name = e_remote.name
@@ -3730,6 +3728,36 @@ class Container(list):
@@ -3730,6 +3728,36 @@ class Container(list):
return sync_dict
return sync_dict
 
def filter(self, entity: Optional[Entity] = None,
 
pid: Union[None, str, int] = None,
 
name: Optional[str] = None,
 
conjunction: bool = False) -> list:
 
"""
 
Return all Entities from this Container that match the selection criteria.
 
 
Please refer to the documentation of _filter_entity_list for a detailed
 
description of behaviour.
 
 
Params
 
------
 
entity : Entity
 
Entity to match name and ID with
 
pid : str, int
 
Parent ID to match
 
name : str
 
Parent name to match
 
simultaneously with ID or name.
 
conjunction : bool, defaults to False
 
Set to return only entities that match both id and name
 
if both are given.
 
 
Returns
 
-------
 
matches : list
 
List containing all matching Entities
 
"""
 
return _filter_entity_list(self, pid=pid, name=name, entity=entity,
 
conjunction=conjunction)
@staticmethod
@staticmethod
def _find_dependencies_in_container(container: Container):
def _find_dependencies_in_container(container: Container):
"""Find elements in a container that are a dependency of another element of the same.
"""Find elements in a container that are a dependency of another element of the same.
Loading