{ "info": { "author": "DevDoomari (Gukky)", "author_email": "devdoomari@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Build Tools" ], "description": "PyValidator: An improved version of Schema (https://github.com/keleshev/schema)\n===============================================================================\n\n**schema** is a library for validating Python data structures, such as those\nobtained from config-files, forms, external services or command-line\nparsing, converted from JSON/YAML (or something else) to Python data-types.\n\n**PyValidator** is an (almost) drop-in replacement of Python Schema,\nwritten almost from scratch for the sake of better error handling.\n\n**Note: Most of the README here is a small edits on the original Python schema's README**\n\nExamples (From python schema)\n----------------------------------------------------------------------------\n\nHere is a quick example to get a feeling of **schema**, validating a list of\nentries with personal information:\n\n.. code:: python\n\n >>> from pyvalidator import Validator, And, Use, Optional\n\n >>> validator = Validator([{'name': And(str, len),\n ... 'age': And(Use(int), lambda n: 18 <= n <= 99),\n ... Optional('sex'): And(str, Use(str.lower),\n ... lambda s: s in ('male', 'female'))}])\n\n >>> data = [{'name': 'Sue', 'age': '28', 'sex': 'FEMALE'},\n ... {'name': 'Sam', 'age': '42'},\n ... {'name': 'Sacha', 'age': '20', 'sex': 'Male'}]\n\n >>> validated = validator.validate(data)\n\n >>> assert validated == [{'name': 'Sue', 'age': 28, 'sex': 'female'},\n ... {'name': 'Sam', 'age': 42},\n ... {'name': 'Sacha', 'age' : 20, 'sex': 'male'}]\n\n\nIf data is valid, ``Validator(some schema).validate`` will return the validated data\n(optionally converted with `Use` calls, see below).\n\n** Note: Since PyValidator is a drop-in replacement of Python Schema,\n See https://github.com/keleshev/schema for more usage examples.**\n\nPyValidator vs Python Schema\n--------------------------------------------------------------------\n\nPython Schema emits SchemaError that can contain at most 1 type of error,\nand its output is not very helpful in programming to handle errors.\n\nOn the other hand, PyValidator emits an \"ErrorBucket\" that shows all the errors,\nalong with fully-traversible structures for programs to use.\n\nEnough with that long-talk, and here's a demo of python schema:\n\n.. code:: python\n\n >>> from schema import Schema, Optional\n >>> sc = Schema({\n ... 'wow':'so schema',\n ... 'such':'validation',\n ... 'string!!!': str,\n ... Optional('so int'): int})\n >>> try:\n ... sc.validate({'so int': 'NOT int'})\n ... except Exception as e:\n ... error = e\n >>> error\n SchemaError(\"'NOT int' should be instance of \",)\n >>> dir(error)\n [ ... , 'args', 'autos', 'code', 'errors', 'message']\n >>> error.args\n [None]\n >>> e.autos\n [\"'NOT int' should be instance of \"] #string...\n\nPyValidator's output demo:\n\n.. code:: python\n\n >>> from pyvalidator import Validator, Optional\n >>> sc = Validator({\n ... 'wow':'so schema',\n ... 'such':'validation',\n ... 'string!!!': str,\n ... Optional('so int'): int})\n >>> try:\n ... sc.validate({'so int': 'NOT int'})\n ... except Exception as e:\n ... error = e\n >>> error\n Generic Errors:\n {'wrong_type': {'so int': [Wrong Type: got str instead of int]}, 'missing_key': {'such': [Missing Key: such => validation], 'wow': [Missing Ke\n y: wow => so schema], 'string!!!': [Missing Key: string!!! => ]}}\n\n Custom Errors:\n []\n\n >>> error.errors # note: all errors are preserved.\n {'wrong_type': {'so int': [Wrong Type: got str instead of int]}, 'missing_key': {'such': [Missing Key: such => validation], 'wow': [Missing Ke\n y: wow => so schema], 'string!!!': [Missing Key: string!!! => ]}}\n >>> error.error_count\n 4\n >>> error.errors['missing_key'] #needs formatting...\n {'such': [Missing Key: such => validation], 'wow': [Missing Key: wow => so schema], 'string!!!': [Missing Key: string!!! => ]}\n >>> type(error.errors['missing_key']['such'])\n \n >>> # Note: There's room for improvement here...\n >>> error.errors['missing_key']['such'].errors[0]\n Missing Key: such => validation\n >>> dir(error.errors['missing_key']['such'].errors[0])\n [ ..., 'args', 'data', 'error_name', 'key', 'message']\n >>> error.errors['missing_key']['such'].errors[0].key\n 'such'\n >>> error.errors['missing_key']['such'].errors[0].error_name\n 'missing_key'\n >>> error.errors['missing_key']['such'].errors[0].data\n 'validation'\n\nRationale for _ErrorBucketNode instead of dict / list\n------------------------------------------------------------------------\n\n\n** Any suggestion for _ErrorBucketNode is welcome :)\n (_ErrorBucketNode itself is somewhat ugly) **\n\n\nInstallation\n-------------------------------------------------------------------------------\n\nUse `pip `_ or easy_install::\n\n pip install pyvalidator\n\n- **pyvalidator** is tested with Python 2.6, 2.7, and 3.x\n- **pyvalitator** follows `semantic versioning `_.", "description_content_type": null, "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/devdoomari/pyvalidator", "keywords": "sample setuptools development", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "PyValidator", "package_url": "https://pypi.org/project/PyValidator/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/PyValidator/", "project_urls": { "Homepage": "https://github.com/devdoomari/pyvalidator" }, "release_url": "https://pypi.org/project/PyValidator/0.0.17/", "requires_dist": null, "requires_python": null, "summary": "PyValidator", "version": "0.0.17" }, "last_serial": 1767990, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "be84579f79bf2621f7824cf944af00d9", "sha256": "c6cc6c034a79ac8f012dbf35190e65a75e036c183a6364a588aca46db58d4040" }, "downloads": -1, "filename": "pyvalidator-0.0.1-py2.7.egg", "has_sig": false, "md5_digest": "be84579f79bf2621f7824cf944af00d9", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 35334, "upload_time": "2015-04-22T09:32:48", "url": "https://files.pythonhosted.org/packages/0a/10/089966e6aa8d780b373ea6dc5d204a1535fd44394684151dae68e8b27e9d/pyvalidator-0.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1a5abf788a199614f041996305f475cb", "sha256": "ee6432b72ba2e0544c2177a2d0abcb3cbe5b7c3eac21cd57a72ac5dee70f3daf" }, "downloads": -1, "filename": "pyvalidator-0.0.1.tar.gz", "has_sig": false, "md5_digest": "1a5abf788a199614f041996305f475cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7675, "upload_time": "2015-04-22T09:32:52", "url": "https://files.pythonhosted.org/packages/ee/39/cd01620479b844b8a2ef3b4f72be32b7cc9afb8405d681ae01e1dc0b8fb4/pyvalidator-0.0.1.tar.gz" } ], "0.0.10": [ { "comment_text": "", "digests": { "md5": "690fe52aeed5f82f1d11313c34f05c55", "sha256": "aa3733bea7f0a69825da1adee2534f563f6eb292ce4799ffd4dfa3de80a93809" }, "downloads": -1, "filename": "pyvalidator-0.0.10.tar.gz", "has_sig": false, "md5_digest": "690fe52aeed5f82f1d11313c34f05c55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11187, "upload_time": "2015-04-23T07:25:25", "url": "https://files.pythonhosted.org/packages/67/46/e21be7790dce8cb68dd5cb893e9b7c9317b9072127109b3971b57ec03143/pyvalidator-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "7b2a1cf93a87e1a254f00fad1fe3c9cb", "sha256": "e449c5b32606097b254eefec9df359b7185a9f32963004d1d4524a79f80cc204" }, "downloads": -1, "filename": "pyvalidator-0.0.11.tar.gz", "has_sig": false, "md5_digest": "7b2a1cf93a87e1a254f00fad1fe3c9cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11193, "upload_time": "2015-04-24T08:10:25", "url": "https://files.pythonhosted.org/packages/27/ab/3446e72c08daccfc1ca2adfc7feb0203ddd63cd5266f9e46350eac010038/pyvalidator-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "f9e18093d8daa8e4e169dc4c486f8457", "sha256": "443c411fa3e83c1fdfc926b8c2c09026c43e0c8aac7b589fc31a6a145c1a0518" }, "downloads": -1, "filename": "pyvalidator-0.0.12.tar.gz", "has_sig": false, "md5_digest": "f9e18093d8daa8e4e169dc4c486f8457", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11188, "upload_time": "2015-04-24T08:15:08", "url": "https://files.pythonhosted.org/packages/37/90/6735883c678ef596d290b6852a6a182692ad33f592ebecf381ff49aca161/pyvalidator-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "b49104f1d4a5133c8ba57571206dffa7", "sha256": "6d3b8ec33bd83125387fb49aa2b21526b25cec80953bbb86706a77774197ea99" }, "downloads": -1, "filename": "pyvalidator-0.0.13.tar.gz", "has_sig": false, "md5_digest": "b49104f1d4a5133c8ba57571206dffa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11218, "upload_time": "2015-04-24T08:48:08", "url": "https://files.pythonhosted.org/packages/e9/4c/3c6f658ffdd04bea6d87cf3c7573115573b33cd014c4d8f413c1dc47a379/pyvalidator-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "78d9fe88242abf36b67c6bebe98fe3ad", "sha256": "631203f6fdfd4c2af3e1f48b6fb82cbccf3191f930062d5ccfe87bb0600eaf46" }, "downloads": -1, "filename": "pyvalidator-0.0.14.tar.gz", "has_sig": false, "md5_digest": "78d9fe88242abf36b67c6bebe98fe3ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12819, "upload_time": "2015-05-12T14:43:55", "url": "https://files.pythonhosted.org/packages/ae/f8/42eeca8d6df0cf6b1ab8b96693958a7ea0ae56b77143f72234b9cccc9e84/pyvalidator-0.0.14.tar.gz" } ], "0.0.15": [ { "comment_text": "", "digests": { "md5": "07e7ab42cb382217c0b1c641c5b55e6f", "sha256": "d0074c675f675255c1152fd17094835d1ab3204f75baefb0df44109fc9e563a8" }, "downloads": -1, "filename": "pyvalidator-0.0.15.tar.gz", "has_sig": false, "md5_digest": "07e7ab42cb382217c0b1c641c5b55e6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14333, "upload_time": "2015-05-24T09:01:13", "url": "https://files.pythonhosted.org/packages/8a/40/a3ff5fe1b640d29d9ac095f4bec96c6f7a75b9372c8b084f4e2e5a88cb9a/pyvalidator-0.0.15.tar.gz" } ], "0.0.16": [ { "comment_text": "", "digests": { "md5": "bb1033c1683bf92c1e320617778ee9b2", "sha256": "ee257ffaf545f79e0176de7c47b3c43a8bfa05e225d65f6c21213f90b1e1fbc5" }, "downloads": -1, "filename": "pyvalidator-0.0.16.tar.gz", "has_sig": false, "md5_digest": "bb1033c1683bf92c1e320617778ee9b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14338, "upload_time": "2015-06-04T07:56:15", "url": "https://files.pythonhosted.org/packages/21/18/015699ba157dd465ff2de26b59403fadfc0324756ebefbd97ba433113d1e/pyvalidator-0.0.16.tar.gz" } ], "0.0.17": [ { "comment_text": "", "digests": { "md5": "afe8b7dbba2c80eb20a802390bdc1ed5", "sha256": "d9d42a24d75457c00910266bd9186f60eb6d34be9f91de1f784f268b37f6a989" }, "downloads": -1, "filename": "pyvalidator-0.0.17.tar.gz", "has_sig": false, "md5_digest": "afe8b7dbba2c80eb20a802390bdc1ed5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14362, "upload_time": "2015-10-14T08:16:23", "url": "https://files.pythonhosted.org/packages/37/6b/f5667be25e1462a6b182ef6154fe7506ca6c42cfa314f753bdb01c915b6c/pyvalidator-0.0.17.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "030ca4211edfd8fcc95502e170a9ebd8", "sha256": "ee11074cf9889ff81dc51237ef4d710256272cdd241559f47a2fa9b5093e13de" }, "downloads": -1, "filename": "pyvalidator-0.0.2.tar.gz", "has_sig": false, "md5_digest": "030ca4211edfd8fcc95502e170a9ebd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7785, "upload_time": "2015-04-22T09:47:01", "url": "https://files.pythonhosted.org/packages/14/a6/67fa4e452e897ed1aa6f254d7dbb473cb46cfb76a7b3318fdaaab87a8114/pyvalidator-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "8854b187c272ad836d6110a276b0ea47", "sha256": "f67b37b7492cf20f7a65b0daa4a1bb1f3dd0b1743075ebe683ea1f5f28e22876" }, "downloads": -1, "filename": "pyvalidator-0.0.3.tar.gz", "has_sig": false, "md5_digest": "8854b187c272ad836d6110a276b0ea47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8230, "upload_time": "2015-04-23T02:02:58", "url": "https://files.pythonhosted.org/packages/59/ae/4a4ab934b14c751cc11dbfca697383a76a6f9da2c40f4eea31c7ec02055d/pyvalidator-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "473e42bec251556b817e0bef87c7b7eb", "sha256": "8a76ad0d4e721adfe5870a708ea134c6cfaab1cac5500a497082a6593990c478" }, "downloads": -1, "filename": "pyvalidator-0.0.4.tar.gz", "has_sig": false, "md5_digest": "473e42bec251556b817e0bef87c7b7eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8544, "upload_time": "2015-04-23T04:41:52", "url": "https://files.pythonhosted.org/packages/74/2f/6bff6108904354f4dbe6e9a1a64308334decc5c074539c5a9afe927a018d/pyvalidator-0.0.4.tar.gz" } ], "0.0.4b0": [ { "comment_text": "", "digests": { "md5": "071da38b84291eb693e14a2b880526c4", "sha256": "74a7a994151de02388ee32cf628724dc879eb124a3b18caeff4440ddd8f80a4f" }, "downloads": -1, "filename": "pyvalidator-0.0.4b0.tar.gz", "has_sig": false, "md5_digest": "071da38b84291eb693e14a2b880526c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8800, "upload_time": "2015-04-23T05:07:25", "url": "https://files.pythonhosted.org/packages/1c/2a/946762e705cc2e9a60d05aaa0e8f331e3fd37e8234b018d4711619c889c4/pyvalidator-0.0.4b0.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "a33385e8c60d8f263d8aec1f4b558fe3", "sha256": "9d2a1b88a7d721b9c69b5e09be756082ce343053b2eea3054e705d0442ddcced" }, "downloads": -1, "filename": "pyvalidator-0.0.5.tar.gz", "has_sig": false, "md5_digest": "a33385e8c60d8f263d8aec1f4b558fe3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8809, "upload_time": "2015-04-23T05:09:12", "url": "https://files.pythonhosted.org/packages/ff/d5/96c0b0753b310fdefd71fde99ad83e2644b2112e852bf19e6e0c77ced749/pyvalidator-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "54d23a09ac508f97782c5ed703e869d5", "sha256": "a0aaa26acf6e7576e56c06b2dff750774812e6ff9f92e4b9dce146d5cc990d30" }, "downloads": -1, "filename": "pyvalidator-0.0.6.tar.gz", "has_sig": false, "md5_digest": "54d23a09ac508f97782c5ed703e869d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8568, "upload_time": "2015-04-23T05:16:43", "url": "https://files.pythonhosted.org/packages/96/a0/c61cdb66273d0d5a4753e2c3b62947430c676692809ecd8102c6634daf01/pyvalidator-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "7f5a555745b4eda410777a15fb189889", "sha256": "34759db31a14600413f7863978c1ce3bfceb810375de1689a7b137746be77fb1" }, "downloads": -1, "filename": "pyvalidator-0.0.7.tar.gz", "has_sig": false, "md5_digest": "7f5a555745b4eda410777a15fb189889", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9063, "upload_time": "2015-04-23T06:06:17", "url": "https://files.pythonhosted.org/packages/d5/9a/85f53dc2c02b29907ad25b06e9143377686dac10ca4601f69446e2a30a74/pyvalidator-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d01069b76f44addaa621ba7629625902", "sha256": "09f04258811399aa204d02794092e3de1c1370be3b76ce5668edfd917f6afebc" }, "downloads": -1, "filename": "pyvalidator-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d01069b76f44addaa621ba7629625902", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9209, "upload_time": "2015-04-23T06:24:37", "url": "https://files.pythonhosted.org/packages/3f/54/ab798b2dcba2f68c26ae0e4b030a6dacb8d25374d9f350176fd643939ba6/pyvalidator-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "84182888c9f495c5c520afa0eaa47183", "sha256": "bf98f94bcd197b1c6c6ac40c59a2256b8a1dd56fc46215ff44ab7d2959ee3e23" }, "downloads": -1, "filename": "pyvalidator-0.0.9.tar.gz", "has_sig": false, "md5_digest": "84182888c9f495c5c520afa0eaa47183", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11124, "upload_time": "2015-04-23T06:38:50", "url": "https://files.pythonhosted.org/packages/ab/d9/e630f8e7f05e964ac298c6d5360091252ffc796b5a4d9566ab5c872312f0/pyvalidator-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "afe8b7dbba2c80eb20a802390bdc1ed5", "sha256": "d9d42a24d75457c00910266bd9186f60eb6d34be9f91de1f784f268b37f6a989" }, "downloads": -1, "filename": "pyvalidator-0.0.17.tar.gz", "has_sig": false, "md5_digest": "afe8b7dbba2c80eb20a802390bdc1ed5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14362, "upload_time": "2015-10-14T08:16:23", "url": "https://files.pythonhosted.org/packages/37/6b/f5667be25e1462a6b182ef6154fe7506ca6c42cfa314f753bdb01c915b6c/pyvalidator-0.0.17.tar.gz" } ] }