Utilities for navigating flat trees
Go to file
Luke Murphy 1cfa029e4c
Some checks failed
continuous-integration/drone/push Build is failing
Clarify version fumbling
2020-07-07 15:18:58 +02:00
.github Use existing file (doh) 2019-11-20 09:57:26 +07:00
flat_tree Remove setuptools_scm cruft 2020-07-07 14:37:48 +02:00
test Appease black 2020-05-16 18:20:35 +02:00
.drone.yml Reduce package boilerplate 2020-05-16 18:15:47 +02:00
.gitignore Migrate to pyproject configuration 2020-07-07 14:33:47 +02:00
CHANGELOG.md Clarify version fumbling 2020-07-07 15:18:58 +02:00
LICENSE Follow the Hypercore protocol rename 2020-05-16 17:58:44 +02:00
poetry.lock Migrate to pyproject configuration 2020-07-07 14:33:47 +02:00
pyproject.toml Bump to 0.0.1a8 2020-07-07 15:13:14 +02:00
README.md Use colour in README and bump once again 2020-07-07 15:08:43 +02:00

flat-tree

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.

Install

$ pip install flat-tree

Example

from flat_tree.accessor import FlatTreeIterator

tree_iter = FlatTreeIterator()
assert tree_iter.index == 0
assert tree_iter.parent() == 1
assert tree_iter.parent() == 3