Utilities for navigating flat trees
changelog | ||
documentation | ||
flat_tree | ||
test | ||
.gitignore | ||
.readthedocs.yml | ||
.travis.yml | ||
CHANGELOG.rst | ||
CODE_OF_CONDUCT.rst | ||
CONTRIBUTING.rst | ||
FUNDING.yml | ||
LICENSE | ||
MANIFEST.in | ||
mypy.ini | ||
pyproject.toml | ||
README.rst | ||
setup.cfg | ||
setup.py | ||
tox.ini |
.. _header: ********* flat-tree ********* .. image:: https://img.shields.io/badge/license-MIT-brightgreen.svg :target: LICENSE :alt: Repository license .. image:: https://badge.fury.io/py/flat-tree.svg :target: https://badge.fury.io/py/flat-tree :alt: PyPI Package .. image:: https://travis-ci.com/datpy/flat-tree.svg?branch=master :target: https://travis-ci.com/datpy/flat-tree :alt: Travis CI result .. image:: https://readthedocs.org/projects/flat-tree/badge/?version=latest :target: https://flat-tree.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status .. image:: https://img.shields.io/badge/support-maintainers-brightgreen.svg :target: https://decentral1.se/ :alt: Support badge .. _introduction: Utilities for navigating flat trees ----------------------------------- From `The Dat Protocol`_: .. _The Dat Protocol: https://datprotocol.github.io/book/ch01-01-flat-tree.html Flat Trees are the core data structure that power Dat's 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. .. _example: Example ******* .. code-block:: python """ You can represent a binary tree in a simple flat list using the following structure: 3 1 5 0 2 4 6 ... This module exposes a series of functions to help you build and maintain this data structure. """ from flat_tree import FlatTreeAccessor tree_access = FlatTreeAccessor() # get array index for depth: 1, offset: 0 tree_access.index(1, 0) .. _documentation: Documentation ************* * `flat-tree.readthedocs.io`_ .. _flat-tree.readthedocs.io: https://flat-tree.readthedocs.io .. _mirroring: Mirroring ********* * `hack.decentral1.se/datpy/flat-tree`_ * `github.com/datpy/flat-tree`_ .. _hack.decentral1.se/datpy/flat-tree: https://hack.decentral1.se/datpy/flat-tree .. _github.com/datpy/flat-tree: https://github.com/datpy/flat-tree