Nutree
A Python library for tree data structures with an intuitive, yet powerful API.
Install / Use
/learn @mar10/NutreeREADME
nutree
Nutree is a Python library for tree data structures with an intuitive, yet powerful, API.
Nutree Facts
Handle multiple references of single objects ('clones') <br> Search by name pattern, id, or object reference <br> Compare two trees and calculate patches <br> Unobtrusive handling of arbitrary objects <br> Save as DOT file and graphwiz diagram <br> Nodes can be plain strings or objects <br> (De)Serialize to (compressed) JSON <br> Save as Mermaid flow diagram <br> Different traversal methods <br> Generate random trees <br> Convert to RDF graph <br> Fully type annotated <br> Typed child nodes <br> Pretty print <br> Navigation <br> Filtering <br> Fast <br>
Example
A simple tree, with text nodes
from nutree import Tree, Node
tree = Tree("Store")
n = tree.add("Records")
n.add("Let It Be")
n.add("Get Yer Ya-Ya's Out!")
n = tree.add("Books")
n.add("The Little Prince")
tree.print()
Tree<'Store'>
├─── 'Records'
│ ├─── 'Let It Be'
│ ╰─── "Get Yer Ya-Ya's Out!"
╰─── 'Books'
╰─── 'The Little Prince'
Tree nodes wrap the data and also expose methods for navigation, searching, iteration, ...
records_node = tree["Records"]
assert isinstance(records_node, Node)
assert records_node.name == "Records"
print(records_node.first_child())
Node<'Let It Be', data_id=510268653885439170>
Nodes may be strings or arbitrary objects:
alice = Person("Alice", age=23, guid="{123-456}")
tree.add(alice)
# Lookup nodes by object, data_id, name pattern, ...
assert isinstance(tree[alice].data, Person)
del tree[alice]
Read the Docs for more.
