"""A merkle tree node.""" from typing import Any, Optional import attr from flat_tree import FlatTreeAccessor __all__ = ["MerkleTreeNode"] @attr.s(auto_attribs=True) class MerkleTreeNode: """A node in a merkle tree. :param index: The index of node :param parent: The parent of the node :param size: The size of the data :param data: The data of the node :param hash: The hash of the data """ index: int parent: int size: int data: bytes hash: Optional[bytes] = attr.Factory(bytes) def __attrs_post_init__(self) -> Any: """Initialise the parent index.""" flat_tree = FlatTreeAccessor() self.parent = flat_tree.parent(self.index)