Utilities for navigating flat trees
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Luke Murphy bf54dfa4cd
Fix up README example
9 months ago
.github Use existing file (doh) 1 year ago
flat_tree Remove setuptools_scm cruft 10 months ago
test Remove old test 10 months ago
.drone.yml Reduce package boilerplate 11 months ago
.gitignore Migrate to pyproject configuration 10 months ago
CHANGELOG.md Clarify version fumbling 10 months ago
LICENSE Follow the Hypercore protocol rename 11 months ago
README.md Fix up README example 9 months ago
poetry.lock Migrate to pyproject configuration 10 months ago
pyproject.toml Small case it 10 months ago



Build Status

Utilities for navigating flat trees

Flat Trees are the core data structure that power Hypercore feeds. They allow us to deterministically represent a tree structure as a vector. This is particularly useful because vectors map elegantly to disk and memory. Because Flat Trees are deterministic and pre-computed, there is no overhead to using them. In effect this means that Flat Trees are a specific way of indexing into a vector more than they are their own data structure. This makes them uniquely efficient and convenient to implement in a wide range of languages.


$ pip install flat-tree


from flat_tree import FlatTreeIterator

tree_iter = FlatTreeIterator()

print("tree index: ", tree_iter.index)
print("tree first parent: ", tree_iter.parent())
print("tree next parent", tree_iter.parent())


tree index:  0
tree first parent:  1
tree next parent 3