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
5 months ago
.github Use existing file (doh) 1 year ago
flat_tree Remove setuptools_scm cruft 6 months ago
test Remove old test 6 months ago
.drone.yml Reduce package boilerplate 8 months ago
.gitignore Migrate to pyproject configuration 6 months ago
CHANGELOG.md Clarify version fumbling 6 months ago
LICENSE Follow the Hypercore protocol rename 8 months ago
README.md Fix up README example 5 months ago
poetry.lock Migrate to pyproject configuration 6 months ago
pyproject.toml Small case it 6 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