Skip to content

Commit

Permalink
Merge pull request #857 from HilbertCorsair/minor_refactoring_BHO
Browse files Browse the repository at this point in the history
refactoring get_objects_by_role() in HardwareObjectNode class
  • Loading branch information
rhfogh authored Feb 29, 2024
2 parents afa5b9e + 145fe6a commit 28a9886
Showing 1 changed file with 14 additions and 29 deletions.
43 changes: 14 additions & 29 deletions mxcubecore/BaseHardwareObjects.py
Original file line number Diff line number Diff line change
Expand Up @@ -464,39 +464,24 @@ def get_objects(
yield obj

def get_object_by_role(self, role: str) -> Union["HardwareObject", None]:
"""Get hardware object by role.
"""Get hardware object by role.
Args:
role (str): Role.
Returns:
Union[HardwareObject, None]: Hardware object.
"""
object = None
obj: Self = self
objects = []
role = str(role).lower()
Args:
role (str): Role.
while True:
if role in obj._objects_by_role:
return obj._objects_by_role[role]

for object in obj:
objects.append(object)
Returns:
Union[HardwareObject, None]: Hardware object.
"""
role = str(role).lower()
objects = [self]

try:
obj = objects.pop()
except IndexError:
break
else:
object = obj.get_object_by_role(role)
if object is not None:
return object
for curr in objects:
result = curr._objects_by_role.get(role)
if result is None:
objects.extend(obj for obj in curr if obj)

if len(objects) > 0:
obj = objects.pop()
else:
break
else :
return result

def objects_names(self) -> List[Union[str, None]]:
"""Return hardware object names.
Expand Down

0 comments on commit 28a9886

Please sign in to comment.