{ "info": { "author": "Saurabh Kumar", "author_email": "me+github@saurabh-kumar.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "python-usernames\n================\n\n|Build Status| |Coverage Status| |PyPI version|\n\nPython library to validate usernames suitable for use in public facing\napplications where use can choose login names and sub-domains.\n\nFeatures\n--------\n\n- Provides a default regex validator\n- Validates against list of `banned\n words `__\n that should not be used as username.\n- Python 2.7, 3.4, 3.5, 3.6, 3.7 pypi\n\nInstallation\n------------\n\n::\n\n pip install python-usernames\n\nUsages\n------\n\n.. code:: python\n\n from usernames import is_safe_username\n\n >>> is_safe_username(\"jerk\")\n False # contains one of the banned words\n\n >>> is_safe_username(\"handsome!\")\n False # contains non-url friendly `!`\n\n**is\\_safe\\_username** takes the following optional arguments:\n\n- ``regex``: regular expression string that must pass before the banned\n words is checked.\n- ``whitelist``: a list of words that should be considered as always\n safe.\n- ``blacklist``: a list of words that should be considered as unsafe.\n\nThe default regular expression is as follows:\n\n::\n\n ^ # beginning of string\n (?!_$) # no only _\n (?![-.]) # no - or . at the beginning\n (?!.*[_.-]{2}) # no __ or _. or ._ or .. or -- inside\n [a-zA-Z0-9_.-]+ # allowed characters, atleast one must be present\n (?`__\n\n**Note:**\n\nWords like ``bigcock12`` will validated just fine, only equality against\nthe `banned word lists `__\nis checked. We don't try to be smart to avoid `Scunthorpe problem `__.\nIf you can come up with a algorithm/solution, please create an issue/pr :).\n\nLicense\n-------\n\nMIT\n\n.. |Build Status| image:: https://travis-ci.org/theskumar/python-usernames.svg?branch=v0.1.0\n :target: https://travis-ci.org/theskumar/python-usernames\n.. |Coverage Status| image:: https://coveralls.io/repos/theskumar/python-usernames/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/theskumar/python-usernames?branch=master\n.. |PyPI version| image:: https://badge.fury.io/py/python-usernames.svg\n :target: http://badge.fury.io/py/python-usernames\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/theskumar/python-usernames", "keywords": "username,validation,registration,python,safe,signup", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "python-usernames", "package_url": "https://pypi.org/project/python-usernames/", "platform": "", "project_url": "https://pypi.org/project/python-usernames/", "project_urls": { "Homepage": "http://github.com/theskumar/python-usernames" }, "release_url": "https://pypi.org/project/python-usernames/0.2.3/", "requires_dist": null, "requires_python": "", "summary": "Python library to validate usernames suitable for use in public facing applications.", "version": "0.2.3" }, "last_serial": 5855374, "releases": { "0.0.1": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "af7998945ab4e84791121ee54faf466b", "sha256": "deb479954c25042174b2a21b7b7a98257f35123344f9c003eb98d6c29d120567" }, "downloads": -1, "filename": "python-usernames-0.1.0.tar.gz", "has_sig": false, "md5_digest": "af7998945ab4e84791121ee54faf466b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1683, "upload_time": "2015-09-28T16:59:59", "url": "https://files.pythonhosted.org/packages/04/95/a1f4b5f3b3eeeadecf74dcf23b4c7a4dff74265310128a635c4a613e5958/python-usernames-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "b6119d44d84f7c4777bf5487f801c1f5", "sha256": "b0c780de4ead94f71f852a680c2333ee32a24bada5d64e1fd510138578e80c2f" }, "downloads": -1, "filename": "python-usernames-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b6119d44d84f7c4777bf5487f801c1f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1553, "upload_time": "2015-09-28T17:16:33", "url": "https://files.pythonhosted.org/packages/f9/b2/fc0a242faef382f84659316a0f74f3d89493a8f2a22c99fb654048193a25/python-usernames-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4b2c3e76e78c7aaaa97006f88c7a48b1", "sha256": "4ea09b120f18cd31a313bccea00c7d301d733ca5068ccbcc4537fe919f633f97" }, "downloads": -1, "filename": "python-usernames-0.1.2.tar.gz", "has_sig": false, "md5_digest": "4b2c3e76e78c7aaaa97006f88c7a48b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4994, "upload_time": "2015-09-28T17:33:27", "url": "https://files.pythonhosted.org/packages/fa/bf/341f1d3e5d52e699f73f9064b60cb2fba387dea09638c9bb92079a901c74/python-usernames-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e8a008c5def8e460d157c91c5efc41c6", "sha256": "1be176503bde22efe87e8263cb1cca4018c67fd9ac53141d32e8a76ea7bd1edf" }, "downloads": -1, "filename": "python-usernames-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e8a008c5def8e460d157c91c5efc41c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5213, "upload_time": "2015-10-08T05:52:27", "url": "https://files.pythonhosted.org/packages/1e/99/7a2fffb639a071333649c08696507276f43b617f753d6a957e2f2c9fcc1a/python-usernames-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d0379a7376d7493ace7f32bbae4ee9a9", "sha256": "b865e283b9a5f8342aebff3424ff3e8ff3efa688e7e7f371d118387304b505bd" }, "downloads": -1, "filename": "python-usernames-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d0379a7376d7493ace7f32bbae4ee9a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5426, "upload_time": "2015-10-08T07:13:12", "url": "https://files.pythonhosted.org/packages/c7/60/3d01a364d7e09d644df0a3bc64b91bf41760e021f7637ebcff5fd2852cd4/python-usernames-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "2045917bc67e40723ddaffc67d726e22", "sha256": "5b657e330926371c9cc86237c4faf7176ef21757de63a52db53cdae3623f5cc1" }, "downloads": -1, "filename": "python-usernames-0.2.1.tar.gz", "has_sig": false, "md5_digest": "2045917bc67e40723ddaffc67d726e22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5636, "upload_time": "2015-10-16T11:02:36", "url": "https://files.pythonhosted.org/packages/8a/c9/1b70dafcf9e20c514f9a41f8ab18f988fb62623cac47a09e7f9b1a69efc7/python-usernames-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "46b137407456cb4e307bbe9608952c92", "sha256": "5f97ddecd1e07549b3a221d0fdfe2930f99ad55a685a61ee9b2928e05337a231" }, "downloads": -1, "filename": "python_usernames-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "46b137407456cb4e307bbe9608952c92", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 7005, "upload_time": "2015-11-28T15:21:43", "url": "https://files.pythonhosted.org/packages/d2/df/6e55d868b8ecef4d54b572197a2c33e7ff74839abb866570f57540fa57b4/python_usernames-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3464511b362ec4afad4fa7056d240cfc", "sha256": "9ba94f3293ef6253ea1614b2f157148eada1b8e266390df0a4bbacb10b21def4" }, "downloads": -1, "filename": "python-usernames-0.2.2.tar.gz", "has_sig": false, "md5_digest": "3464511b362ec4afad4fa7056d240cfc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5653, "upload_time": "2015-11-28T15:19:53", "url": "https://files.pythonhosted.org/packages/d3/a6/6688672a4dc730ad3f1093d17abf0e14e5cb07f16880802cce8c1ba371e2/python-usernames-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ddf959153d9f36da82a6ae944892b7f1", "sha256": "f78abf5260911e371cbf6a4867272e764c5700ed5365a52248227b5c72d756db" }, "downloads": -1, "filename": "python_usernames-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ddf959153d9f36da82a6ae944892b7f1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7214, "upload_time": "2019-09-19T10:15:40", "url": "https://files.pythonhosted.org/packages/dd/42/b31facac9d37b4c2b2ab0c50965cdfff92acb116969cc4cc6b4197dc5574/python_usernames-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c80d583a1f6d82fb5904daa9cc40b6f", "sha256": "44348eb66d4455cd4d51f9d8dab8ce63ff25edc4803c5b8c78b7ffade97371a1" }, "downloads": -1, "filename": "python-usernames-0.2.3.tar.gz", "has_sig": false, "md5_digest": "4c80d583a1f6d82fb5904daa9cc40b6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5864, "upload_time": "2019-09-19T10:15:42", "url": "https://files.pythonhosted.org/packages/6e/c9/977a6730d7b6f5954541c2804b28b3c1808d29c6d75ca1b4a96db8360960/python-usernames-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ddf959153d9f36da82a6ae944892b7f1", "sha256": "f78abf5260911e371cbf6a4867272e764c5700ed5365a52248227b5c72d756db" }, "downloads": -1, "filename": "python_usernames-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ddf959153d9f36da82a6ae944892b7f1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7214, "upload_time": "2019-09-19T10:15:40", "url": "https://files.pythonhosted.org/packages/dd/42/b31facac9d37b4c2b2ab0c50965cdfff92acb116969cc4cc6b4197dc5574/python_usernames-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4c80d583a1f6d82fb5904daa9cc40b6f", "sha256": "44348eb66d4455cd4d51f9d8dab8ce63ff25edc4803c5b8c78b7ffade97371a1" }, "downloads": -1, "filename": "python-usernames-0.2.3.tar.gz", "has_sig": false, "md5_digest": "4c80d583a1f6d82fb5904daa9cc40b6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5864, "upload_time": "2019-09-19T10:15:42", "url": "https://files.pythonhosted.org/packages/6e/c9/977a6730d7b6f5954541c2804b28b3c1808d29c6d75ca1b4a96db8360960/python-usernames-0.2.3.tar.gz" } ] }