{ "info": { "author": "Georgy Bazhukov", "author_email": "georgy.bazhukov@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8" ], "description": "pythonish-validator\n===================\n\n.. figure:: https://travis-ci.org/bugov/pythonish-validator.svg?branch=master\n\nData validation library for Python without complex schemas.\nIt's how you write Python code:\n\n\ud83d\udc0d Works with Python >= 3.7\n\n.. code:: python\n\n from re import compile as regex\n from pythonish_validator.common import Validator\n\n validator = Validator({\n 'name': str,\n 'age': int,\n 'email': regex(r'^\\w+@\\w+.\\w{2,5}$')\n 'skills': [str]\n })\n\n validator.is_valid({\n 'name': 'Georgy',\n 'age': 29,\n 'email': 'bugov@cpan.org'\n 'skills': ['Python', 'Perl', 'C']\n })\n\n\nWhat can be easier?\n\nInstall\n-------\n\n.. code:: bash\n\n pip3 install pythonish-validator\n\nError messages\n--------------\n\n.. code:: python\n\n from pythonish_validator.common import validate\n\n validator = validate({\n 'name': str,\n 'age': int,\n 'skills': [str]\n }, {\n 'name': 'Georgy',\n 'age': None,\n 'skills': ['Python', 'Perl', 42]\n })\n\n assert validator.repr_errors() == [\n \"{'age'}->NoneType(None)\",\n \"{'skills'}->[2]->int(42)\"\n ]\n\nBasic typing module support\n---------------------------\n\nSupported types: List, Dict, Optional, Union.\n\n.. code:: python\n\n from typing import Dict, List, Optional, Union\n from pythonish_validator.common import validate\n\n schema_example = {\n 'name': str,\n 'age': Optional[int], # None if undefined\n 'skill': Union[str, List[str]], # Awful API, but who cares...\n 'level_by_skill': Dict[str, str]\n }\n\n valid_data = {\n 'name': 'Georgy',\n 'age': None,\n 'skill': ['Python', 'ECMA Script'],\n 'level_by_skill': {\n 'Python': 'senior',\n 'ECMA Script': 'middle',\n }\n }\n\n validator = validate(schema_example, valid_example)\n\nFeatures\n--------\n\n\ud83d\udde3\ufe0f Speak the language of Python classes:\n\n.. code:: python\n\n from pythonish_validator.common import Validator\n\n\n class User:\n __validation_schema__ = {\n 'id': int,\n 'name': str\n }\n\n\n validator = Validator({\n \"users\": [User]\n })\n\n # valid structure\n validator.is_valid({\n \"users\": [\n {'id': 1, 'name': 'Alice'},\n {'id': 2, 'name': 'Bob'},\n ]\n })\n\n # invalid structure\n validator.is_valid({\n \"users\": [\n {'id': '1', 'name': 'Alice'},\n {'id': 2},\n ]\n })\n\n assert validator.repr_errors() == [\n \"{'users'}->[0]->{'id'}->str('1')\",\n \"{'users'}->[1]->{'name'}\",\n ]\n\n\ud83c\udf93 And even custom validation:\n\n.. code:: python\n\n import re\n\n from pythonish_validator.common import Validator\n\n\n class EmailType:\n @staticmethod\n def __validation_schema__(data):\n if not isinstance(data, str):\n return False\n\n if re.match(r'^\\w+@\\w+.\\w{2,5}$', data) is None:\n return False\n\n return True\n\n\n class User:\n __validation_schema__ = {\n 'id': int,\n 'name': str,\n 'email': EmailType,\n }\n\n\n validator = Validator({\n \"users\": [User]\n })\n\n validator.is_valid({\n \"users\": [\n {'id': 1, 'name': 'Alice', 'email': 'alice@example.com'},\n {'id': 2, 'name': 'Bob', 'email': 'bob@example.com'},\n ]\n })\n\nIf you find any mistake \u2013 please write to the issue list \ud83d\udc28 (https://github.com/bugov/pythonish-validator/issues).", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bugov/pythonish-validator", "keywords": "validator data check structure scheme", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pythonish-validator", "package_url": "https://pypi.org/project/pythonish-validator/", "platform": "", "project_url": "https://pypi.org/project/pythonish-validator/", "project_urls": { "Homepage": "https://github.com/bugov/pythonish-validator" }, "release_url": "https://pypi.org/project/pythonish-validator/0.5.1/", "requires_dist": null, "requires_python": "", "summary": "Pythonish object scheme validator", "version": "0.5.1", "yanked": false, "yanked_reason": null }, "last_serial": 6019968, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "5c684aec57eea09d2bb0bc3c1a67ea4f", "sha256": "607c86335db1b8450349feee47298cee70b4e99216866762fedfb13c13f6cec3" }, "downloads": -1, "filename": "pythonish-validator-0.1.tar.gz", "has_sig": false, "md5_digest": "5c684aec57eea09d2bb0bc3c1a67ea4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3359, "upload_time": "2019-04-06T12:10:43", "upload_time_iso_8601": "2019-04-06T12:10:43.326360Z", "url": "https://files.pythonhosted.org/packages/e6/55/dd9d24e116ab36b5ac5fd378897f1f072e016fa414f2730e5bf20484f70b/pythonish-validator-0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3": [ { "comment_text": "", "digests": { "md5": "ccdeeab4cc73d1fee62eec3228eafcd4", "sha256": "133f88958d4dc8a99038cc24dac8c819a3b7c619a426ee3c684ed810385e15d6" }, "downloads": -1, "filename": "pythonish-validator-0.3.tar.gz", "has_sig": false, "md5_digest": "ccdeeab4cc73d1fee62eec3228eafcd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4068, "upload_time": "2019-04-06T14:57:57", "upload_time_iso_8601": "2019-04-06T14:57:57.393530Z", "url": "https://files.pythonhosted.org/packages/19/2b/0ce8ebe26637b299b97b6cd9b0607ae04866476cfad94bbac34952f64692/pythonish-validator-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "5f4ffb86d2a552f289375b6009745721", "sha256": "cc6206a1e69c1fbec9729811de5bc51669bcf3d30810074efc7e90ec6c225d29" }, "downloads": -1, "filename": "pythonish-validator-0.4.0.tar.gz", "has_sig": false, "md5_digest": "5f4ffb86d2a552f289375b6009745721", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4905, "upload_time": "2019-07-29T13:00:54", "upload_time_iso_8601": "2019-07-29T13:00:54.024741Z", "url": "https://files.pythonhosted.org/packages/12/3b/08c1bacdac39ca4f01a8f71cf268637f79cfb1ea0274f61fa984d213ae1a/pythonish-validator-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "bda4ab70fd1425e47d8dee54fef136ff", "sha256": "b425648fe8ecbc50f8e44016c153f240bf19be50f9fe9440894e11d3bb9a2f6d" }, "downloads": -1, "filename": "pythonish-validator-0.4.1.tar.gz", "has_sig": false, "md5_digest": "bda4ab70fd1425e47d8dee54fef136ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5047, "upload_time": "2019-07-30T08:55:14", "upload_time_iso_8601": "2019-07-30T08:55:14.372609Z", "url": "https://files.pythonhosted.org/packages/87/03/bc0e1305ba271fbabf6e6b81b909aed9be09efafe9ef9f1cc12a16e3717c/pythonish-validator-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "13d29fd915db2f35b7368cf76f5ed73a", "sha256": "5df6573145bee74fa63585d7fd44a6d8c6ad6f43911220a199952a0975a9c830" }, "downloads": -1, "filename": "pythonish-validator-0.5.1.tar.gz", "has_sig": false, "md5_digest": "13d29fd915db2f35b7368cf76f5ed73a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6271, "upload_time": "2019-10-23T18:31:24", "upload_time_iso_8601": "2019-10-23T18:31:24.546853Z", "url": "https://files.pythonhosted.org/packages/96/f0/a0219cd2cb0f080f821c449cb265e85d556e0951a52de70be0fafcb573ae/pythonish-validator-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "13d29fd915db2f35b7368cf76f5ed73a", "sha256": "5df6573145bee74fa63585d7fd44a6d8c6ad6f43911220a199952a0975a9c830" }, "downloads": -1, "filename": "pythonish-validator-0.5.1.tar.gz", "has_sig": false, "md5_digest": "13d29fd915db2f35b7368cf76f5ed73a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6271, "upload_time": "2019-10-23T18:31:24", "upload_time_iso_8601": "2019-10-23T18:31:24.546853Z", "url": "https://files.pythonhosted.org/packages/96/f0/a0219cd2cb0f080f821c449cb265e85d556e0951a52de70be0fafcb573ae/pythonish-validator-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }