{ "info": { "author": "Douglas Treadwell", "author_email": "douglas.treadwell@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "Schematics Factory\n==================\n\n\nInspired by [Voluptuous](https://github.com/alecthomas/voluptuous).\n\nIt's sometimes inconvenient to define\nnamed [Schematics](https://github.com/schematics/schematics)\nModels, especially when those models are deeply nested.\n\nExample:\n\n```\nclass InnerModel(Model):\n inner_bool = BooleanType()\n\n\nclass MiddleModel(Model):\n middle_int = IntType()\n middle_nested = ModelType(InnerModel)\n\n\nclass OuterModel(Model):\n outer_str = StringType()\n outer_nested = ModelType(MiddleModel)\n\n\nmodel_instance = OuterModel(input_)\nmodel_instance.validate()\n```\n\nSo, this library provides a convenient syntax for defining\ndeeply nested Models.\n\n```\nfrom schematics_factory import model\n\nOuterModel = model({\n 'outer_str': StringType(),\n 'outer_nested': ModelType(model({\n 'middle_int': IntType(),\n 'middle_nested': ModelType(model({\n 'inner_bool': BooleanType()\n }))\n }))\n})\n\nmodel_instance = OuterModel(input_)\nmodel_instance.validate()\n```\n\nThe model() function can also be imported as _model_factory_.\n\nAlternative Syntax\n------------------\n\nSchema factory arguments can also be supplied as keyword\narguments rather than a dictionary.\n\n```\nPerson = model(name=StringType(), age=IntType())\n\nperson = Person(dict(name='Test', age=27))\n\nperson.validate()\n```\n\nFor nested Models, a concise __nested()__ convenience function\nis provided to replace ModelType(model(...)) with nested(...).\nThe nested() function can also be imported as _nested_model_.\n\n```\nfrom schematics_factory import model, nested\n\nPerson = model(name=StringType(), pet=nested(name=StringType()))\n\nperson = Person(dict(name='Test', pet=dict(name='Rover')))\n\nperson.validate()\n```\n\nNested models can also be provided as plain dictionary literals.\n\n```\nPerson = model(name=StringType(), pet=dict(name=StringType()))\n\nperson = Person(dict(name='Test', pet=dict(name='Rover')))\n\nperson.validate()\n```\n\nOr equivalently...\n\n```\nPerson = model({\n 'name': StringType(),\n 'pet': {\n 'name': StringType()\n }\n})\n\nperson = Person({\n 'name': 'Test',\n 'pet': {\n 'name': 'Rover'\n }\n})\n\nperson.validate()\n```\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/douglas-treadwell/schematics-factory", "keywords": "schematics,validation,schema,model,models,modelling,object,objects", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "schematics-factory", "package_url": "https://pypi.org/project/schematics-factory/", "platform": "", "project_url": "https://pypi.org/project/schematics-factory/", "project_urls": { "Homepage": "https://github.com/douglas-treadwell/schematics-factory" }, "release_url": "https://pypi.org/project/schematics-factory/0.1.0/", "requires_dist": [ "schematics" ], "requires_python": "", "summary": "Convenient anonymous and nested models using dict literal syntax for Schematics.", "version": "0.1.0" }, "last_serial": 2946059, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "cc61427298c53a75a055c08019a1511a", "sha256": "a71d655965c1539ea180ae2b2556b9838301878b76282848c7d4c3f9d3833416" }, "downloads": -1, "filename": "schematics_factory-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cc61427298c53a75a055c08019a1511a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4240, "upload_time": "2017-06-13T06:56:40", "url": "https://files.pythonhosted.org/packages/3e/be/39fac2919068c2b7f22a09601846c0c4a60bdbb1d69c4e7c706441227730/schematics_factory-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec63af996a163433bf6c7e4ec123566e", "sha256": "1b6e65e26ce44590fbd1235a45a43206b380c66e70eb05a0a4b7e4f1df4c4a59" }, "downloads": -1, "filename": "schematics-factory-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ec63af996a163433bf6c7e4ec123566e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2868, "upload_time": "2017-06-13T06:56:42", "url": "https://files.pythonhosted.org/packages/e7/2f/b1b3d59ef04399e708f5ddfd3f0d1e0592bf25ef01139da01af886d1a7a4/schematics-factory-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cc61427298c53a75a055c08019a1511a", "sha256": "a71d655965c1539ea180ae2b2556b9838301878b76282848c7d4c3f9d3833416" }, "downloads": -1, "filename": "schematics_factory-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cc61427298c53a75a055c08019a1511a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4240, "upload_time": "2017-06-13T06:56:40", "url": "https://files.pythonhosted.org/packages/3e/be/39fac2919068c2b7f22a09601846c0c4a60bdbb1d69c4e7c706441227730/schematics_factory-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec63af996a163433bf6c7e4ec123566e", "sha256": "1b6e65e26ce44590fbd1235a45a43206b380c66e70eb05a0a4b7e4f1df4c4a59" }, "downloads": -1, "filename": "schematics-factory-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ec63af996a163433bf6c7e4ec123566e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2868, "upload_time": "2017-06-13T06:56:42", "url": "https://files.pythonhosted.org/packages/e7/2f/b1b3d59ef04399e708f5ddfd3f0d1e0592bf25ef01139da01af886d1a7a4/schematics-factory-0.1.0.tar.gz" } ] }