nutree

Build Status PyPI Version License Documentation Status Coverage Status Code style: black StackOverflow: nutree

A Python library for tree data structures with an intuitive, yet powerful, API.

Project

https://github.com/mar10/nutree/

Version

0.2, Date: Jun 26, 2022

$ pip install nutree
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]

Nutree Facts

  • Handle multiple references of single objects (‘clones’)

  • Search by name pattern, id, or object reference

  • Unobtrusive handling of arbitrary objects

  • Compare two trees and calculate patches

  • Save as DOT file and graphwiz diagram

  • Nodes can be plain strings or objects

  • Different traversal methods

  • (De)Serialize to JSON

  • Fully type annotated

  • Pretty print

  • Navigation

  • Filtering

Read more