| 71 | |
| 72 | |
| 73 | class ExprScalar(DaskMethodsMixin): |
| 74 | __dask_scheduler__ = staticmethod(dask.threaded.get) |
| 75 | __dask_optimize__ = None |
| 76 | |
| 77 | def __init__(self, expr): |
| 78 | self._expr = expr |
| 79 | |
| 80 | @property |
| 81 | def expr(self): |
| 82 | return self._expr |
| 83 | |
| 84 | def __dask_graph__(self): |
| 85 | return self.expr.__dask_graph__() |
| 86 | |
| 87 | def __dask_keys__(self): |
| 88 | return self.expr.__dask_keys__() |
| 89 | |
| 90 | def __dask_layers__(self): |
| 91 | return (self.expr._name,) |
| 92 | |
| 93 | def __dask_tokenize__(self): |
| 94 | return self.expr |
| 95 | |
| 96 | def __dask_postcompute__(self): |
| 97 | return _first, () |
| 98 | |
| 99 | def __dask_postpersist__(self): |
| 100 | return ExprScalar._rebuild, (self.expr,) |
| 101 | |
| 102 | @staticmethod |
| 103 | def _rebuild(dsk, expr): |
| 104 | return ExprScalar(LiteralExpr(expr.name, dsk[expr.__dask_keys__()[0]])) |
| 105 | |
| 106 | |
| 107 | @get_collection_type.register(CompositeScalarMeta) |
no outgoing calls