{ "info": { "author": "Rajath Agasthya", "author_email": "rajathagasthya@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "cuckoopy: Pure Python implementation of Cuckoo Filter\n=====================================================\n\n.. image:: https://img.shields.io/pypi/v/cuckoopy.svg\n :target: https://pypi.python.org/pypi/cuckoopy\n\n.. image:: https://img.shields.io/pypi/l/cuckoopy.svg\n :target: https://pypi.python.org/pypi/cuckoopy\n\n.. image:: https://img.shields.io/pypi/wheel/cuckoopy.svg\n :target: https://pypi.python.org/pypi/cuckoopy\n\n.. image:: https://img.shields.io/pypi/pyversions/cuckoopy.svg\n :target: https://pypi.python.org/pypi/cuckoopy\n\n.. image:: https://travis-ci.org/rajathagasthya/cuckoopy.svg?branch=master\n :target: https://travis-ci.org/rajathagasthya/cuckoopy\n\n\nCuckoo Filter, like Bloom Filter, is a probabilistic data structure for fast,\napproximate set membership queries, with some small false positive probability.\nWhile Bloom Filters are space efficient and are widely used, they do not\nsupport deletion of items from the set without rebuilding the entire filter.\nThis can be overcome with several extensions to Bloom Filters such as\nCounting Bloom Filters, but with significant space overhead.\n\nCuckoo Filters support adding and removing items dynamically while achieving\nhigher performance than Bloom filters. A Cuckoo Filter is based on partial-key\ncuckoo hashing that stores only fingerprint of each item inserted. Cuckoo\nFilters provide higher lookup performance than Bloom Filters and uses less\nspace than Bloom Filters if the target false positive rate is < 3%.\n\nThe original research paper `Cuckoo Filter: Practically Better Than Bloom\n`_ by Bin Fan,\nDavid G. Andersen, Michael Kaminsky and Michael D. Mitzenmacher\ndescribes the data structure in more detail.\n\n\nInstallation\n------------\nMake sure you have Python_ (3.5+) installed on your system. If you don't have\nit, follow `these instructions `_\nto install it.\n\n.. _Python: https://www.python.org/\n\nInstall cuckoopy using:\n\n.. code-block::\n\n $ pip install cuckoopy\n\n\nUsage\n-----\n.. code-block:: python\n\n >>> from cuckoopy import CuckooFilter\n # Initialize a cuckoo filter with 10000 buckets with bucket size 4 and fingerprint size of 1 byte\n >>> cf = CuckooFilter(capacity=10000, bucket_size=4, fingerprint_size=1)\n\nInsert an item into the filter:\n\n.. code-block:: python\n\n >>> cf.insert('Hello!')\n True\n\nLookup an item in the filter:\n\n.. code-block:: python\n\n >>> cf.contains('Hello!')\n True\n >>> 'Hello!' in cf\n True\n\nDelete an item from the filter:\n\n.. code-block:: python\n\n >>> cf.delete('Hello!')\n True\n\nGet the size (number of items present) of the filter:\n\n.. code-block:: python\n\n >>> cf.size\n 4\n >>> len(cf)\n 4\n\n\nRunning tests locally\n---------------------\nThis project uses `pytest `_ for tests. Make sure you\nhave ``tox`` installed on your local machine and from the root directory of the\nproject, run:\n\n.. code-block::\n\n $ tox\n\nThis command runs unit tests in python 3.5 and python 3.6 environments with\ncode coverage details. It also runs pep8 (flake8) checks. To run tox against a\nspecific environment (py35, py36 or pep8), use the ``-e`` option.\n\n\nLicense\n-------\n`MIT License `_\n\n\nUseful Links\n------------\n* `Probabilistic Filters By Example `_\n* `Original C++ implementation by the authors of the research paper `_", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rajathagasthya/cuckoopy", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "cuckoopy", "package_url": "https://pypi.org/project/cuckoopy/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cuckoopy/", "project_urls": { "Homepage": "https://github.com/rajathagasthya/cuckoopy" }, "release_url": "https://pypi.org/project/cuckoopy/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Cuckoo Filter implementation in Python", "version": "0.1.1" }, "last_serial": 2632454, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d9532d3c474a4592027b667c3ede77d9", "sha256": "704549e651ca03e17ffecf4f5810ee63896dcc6c452c3c4d3a9fd51b3c788aff" }, "downloads": -1, "filename": "cuckoopy-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d9532d3c474a4592027b667c3ede77d9", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 9155, "upload_time": "2017-02-09T08:27:10", "url": "https://files.pythonhosted.org/packages/0b/c6/429b387caf14466ff34808d19c6c717e53f2962c5ffe445604d23c42869a/cuckoopy-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47bfb849b03d5d45b5b37216ae6218f6", "sha256": "e67f601d9417bbd8bcae54a994882f598636e876e3148f0c27720f34a7056b05" }, "downloads": -1, "filename": "cuckoopy-0.1.0.tar.gz", "has_sig": false, "md5_digest": "47bfb849b03d5d45b5b37216ae6218f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5598, "upload_time": "2017-02-09T08:27:08", "url": "https://files.pythonhosted.org/packages/4c/c9/0a4ea7930bc565df4a8f7dd8a9bba27cbdba83b0904e09e36b1005bcc70c/cuckoopy-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b945723575f7017b15c6cd9941c04a5d", "sha256": "7c9a13420753d357df7ced76e8ecc11da1d2e91ede7a546f4ecc6d3de2b50746" }, "downloads": -1, "filename": "cuckoopy-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b945723575f7017b15c6cd9941c04a5d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7899, "upload_time": "2017-02-10T04:44:24", "url": "https://files.pythonhosted.org/packages/37/44/4ce1f48668c48808e5458d16f3e771146c3d32dfb62d8b5d4a355dd2a9e4/cuckoopy-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cad3533bd02d7c64d85c01b11f936479", "sha256": "f89e64ce38414f98c7e032a7590bffd540e422798270f839889e0e479018a8b2" }, "downloads": -1, "filename": "cuckoopy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cad3533bd02d7c64d85c01b11f936479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5626, "upload_time": "2017-02-10T04:44:26", "url": "https://files.pythonhosted.org/packages/8e/41/65cdc4812f7771c0ee3618ea3f676cadab78261f1eef132f3af4a930f35b/cuckoopy-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b945723575f7017b15c6cd9941c04a5d", "sha256": "7c9a13420753d357df7ced76e8ecc11da1d2e91ede7a546f4ecc6d3de2b50746" }, "downloads": -1, "filename": "cuckoopy-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "b945723575f7017b15c6cd9941c04a5d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7899, "upload_time": "2017-02-10T04:44:24", "url": "https://files.pythonhosted.org/packages/37/44/4ce1f48668c48808e5458d16f3e771146c3d32dfb62d8b5d4a355dd2a9e4/cuckoopy-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cad3533bd02d7c64d85c01b11f936479", "sha256": "f89e64ce38414f98c7e032a7590bffd540e422798270f839889e0e479018a8b2" }, "downloads": -1, "filename": "cuckoopy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "cad3533bd02d7c64d85c01b11f936479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5626, "upload_time": "2017-02-10T04:44:26", "url": "https://files.pythonhosted.org/packages/8e/41/65cdc4812f7771c0ee3618ea3f676cadab78261f1eef132f3af4a930f35b/cuckoopy-0.1.1.tar.gz" } ] }