# Copyright (c) PARRRATE T&V 2021. All rights reserved. from bu4.evaluation.constructs.evaluable import Evaluable from bu4.indexing.constructs.iname import IName from bu4.indexing.constructs.indexed import Indexed from bu4.linking.constructs.linked import Linked from bu4.linking.evaluation.elvtype import elvtype from bu4.transform.states.transformfinished import TransformFinished from bu4.transform.states.transformstate import TransformState __all__ = ('LName',) class LName(Linked): def __init__(self, name: bytes): self.name = name self.future = {name} self.multifuture = set() def attach(self, env: elvtype) -> Evaluable: return env[self.name] def index(self, promise: list[bytes]) -> TransformState[Indexed]: return TransformFinished(IName(promise.index(self.name))) def __str__(self): return f'[{self.name.decode()}]'