A fast implementation of Bloom filter for Python built on mmap
Project description
pybloomer
pybloomer is a Python 3 compatible fork of pybloomfiltermmap by @axiak.
The goal of pybloomer
is simple: to provide a fast, simple, scalable, correct library for Bloom filters in Python.
Why pybloomer?
There are a couple reasons to use this module:
- It natively uses mmaped files.
- It is fast (see benchmarks).
- It natively does the set things you want a Bloom filter to do.
Quickstart
After you install, the interface to use is a cross between a file interface and an ste interface. As an example:
>>> import pybloomer
>>> fruit = pybloomer.BloomFilter(100000, 0.1, '/tmp/words.bloom')
>>> fruit.update(('apple', 'pear', 'orange', 'apple'))
>>> len(fruit)
3
>>> 'mike' in fruit
False
>>> 'apple' in fruit
True
To create an in-memory filter, simply omit the file location:
>>> cakes = pybloomer.BloomFilter(10000, 0.1)
Caveat: it is currently not possible to persist this filter later.
Docs
Current docs are available at pybloomer.rtfd.io.
Install
To install:
$ pip install pybloomer
and you should be set.
Note to Python 2 to < 3.5 users
This library is specifically meant for Python 3.5 and above. As of 2020, we strongly advise you to switch to an actively maintained distribution of Python 3. If for any reason your current environment is restricted to Python 2, please see pybloomfiltermmap. Please note that the latter is not actively maintained and will lack bug fixes and new features.
History and Future
pybloomfiltermmap is an excellent Bloom filter implementation for Python 2 by @axiak and contributors. I, @prashnts, made initial changes to add support for Python 3 sometime in 2016 as the current pybloomer on PyPI
. Since then, with the help of contributors, there have been incremental improvements and bug fixes while maintaining the API from versions 0.4.x
and below.
Some new features and changes were first introduced in version 0.5.0
. From this point on, the goal is to reach stability, as well as add a few more APIs to expand upon the use cases. While we can't guarantee that we won't change the current interface, the transition from versions 0.4.x
and below should be quick one liners. Please open an issue if we broke your build!
Suggestions, bug reports, and / or patches are welcome!
Contributions and development
When contributing, you should set up an appropriate Python 3 environment and install the dependencies listed in requirements-dev.txt
.
Package installation depends on a generated pybloomer.c
file, which requires Cython module to be in your current environment.
Maintainers
License
See the LICENSE file. It's under the MIT License.
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 Distributions
File details
Details for the file pybloomer-0.6.0.tar.gz
.
File metadata
- Download URL: pybloomer-0.6.0.tar.gz
- Upload date:
- Size: 521.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d3a988ae79342feeb59dedeaf62057f8e58cdd410fc07c39dd9030f2c0f6b131 |
|
MD5 | cb630c1407abb04347b642c1d48193d0 |
|
BLAKE2b-256 | 9cdf46c351e7b9ff029ff7c0768176cec016e501375d8870abf52d4b98dcf154 |
File details
Details for the file pybloomer-0.6.0-py3.11-win-amd64.egg
.
File metadata
- Download URL: pybloomer-0.6.0-py3.11-win-amd64.egg
- Upload date:
- Size: 56.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e2ba04560d6133b7e19e0e890db5d15abbdbf25da52e9e7c8b8ae5bab7bbc2f |
|
MD5 | 88f12410e268abdb34fee2d15ee93f34 |
|
BLAKE2b-256 | da929f02095a334062cb2be521f3a23302f0b65ea79c1c2ebbbaaf2452cdc1ea |
File details
Details for the file pybloomer-0.6.0-cp311-cp311-win_amd64.whl
.
File metadata
- Download URL: pybloomer-0.6.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 73.5 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b543bb48ec2230749ccfb9200b98274ffb88bfee793af2dfec7f04b98810bd0 |
|
MD5 | ce89cb542d36a33b08b20d72ac0b20be |
|
BLAKE2b-256 | d6168e3db45569863480ebea4034d2a09f922ff6888d1172cfb8c2b2b415cf70 |