Skip to main content

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

Project description

logo nutree

Latest Version Tests codecov License Documentation Status Released with: Yabs StackOverflow: 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')
Search by name pattern, id, or object reference
Compare two trees and calculate patches
Unobtrusive handling of arbitrary objects
Save as DOT file and graphwiz diagram
Nodes can be plain strings or objects
(De)Serialize to (compressed) JSON
Save as Mermaid flow diagram
Different traversal methods
Generate random trees
Convert to RDF graph
Fully type annotated
Typed child nodes
Pretty print
Navigation
Filtering

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nutree-0.11.1.tar.gz (72.2 kB view details)

Uploaded Source

Built Distribution

nutree-0.11.1-py3-none-any.whl (54.0 kB view details)

Uploaded Python 3

File details

Details for the file nutree-0.11.1.tar.gz.

File metadata

  • Download URL: nutree-0.11.1.tar.gz
  • Upload date:
  • Size: 72.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for nutree-0.11.1.tar.gz
Algorithm Hash digest
SHA256 c29dacc977263d3d7ff18e24c1cab71fffe660a487d9283013d3cb9fe71d2d78
MD5 487859ab3534a8f9325eb1d3a84525eb
BLAKE2b-256 a56b5fc5acbf494558094017594a71978eb05381b66a3a3032989ffd737effcc

See more details on using hashes here.

File details

Details for the file nutree-0.11.1-py3-none-any.whl.

File metadata

  • Download URL: nutree-0.11.1-py3-none-any.whl
  • Upload date:
  • Size: 54.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for nutree-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d5d240faa29d3ef8367b15ea69f047f40521122f9940360a12d1f70e9e5241b
MD5 da629404eb6f79f23c7369787ed84422
BLAKE2b-256 4131bca11b9903065bfb723e1f3285fece066bd53e83b12a64cd316723ef8e30

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page