{ "info": { "author": "Cody Landry", "author_email": "cody.landry@me.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.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": "# Smores\n[![PyPI](https://img.shields.io/pypi/v/smores.svg)]()\n[![PyPI](https://img.shields.io/pypi/l/smores.svg)]()\n[![CircleCI branch](https://img.shields.io/circleci/project/github/codylandry/Smores/master.svg)]()\n[![Coverage Status](https://coveralls.io/repos/github/codylandry/Smores/badge.svg?branch=master)](https://coveralls.io/github/codylandry/Smores?branch=master)\n\nSmores allows you to specify a schema for user facing template features. It leverages marshmallow (hence 'smores') to\npopulate and transform data that is then rendered via jinja. It has a parser that presents a more friendly syntax to \nusers (ex. {user.addresses:1.street}). It also includes an autocomplete method that gives you intellisense style \noptions given a tag fragment. \n\nSmores provides two Marshmallow field types called TemplateString and TemplateFile. Templates defined in these fields\nare scoped to that schema and it's descendants. Each schema can have a _default_template that, if defined, will what\nis inserted if the associated tag ends with that schema. For example: typing {user.address} will render the _default_template\nfor the Address schema. You can define other template attributes as well. For example, see the 'google_link' attribute\nof the Address schema below. Typing {user.address.google_link} will populate and insert that link. \n\nsmores.tag_autocomplete is a method where you can provide a tag 'fragment' and it will return the possible options below that.\nFor example:\n\n```python\nfrom smores import Smores, TemplateString\nfrom marshmallow import Schema, fields\n\n# instantiate a smores instance\nsmores = Smores()\n\n# smores.schema registers the schema with the instance\n@smores.schema\nclass Coordinates(Schema):\n lat = fields.Decimal()\n lng = fields.Decimal()\n _default_template = TemplateString(\"{{lat}},{{lng}}\")\n\n@smores.schema\nclass Address(Schema):\n street = fields.String()\n suite = fields.String()\n city = fields.String()\n state = fields.String()\n zipcode = fields.String()\n coordinates = fields.Nested(Coordinates)\n google_link = TemplateString('View Map')\n _default_template = TemplateString(\"\"\"\n
{{View Map}}
\n
{{street}} -- {{suite}}
\n
{{city}}, {{state}} {{zipcode}}
\n \"\"\")\n\n@smores.schema\nclass User(Schema):\n id = fields.Integer()\n name = fields.String()\n email = fields.Email()\n address = fields.Nested(Address)\n _default_template = TemplateString(\"\"\"\n
{{name}}
\n
E: {{email}}
\n
{{address}}
\n \"\"\")\n``` \n\n\n```python\n# for the schemas above, simply invoke the autocomplete method with a tag fragment\n\n>>> smores.autocomplete(\"\")\nAutocompleteResponse(tagStatus='INVALID', options=['address', 'coordinates', 'user'])\n\n>>> smores.autocomplete('user')\nAutocompleteResponse(tagStatus='VALID', options=['_default_template', 'address', 'email', 'id', 'name'])\n\n>>> smores.autocomplete('us')\nAutocompleteResponse(tagStatus='INVALID', options=['user'])\n\n>>> smores.autocomplete(\"user.address.coordinates\")\nAutocompleteResponse(tagStatus='VALID', options=['_default_template', 'lat', 'lng'])\n\n# Receiving '_default_template' or no results means that the current tag fragment is valid but _default_template\n# shouldn't be appended to the tag in the ui.\n``` \n\n\n```python\n# provide data to the render function\ndata = {\n \"user\": {\n \"id\": 1,\n \"name\": \"Leanne Graham\",\n \"username\": \"Bret\",\n \"email\": \"Sincere@april.biz\",\n \"phone\": \"1-770-736-8031 x56442\",\n \"address\": {\n \"street\": \"Kulas Light\",\n \"suite\": \"Apt. 556\",\n \"city\": \"Gwenborough\",\n \"state\": \"MD\",\n \"zipcode\": \"92998-3874\",\n \"coordinates\": {\n \"lat\": \"36.065934\",\n\t\t\t\t\"lng\": \"-79.791414\"\n }\n },\n }\n}\n\n# provide user created template\nuser_template = \"\"\"\n

Hi, {user.name}!

\n

Your Info:

\n {user}\n\"\"\"\n\n# render the output\nprint smores.render(data, user_template)\n\n# output -->\n#

Hi, Leanne Graham!

\n#

Your Info:

\n# \n#
Leanne Graham
\n#
E: Sincere@april.biz
\n#
\n#
View Map
\n#
Kulas Light -- Apt. 556
\n#
Gwenborough, MD 92998-3874
\n#
\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/codylandry/Smores", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "smores", "package_url": "https://pypi.org/project/smores/", "platform": "", "project_url": "https://pypi.org/project/smores/", "project_urls": { "Homepage": "https://github.com/codylandry/Smores" }, "release_url": "https://pypi.org/project/smores/0.0.7/", "requires_dist": [ "marshmallow", "Jinja2", "pyparsing", "pydocmd; extra == 'docs'", "mkdocs; extra == 'docs'", "recommonmark; extra == 'docs'", "pytest; extra == 'test'", "pony; extra == 'test'", "pytest-runner; extra == 'test'", "coveralls; extra == 'test'", "coverage; extra == 'test'", "bs4; extra == 'utils'" ], "requires_python": "", "summary": "Allows you to create a schema for templates with a tag syntax easy enough for end users.", "version": "0.0.7" }, "last_serial": 3387812, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c032a339922d1baf5545bbbee2508796", "sha256": "16d65a17fca6bf63dc3a92e2ac6020c1d4f13515e057c659a2e79ad0a0270a02" }, "downloads": -1, "filename": "smores-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c032a339922d1baf5545bbbee2508796", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12323, "upload_time": "2017-11-28T03:19:12", "url": "https://files.pythonhosted.org/packages/00/ed/0a091f0ae7533ed4012e89f08615f04f9ae24a2f5faf4e31788eb00aa142/smores-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a001f052acd8c7707404ba20aa0c9beb", "sha256": "48c65b744d321e376437261527c0d226e1b86ca47be88447e934572b90fd81da" }, "downloads": -1, "filename": "smores-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a001f052acd8c7707404ba20aa0c9beb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11223, "upload_time": "2017-11-28T03:19:13", "url": "https://files.pythonhosted.org/packages/c9/ed/7a5fdf31aac1ace88228be80faa7853da93180f011b41787414925f76f33/smores-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8ca17d3e42daca9c8167eb58d3830db0", "sha256": "382a12268bee24be4400d13eba1bef7ca760ada7e311cc4b0650ae907b9c0bae" }, "downloads": -1, "filename": "smores-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ca17d3e42daca9c8167eb58d3830db0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12417, "upload_time": "2017-11-30T16:38:43", "url": "https://files.pythonhosted.org/packages/0c/ec/ede18127f2e9b5b3736121739908be36935b0c0bdf313e1fe550220ba0c5/smores-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfb313bc68ee29b9c377ca2a1ce59468", "sha256": "74334b1883e56484eb8ac6059fb2d326634b62120b37ac20bcb16956d9188a4d" }, "downloads": -1, "filename": "smores-0.0.2.tar.gz", "has_sig": false, "md5_digest": "cfb313bc68ee29b9c377ca2a1ce59468", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11344, "upload_time": "2017-11-30T16:38:45", "url": "https://files.pythonhosted.org/packages/54/9f/1328abbdc86f8aa1db875c5e12b9bae676442bf207e8b9e3144fd8dda7fb/smores-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b3ddf6f4d3a85745bb495823073130d7", "sha256": "b5800255a1c2ccb9ef87760825ca28028cad88bf993f59870a172432fd86ec08" }, "downloads": -1, "filename": "smores-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b3ddf6f4d3a85745bb495823073130d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12420, "upload_time": "2017-11-30T18:24:00", "url": "https://files.pythonhosted.org/packages/36/34/4a3216416c8dc7cb18fa51673c91291721ad5775f01c15d026b13cbf8fce/smores-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6a366da7090305e38fb8d41c8841008", "sha256": "c7cb278b03484c33a9d7992eaf2a63262e092c0fea6298030f70cb07038b8f94" }, "downloads": -1, "filename": "smores-0.0.3.tar.gz", "has_sig": false, "md5_digest": "e6a366da7090305e38fb8d41c8841008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11359, "upload_time": "2017-11-30T18:24:01", "url": "https://files.pythonhosted.org/packages/6a/3c/dc307dd3fea3c435617a2e9d9f6fcf901833c047be92a72cf6444c6aa83b/smores-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "43a566f836c55dcabb539f190ebcb775", "sha256": "ec6ccd813cb3d0b92c0e4836b18187be886bee0c4f2affa4f57cca18d85d654d" }, "downloads": -1, "filename": "smores-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43a566f836c55dcabb539f190ebcb775", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14249, "upload_time": "2017-12-01T15:28:15", "url": "https://files.pythonhosted.org/packages/07/60/f664f17ad307c262b0bc23e3f367829214a548b134cc53928bb0c8ec9450/smores-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "781d8f50c0d9c01fafacd55332a3f74d", "sha256": "bfa9c757f120ab83fffd5462f0d68a57e9e36a02da1fc6c5df3006511f78942e" }, "downloads": -1, "filename": "smores-0.0.4.tar.gz", "has_sig": false, "md5_digest": "781d8f50c0d9c01fafacd55332a3f74d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12975, "upload_time": "2017-12-01T15:28:16", "url": "https://files.pythonhosted.org/packages/b4/07/c63b3bab399258299cb4147b99ac90a9485ae701b5e749ce6b51525bed8d/smores-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "be67c99bdaf3eb792ac04fefffe8df9f", "sha256": "b78d55d73c9a9910bcbda21c986a6950dfa36651e70d0b89c7079c781f4c75f3" }, "downloads": -1, "filename": "smores-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "be67c99bdaf3eb792ac04fefffe8df9f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14248, "upload_time": "2017-12-01T16:20:46", "url": "https://files.pythonhosted.org/packages/57/01/0b6fae9db1addfdb3614a72099dbb64a65daeb0101dc10854969e750aa12/smores-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "900e787f117a1f66ec7fe07a6fd327f6", "sha256": "0d46a7d9d0a94fe2818a8429195f1eeec7aa0207ca089c95184634f9e62342f0" }, "downloads": -1, "filename": "smores-0.0.5.tar.gz", "has_sig": false, "md5_digest": "900e787f117a1f66ec7fe07a6fd327f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12976, "upload_time": "2017-12-01T16:20:47", "url": "https://files.pythonhosted.org/packages/76/2e/6f5466244491db9737f4b9f86e69f3aa2d4f6522235e04b28652ea83ce15/smores-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "89e4503df4837dc0286d190365d23a53", "sha256": "7901d5359d1bd1c45da5cd7a540e027be89d45fba9c183a51c284194f937a6db" }, "downloads": -1, "filename": "smores-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "89e4503df4837dc0286d190365d23a53", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14293, "upload_time": "2017-12-01T17:07:23", "url": "https://files.pythonhosted.org/packages/85/0d/1891b6cf24420872ff2b02320ea7e5aad2abc4c6e73ed19ef8b66227ae4f/smores-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e4b65ba4f4eeb02346b591ce5a26ce1", "sha256": "f0d99d6bdeb8b61f47b95282c634b774761da467b76b13973f98e29de477cdab" }, "downloads": -1, "filename": "smores-0.0.6.tar.gz", "has_sig": false, "md5_digest": "9e4b65ba4f4eeb02346b591ce5a26ce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13015, "upload_time": "2017-12-01T17:07:26", "url": "https://files.pythonhosted.org/packages/88/ab/7644ee6a0d0aaf2e08fb111ba2f6968670d5da16140aaeea0aef384e9086/smores-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "3fdad68baf2a6b1c60caeebb35e7e207", "sha256": "ff517779dc7c930f2538397950dc7dc41d4f8d473fd386015ada0b61227b0fb0" }, "downloads": -1, "filename": "smores-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3fdad68baf2a6b1c60caeebb35e7e207", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14783, "upload_time": "2017-12-04T16:49:04", "url": "https://files.pythonhosted.org/packages/c3/4b/ea6043181a89c26c7f1f766c6d52d39b7f5aa17c47ae3d18cd09d8cc3d47/smores-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5be33230d79b685292d53ad92a6aa45", "sha256": "a0d5a8e4c17bcde6bc9cca5c63e229de83bf0966fee2e829845b556536720367" }, "downloads": -1, "filename": "smores-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f5be33230d79b685292d53ad92a6aa45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13511, "upload_time": "2017-12-04T16:49:11", "url": "https://files.pythonhosted.org/packages/d4/fd/7da27262fbd41e5464c6cf66832e29208ddbc67bb9942a582e44e70a3a1f/smores-0.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3fdad68baf2a6b1c60caeebb35e7e207", "sha256": "ff517779dc7c930f2538397950dc7dc41d4f8d473fd386015ada0b61227b0fb0" }, "downloads": -1, "filename": "smores-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3fdad68baf2a6b1c60caeebb35e7e207", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14783, "upload_time": "2017-12-04T16:49:04", "url": "https://files.pythonhosted.org/packages/c3/4b/ea6043181a89c26c7f1f766c6d52d39b7f5aa17c47ae3d18cd09d8cc3d47/smores-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5be33230d79b685292d53ad92a6aa45", "sha256": "a0d5a8e4c17bcde6bc9cca5c63e229de83bf0966fee2e829845b556536720367" }, "downloads": -1, "filename": "smores-0.0.7.tar.gz", "has_sig": false, "md5_digest": "f5be33230d79b685292d53ad92a6aa45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13511, "upload_time": "2017-12-04T16:49:11", "url": "https://files.pythonhosted.org/packages/d4/fd/7da27262fbd41e5464c6cf66832e29208ddbc67bb9942a582e44e70a3a1f/smores-0.0.7.tar.gz" } ] }