Skip to main content

Red Black tree extension package

Project description

pyrbtree

Description

This package provides an implementation of a tree based set and mapping. For performance reasons, it uses an underlying binary extension wrapping a C library: CRBTree.

Usage

The package declares 2 classes: TreeSet, which behaves as a normal set, but maintains a natural order thanks to the underlying Red-Black tree, and TreeMap which is the same as a mapping.

At the time of this writing, most methods from set and dict should work as expected, except for copy which is currently not implemented.

Example:

from pyrbtree import TreeSet

ts = TreeSet('acbfd')
ts.add('e')
print(ts)

should output:

{'a', 'b', 'c', 'd', 'e', 'f'}

Installation

From PyPI

pip install pyrbtree

From GitHub

This is the recommended way if you want to contribute or simply tweak pyrbtree to your own requirements. You can get a local copy by downloading a zipfile but if you want to make changes, you should rather clone the repository to have access to all git goodies:

git clone https://github.com/s-ball/pyrbtree.git --recurse-submodules

You can then install it in your main Python installation or in a venv with:

pip install .

or on Windows with the launcher:

py -m pip install .

Development

The GitHub repository contains an unittest test package. From the main folder, tests can be launched with:

You must install from the repository in development mode:

git clone https://github.com/s-ball/pyrbtree.git --recurse-submodules
pip install -e .

Then you can run the tests with:

python -m unittest discover

Wheel format

The extension module only uses the so-called limited API. The binary wheel is expected to be compatible with any Python version above 3.7 for the same architecture. Currently, it is only provided for a Windows 64 bits platform.

Contributions

Contributions are welcome, including issues on GitHub. Problems are expected to be documented so that they can be reproduced. But I only develop this on my free time, so I cannot guarantee quick answers...

Disclaimer: alpha quality

The main classes are already well tested, but the copy method is still to be implemented.

License

This work is licenced under a MIT Licence. See LICENSE.txt

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

pyrbtree-0.6.1.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

pyrbtree-0.6.1-cp37-abi3-win_amd64.whl (14.1 kB view details)

Uploaded CPython 3.7+ Windows x86-64

File details

Details for the file pyrbtree-0.6.1.tar.gz.

File metadata

  • Download URL: pyrbtree-0.6.1.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pyrbtree-0.6.1.tar.gz
Algorithm Hash digest
SHA256 56cd5c58f430d38970c7fc713b01cbee804c22d9a10bb36d40f6ccf75a49d617
MD5 0c412ee97684cbb3e503b8e23d619677
BLAKE2b-256 534b78e3210db899f0d7953385eb7faaeca026a0f8ba4fb02c3e31fd9dd5d363

See more details on using hashes here.

File details

Details for the file pyrbtree-0.6.1-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: pyrbtree-0.6.1-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for pyrbtree-0.6.1-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b057399f561969125f57f947719a99fba18e5184c01cb27b8d575a70e701d65d
MD5 94efbf09a4f918b33f52a3e117b8794e
BLAKE2b-256 f2fa92e5807dc4f333adbb6dbb0753cb3e9f8880e0362a4d9187e54118a0d2a6

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