# Copyright (c) PARRRATE T&V 2021. All rights reserved. from bu4.linkable.constructs.parsed import Parsed from bu4.linking.constructs.ldelayed import LDelayed from bu4.linking.constructs.linked import Linked from bu4.transform.states.aftertransform import AfterTransform from bu4.transform.states.transformfinished import TransformFinished from bu4.transform.states.transformstart import TransformStart from bu4.transform.states.transformstate import TransformState from bu4.transform.targets.atlambda import ATLambda __all__ = ('PDelayed',) class PDelayed(Parsed): def __init__(self, value: Parsed): self.value = value def link(self, promise: set[bytes]) -> TransformState[Linked]: return AfterTransform( TransformStart(lambda: self.value.link(promise)), ATLambda( lambda value: TransformFinished(LDelayed( value )) ) )