{ "info": { "author": "Alexey Firsov", "author_email": "virmir49@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Database", "Topic :: Database :: Front-Ends" ], "description": "aiovalidator\n============\n.. image:: https://travis-ci.org/vir-mir/aiovalidator.svg?branch=master\n :target: https://travis-ci.org/vir-mir/aiovalidator\n.. image:: https://codecov.io/gh/vir-mir/aiovalidator/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/vir-mir/aiovalidator\n\nWraps aiophtt, for validation and rapid construction of micro-services.\npros:\n- Easy integration without affecting the operation of the entire project\n- Declarative description of the input parameters\n- The ability to validate asynchronously\n- Availability of methods for http\n\n\nExample\n-------\n\n.. code-block:: python\n\n import asyncio\n\n from aiohttp import web\n\n from aiovalidator import (\n validator_factory,\n middleware_exception,\n IntegerField\n )\n\n\n async def foo_validator(value):\n await asyncio.sleep(1)\n return value\n\n\n def foo_default(value):\n async def default():\n return value\n\n return default\n\n\n class Hello(web.View):\n class Field:\n field1 = IntegerField()\n field2 = IntegerField(required=False, methods={'GET'},\n verbose_name='Field method get')\n field3 = IntegerField(validator=foo_validator, )\n field4 = IntegerField(default=foo_default)\n\n @asyncio.coroutine\n def get(self):\n fields = self.request['fields']\n print(fields)\n return web.json_response()\n\n\n app = web.Application(middlewares=[validator_factory(), middleware_exception])\n app.router.add_get('/{user_id}/', Hello)\n web.run_app(app, port=8000)\n\n\nMy fields example\n-----------------\n\n.. code-block:: python\n\n import phonenumbers\n from aiovalidator import StrField, abort\n\n\n class PhoneField(StrField):\n def get_value(self, value):\n value = super().get_value(value)\n try:\n value = phonenumbers.parse(value, 'RU')\n region = phonenumbers.region_code_for_number(value)\n regions = phonenumbers.COUNTRY_CODE_TO_REGION_CODE[7]\n if not phonenumbers.is_valid_number(value):\n raise abort(status=400,\n text='Field {} not format phone'.format(self.name))\n if region not in regions:\n raise abort(status=400,\n text='Field {} not format phone'.format(self.name))\n value = phonenumbers.format_number(\n value, phonenumbers.PhoneNumberFormat.E164\n )[1:]\n\n return value\n except phonenumbers.NumberParseException:\n raise abort(status=400, text='Field {} not valid'.format(self.name))", "description_content_type": null, "docs_url": "https://pythonhosted.org/aiovalidator/", "download_url": "https://pypi.python.org/pypi/aiovalidator", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/vir-mir", "keywords": "", "license": "Apache-2.0", "maintainer": "", "maintainer_email": "", "name": "aiovalidator", "package_url": "https://pypi.org/project/aiovalidator/", "platform": "POSIX", "project_url": "https://pypi.org/project/aiovalidator/", "project_urls": { "Download": "https://pypi.python.org/pypi/aiovalidator", "Homepage": "https://github.com/vir-mir" }, "release_url": "https://pypi.org/project/aiovalidator/0.0.4/", "requires_dist": null, "requires_python": "", "summary": "rest, restful validator aiohttp", "version": "0.0.4" }, "last_serial": 2579421, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "58a3a6947fcbe4c904168b8ffeda2ab0", "sha256": "42f078036dd6c28a3463bcd3cf4c003c800562061d2998d417b57cae778c5f58" }, "downloads": -1, "filename": "aiovalidator-0.0.1.tar.gz", "has_sig": false, "md5_digest": "58a3a6947fcbe4c904168b8ffeda2ab0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4712, "upload_time": "2016-12-06T17:00:25", "url": "https://files.pythonhosted.org/packages/a1/50/28d3a140a85af83e393a4e0f4cccb23801ecfc31cb7bc598a01d8cd26d10/aiovalidator-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "3a24c662764ae8d309db048a33cb9368", "sha256": "6a5819437382e3aae7cd315ae45e37737a08046c818c6ac780e87a55c18cda8a" }, "downloads": -1, "filename": "aiovalidator-0.0.2.tar.gz", "has_sig": false, "md5_digest": "3a24c662764ae8d309db048a33cb9368", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4949, "upload_time": "2016-12-06T17:59:41", "url": "https://files.pythonhosted.org/packages/0a/6f/74071f15da8d2d2a6e2e4c2a411821f953aed86c73cadeec1483ddde3d18/aiovalidator-0.0.2.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "4bceec83b8f3c07c4208e349c6538f75", "sha256": "ed81d4968854f177d58af32be4eef0cc6f5b66206f9d715eeef4e5ac1c5952e0" }, "downloads": -1, "filename": "aiovalidator-0.0.4.tar.gz", "has_sig": false, "md5_digest": "4bceec83b8f3c07c4208e349c6538f75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5128, "upload_time": "2017-01-17T11:18:46", "url": "https://files.pythonhosted.org/packages/7d/97/6106cacd1f38acf796c778d96c5d95747181ac178adcd9ceedfe5052476a/aiovalidator-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4bceec83b8f3c07c4208e349c6538f75", "sha256": "ed81d4968854f177d58af32be4eef0cc6f5b66206f9d715eeef4e5ac1c5952e0" }, "downloads": -1, "filename": "aiovalidator-0.0.4.tar.gz", "has_sig": false, "md5_digest": "4bceec83b8f3c07c4208e349c6538f75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5128, "upload_time": "2017-01-17T11:18:46", "url": "https://files.pythonhosted.org/packages/7d/97/6106cacd1f38acf796c778d96c5d95747181ac178adcd9ceedfe5052476a/aiovalidator-0.0.4.tar.gz" } ] }