{ "info": { "author": "Dolf Andringa", "author_email": "dolfandringa@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": "# WTForms JSONSchema 2\n[![Build status](https://travis-ci.org/dolfandringa/wtforms_jsonschema.svg?branch=master)](https://travis-ci.org/dolfandringa/wtforms_jsonschema)\n\nWTForms JSONSchema 2 is a converter to turn forms made with WTForms into a OrderedDict following the JSONSchema syntax.\n\nIt was developed independently of [wtforms_jsonschema](https://pypi.python.org/pypi/wtforms-jsonschema/). Main differences are that it is unit tested, adds support for validators and is easier to extend. That being said, not all fields that are supported by wtforms_jsonschema are supported by wtforms_jsonschema2.\n\nThe order of the original WTForm fields are kept intact.\nThe use case is to communicate these forms with other applications that will then display these forms. For instance a backend can make a simple CRUD application using [Flask Appbuilder](http://flask-appbuilder.readthedocs.io/en/latest/intro.html) but also expose some forms to another frontend made in [Angular](https://angular.io) or in a mobile app using [Ionic](https://ionicframework.com).\n\nJSONSchema is not specifically meant to be used to describe forms, but actually is quite extensive and provides enough flexibility to describe forms quite well. It supports limitations to fields, similar to validators, like email, url, date-time string formats, length limitations, minimum/maximum values for numbers, etc. For more info see [Understanding JSON Schema by the Space Telescope Science Institute](https://spacetelescope.github.io/understanding-json-schema/)\n\n## Installation\nClone the repository form github and install it with\n```bash\npip install wtforms_jsonschema2\n```\nIf you also want [Flask Appbuilder](http://flask-appbuilder.readthedocs.io/en/latest/intro.html) support, install with\n```bash\npip install wtforms_jsonschema2[fab]\n```\n\nAnd if you want Geoalchemy2 support for Geometry columns in Flask Appbuilder, install with\n```\npip install wtforms_jsonschema[geofab]\n```\n\n## Testing\nUnittests can be run with\n```bash\npython setup.py test\n```\n\nor\n\n```bash\npytest\n```\n\n## Usage\nHere is an example how the package works:\n\n```python\nfrom wtforms_jsonschema.base import BaseConverter\nfrom wtforms.form import Form\nfrom wtforms import validators\nfrom wtforms.fields.core import StringField, DecimalField, SelectField, IntegerField, Field, DateTimeField\nfrom wtforms.widgets import TextInput\nfrom pprint import pprint\n\n\nclass SimpleTestForm(Form):\n \"\"\"Simple Test Form displaying the conversion features\"\"\"\n first_name = StringField('First Name', validators=[validators.required()])\n nick_name = StringField('Nickname')\n age = IntegerField('Age', validators=[validators.number_range(0, 10),\n validators.required()])\n average = DecimalField('Average',\n validators=[validators.number_range(10, 1000)])\n gender = SelectField(\"Gender\", choices=['Male', 'Female', 'Alien',\n 'Other'])\n some_field = SelectField(\"Bla\", choices=[1, 2, 3])\n some_field2 = SelectField(\"Bla\", choices=[1.5, 2.2, 3])\n email = StringField('Email Address', validators=[validators.Email()])\n length_string = StringField('Name', validators=[validators.Length(5, 10)])\n dt = DateTimeField('DateTime')\n\nconverter = BaseConverter()\npprint(converter.convert(SimpleTestForm))\n```\nOutput:\n```python\n\nOrderedDict([('type', 'object'),\n ('properties',\n OrderedDict([('first_name',\n {'title': 'First Name', 'type': 'string'}),\n ('nick_name',\n {'title': 'Nickname', 'type': 'string'}),\n ('age',\n {'maximum': 10,\n 'minimum': 0,\n 'title': 'Age',\n 'type': 'integer'}),\n ('average',\n {'maximum': 1000,\n 'minimum': 10,\n 'title': 'Average',\n 'type': 'number'}),\n ('gender',\n {'enum': ['Male', 'Female', 'Alien', 'Other'],\n 'title': 'Gender',\n 'type': 'string'}),\n ('some_field',\n {'enum': [1, 2, 3],\n 'title': 'Bla',\n 'type': 'integer'}),\n ('some_field2',\n {'enum': [1.5, 2.2, 3],\n 'title': 'Bla',\n 'type': 'number'}),\n ('email',\n {'format': 'email',\n 'title': 'Email Address',\n 'type': 'string'}),\n ('length_string',\n {'maxLength': 10,\n 'minLength': 5,\n 'title': 'Name',\n 'type': 'string'}),\n ('dt',\n {'format': 'date-time',\n 'title': 'DateTime',\n 'type': 'string'})])),\n ('required', ['first_name', 'age'])])\n```\n\nFlask Appbuilder with its views is also supported.\nFor example:\nThe following model and views\n\n```\n class Person(Model):\n id = Column(Integer, primary_key=True)\n name = Column(String)\n\n class Picture(Model):\n id = Column(Integer, primary_key=True)\n picture = Column(Text)\n person_id = Column(Integer, ForeignKey(person.id), nullable=False)\n person = relationship(Person, backref=\"pictures\")\n\n class PictureView(ModelView):\n list_title = 'Pictures'\n add_title = 'Add Picture'\n edit_title = 'Edit Picture'\n show_title = 'Picture'\n datamodel = Picture\n add_columns = ['picture']\n\n class PersonView(ModelView):\n show_title = 'Person'\n edit_title = 'Edit Person'\n add_title = 'Add Person'\n list_title = 'People'\n datamodel = Person\n related_views = [PictureView]\n add_columns = ['name']\n\n converter.convert({'Person': PersonView})\n```\n\nShould result in the following schema:\n\n```\n\n {\n \"type\": \"object\",\n \"definitions\": {\n \"Person\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\"type\": \"string\"},\n \"pictures\": {\n \"type\": \"array\",\n \"title\": \"Pictures\",\n \"items\": [\n {\"$ref\": \"#/definitions/Picture\"}\n ]\n }\n }\n },\n \"Picture\": {\n \"type\": \"object\",\n \"properties\": {\n \"picture: {\"type\": \"string\"}\n }\n }\n },\n \"properties\": {\n \"Person\": {\"$ref\": \"#/definitions/Person\"}\n }\n }\n```\n\nThe library also supports the fab_addon_geoalchemy addon for Flask Appbuilder, \nwhich adds support for the PostGIS Geometry columns through the geoalchemy2\nlibrary for SQLAlchemy. An example:\n\n```python\n\nfrom wtforms_jsonschema2.geofab import GeoFABConverter\nfrom fab_addon_geoalchemy.models import Geometry, GeoSQLAInterface\nfrom fab_addon_geoalchemy.views import GeoModelView\nfrom flask_sqlalchemy import SQLA\nfrom sqlalchemy import Column, Integer, String\n\napp = Flask('myapp')\napp.config.update(cfg)\ndb = SQLA(app)\nappbuilder = AppBuilder(app, db.session)\n\nclass GeoObservation(db.Model):\n id = Column(Integer, primary_key=True)\n name = Column(String, nullable=False)\n location = Column(Geometry(geometry_type='POINT', srid=4326),\n nullable=False)\n\n def __repr__(self):\n return self.name\n\n\nclass GeoObservationView(GeoModelView):\n datamodel = GeoSQLAInterface(GeoObservation)\n add_columns = ['name', 'location']\n show_title = 'GeoObservation'\n add_title = 'Add GeoObservation'\n\n\nappbuilder.add_view(GeoObservationView, 'observations')\n\nctx = app.app_context()\nctx.push()\ndb.create_all()\ndb.session.commit()\n\nconverter = GeoFABConverter()\nschema = converter.convert(GeoObservationView)\npprint(schema)\n```\nOutput:\n```python\nOrderedDict([\n ('type', 'object'),\n ('definitions', OrderedDict([\n ('GeoObservation', OrderedDict([\n ('type', 'object'),\n ('properties', OrderedDict([\n ('name', {\n 'type': 'string',\n 'title': 'Name'\n }),\n ('location', OrderedDict([\n ('type', 'object'),\n ('properties', OrderedDict([\n ('lat', {\n 'type': 'number',\n 'title': 'Latitude',\n }),\n ('lon', {\n 'type': 'number',\n 'title': 'Longitude'\n })\n ])),\n ('required', ['lat', 'lon']),\n ('title', 'Location')\n ])),\n ])),\n ('required', ['name'])\n ]))\n ])),\n ('type', 'object'),\n ('properties', OrderedDict([\n ('GeoObservation', {'$ref': '#/definitions/GeoObservation'})\n ]))\n])\n\n```\n## Extending\n\nThe library is based around the ```wtforms_jsonschema2.base.BaseConverter``` class.\nThis class has methods that are all decorated with ```@converts(*)```.\nThese conversion methods return the tuple (fieldtype, options, required) which are a string, dict and boolean respectively that signify the JSONSchema type, additional parameters for the field like [enum](https://spacetelescope.github.io/understanding-json-schema/reference/generic.html#enumerated-values) or other value restrictions derived from the validators and whether the field is required.\n\nTo support additional fields, either contribute back by adding functions to the BaseConverter class that convert your specific field,\nor create a new class that inherits from BaseConverter and adds functions for your specific field types.\n\nThis is an example for the DecimalField:\n\n```python\nfrom wtforms.fields.core import DecimalField\nfrom wtforms.validators import NumberRange\nfrom wtforms_jsonschema.base import BaseConverter, converts\n\nclass MyConverter(BaseConverter):\n @converts(DecimalField)\n def decimal_field(self, field):\n fieldtype = 'number'\n options = {}\n required = False\n vals = dict([(v.__class__, v) for v in field.validators])\n required = self._is_required(vals)\n if NumberRange in vals.keys():\n options['minimum'] = vals[NumberRange].min\n options['maximum'] = vals[NumberRange].max\n return fieldtype, options, required\n```\n\n## Credits\n\nWTForms JSONSchema 2 is developed by [Dolf Andringa](https://allican.be), but was inspired by the sqlalchemy conversion component of [Flask-Admin](https://github.com/flask-admin/flask-admin/) (especially the @converts decorator).", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dolfandringa/wtforms_jsonschema", "keywords": "wtforms jsonschema", "license": "", "maintainer": "", "maintainer_email": "", "name": "wtforms-jsonschema2", "package_url": "https://pypi.org/project/wtforms-jsonschema2/", "platform": "", "project_url": "https://pypi.org/project/wtforms-jsonschema2/", "project_urls": { "Homepage": "https://github.com/dolfandringa/wtforms_jsonschema", "Source": "https://github.com/dolfandringa/wtforms_jsonschema/" }, "release_url": "https://pypi.org/project/wtforms-jsonschema2/0.7.0/", "requires_dist": null, "requires_python": "", "summary": "Package to convert WTForms to JSON Schema", "version": "0.7.0" }, "last_serial": 4376823, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "3d37d600af3ab91547fc8b1c3e1c33f2", "sha256": "038abc94ee3373b2c36b45d257f84f23dded3e9a4870f3d54df4b4f5147c5df2" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3d37d600af3ab91547fc8b1c3e1c33f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6060, "upload_time": "2018-04-16T08:28:08", "url": "https://files.pythonhosted.org/packages/4b/3e/32f932acc0cf9f4cab88997942e2d35cbe1aa23370f54951d7bac74fd9d7/wtforms_jsonschema2-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a1488bc15b246927128238d7e4f0546d", "sha256": "479e41817a56155f58c77ab10e720547a3b2e1be5491a94ef7d9156a9c71d439" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a1488bc15b246927128238d7e4f0546d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5856, "upload_time": "2018-04-16T08:28:11", "url": "https://files.pythonhosted.org/packages/b0/84/c1bb36971a1d7410d7ca0cd778f478800f9fe2f991ae50a203b9505a0880/wtforms_jsonschema2-0.1.0.tar.gz" } ], "0.1.0.dev3": [ { "comment_text": "", "digests": { "md5": "a558812bb09030b284e209b780718528", "sha256": "7c2302f59c44ce0c009be6251845cfe1d46a38ee90137275d0e53b7667e835f7" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0.dev3-py3-none-any.whl", "has_sig": false, "md5_digest": "a558812bb09030b284e209b780718528", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5989, "upload_time": "2018-04-16T07:30:11", "url": "https://files.pythonhosted.org/packages/df/d2/22b105ad712f3390dbc1b7b7f2e7eb68041ccb73a832b9e97b1311618393/wtforms_jsonschema2-0.1.0.dev3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f6e801b8bda92acdc5c8e0ba9e23bc9", "sha256": "0b3ec1c2930b72dd366bf7a47b5dcbc2ff4891fe67b64f13240fa32bec6ecfd5" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0.dev3.tar.gz", "has_sig": false, "md5_digest": "4f6e801b8bda92acdc5c8e0ba9e23bc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5228, "upload_time": "2018-04-16T07:30:13", "url": "https://files.pythonhosted.org/packages/ca/ec/fb6f619bb702a05efdc794091d9092596fbad4ce4ddb9125a886b2ef0a6a/wtforms_jsonschema2-0.1.0.dev3.tar.gz" } ], "0.1.0.dev4": [ { "comment_text": "", "digests": { "md5": "b768b9990c862c61dacbb4e207de917f", "sha256": "afc82436ebc8958bec736bc11385b0dbb7cf4aedf2fb942e2da5850c23e6f062" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0.dev4-py3-none-any.whl", "has_sig": false, "md5_digest": "b768b9990c862c61dacbb4e207de917f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6032, "upload_time": "2018-04-16T07:56:57", "url": "https://files.pythonhosted.org/packages/9b/d2/c268b30a287e0569da410a5922436d37383532102680ace4de5db6ae13ff/wtforms_jsonschema2-0.1.0.dev4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bf24bd4f2c00e982c01deeba29e8b29", "sha256": "415624eef8ad1d6f4b68d88968481e6d7e1c77a25e92185b22d307161b4ae835" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.1.0.dev4.tar.gz", "has_sig": false, "md5_digest": "9bf24bd4f2c00e982c01deeba29e8b29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5755, "upload_time": "2018-04-16T07:57:00", "url": "https://files.pythonhosted.org/packages/a1/76/d14dd13b2178dc751f97c92770dbc5fbab783706c374b4ae8bbb6834560f/wtforms_jsonschema2-0.1.0.dev4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1bef50cde50feed4d75ffe1581a9fb96", "sha256": "f41cc1d82861e33bdeba4b7f559772a14620a33dc913104a6402e5a738152729" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.2.0-py3.5.egg", "has_sig": false, "md5_digest": "1bef50cde50feed4d75ffe1581a9fb96", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13933, "upload_time": "2018-04-23T05:07:05", "url": "https://files.pythonhosted.org/packages/6e/c0/8e8530199050ff6344ab3781d1b182656d126ac750026c5eba4f6f80547e/wtforms_jsonschema2-0.2.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "95fe0a9ce302c177b455ec7a998f304a", "sha256": "37bf97947d73d537643eee7c6c414e2c3f1597df1b65fe5f97ff6c434dcbcf4a" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.2.0.tar.gz", "has_sig": false, "md5_digest": "95fe0a9ce302c177b455ec7a998f304a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7280, "upload_time": "2018-04-23T05:07:06", "url": "https://files.pythonhosted.org/packages/7e/a2/0edffb8e3d205d082401616710cd819a1a1c8d9b6f1a76c4a6a99a53fddb/wtforms_jsonschema2-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7cf4ed6b0f20e4b89587630302040848", "sha256": "f0f7c469379cbefad058b959831e5624465defaadac06ee6736cf4b23bf46732" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.3.0-py3.5.egg", "has_sig": false, "md5_digest": "7cf4ed6b0f20e4b89587630302040848", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 14034, "upload_time": "2018-05-18T03:12:46", "url": "https://files.pythonhosted.org/packages/cb/81/0be34f45acdfc0c0a84d0fb63ffd1e7d918ef5c9afd384c8a52a90897222/wtforms_jsonschema2-0.3.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "edabe6bb71717f236a81bdae6b284709", "sha256": "bf143a06f43d83da41edc39c048a30febd9bc237bd4529f858849f3120940451" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.3.0.tar.gz", "has_sig": false, "md5_digest": "edabe6bb71717f236a81bdae6b284709", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7341, "upload_time": "2018-05-18T03:12:50", "url": "https://files.pythonhosted.org/packages/7f/91/31c78b314c1f9f5b0d2490748f47c14a0c92dead9e0b990133b7470f9791/wtforms_jsonschema2-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "3a00fabc24ac7d63d2b864af4c8ed9c4", "sha256": "0d215a7a52048af77724dbf6309e79c64b1e52620a54b2350b23bfc1d6252b7f" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.3.1-py3.5.egg", "has_sig": false, "md5_digest": "3a00fabc24ac7d63d2b864af4c8ed9c4", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 14180, "upload_time": "2018-05-18T09:34:48", "url": "https://files.pythonhosted.org/packages/14/82/a6d930c39e767a8370c5f6a3de0009a88b567e69778b22627fd153dc0d65/wtforms_jsonschema2-0.3.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "82466b98de73278866c960dc676c75f8", "sha256": "890221999110a5ca1b136eb77cfb347e2f37d787fb64c6617d86e9a58035a76c" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.3.1.tar.gz", "has_sig": false, "md5_digest": "82466b98de73278866c960dc676c75f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7373, "upload_time": "2018-05-18T09:34:50", "url": "https://files.pythonhosted.org/packages/27/c0/43b975671a842667f7872bf1e84563bcf1b8b22c69c1113914ad13ac4856/wtforms_jsonschema2-0.3.1.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0007240ba65cf59af66d8ead513b1dcc", "sha256": "cf5edf9944e9d1d6b22f97ad24e0760ab575e292c5d5bec06d577e09db970c43" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.1-py3.5.egg", "has_sig": false, "md5_digest": "0007240ba65cf59af66d8ead513b1dcc", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 17868, "upload_time": "2018-06-23T21:34:04", "url": "https://files.pythonhosted.org/packages/69/b4/07370e492118a0b557e02d43f3a036bdf829b30574352c31560701d17a0e/wtforms_jsonschema2-0.5.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "0e9fcdb485e486cc576b6bec826bffa7", "sha256": "4fd54f38261d65b13353495acd36b8e4db82a241868a0fc6ffe1a6f781c68d0d" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.1.tar.gz", "has_sig": false, "md5_digest": "0e9fcdb485e486cc576b6bec826bffa7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9141, "upload_time": "2018-06-23T21:34:06", "url": "https://files.pythonhosted.org/packages/25/45/16a2bc5b9fce2ed2a604f6ea555e52c4016e28dadc6ddc38e8c16d9d8681/wtforms_jsonschema2-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "7eb1c62075d844dc97ec32870d863ff2", "sha256": "765e1602286bebb8e813eb6bcff66b4ab1b4eaacbc8afb728705e5aff34877a6" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.2-py3.5.egg", "has_sig": false, "md5_digest": "7eb1c62075d844dc97ec32870d863ff2", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 17991, "upload_time": "2018-06-25T10:36:06", "url": "https://files.pythonhosted.org/packages/e3/7c/158bcd9dcd93e406f47f3871912fa570fdef4d493255da8b1090474a8194/wtforms_jsonschema2-0.5.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "0714cec97a513025127aad3450b5fda3", "sha256": "377f9e9ca79e81068bb8090826b7d972652cfebcebb7aa385ca8543c7afb9d0d" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.2.tar.gz", "has_sig": false, "md5_digest": "0714cec97a513025127aad3450b5fda3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9183, "upload_time": "2018-06-25T10:36:08", "url": "https://files.pythonhosted.org/packages/08/3a/5fb8f1b97b609358b87c348c20eac94ce761f0bd8b87350e42a8e824ae3b/wtforms_jsonschema2-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "27726c229ba29bfe61c732f762fc9ab1", "sha256": "a86fd44b7dec319e50a94a8c17f64d51c45e1a8b19e9fdbec5d8dbe600da1c01" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.3-py3.5.egg", "has_sig": false, "md5_digest": "27726c229ba29bfe61c732f762fc9ab1", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 18018, "upload_time": "2018-06-26T08:55:20", "url": "https://files.pythonhosted.org/packages/5c/2f/8b3e5cc0c797a25f1c851279a149f160ee225c51556c6bc1c54f32af2f19/wtforms_jsonschema2-0.5.3-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "bb34604b848ad99575a68a91a26be93a", "sha256": "bddb1923cb545692de1d400291d64347cb8eb3955a23a8f0672cdc47eb0ef1f0" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.3.tar.gz", "has_sig": false, "md5_digest": "bb34604b848ad99575a68a91a26be93a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9181, "upload_time": "2018-06-26T08:55:21", "url": "https://files.pythonhosted.org/packages/e9/34/f32ae9be66a413089fc7eef089cd0c90fb230847c3198600d80f75dee6b3/wtforms_jsonschema2-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "4a1166a49a58bb26b89b27bc0c5659ab", "sha256": "35c1795e0fd91d987568bfe44c0ea73a5453c722ba21dc2c73e5f34437f0b4c6" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.4-py3.5.egg", "has_sig": false, "md5_digest": "4a1166a49a58bb26b89b27bc0c5659ab", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 18507, "upload_time": "2018-09-30T10:54:48", "url": "https://files.pythonhosted.org/packages/ac/07/7650b87db924d651496371ac5643046fca3fcad3499ee7213bf8831519d2/wtforms_jsonschema2-0.5.4-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "d13e6991564409b74634f2a20662bdc3", "sha256": "527e4985331d274cf7c027d3c1cebbc2413ba1df6b8deadc8d2a0932b21f2530" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.5.4.tar.gz", "has_sig": false, "md5_digest": "d13e6991564409b74634f2a20662bdc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8483, "upload_time": "2018-09-30T10:54:50", "url": "https://files.pythonhosted.org/packages/3f/7f/0007a45f51d35bed75c28d07203667756def93a416190af7235d4c34f276/wtforms_jsonschema2-0.5.4.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "3f1953e9a5ae786360199ad266ea53b7", "sha256": "418408b1dd457ed21e791b1223ce189f017bc935f709df906094877fd368ca59" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.6.0-py3.5.egg", "has_sig": false, "md5_digest": "3f1953e9a5ae786360199ad266ea53b7", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 22786, "upload_time": "2018-10-07T09:14:04", "url": "https://files.pythonhosted.org/packages/7c/1a/1da37895ba95555d5db919b5e14b331d720958822e7d7a9b0efd93dd6352/wtforms_jsonschema2-0.6.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "9fc926cc4b1c8bf03120b9abb7d61628", "sha256": "37a58eb0cfe77a7c064be7da316ef01a0c55634114a31cb924e4aa37412c15ab" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.6.0.tar.gz", "has_sig": false, "md5_digest": "9fc926cc4b1c8bf03120b9abb7d61628", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9957, "upload_time": "2018-10-07T09:14:07", "url": "https://files.pythonhosted.org/packages/8a/77/bc45f36fe173e8b44cd21fba7b1ab20fd7beacbfec9304f4501f2e6eedce/wtforms_jsonschema2-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "49ea4a1aefcca9f861155bd1b07712bb", "sha256": "2f561e5171fd5268e7eb35a9e31e3552ef3cd74bce8274ef36c980423df7e0d8" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.6.1-py3.5.egg", "has_sig": false, "md5_digest": "49ea4a1aefcca9f861155bd1b07712bb", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 22792, "upload_time": "2018-10-07T14:52:15", "url": "https://files.pythonhosted.org/packages/a8/6e/ddfa63596d8059d24fac15976d6e8cba445135d124fe3ceed48f22e56c80/wtforms_jsonschema2-0.6.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "596fb50b587d2bf0460f156d8cab724f", "sha256": "0e6edafa7fc882803d7e925de58e9ca7b34d76539d845b16cdb20a84c57c4bd4" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.6.1.tar.gz", "has_sig": false, "md5_digest": "596fb50b587d2bf0460f156d8cab724f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9966, "upload_time": "2018-10-07T14:52:17", "url": "https://files.pythonhosted.org/packages/2b/18/7a38f43d940198b0e8cae13f03060dcad3053812736668923130cb108d16/wtforms_jsonschema2-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "a8a4a73ac508917c521facd47f1bc76d", "sha256": "4dade6b04a8492fa728ccb0597fccb39c1de083d264e023fa240e88beefe2676" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.7.0-py3.5.egg", "has_sig": false, "md5_digest": "a8a4a73ac508917c521facd47f1bc76d", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 25014, "upload_time": "2018-10-15T09:02:22", "url": "https://files.pythonhosted.org/packages/04/28/61839f953224c1fb6fd49abfd656a8be3358c4b8bcc717197e0b4bd74279/wtforms_jsonschema2-0.7.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "437c3d997eb8fc3e9d2e15010134ae63", "sha256": "dde1678a50712bcd5a4bf16fdb17bdbec587b96511e7f6306d6c9238148b5843" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.7.0.tar.gz", "has_sig": false, "md5_digest": "437c3d997eb8fc3e9d2e15010134ae63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10655, "upload_time": "2018-10-15T09:02:25", "url": "https://files.pythonhosted.org/packages/cc/a8/b33725a0bd6c3f0ad2e7c082a0e2403e85b7d658a2baef3a84b18b91ccd3/wtforms_jsonschema2-0.7.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a8a4a73ac508917c521facd47f1bc76d", "sha256": "4dade6b04a8492fa728ccb0597fccb39c1de083d264e023fa240e88beefe2676" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.7.0-py3.5.egg", "has_sig": false, "md5_digest": "a8a4a73ac508917c521facd47f1bc76d", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 25014, "upload_time": "2018-10-15T09:02:22", "url": "https://files.pythonhosted.org/packages/04/28/61839f953224c1fb6fd49abfd656a8be3358c4b8bcc717197e0b4bd74279/wtforms_jsonschema2-0.7.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "437c3d997eb8fc3e9d2e15010134ae63", "sha256": "dde1678a50712bcd5a4bf16fdb17bdbec587b96511e7f6306d6c9238148b5843" }, "downloads": -1, "filename": "wtforms_jsonschema2-0.7.0.tar.gz", "has_sig": false, "md5_digest": "437c3d997eb8fc3e9d2e15010134ae63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10655, "upload_time": "2018-10-15T09:02:25", "url": "https://files.pythonhosted.org/packages/cc/a8/b33725a0bd6c3f0ad2e7c082a0e2403e85b7d658a2baef3a84b18b91ccd3/wtforms_jsonschema2-0.7.0.tar.gz" } ] }