Source code for idmtools.core.interfaces.entity_container

"""
EntityContainer definition. EntityContainer provides an envelope for a Parent to container a list of sub-items.

Copyright 2021, Bill & Melinda Gates Foundation. All rights reserved.
"""
import typing


if typing.TYPE_CHECKING:
    from idmtools.core.interfaces.ientity import IEntity
    from idmtools.core.enums import EntityStatus
    from typing import List


[docs]class EntityContainer(list): """ EntityContainer is a wrapper classes used by Experiments and Suites to wrap their children. It provides utilities to set status on entities """
[docs] def __init__(self, children: 'List[IEntity]' = None): """ Initialize the EntityContainer. Args: children: Children to initialize with """ super().__init__() self.extend(children or [])
[docs] def set_status(self, status: 'EntityStatus'): """ Set status on all the children. Args: status: Status to set Returns: None """ for entity in self: entity.status = status
[docs] def set_status_for_item(self, item_id, status: 'EntityStatus'): """ Set status for specific sub-item. Args: item_id: Item id to set status for status: Status to set Returns: None Raises: ValueError when the item_id is not in the children list """ for entity in self: if entity.uid == item_id: entity.status = status return raise ValueError(f"Item with id {item_id} not found in the container")