Metadata-Version: 1.1
Name: pyart
Version: 0.2.3
Summary: Adaptive Radix Tree (ART) implemetation for python.
Home-page: https://github.com/blackwithwhite666/pyart
Author: Lipin Dmitriy
Author-email: blackwithwhite666@gmail.com
License: BSD
Description: =================================================
        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.
        
Keywords: thrift soa
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2.7
