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
3 unresolved threads
Files
2
@@ -2575,8 +2575,6 @@ class PropertyList(list):
Params
------
listobject : Iterable(Property)
List to be filtered
prop : Property
Property to match name and ID with. Cannot be set
simultaneously with ID or name.
@@ -3093,12 +3091,12 @@ def _basic_sync(e_local, e_remote):
if e_local.role is None:
e_local.role = e_remote.role
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}) "
"than the local one ({1}). This probably means, that "
raise ValueError(f"The resulting entity had a different role ({e_remote.role}) "
f"than the local one ({e_local.role}). This probably means, that "
"the entity was intialized with a wrong class "
"by this client or it has changed in the past and "
"this client did't know about it yet.".format(
e_remote.role, e_local.role))
"this client did't know about it yet.\nThis is the local version of the"
f" Entity:\n{e_local}\nThis is the remote one:\n{e_remote}")
e_local.id = e_remote.id
e_local.name = e_remote.name
@@ -3730,6 +3728,36 @@ class Container(list):
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
def _find_dependencies_in_container(container: Container):
"""Find elements in a container that are a dependency of another element of the same.
Loading