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

Uploaded Source

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

Hashes for pyart-0.2.3.tar.gz
Algorithm Hash digest
SHA256 b6c3caa0d18bda3dc2fc1e3ca7ac5db8da9c89d66188b0d0b911ddec3e38cc95
MD5 3c0c7bbba3f87d4ef479a9bdb2b01a29
BLAKE2b-256 bd88813ba6b870578e337b33b8954a4ec2ed87900934007ec2a7d2338935b316

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page