{
"info": {
"author": "Peter Facka",
"author_email": "pfacka@binaryparadise.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 3 - Alpha",
"Environment :: Web Environment",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3"
],
"description": "dict2colander\n=============\n\n*Convert python dict (YAML, JSON) to colander schema.*\n\n`Colander `_\nis library, which enables you to validate and convert YAML, JSON\nand HTML form data. Colander schema as it is could be defined only\nin Python declaratively for example like this:\n\n\n\n.. code-block:: python\n\n import colander\n \n class Person(colander.MappingSchema):\n name = colander.SchemaNode(colander.String())\n age = colander.SchemaNode(colander.Int(),\n validator=colander.Range(0, 200))\n \n @colander.instantiate()\n class phones(colander.SequenceSchema):\n \n @colander.instantiate()\n class phone(colander.MappingSchema):\n location = colander.SchemaNode(colander.String(),\n validator=colander.OneOf(['home', 'work']))\n number = colander.SchemaNode(colander.String())\n\nWith dict2colander you can define the same colander schema in\ndictionary and convert it to colader.MappingSchema object.\n\nInstalation\n-----------\n\nYou can install dict2colander from\n`Python Package Index `_\nlike this:\n\n\n\n.. code-block:: shell\n\n pip install dict2colander\n\nUsage\n-----\n\n\n\n.. code-block:: python\n\n from dict2colander import dict2colander\n \n schema_dict = {\n 'type': 'Mapping',\n 'name': 'person',\n 'subnodes': [\n {'type': 'String', 'name': 'name'},\n \n {'type': 'Integer', 'name': 'age',\n 'validators':\n {'Range': {'args': ('0', '200')}}},\n \n {'type': 'Sequence',\n 'name': 'phones',\n 'subnodes': [\n \n {'type': 'Mapping', 'name': 'phone',\n 'subnodes': [\n \n {'type': 'String', 'name': 'location',\n 'validators':\n {'OneOf': {'args': (['home', 'work'],)}}},\n \n {'type': 'String', 'name': 'number'}\n \n ]}]},\n ]\n }\n \n schema = dict2colander(schema_dict)\n data = {\n 'name': 'keith',\n 'age': '20',\n 'friends':[('1', 'jim'),('2', 'bob'), ('3', 'joe'), ('4', 'fred')],\n 'phones':[{'location':'home', 'number':'555-1212'},\n {'location':'work', 'number':'555-8989'},],\n }\n \n serialized_data = schema.deserialize(data)\n print serialized_data\n\nDict2colander is intended to make possible to read colander schemas\nfrom YAML or JSON format. So here is schema from previous example\nwritten in YAML:\n\n\n\n.. code-block:: yaml\n\n ---\n name: person\n type: Mapping\n \n subnodes:\n - name: name\n type: String\n \n - name: age\n type: Integer\n validators:\n Range:\n args: ['0', '200']\n \n - name: phones\n type: Sequence\n subnodes: \n - name: phone\n type: Mapping\n subnodes:\n - name: location\n type: String\n validators:\n OneOf:\n args: [[home, work]]\n \n - name: number\n type: String\n\nNote that *Range* validator has arguments defined as *Strings* not\n*Integers* although that field *age* is of type *Integer*.\n\nHere are data to deserialize in YAML format from first example:\n\n\n\n.. code-block:: yaml\n\n ---\n name: keith\n age: 20\n friends:\n - [1, jim]\n - [2, bob]\n - [3, joe]\n - [4, fred]\n \n phones:\n - location: home\n number: 555-1212\n \n - location: work\n number: 555-8989\n\nHere is example how YAML data are deserialized with schema defined\nin YAML document.\n\n\n\n.. code-block:: python\n\n import yaml\n import dict2colander\n \n def deserialize(yaml_doc, yaml_schema):\n mapping_schema = dict2colander.dict2colander(yaml_schema)\n return mapping_schema.deserialize(yaml_doc)\n \n f = open('doc.yaml')\n doc = yaml.load(f)\n f.close()\n \n f = open('schema.yaml')\n schema = yaml.load(f)\n f.close()\n \n dict_doc = deserialize(doc, schema)\n print dict_doc",
"description_content_type": null,
"docs_url": null,
"download_url": "UNKNOWN",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://bitbucket.org/pfacka/dict2colander",
"keywords": "schema validation dictionary Colander YAML JSON",
"license": "MIT Licence (http://opensource.org/licenses/MIT)",
"maintainer": null,
"maintainer_email": null,
"name": "dict2colander",
"package_url": "https://pypi.org/project/dict2colander/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/dict2colander/",
"project_urls": {
"Download": "UNKNOWN",
"Homepage": "https://bitbucket.org/pfacka/dict2colander"
},
"release_url": "https://pypi.org/project/dict2colander/0.2/",
"requires_dist": null,
"requires_python": null,
"summary": "Dictionary to Colander schema conversion library",
"version": "0.2"
},
"last_serial": 1007562,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "840c433736f54881ef8416af86e97af9",
"sha256": "b7aca697c3f6f0bc8dc718f6a6cc883e3d350b2aada3df581916b2168e484f8f"
},
"downloads": -1,
"filename": "dict2colander-0.1.0-py2.7.egg",
"has_sig": false,
"md5_digest": "840c433736f54881ef8416af86e97af9",
"packagetype": "bdist_egg",
"python_version": "2.7",
"requires_python": null,
"size": 11662,
"upload_time": "2013-04-22T16:06:05",
"url": "https://files.pythonhosted.org/packages/24/d0/69d7a6bce43a38e2a90bcc2a9ed8dcecf1272d65490a8eac96bba0e0926b/dict2colander-0.1.0-py2.7.egg"
},
{
"comment_text": "",
"digests": {
"md5": "33e5f9c5ba5827b80c2bff22291908b9",
"sha256": "260bea4496df0118a5f87abbaaad04db45d87bc9b4ec22d4452165e7f7c49c67"
},
"downloads": -1,
"filename": "dict2colander-0.1.tar.gz",
"has_sig": false,
"md5_digest": "33e5f9c5ba5827b80c2bff22291908b9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5167,
"upload_time": "2013-04-22T16:05:40",
"url": "https://files.pythonhosted.org/packages/fb/62/87b147d5eebb1bc6020f16362788b798f7c74be88ebcd2656234143e607e/dict2colander-0.1.tar.gz"
}
],
"0.2": [
{
"comment_text": "",
"digests": {
"md5": "1ae1bfcc42d706932e40992b9292a4de",
"sha256": "6f668d60896991dcd271465b755f00ffd6f87f81e0d4d054be62a16c086978c7"
},
"downloads": -1,
"filename": "dict2colander-0.2.tar.gz",
"has_sig": false,
"md5_digest": "1ae1bfcc42d706932e40992b9292a4de",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7398,
"upload_time": "2014-02-21T14:49:38",
"url": "https://files.pythonhosted.org/packages/aa/7e/5ed2ba3dc2f06457b76d4bc8c93559179472bf87e6982f9a9e5cea30e84e/dict2colander-0.2.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "1ae1bfcc42d706932e40992b9292a4de",
"sha256": "6f668d60896991dcd271465b755f00ffd6f87f81e0d4d054be62a16c086978c7"
},
"downloads": -1,
"filename": "dict2colander-0.2.tar.gz",
"has_sig": false,
"md5_digest": "1ae1bfcc42d706932e40992b9292a4de",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 7398,
"upload_time": "2014-02-21T14:49:38",
"url": "https://files.pythonhosted.org/packages/aa/7e/5ed2ba3dc2f06457b76d4bc8c93559179472bf87e6982f9a9e5cea30e84e/dict2colander-0.2.tar.gz"
}
]
}