Adaptive Radix Tree (ART) implemetation for python.
Project description
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pyart-0.2.3.tar.gz
(47.6 kB
view hashes)