{ "info": { "author": "Jazeps Basko", "author_email": "jazeps.basko@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "*****************************\nwr-schemas\n*****************************\n\nA schema describes:\n\n 1. a data structure\n 2. a mapping of one data structure into another\n\nA schema consists of a list of fields.\n\nA field doesn't have a type -- it is a type itself, in a way. Instead of a type, a field has a bi-directional\nmapping. Given two different data structures ``x`` and ``y``, a mapping describes how to calculate ``x.f`` from\n``y.f`` and how to calculate ``y.f`` from ``x.f``.\n\nFields support following attributes:\n\n * name\n * mapping\n * default\n * source_name (source_names)\n * min_len, max_len, auto_trim\n * min, max\n * choices\n * regex\n * required, forbidden\n * nullable\n\nAlso:\n\n * Nested fields are supported.\n * Fields are easy to clone for reuse.\n * Fields and schemas are easy to reverse.\n * Schemas are easy to chain.\n\n.. code-block:: python\n\n from wr_schemas import Field, Schema, Mappings\n\n\n class Fields:\n user_id = Field('id', mapping=int, min=1)\n user_username = Field('username', min_len=5, max_len=100, regex=r'^[a-zA-Z0-9_\\-\\.@]+$')\n user_password = Field('password', min_len=10, max_len=100, regex=r'^[a-zA-Z0-9]+$')\n user_dob = Field('date_of_birth', mapping=Mappings.date())\n\n\n CreateUser = Schema(\n Fields.user_username.clone(required=True),\n Fields.user_password.clone(default=None),\n Fields.user_dob.clone(default=None),\n )\n\n payload = CreateUser.load({'username': 'marcus.aurelius@rome.gov'})\n assert payload.username == 'marcus.aurelius@rome.gov'\n assert payload.password is None\n assert payload.date_of_birth is None\n\n print(CreateUser.dump(payload))\n\n\nFlask:\n\n.. code-block:: python\n\n from wr_schemas import Field, Schema, Mappings\n from wr_schemas.flask_request import FlaskRequestSchemaMixin\n\n CreateUser = Schema(\n Field('username', required=True),\n Field('password', required=True),\n mixins=[FlaskRequestSchemaMixin],\n )\n user = CreateUser.from_request()", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jbasko/wr-schemas", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "wr-schemas", "package_url": "https://pypi.org/project/wr-schemas/", "platform": "", "project_url": "https://pypi.org/project/wr-schemas/", "project_urls": { "Homepage": "https://github.com/jbasko/wr-schemas" }, "release_url": "https://pypi.org/project/wr-schemas/0.5.0/", "requires_dist": null, "requires_python": "", "summary": "wr-schemas", "version": "0.5.0" }, "last_serial": 3623022, "releases": { "0.4.0": [ { "comment_text": "", "digests": { "md5": "19eccc30f8c6db2350e19c68deeb92e2", "sha256": "244132b64c11f15218de16108e2e84a162386ec91828b768ddc88d68083299fa" }, "downloads": -1, "filename": "wr-schemas-0.4.0.tar.gz", "has_sig": false, "md5_digest": "19eccc30f8c6db2350e19c68deeb92e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10891, "upload_time": "2018-02-21T01:30:49", "url": "https://files.pythonhosted.org/packages/6d/45/945066108ee5d4e2a676cb797974523233799bdc6d1392c7c8a54be4e805/wr-schemas-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "0a56878aae0f04763861e019126f8e3e", "sha256": "defd0ae7e4bfae34924035a6b816b92640c74feb30239aa1dbae2297f42cf064" }, "downloads": -1, "filename": "wr-schemas-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0a56878aae0f04763861e019126f8e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9955, "upload_time": "2018-02-27T21:07:36", "url": "https://files.pythonhosted.org/packages/6a/d2/1b2b6d72a149b2d1d7dacad98a77db2ebe88aaf4f676311b03a155057e7b/wr-schemas-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0a56878aae0f04763861e019126f8e3e", "sha256": "defd0ae7e4bfae34924035a6b816b92640c74feb30239aa1dbae2297f42cf064" }, "downloads": -1, "filename": "wr-schemas-0.5.0.tar.gz", "has_sig": false, "md5_digest": "0a56878aae0f04763861e019126f8e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9955, "upload_time": "2018-02-27T21:07:36", "url": "https://files.pythonhosted.org/packages/6a/d2/1b2b6d72a149b2d1d7dacad98a77db2ebe88aaf4f676311b03a155057e7b/wr-schemas-0.5.0.tar.gz" } ] }