MCPcopy
hub / github.com/dask/dask / Delayed

Class Delayed

dask/delayed.py:673–803  ·  view source on GitHub ↗

Represents a value to be computed by dask. Equivalent to the output from a single key in a dask graph.

Source from the content-addressed store, hash-verified

671
672
673class Delayed(DaskMethodsMixin, OperatorMethodMixin):
674 """Represents a value to be computed by dask.
675
676 Equivalent to the output from a single key in a dask graph.
677 """
678
679 __slots__ = ("_key", "_dask", "_length", "_layer")
680
681 def __init__(self, key, dsk, length=None, layer=None):
682 self._key = key
683 self._dask = dsk
684 self._length = length
685
686 # NOTE: Layer is used by `to_delayed` in other collections, but not in normal Delayed use
687 self._layer = layer or key
688 if isinstance(dsk, HighLevelGraph) and self._layer not in dsk.layers:
689 raise ValueError(
690 f"Layer {self._layer} not in the HighLevelGraph's layers: {list(dsk.layers)}"
691 )
692
693 @property
694 def key(self):
695 return self._key
696
697 @property
698 def dask(self):
699 return self._dask
700
701 def __dask_graph__(self) -> Graph:
702 return self.dask
703
704 def __dask_keys__(self) -> NestedKeys:
705 return [self.key]
706
707 def __dask_layers__(self) -> Sequence[str]:
708 return (self._layer,)
709
710 def __dask_tokenize__(self):
711 return self.key
712
713 __dask_scheduler__ = staticmethod(DEFAULT_GET)
714 __dask_optimize__ = globalmethod(optimize, key="delayed_optimize")
715
716 def __dask_postcompute__(self):
717 return single_key, ()
718
719 def __dask_postpersist__(self):
720 return self._rebuild, ()
721
722 def _rebuild(self, dsk, *, rename=None):
723 key = replace_name_in_key(self.key, rename) if rename else self.key
724 if isinstance(dsk, HighLevelGraph) and len(dsk.layers) == 1:
725 # FIXME Delayed is currently the only collection type that supports both high- and low-level graphs.
726 # The HLG output of `optimize` will have a layer name that doesn't match `key`.
727 # Remove this when Delayed is HLG-only (because `optimize` will only be passed HLGs, so it won't have
728 # to generate random layer names).
729 layer = next(iter(dsk.layers))
730 else:

Callers 15

_checkpoint_oneFunction · 0.90
to_delayedMethod · 0.90
to_delayedMethod · 0.90
to_delayedMethod · 0.90
create_metadata_fileFunction · 0.90
test_dask_layersFunction · 0.90

Calls 1

globalmethodFunction · 0.90

Used in the wild real call sites across dependent graphs

searching dependent graphs…