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
File details
Details for the file pyart-0.2.3.tar.gz.
File metadata
- Download URL: pyart-0.2.3.tar.gz
- Upload date:
- Size: 47.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6c3caa0d18bda3dc2fc1e3ca7ac5db8da9c89d66188b0d0b911ddec3e38cc95
|
|
| MD5 |
3c0c7bbba3f87d4ef479a9bdb2b01a29
|
|
| BLAKE2b-256 |
bd88813ba6b870578e337b33b8954a4ec2ed87900934007ec2a7d2338935b316
|