{ "info": { "author": "Son Nguyen Thanh", "author_email": "thanhson16198@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# better_profanity\n*Blazingly fast cleaning swear words (and their leetspeak) in strings*\n\n[![release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https%3A%2F%2Fpypi.org%2Fpypi%2Fbetter-profanity%2Fjson&query=%24.info.version&colorB=blue)](https://github.com/snguyenthanh/better_profanity/releases/latest)\n[![Build Status](https://travis-ci.com/snguyenthanh/better_profanity.svg?branch=master)](https://travis-ci.com/snguyenthanh/better_profanity)\n![python](https://img.shields.io/badge/python-3-blue.svg)\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=popout)](https://github.com/snguyenthanh/better_profanity/blob/master/LICENSE)\n\n\nInspired from package [profanity](https://github.com/ben174/profanity) of [Ben Friedland](https://github.com/ben174), this library is significantly faster than the original one, by using string comparison instead of regex.\n\nIt supports [modified spellings](https://en.wikipedia.org/wiki/Leet) (such as `p0rn`, `h4NDjob`, `handj0b` and `b*tCh`).\n\n## Requirements\nThis package only works with `Python 3`.\n\n## Installation\n```\n$ pip install better_profanity\n```\n\n## Unicode characters\n\nOnly Unicode characters from categories `Ll`, `Lu`, `Mc` and `Mn` are added. More on Unicode categories can be found [here][unicode category link].\n\n[unicode category link]: https://en.wikipedia.org/wiki/Template:General_Category_(Unicode)\n\nNot all languages are supported yet, such as *Chinese*.\n\n## Wordlist\nMost of the words in the default [wordlist](./better_profanity/profanity_wordlist.txt) are referred from [Full List of Bad Words and Top Swear Words Banned by Google](https://github.com/RobertJGabriel/Google-profanity-words).\n\nThe wordlist contains a total of __106,992 words__, including 317 words from the default [profanity_wordlist.txt](./better_profanity/profanity_wordlist.txt) and their variants by modified spellings.\n\nIts total size in memory is 10.49+MB.\n\n## Usage\nIt is highly recommended to call `profanity.load_censor_words()` at initialization, to reduce the runtime for the first `profanity.censor()` call.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n profanity.load_censor_words()\n\n text = \"You p1ec3 of sHit.\"\n censored_text = profanity.censor(text)\n print(censored_text)\n # You **** of ****.\n```\n\nAll modified spellings of words in [profanity_wordlist.txt](./better_profanity/profanity_wordlist.txt) will be generated. For example, the word `handjob` would be loaded into:\n\n```\n'handjob', 'handj*b', 'handj0b', 'handj@b', 'h@ndjob', 'h@ndj*b', 'h@ndj0b', 'h@ndj@b',\n'h*ndjob', 'h*ndj*b', 'h*ndj0b', 'h*ndj@b', 'h4ndjob', 'h4ndj*b', 'h4ndj0b', 'h4ndj@b'\n```\n\nThe full mapping of the library can be found in [profanity.py](./better_profanity/profanity.py#L9-L18).\n\n### 1. Censor swear words from a text\nBy default, `profanity` replaces each swear words with 4 asterisks `****`.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n text = \"You p1ec3 of sHit.\"\n\n censored_text = profanity.censor(text)\n print(censored_text)\n # You **** of ****.\n```\n\n### 2. Censor doesn't care about word dividers\nThe function `.censor()` also hide words separated not just by an empty space ` ` but also other dividers, such as `_`, `,` and `.`. Except for `@, $, *, \", '`.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n text = \"...sh1t...hello_cat_fuck,,,,123\"\n\n censored_text = profanity.censor(text)\n print(censored_text)\n # \"...****...hello_cat_****,,,,123\"\n```\n\n### 3. Censor swear words with custom character\n4 instances of the character in second parameter in `.censor()` will be used to replace the swear words.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n text = \"You p1ec3 of sHit.\"\n\n censored_text = profanity.censor(text, '-')\n print(censored_text)\n # You ---- of ----.\n```\n\n### 4. Check if the string contains any swear words\nFunction `.contains_profanity()` return `True` if any words in the given string has a word existing in the wordlist.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n dirty_text = \"That l3sbi4n did a very good H4ndjob.\"\n\n profanity.contains_profanity(dirty_text)\n # True\n```\n\n### 5. Censor swear words with a custom wordlist\nFunction `.load_censor_words()` takes a `List` of strings as censored words.\nThe provided list will replace the default wordlist.\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n custom_badwords = ['happy', 'jolly', 'merry']\n profanity.load_censor_words(custom_badwords)\n\n print(profanity.contains_profanity(\"Fuck you!\"))\n # Fuck you\n\n print(profanity.contains_profanity(\"Have a merry day! :)\"))\n # Have a **** day! :)\n```\n\n### 6. Use both default and your custom wordlist\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n custom_badwords = ['happy', 'jolly', 'merry']\n profanity.add_censor_words(custom_badwords)\n\n print(profanity.contains_profanity(\"Happy you, fuck!\"))\n # **** you, ****!\n```\n\n\n### 7. Censor Unicode characters\nNo extra steps needed!\n\n```\nfrom better_profanity import profanity\n\nif __name__ == \"__main__\":\n bad_text = \"\u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0301\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u044f\u0301\u0434\u0438\u044f \u043e\u0442 \u044f\u0301\u0434\u0430 \u0444\u0443\u0301\u0433\u0443 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0301\u0435\u0442 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440\"\n profanity.load_censor_words([\"\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u044f\u0301\u0434\u0438\u044f\"])\n\n censored_text = profanity.censor(text)\n print(censored_text)\n # \u042d\u0444\u0444\u0435\u043a\u0442\u0438\u0301\u0432\u043d\u043e\u0433\u043e **** \u043e\u0442 \u044f\u0301\u0434\u0430 \u0444\u0443\u0301\u0433\u0443 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0301\u0435\u0442 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440\n```\n\n## Limitations\n\n1. As the library compares each word by characters, the censor could easily be bypassed by adding any character(s) to the word:\n\n```\nprofanity.censor('I just have sexx')\n# returns 'I just have sexx'\n\nprofanity.censor('jerkk off')\n# returns 'jerkk off'\n```\n\n2. Any word in [wordlist](https://github.com/snguyenthanh/better_profanity/blob/master/better_profanity/profanity_wordlist.txt) that have non-space separators cannot be recognised, such as `s & m`, and therefore, it won't be filtered out. This problem was raised in [#5](https://github.com/snguyenthanh/better_profanity/issues/5).\n\n## Testing\n```\n$ python tests.py\n```\n\n## Versions\n\n- [v0.5.0](https://github.com/snguyenthanh/better_profanity/releases/tag/0.5.0) - Add the capability to add to the word list rather than replace it. #8\n- [v0.4.0](https://github.com/snguyenthanh/better_profanity/releases/tag/0.4.0) - Add compatibility to all versions of Python 3.\n- [v0.3.4](https://github.com/snguyenthanh/better_profanity/releases/tag/0.3.4) - Add significantly more swear words.\n- [v0.3.3](https://github.com/snguyenthanh/better_profanity/releases/tag/0.3.3) - Fix incompatibility with Python 3.5.\n- [v0.3.2](https://github.com/snguyenthanh/better_profanity/releases/tag/0.3.2) - Fix a typo in documentation.\n- [v0.3.1](https://github.com/snguyenthanh/better_profanity/releases/tag/0.3.1) - Remove unused dependencies.\n- [v0.3.0](https://github.com/snguyenthanh/better_profanity/releases/tag/0.3.0) - Add support for Unicode characters (Categories: Ll, Lu, Mc and Mn) [#2](https://github.com/snguyenthanh/better_profanity/pull/2).\n- [v0.2.0](https://github.com/snguyenthanh/better_profanity/releases/tag/0.2) - Bug fix + faster censoring\n- [v0.1.0](https://github.com/snguyenthanh/better_profanity/releases/tag/v0.1) - Initial release\n\n## Contributing\nPlease read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\nThis project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details\n\n## Special thanks to\n- [Andrew Grinevich](https://github.com/Derfirm) - Add support for Unicode characters.\n\n## Acknowledgments\n- [Ben Friedland](https://github.com/ben174) - For the inspiring package [profanity](https://github.com/ben174/profanity).\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/snguyenthanh/better_profanity", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "better-profanity", "package_url": "https://pypi.org/project/better-profanity/", "platform": "", "project_url": "https://pypi.org/project/better-profanity/", "project_urls": { "Homepage": "https://github.com/snguyenthanh/better_profanity" }, "release_url": "https://pypi.org/project/better-profanity/0.5.0/", "requires_dist": null, "requires_python": "==3.*", "summary": "Blazingly fast cleaning swear words (and their leetspeak) in strings", "version": "0.5.0" }, "last_serial": 5634570, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "7b5144f2c6d59373dad62a8449c6688c", "sha256": "255ae73560ac24805ff4ac54462966848b7d66ed6bc1bb54813a72190c704d9b" }, "downloads": -1, "filename": "better_profanity-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7b5144f2c6d59373dad62a8449c6688c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6702, "upload_time": "2018-11-11T18:06:30", "url": "https://files.pythonhosted.org/packages/15/c0/cfedb18e62dbf05c09dee30eb5a48789402759c41772be277af38ab3ac3c/better_profanity-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fda3d967282892656cf496fa765af1f", "sha256": "ca761ca1e04ad1f455b20acc795e77fe928d7117bc47bbce21ddf0d3e26a079f" }, "downloads": -1, "filename": "better_profanity-0.1.tar.gz", "has_sig": false, "md5_digest": "0fda3d967282892656cf496fa765af1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4574, "upload_time": "2018-11-11T18:06:32", "url": "https://files.pythonhosted.org/packages/d2/c0/57251e6e15edcf85a0cb0a1305b0e7e70c729e1b500e8da64e372a6809d5/better_profanity-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "2449fc6eaed43d946db49c03b4fa98cc", "sha256": "974e5920770469fd1b0e8cb84bd60c5f5fe1faa69a912276e1dd89304168567b" }, "downloads": -1, "filename": "better_profanity-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "2449fc6eaed43d946db49c03b4fa98cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 7829, "upload_time": "2018-11-12T09:25:46", "url": "https://files.pythonhosted.org/packages/a3/70/13660cc0702cc7c7779fea87e7c49930b8f849651b16b45faff546156d74/better_profanity-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0c5f5173467578602c23ceecb9ed395", "sha256": "a19d37a9a843b82cdc2b1fdfe5cee18dfebd56f07231526c1f6ff865e1a1138f" }, "downloads": -1, "filename": "better_profanity-0.2.tar.gz", "has_sig": false, "md5_digest": "a0c5f5173467578602c23ceecb9ed395", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 5362, "upload_time": "2018-11-12T09:25:47", "url": "https://files.pythonhosted.org/packages/ac/7d/72b78a12fec4ec2e8d803e70d0078b76d0a928de1fc159273d04b3dd764f/better_profanity-0.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "df36cd4373edba824683a1fc13c65ae3", "sha256": "b1a4d81d2043c0a02144fb54e0374f09f9c0819c241ab49368f48fedb65031b0" }, "downloads": -1, "filename": "better_profanity-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "df36cd4373edba824683a1fc13c65ae3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 39659, "upload_time": "2018-11-16T12:12:11", "url": "https://files.pythonhosted.org/packages/95/da/bd52d59576ed7bd6df49706b241c041e409271ff19159042408062ce8af6/better_profanity-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "48d21b6e6b9ce01304bafbb88e44f734", "sha256": "1bded63c646468d3ccb130fd9bb38aa3147b549f587c024a1bbb91547740b244" }, "downloads": -1, "filename": "better_profanity-0.3.0.tar.gz", "has_sig": false, "md5_digest": "48d21b6e6b9ce01304bafbb88e44f734", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 23083, "upload_time": "2018-11-16T12:12:12", "url": "https://files.pythonhosted.org/packages/1e/38/360cecd64a1c749e623552004d77876d5826cb1c2c8b82aa927ae29f50d4/better_profanity-0.3.0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "50a9f34c4f9bbb55c1a18ec6d74b915a", "sha256": "56a09ca464940407dce742d6dca6ce56f21b35b3087346e93dcf2f7b67edd9b7" }, "downloads": -1, "filename": "better_profanity-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "50a9f34c4f9bbb55c1a18ec6d74b915a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 39970, "upload_time": "2019-02-24T04:46:23", "url": "https://files.pythonhosted.org/packages/17/86/534ac64528b1250b4d1f07e0daa6b620347b9e98ab63e0e138bed0678a5f/better_profanity-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "faea19589bc3a51e8f2c17e666a1f736", "sha256": "462550812b5640582686d4222435e7b87566bde142258708a15bf39ea3d69cba" }, "downloads": -1, "filename": "better_profanity-0.3.2.tar.gz", "has_sig": false, "md5_digest": "faea19589bc3a51e8f2c17e666a1f736", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 23474, "upload_time": "2019-02-24T04:46:24", "url": "https://files.pythonhosted.org/packages/d2/d0/914f48fd1be6aded570dabb70029cad697c9fc0ba371e9892c9b0ccd219c/better_profanity-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "eba2b45db665300746a566941ee9c575", "sha256": "305789f46e4baa5f695f3b3e6e3557961a730c5386c11fe383d971edafc99c90" }, "downloads": -1, "filename": "better_profanity-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "eba2b45db665300746a566941ee9c575", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 39936, "upload_time": "2019-05-13T12:29:30", "url": "https://files.pythonhosted.org/packages/da/c5/bdfc50a5f296dc7e42937f756e61944b912f72a9d6a6f9d5c0a00ad94a9a/better_profanity-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b8bd9e1bba597ff22ae1a9a40e2344c8", "sha256": "07840275d2c15f5defb881807f9d1f934647c185baf39e8f98faf3a4b56d5058" }, "downloads": -1, "filename": "better_profanity-0.3.3.tar.gz", "has_sig": false, "md5_digest": "b8bd9e1bba597ff22ae1a9a40e2344c8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23447, "upload_time": "2019-05-13T12:29:31", "url": "https://files.pythonhosted.org/packages/68/16/e064b20ab27093c48779af7e4b73e0e4cf308a0ac69f30082cabdff023b3/better_profanity-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "0470a44ce9ab83654604c3f0f3d5144e", "sha256": "5e719342c38b4f1fa4441edf740d7603fbf44d42dbea97a172cb55acdcbddf58" }, "downloads": -1, "filename": "better_profanity-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0470a44ce9ab83654604c3f0f3d5144e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 41244, "upload_time": "2019-05-15T15:49:45", "url": "https://files.pythonhosted.org/packages/a0/a0/c347d34955a6247dca63afd6c4543e7cbe281b1ad2261220accdc299d346/better_profanity-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b30a759a01c09b42e14f578385cebb26", "sha256": "e5813cd6bac247879dc2b987accfbb2f409b737f046b59691d68d0b171245224" }, "downloads": -1, "filename": "better_profanity-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b30a759a01c09b42e14f578385cebb26", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24611, "upload_time": "2019-05-15T15:49:48", "url": "https://files.pythonhosted.org/packages/2e/9c/07965b277d456c64fe0172194ca39a8a57af0e33ac91e10034b9efdbcc12/better_profanity-0.3.4.tar.gz" } ], "0.3b0": [ { "comment_text": "", "digests": { "md5": "444b5161e8cbfa489682ffcbc78a9d35", "sha256": "91c86bb78a86b6dc9c119d484b65141c998f162ed1b6e3b945594a70ef1c297c" }, "downloads": -1, "filename": "better_profanity-0.3b0-py3-none-any.whl", "has_sig": false, "md5_digest": "444b5161e8cbfa489682ffcbc78a9d35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 39350, "upload_time": "2018-11-14T09:03:14", "url": "https://files.pythonhosted.org/packages/fc/ca/19ed97881f22a875b6238b18f613ee727bc62a381a21896ed28bcd936d16/better_profanity-0.3b0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19c76d5ba58326b568a7f7bfd4ebdfdf", "sha256": "dbfd6fc55e17794cafdf12dc7b2bef8bf95912a51b347789908d763d9c5d0021" }, "downloads": -1, "filename": "better_profanity-0.3b0.tar.gz", "has_sig": false, "md5_digest": "19c76d5ba58326b568a7f7bfd4ebdfdf", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 22670, "upload_time": "2018-11-14T09:03:16", "url": "https://files.pythonhosted.org/packages/7d/5e/761c38bd25e6c12b965b2d0b63990109a644fa4d3e8de4fa0abc18d64014/better_profanity-0.3b0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "020d36bb5026a31a22ce6cebfc7ba66c", "sha256": "de8d9b167251c9e440423c786385cb747abaca419803d68e0860cf440c4a22ae" }, "downloads": -1, "filename": "better_profanity-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "020d36bb5026a31a22ce6cebfc7ba66c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "==3.*", "size": 41290, "upload_time": "2019-05-26T03:10:38", "url": "https://files.pythonhosted.org/packages/48/41/459d15a482d2b229c6eca69d5be8626e69df7aa8064587ffc2a785663d77/better_profanity-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ff35500d9afcc611d1b99b6ced99fd5", "sha256": "97fa6c03aaf16a2987545958bb11956553c57e447b2f1fbe7e421ae6b4313266" }, "downloads": -1, "filename": "better_profanity-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6ff35500d9afcc611d1b99b6ced99fd5", "packagetype": "sdist", "python_version": "source", "requires_python": "==3.*", "size": 27336, "upload_time": "2019-05-26T03:10:40", "url": "https://files.pythonhosted.org/packages/d0/cb/5ac77cc4dd9a4cc0f3ce0b9a58431361e26f503e1d2fe1546983d04b9a13/better_profanity-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "aea25b73c57b6c37a3a27bf3a1370fe9", "sha256": "ab45c3d6a1a7873534d86f5fc39628ce3125eae9a48335ab18ef52cf18e2cd13" }, "downloads": -1, "filename": "better_profanity-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aea25b73c57b6c37a3a27bf3a1370fe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "==3.*", "size": 41347, "upload_time": "2019-08-05T14:26:30", "url": "https://files.pythonhosted.org/packages/df/b7/257ebae47c5abefaa358b41a100a01f894abdd6cef9f0110365fff246f73/better_profanity-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bdda3303c8cb75bd820d68116f6b9a6", "sha256": "b61d8574dec5ab9c6de31e5574dd0315412a81dd755edef6f154e72d391da72a" }, "downloads": -1, "filename": "better_profanity-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0bdda3303c8cb75bd820d68116f6b9a6", "packagetype": "sdist", "python_version": "source", "requires_python": "==3.*", "size": 27496, "upload_time": "2019-08-05T14:26:32", "url": "https://files.pythonhosted.org/packages/1d/8f/275f29a3534b79e48950a23d2a989ee934293a421a481a959736a310f1da/better_profanity-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "aea25b73c57b6c37a3a27bf3a1370fe9", "sha256": "ab45c3d6a1a7873534d86f5fc39628ce3125eae9a48335ab18ef52cf18e2cd13" }, "downloads": -1, "filename": "better_profanity-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aea25b73c57b6c37a3a27bf3a1370fe9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "==3.*", "size": 41347, "upload_time": "2019-08-05T14:26:30", "url": "https://files.pythonhosted.org/packages/df/b7/257ebae47c5abefaa358b41a100a01f894abdd6cef9f0110365fff246f73/better_profanity-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0bdda3303c8cb75bd820d68116f6b9a6", "sha256": "b61d8574dec5ab9c6de31e5574dd0315412a81dd755edef6f154e72d391da72a" }, "downloads": -1, "filename": "better_profanity-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0bdda3303c8cb75bd820d68116f6b9a6", "packagetype": "sdist", "python_version": "source", "requires_python": "==3.*", "size": 27496, "upload_time": "2019-08-05T14:26:32", "url": "https://files.pythonhosted.org/packages/1d/8f/275f29a3534b79e48950a23d2a989ee934293a421a481a959736a310f1da/better_profanity-0.5.0.tar.gz" } ] }