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 details)
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 |