Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
pybloomfiltermmap3 is a Python 3 compatible fork of pybloomfiltermmap by @axiak.
The goal of pybloomfiltermmap3
is simple: to provide a fast, simple, scalable, correct library for Bloom filters in Python.
There are a couple reasons to use this module:
After you install, the interface to use is a cross between a file interface and an ste interface. As an example:
>>> import pybloomfilter
>>> fruit = pybloomfilter.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:
>>> fruit = pybloomfilter.BloomFilter(10000, 0.1)
>>> fruit.add('apple')
>>> 'apple' in fruit
True
These in-memory filters can be pickled and reloaded:
>>> import pickle
>>> pickled_fruit = pickle.dumps(fruit)
>>> unpickled_fruit = pickle.loads(pickled_fruit)
>>> 'apple' in unpickled_fruit
True
Caveat: it is currently not possible to persist this filter later as an mmap file.
Current docs are available at pybloomfiltermmap3.rtfd.io.
To install:
pip install pybloomfiltermmap3
and you should be set.
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.
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 pybloomfiltermmap3 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!
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 pybloomfilter.c
file, which requires Cython module to be in your current environment.
# Installs the venv and python3-dev packages
sudo apt install python3.10-venv python3-dev
# Creates a virtual env called "env"
python -m venv env
# Activates the created virtual env
source ./env/bin/activate
python -m pip install --upgrade pip
pip install cython
python setup.py develop
python setup.py test
See the LICENSE file. It's under the MIT License.
FAQs
A fast implementation of Bloom filter for Python 3 built on mmap
We found that pybloomfiltermmap3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.