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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56cd5c58f430d38970c7fc713b01cbee804c22d9a10bb36d40f6ccf75a49d617 |
|
MD5 | 0c412ee97684cbb3e503b8e23d619677 |
|
BLAKE2b-256 | 534b78e3210db899f0d7953385eb7faaeca026a0f8ba4fb02c3e31fd9dd5d363 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | b057399f561969125f57f947719a99fba18e5184c01cb27b8d575a70e701d65d |
|
MD5 | 94efbf09a4f918b33f52a3e117b8794e |
|
BLAKE2b-256 | f2fa92e5807dc4f333adbb6dbb0753cb3e9f8880e0362a4d9187e54118a0d2a6 |