Witllm/wit/dataset/node_tree.py

29 lines
842 B
Python
Raw Normal View History

2025-02-23 16:46:37 +08:00
from anytree import RenderTree
from anytree.node.nodemixin import NodeMixin
from anytree.node.util import _repr
2025-02-24 21:38:31 +08:00
class NodeTree(NodeMixin):
2025-02-23 16:46:37 +08:00
def __init__(self, name, parent=None, children=None, **kwargs):
self.__dict__.update(kwargs)
self.name = name
self.prop = ""
self.parent = parent
if children:
self.children = children
2025-02-24 21:38:31 +08:00
self.seq_node = []
2025-02-23 16:46:37 +08:00
def __repr__(self):
args = ["%r" % self.separator.join([""] + [str(node.name) for node in self.path])]
return _repr(self, args=args, nameblacklist=["name"])
2025-02-22 16:50:16 +08:00
2025-02-23 16:46:37 +08:00
def set_seq_prop(self, index, prop):
self.seq_node[index].prop = prop
2025-02-22 16:50:16 +08:00
def print(self):
treestr = ""
2025-02-24 21:38:31 +08:00
for pre, fill, node in RenderTree(self):
2025-02-23 16:46:37 +08:00
treestr += f"{pre}{node.name} {node.prop}\n"
2025-02-22 16:50:16 +08:00
print(treestr)