Simple and fast pythonic bloomfilter
From wikipedia: "A Bloom filter is a space-efficient probabilistic data structure, conceived by Burton Howard Bloom in 1970, that is used to test whether an element is a member of a set. False positive matches are possible, but false negatives are not – in other words, a query returns either "possibly in set" or "definitely not in set". Elements can be added to the set, but not removed (though this can be addressed with a "counting" filter); the more elements that are added to the set, the larger the probability of false positives."
This filter supports:
- Saving, reloading with pickle.
- Stats
- Entropy analysis
- Internal and external hashing of data.
- raw filter merging
Installing:
sudo pip install fastbloomfilter
External creation of the bloom filter file:
python mkbloom.py /tmp/filter.blf
Importing:
>>> from fastBloomFilter import bloom
>>> bf = bloom.BloomFilter(array_size=1024**3)
Or
>>> from fastBloomFilter import bloom
>>> bf = bloom.BloomFilter(filename='/tmp/filter.blf')
Adding data to it:
>>> bf.add('30000')
>>> bf.add('1230213')
>>> bf.add('1')
Printing stats:
>>> bf.stat()
Or:
>>> bf.info()
Querying data:
>>> print(bf.query('1'))
True
>>> print(bf.query('1230213'))
True
>>> print(bf.query('12'))
False
>>> print(bf['1'])
True
Querying data and at the same time adding it:
>>> print(bf.update('1'))
False
# False means the object wasn't existing and was added.
>>> print(bf.update('1'))
True
# True means the object existed and nothing new was added.
>>> print(bf.update('2'))
False
>>> print(bf.update('2'))
True
Merging two filters:
Create first filter:
>>> from fastBloomFilter import bloom
>>> bf1 = bloom.BloomFilter(array_size=1024**3)
>>> bf1.add("1")
Create second filter:
>>> from fastBloomFilter import bloom
>>> bf2 = bloom.BloomFilter(array_size=1024**3)
>>> bf2.add("2")
Merge the two filters into a third filter:
>>> bf3 = bf1 + bf2
Check the elements in the third filter:
>>> print(bf3["1"])
True
>>> print(bf3["2"])
True
Contributing
Contributons:
Are welcome!
Criteria: - They should not include hidden folders or files of any ide environment.
- They should not delete big portions of the project.
- They should not include files that does not have anything to do with the project.
- They should not change the API. (API changes should be proposed with Issues as enhancements)
- They should not include any obfuscated code.
- They should not include binaries.
- They should be in small PRs for faster reviewing process.
- They should include a small testcase.
- Any contribution not hornoring this criteria will be rejected until it does.
Metadata
Release files for fastbloomfilter 0.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastbloomfilter-0.0.13.tar.gz | 19.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastbloomfilter-0.0.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.7 kB
Release files / fastbloomfilter-0.0.13.tar.gz
| Download URL | fastbloomfilter-0.0.13.tar.gz |
|---|---|
| Size | 19.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5d548c915ea5e8ce4bbe29445d123aef3562703b46529e4150dbd09bc4b21f05
|
|
BLAKE2b-256 checksum How to use checksums |
ed695ec865a3c6b679f139ae14dfc21f18a95bcf7df1a60f5754fcfe88b6800a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.
Transparency logRelease files / fastbloomfilter-0.0.13-py3-none-any.whl
| Download URL | fastbloomfilter-0.0.13-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
943997559608722ad6bce825c6990210368c6c28ccc955c39495919a747c9e96
|
|
BLAKE2b-256 checksum How to use checksums |
1c8b61d1ffb53d2e8de7229293acfc6a2a1b4c69a1ecf3a762fff0141af00108
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 25, 2026.
Transparency log