Utilities for navigating flat trees
Go to file
2019-10-06 15:30:15 +02:00
changelog Add change log entry for another small alpha 2019-07-01 18:34:47 +02:00
documentation Make those links 2019-10-06 15:29:55 +02:00
flat_tree Add note about iterators 2019-08-07 08:07:45 +02:00
test flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
.gitignore flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
.readthedocs.yml flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
.travis.yml Mark test envs only by version 2019-10-06 15:29:05 +02:00
CHANGELOG.rst Remove issue markers which don't exist 2019-10-06 15:29:14 +02:00
CODE_OF_CONDUCT.rst flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
CONTRIBUTING.rst Simplify release documentation 2019-10-06 15:29:23 +02:00
FUNDING.yml Add Github funding file 2019-07-08 12:04:39 +02:00
LICENSE flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
MANIFEST.in flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
mypy.ini flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
pyproject.toml flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
README.rst Add example 2019-10-06 15:29:34 +02:00
setup.cfg Mark >=3.6 less verbosely 2019-10-06 15:30:01 +02:00
setup.py flat-tree implementation coming down the tubes 2019-07-01 18:09:49 +02:00
tox.ini Inline tox defs 2019-10-06 15:30:15 +02:00

.. _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
*************

* https://flat-tree.readthedocs.io

.. _mirroring:

Mirroring
*********

* https://hack.decentral1.se/datpy/flat-tree (primary)
* https://github.com/datpy/flat-tree