Source code for fugue.collections.yielded

from typing import Any

from triad import assert_or_throw
from triad.utils.hash import to_uuid


[docs] class Yielded(object): """Yields from :class:`~fugue.workflow.workflow.FugueWorkflow`. Users shouldn't create this object directly. :param yid: unique id for determinism """ def __init__(self, yid: str): self._yid = to_uuid(yid) def __uuid__(self) -> str: """uuid of the instance""" return self._yid @property def is_set(self) -> bool: # pragma: no cover """Whether the value is set. It can be false if the parent workflow has not been executed. """ raise NotImplementedError def __copy__(self) -> Any: # pragma: no cover """``copy`` should have no effect""" return self def __deepcopy__(self, memo: Any) -> Any: # pragma: no cover """``deepcopy`` should have no effect""" return self
[docs] class PhysicalYielded(Yielded): """Physical yielded object from :class:`~fugue.workflow.workflow.FugueWorkflow`. Users shouldn't create this object directly. :param yid: unique id for determinism :param storage_type: ``file`` or ``table`` """ def __init__(self, yid: str, storage_type: str): super().__init__(yid) self._name = "" assert_or_throw( storage_type in ["file", "table"], ValueError(f"{storage_type} not in (file, table) "), ) self._storage_type = storage_type @property def is_set(self) -> bool: return self._name != ""
[docs] def set_value(self, name: str) -> None: """Set the storage name after compute :param name: name reference of the storage """ self._name = name
@property def name(self) -> str: """The name reference of the yield""" assert_or_throw(self.is_set, "value is not set") return self._name @property def storage_type(self) -> str: """The storage type of this yield""" return self._storage_type