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
Fast

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-1.1.0.tar.gz (72.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nutree-1.1.0-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nutree-1.1.0.tar.gz
Algorithm Hash digest
SHA256 98182a5f744235977e6ab4aa290c660bb3c2dafc37d3bc2da1cfd84872a8483d
MD5 c140fc51dce8372b309c804a6efa06ed
BLAKE2b-256 838707875cd330ff1ce165858ec61ff68607d86dfcb7825c932f60045fa79a23

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for nutree-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 66d2333439bc003d89a8d2f4a84ab628f964c17da72dfa25222eea9f50effa7c
MD5 e0d21ff803de2743bf7e8a2adaba8b4e
BLAKE2b-256 dd107b0114ea12291ceb7d4eed77914cc43351e847e3b014f337deb65049c89d

See more details on using hashes here.

Supported by

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