{ "info": { "author": "podhmo", "author_email": "ababjam61+github@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: Implementation :: CPython" ], "description": "kanagata\n========================================\n\nProviding extracted dict (subclass of collections.UserDict).\n\n\nhow to use\n----------------------------------------\n\n(todo: description)\n\nmodels.py\n\n.. code-block:: python\n\n from kanagata import RestrictionBuilder\n\n # group: name, users\n # user: name, age, Option[skills], Option[school]\n # skill: name\n with RestrictionBuilder() as b:\n with b.define_dict(\"Group\") as group:\n group.add_member(\"name\", required=True)\n group.add_list(\"users\", \"User\", required=True)\n\n with b.define_dict(\"User\") as user:\n user.add_member(\"name\", required=True)\n user.add_member(\"age\", required=True)\n user.add_dict(\"school\", \"School\", required=False)\n user.add_list(\"skills\", \"Skill\", required=False)\n\n with b.define_dict(\"Skill\") as skill:\n skill.add_member(\"name\", required=True)\n\n with b.define_dict(\"School\") as school:\n school.add_member(\"name\")\n school.add_list(\"groups\", \"Group\", required=True)\n\n.. code-block:: python\n\n from models import User\n\n # user can have only name, age, skills. (skills is optional)\n\n user = User(name=\"foo\", age=20, skills=[])\n print(user) # {'name': 'foo', 'age': 20, 'skills': []}\n\n try:\n user2 = User(name=\"bar\")\n # ValueError: User: required fields {'age'} are not found\n except ValueError:\n pass\n\n try:\n user[\"xxx\"] = \"bar\"\n # ValueError: User: unsupported field 'xxx', field members=['name', 'age', 'school', 'skills']\n except ValueError:\n pass\n\n # user.skills can have only name.\n\n user[\"skills\"].append({\"name\": \"math\"})\n print(user) # {'skills': [{'name': 'math'}], 'age': 20, 'name': 'foo'}\n\n try:\n user[\"skills\"].append({})\n # ValueError: Skill: required fields {'name'} are not found\n except ValueError:\n pass\n\n\n0.0.1\n\n- default option support", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/podhmo/kanagata", "keywords": "restricted dict,dict", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "kanagata", "package_url": "https://pypi.org/project/kanagata/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/kanagata/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/podhmo/kanagata" }, "release_url": "https://pypi.org/project/kanagata/0.0.1/", "requires_dist": null, "requires_python": null, "summary": "restricted dict", "version": "0.0.1" }, "last_serial": 2401854, "releases": { "0.0": [ { "comment_text": "", "digests": { "md5": "7a4538a642f85f255012ee34f8bfd761", "sha256": "3b0266b65039e2e4ddbaa0e5dfba37cae3d3027a51b715215213e11e03e471f6" }, "downloads": -1, "filename": "kanagata-0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a4538a642f85f255012ee34f8bfd761", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6715, "upload_time": "2016-10-15T16:11:42", "url": "https://files.pythonhosted.org/packages/a2/96/f64b911dd51c149b58fe9ae3197716d1d3938129ce2b07b0ecb41dd2eace/kanagata-0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0a61f78d3d12fe589daccb446bdafb13", "sha256": "2b6ec0953dbe95617c62e0245a0605d08fe61597d627b4bcb8bef66ef803e52e" }, "downloads": -1, "filename": "kanagata-0.0.tar.gz", "has_sig": false, "md5_digest": "0a61f78d3d12fe589daccb446bdafb13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4167, "upload_time": "2016-10-15T16:11:39", "url": "https://files.pythonhosted.org/packages/97/d8/f74898f473333d4b1ec82cd54cd37a2e9377ef02ea73fe3210cba7fcba6a/kanagata-0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "f20e9129213b383d49fc066ef4236faa", "sha256": "705a85f2739dcc94e6ec989da66a518919a888a7eb604af1273a1440ddd8262e" }, "downloads": -1, "filename": "kanagata-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f20e9129213b383d49fc066ef4236faa", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6886, "upload_time": "2016-10-16T01:50:23", "url": "https://files.pythonhosted.org/packages/2e/d3/13e13f3f2d378d7fe6084c72e5d94bbadd7f31f9c0ce6a01a1c5b7713530/kanagata-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "591e7e5382cc2628921958edba1b37e1", "sha256": "4e312f5f5a3c88d125a50ebc5470ef6667eb88e76e2e027e41f0c028d8b5dffd" }, "downloads": -1, "filename": "kanagata-0.0.1.tar.gz", "has_sig": false, "md5_digest": "591e7e5382cc2628921958edba1b37e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4297, "upload_time": "2016-10-16T01:50:20", "url": "https://files.pythonhosted.org/packages/1c/ad/a4c70301aaa8609b8be6a5fe4a4096708a452a61dd4dcaef1255c09a449f/kanagata-0.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f20e9129213b383d49fc066ef4236faa", "sha256": "705a85f2739dcc94e6ec989da66a518919a888a7eb604af1273a1440ddd8262e" }, "downloads": -1, "filename": "kanagata-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f20e9129213b383d49fc066ef4236faa", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6886, "upload_time": "2016-10-16T01:50:23", "url": "https://files.pythonhosted.org/packages/2e/d3/13e13f3f2d378d7fe6084c72e5d94bbadd7f31f9c0ce6a01a1c5b7713530/kanagata-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "591e7e5382cc2628921958edba1b37e1", "sha256": "4e312f5f5a3c88d125a50ebc5470ef6667eb88e76e2e027e41f0c028d8b5dffd" }, "downloads": -1, "filename": "kanagata-0.0.1.tar.gz", "has_sig": false, "md5_digest": "591e7e5382cc2628921958edba1b37e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4297, "upload_time": "2016-10-16T01:50:20", "url": "https://files.pythonhosted.org/packages/1c/ad/a4c70301aaa8609b8be6a5fe4a4096708a452a61dd4dcaef1255c09a449f/kanagata-0.0.1.tar.gz" } ] }