semvec/pypi-packages huggingface dataset:
pyart 0.2.3
Adaptive Radix Tree (ART) implemetation for python.
License: BSD
Keywords: thrift soa

=================================================
pyart - Adaptive Radix Tree
=================================================

|travis| |bitdeli|

.. |travis| image:: https://secure.travis-ci.org/blackwithwhite666/pyart.png?branch=master
   :alt: Travis badge
   :target: https://travis-ci.org/blackwithwhite666/pyart

.. |bitdeli| image:: https://d2weczhvl823v0.cloudfront.net/blackwithwhite666/pyart/trend.png
   :alt: Bitdeli badge
   :target: https://bitdeli.com/free

This library is a thin python wrapper around ART implementation in https://raw.github.com/armon/hlld

Installing
==========

pystat can be installed via pypi:

::

    pip install pyart


Building
========

Get the source:

::

    git clone https://github.com/blackwithwhite666/pyart.git


Compile extension:

::

     python setup.py build_ext --inplace



Usage
=====

Work with tree as with plain mapping:

::

    from pyart import Tree
    t = Tree()
    t[b'foo'] = 1
    t[b'bar'] = 2
    assert t[b'foo'] == 1
    assert t[b'bar'] == 2
    assert b'foo' in t
    assert b'bar' in t
    assert len(t) == 2
    del t[b'foo']
    assert b'foo' not in t
    assert len(t) == 1


Iteration over each element of tree:

::

    from pyart import Tree
    t = Tree()
    t['foo'] = object()
    def cb(key, value): print(key, value)
    t.each(cb)
    >>> ('foo', <object object at 0x7f186020bd70>)
    t['foobar'] = object()
    t.each(cb)
    >>> ('foo', <object object at 0x7f186020bd70>)
    >>> ('foobar', <object object at 0x7f186020bd80>)
    t.each(cb, prefix=b'foo')
    >>> ('foo', <object object at 0x7f186020bd70>)
    >>> ('foobar', <object object at 0x7f186020bd80>)
    t.each(cb, prefix=b'bar')


Find minimum and maximum:

::

    from pyart import Tree
    t = Tree()
    t[b'test'] = None
    t[b'foo'] = None
    t[b'bar'] = None
    assert t.minimum == (b'bar', None)
    assert t.maximum == (b'test', None)

Copy tree:

::

    from pyart import Tree
    t = Tree()
    t[b'test'] = object()
    c = t.copy()
    assert c[b'test'] is t[b'test']
    assert len(c) == len(t)


TODO
====

- Implement plain python iterator over tree;


Running the test suite
======================

Use Tox to run the test suite:

::

    tox


Changelog
=========

0.2.3
-----

- Fix reference counting;

0.2.2
-----

- Fix iteration with single element;

0.2.1
-----

- Fix segmentation fault on iterator destruction;

0.2.0
-----

- Proper exception handling in `each`;
- Support for python native iteration;

0.1.0 (initial release)
-----------------------

- Prototype.