{ "info": { "author": "Sambhav Jain", "author_email": "sambhavjain2612@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Bloom Filter\n\nImplemented in Python 3.\n\n- The price we pay for efficiency through bloom filters is that it is probabilistic in nature that means, there might be some **_False Positive_** results. False positive means, it might tell that given username is already taken but actually it\u00e2\u20ac\u2122s not.\n- Not being **_False Negative_** such that telling that username doesn't exist while it is there, i.e., if exists it reports it's existenece in terms of maybe, else if not present it is 100% confident to report the same.\n- Deleting elements from filter is not possible because, if we delete a single element by clearing bits at indices generated by k hash functions, it might cause deletion of few other elements.\n\n## Installation\n\n**`pip install bloomf==0.2`**\n\nDistributed as a [PyPi](https://pypi.org/project/bloomf/) Package.\n\n## Usage\n\nYou can use this bloom filter as follows -\n\n```python\nfrom bloomf import BloomFilter\n\nn = 10 # number of items to be added\np = 0.04 # FP Probablity\n\nfilter = BloomFilter(n, p)\n\nprint(\"Size of bit array: {}\" . format(filter.size))\nprint(\"False positive Probability: {}\" . format(filter.fp_prob))\nprint(\"Number of hash functions: {}\" . format(filter.hash_count))\n\nword_present = ['abound', 'abounds', 'abundance', 'abundant', 'accessable', 'bloom', 'blossom', 'bolster', 'bonny', 'bonus', 'bonuses']\nword_absent = ['bluff', 'cheater', 'hate', 'war', 'humanity', 'racism', 'hurt', 'facebook', 'sambhav', 'twitter']\n\nfor i in word_present:\n filter.add(i)\n\ntest_words = word_present[:5] + word_absent\n\nfor word in test_words:\n if filter.check(word):\n if word in word_absent:\n print(\"'{}' is a false positive!\" . format(word))\n else:\n print(\"'{}' is a probably present!\" . format(word))\n else:\n print(\"'{}' is 100% not present!\" . format(word))\n```\n\n### Dependencies\n\n- bitarray\n- mmh3\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sambhav2612/karumanchi/tree/master/bloom-filter", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "bloomf", "package_url": "https://pypi.org/project/bloomf/", "platform": "", "project_url": "https://pypi.org/project/bloomf/", "project_urls": { "Homepage": "https://github.com/sambhav2612/karumanchi/tree/master/bloom-filter" }, "release_url": "https://pypi.org/project/bloomf/0.3/", "requires_dist": null, "requires_python": "", "summary": "Simple Bloom Filter implmentation in Python", "version": "0.3" }, "last_serial": 4065492, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "4633964346b61b62f6fbb57b0709eaf6", "sha256": "168ed707ee52f448f112627bfcc36cdb992b288e3bd35b96bdca9f9c8012c7ae" }, "downloads": -1, "filename": "bloomf-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4633964346b61b62f6fbb57b0709eaf6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2676, "upload_time": "2018-07-11T17:44:57", "url": "https://files.pythonhosted.org/packages/b7/db/e4ca4c9a5f51e0228ada0fe7d848bb4b22110350bfc0c581988a66522dcc/bloomf-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c38b70d5107362ff451d080e5de524f", "sha256": "b90235962acce5b7f19e258b4d24a6e3e45b6a9dfb4307798ac7d9a2bd27616e" }, "downloads": -1, "filename": "bloomf-0.1.tar.gz", "has_sig": false, "md5_digest": "7c38b70d5107362ff451d080e5de524f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1904, "upload_time": "2018-07-11T17:44:59", "url": "https://files.pythonhosted.org/packages/dd/85/7b7d4981fc98ca4da5bf4f8962287233c785f178985aa3fd94b04cc65d72/bloomf-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "b9d2a3ed6276ed353c11e25523817549", "sha256": "5dde8fa9e054bde675d347bdf7001abf2fd0cbdc741349464bdf08f6051c915a" }, "downloads": -1, "filename": "bloomf-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b9d2a3ed6276ed353c11e25523817549", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3247, "upload_time": "2018-07-11T17:55:53", "url": "https://files.pythonhosted.org/packages/c6/37/b931adcd422b9548ac4b3bde6fbc562fbc731631b8d74c4892a36749f6ea/bloomf-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "761e5bd5fbc6143393a27709b510a8db", "sha256": "d53bf7e0ae8d5948ee108ace29769c9ae8c6e708b931a148c8ecd523e823d8dc" }, "downloads": -1, "filename": "bloomf-0.2.tar.gz", "has_sig": false, "md5_digest": "761e5bd5fbc6143393a27709b510a8db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2516, "upload_time": "2018-07-11T17:55:56", "url": "https://files.pythonhosted.org/packages/ca/2e/754cc4ec38a80cac47eb92cce5e0c72e27d5add79cf9f56c78ed2e4e2cfe/bloomf-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "24425c4f27aab08c6fe7582e0b2437d0", "sha256": "ef97b6d720241d482dbd8bbf433e7a99f91589d9f5afeee82e35050fca5e3db0" }, "downloads": -1, "filename": "bloomf-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "24425c4f27aab08c6fe7582e0b2437d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3664, "upload_time": "2018-07-16T12:08:16", "url": "https://files.pythonhosted.org/packages/88/8f/408cf8f074034f91e3f40512e8abb2fb694ae73b886f201487875715b139/bloomf-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b8bf48e479969c988051768470a4aaa", "sha256": "be3f1a00814e327034c2125da71230a785577280e3c76c977a74df34c0e0c937" }, "downloads": -1, "filename": "bloomf-0.3.tar.gz", "has_sig": false, "md5_digest": "3b8bf48e479969c988051768470a4aaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2781, "upload_time": "2018-07-16T12:08:17", "url": "https://files.pythonhosted.org/packages/e7/29/be629fb306722944f6f599993a49545c10e77e2073159a1c307e58444b62/bloomf-0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "24425c4f27aab08c6fe7582e0b2437d0", "sha256": "ef97b6d720241d482dbd8bbf433e7a99f91589d9f5afeee82e35050fca5e3db0" }, "downloads": -1, "filename": "bloomf-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "24425c4f27aab08c6fe7582e0b2437d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3664, "upload_time": "2018-07-16T12:08:16", "url": "https://files.pythonhosted.org/packages/88/8f/408cf8f074034f91e3f40512e8abb2fb694ae73b886f201487875715b139/bloomf-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3b8bf48e479969c988051768470a4aaa", "sha256": "be3f1a00814e327034c2125da71230a785577280e3c76c977a74df34c0e0c937" }, "downloads": -1, "filename": "bloomf-0.3.tar.gz", "has_sig": false, "md5_digest": "3b8bf48e479969c988051768470a4aaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2781, "upload_time": "2018-07-16T12:08:17", "url": "https://files.pythonhosted.org/packages/e7/29/be629fb306722944f6f599993a49545c10e77e2073159a1c307e58444b62/bloomf-0.3.tar.gz" } ] }