Skip to main content

Adaptive Radix Tree (ART) implemetation for python.

Project description

Travis badge Bitdeli badge

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)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page