Skip to main content

Compressed integer sets based on Roaring bitmaps.

Project description

Roaring bitmaps are fast, compressed, and portable bitmaps, used to store unique sorted integer sets. These bitmaps offer better real-world space complexity and performance than typical hash sets (such as Python’s built-in set), and can be serialized into a portable format for storage and interop with the C/C++, Java and Go libraries.

This library makes the CRoaring implementation available in Python 2.7 and 3.5+. It uses CFFI, so it works on both CPython and PyPy. The full Python set interface is implemented. Comprehensive tests are included.

Installation

pip install croaring

The CRoaring source is included with the Python library, so you don’t need to install it from elsewhere (though you may need a C compiler available if a binary package is unavailable for your architecture).

Usage

Instantiate a croaring.RoaringBitmap(), and use it just like a normal set:

>>> import croaring
>>> bitmap = croaring.RoaringBitmap()
>>> bitmap
RoaringBitmap([])
>>> bitmap.add(1)
>>> bitmap.add(4572)
>>> bitmap.add(326)
>>> bitmap
RoaringBitmap([1, 326, 4572])

You can use either binary operators (|, &, ^ and -) or their English names (union, intersection, symmetric_difference and difference):

>>> bitmap | RoaringBitmap([50, 95])
RoaringBitmap([1, 50, 95, 326, 4572])
>>> bitmap & RoaringBitmap([200, 326])
RoaringBitmap([326])
>>> bitmap ^ RoaringBitmap([200, 326])
RoaringBitmap([1, 200, 4572])

Since the bitmaps are ordered, indexing (including negative) is supported:

>>> bitmap[1]
326
>>> bitmap[-1]
4572

Finally, you can construct a bitmap from a range, similar to the arguments to Python’s built-in range:

>>> RoaringBitmap.range(10)
RoaringBitmap([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> RoaringBitmap.range(2, 10)
RoaringBitmap([2, 3, 4, 5, 6, 7, 8, 9])
>>> RoaringBitmap.range(2, 10, 3)
RoaringBitmap([2, 5, 8])

License

CRoaring is licensed under the Apache License v2.0:

Copyright 2016 The CRoaring authors

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

All other code is released under the Unlicense:

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to http://unlicense.org/

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

croaring-0.0.1.tar.gz (97.8 kB view details)

Uploaded Source

Built Distributions

croaring-0.0.1-cp36-cp36m-macosx_10_13_x86_64.whl (107.3 kB view details)

Uploaded CPython 3.6mmacOS 10.13+ x86-64

croaring-0.0.1-cp27-cp27m-macosx_10_13_x86_64.whl (105.6 kB view details)

Uploaded CPython 2.7mmacOS 10.13+ x86-64

File details

Details for the file croaring-0.0.1.tar.gz.

File metadata

  • Download URL: croaring-0.0.1.tar.gz
  • Upload date:
  • Size: 97.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for croaring-0.0.1.tar.gz
Algorithm Hash digest
SHA256 fd150946104d2015a00eeb592c65547654ee1654f9257d559f1d7d78b28c2ae7
MD5 dbf289df09822470114c836bfa06e759
BLAKE2b-256 db3a2118d6f0311f3626b2579802baf779494b817eb505800158c04629bee184

See more details on using hashes here.

File details

Details for the file croaring-0.0.1-cp36-cp36m-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for croaring-0.0.1-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 500f88e7db5d9006703dc7ca2d985ee1a9ea4a17f9a0bca2018141a574babec1
MD5 388ceecf6159719939e5b4a827948b48
BLAKE2b-256 5de7de9bd107d2a1418a4d74f46fe046b9c804f6ec08bcdcfb8067ff0d99437b

See more details on using hashes here.

File details

Details for the file croaring-0.0.1-cp27-cp27m-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for croaring-0.0.1-cp27-cp27m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ff6f14f312af58080a00888b8ecdd01927cb6e75e84a4cc774e6f3a5b6706ed2
MD5 e10402756af56b27f710fd300c7bb29f
BLAKE2b-256 df9d03cfaf43e5b808192dec7b8f9101447f4d1e733b0abe10b069f0668e26a1

See more details on using hashes here.

Supported by

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