{ "info": { "author": "Marc Brinkmann", "author_email": "git@marcbrinkmann.de", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "Jinja vanish: Escape like a ninja\n=================================\n\nWhen using `Jinja2`_-templates to output non-HTML contents, autoescaping cannot\nbe used because it is hardcoded to work with an HTML ``escape`` function and\n`MarkupSafe`_'s Markup objects.\n\n`jinja_vanish` enables implementing custom auto-escapes by overriding the\n``escape`` function inside the generated template code using an extended\ncode-generator and replacing the built-in filters ``|e`` and ``|escape``. Usage\nis fairly simple, here is an example that uses `psycopg2`'s ``mogrify()``\nfunction to escape SQL for Postgres:\n\n.. code-block:: python\n\n from datetime import datetime\n\n from jinja_vanish import DynAutoEscapeEnvironment, markup_escape_func\n from psycopg2.extensions import adapt\n\n @markup_escape_func\n def sql_escape(v):\n # the decorator handles wrapping/unwrapping in Markup(), but is\n # otherwise not necessary\n return adapt(v)\n\n\n env = DynAutoEscapeEnvironment(autoescape=True, escape_func=sql_escape)\n tpl = env.from_string('SELECT * FROM foo where post_date <= {{now}}')\n\n print(tpl.render(now=datetime.now()))\n\nRunning it outputs::\n\n SELECT * FROM foo where post_date <= '2016-01-24T23:23:22.727789'::timestamp\n\n\n\n.. _Jinja2: http://jinja.pocoo.org\n.. _MarkupSafe: https://pypi.python.org/pypi/MarkupSafe", "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/mbr/jinja-vanish", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "jinja-vanish", "package_url": "https://pypi.org/project/jinja-vanish/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/jinja-vanish/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/mbr/jinja-vanish" }, "release_url": "https://pypi.org/project/jinja-vanish/0.1/", "requires_dist": null, "requires_python": null, "summary": "Customizable auto-escaping for jinja2.", "version": "0.1" }, "last_serial": 1920739, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "7897bb38f16b1f48692ca5f3f24da1df", "sha256": "3a28347909a9114e9b64602422e82ca70d95095bf171c447871f0aabd2a119f2" }, "downloads": -1, "filename": "jinja-vanish-0.1.tar.gz", "has_sig": true, "md5_digest": "7897bb38f16b1f48692ca5f3f24da1df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2519, "upload_time": "2016-01-24T22:35:36", "url": "https://files.pythonhosted.org/packages/07/49/24f904774457a8d6a78b1061da23836066236b8ed10cf71cc0efa7823e0a/jinja-vanish-0.1.tar.gz" } ], "0.2.dev1": [] }, "urls": [ { "comment_text": "", "digests": { "md5": "7897bb38f16b1f48692ca5f3f24da1df", "sha256": "3a28347909a9114e9b64602422e82ca70d95095bf171c447871f0aabd2a119f2" }, "downloads": -1, "filename": "jinja-vanish-0.1.tar.gz", "has_sig": true, "md5_digest": "7897bb38f16b1f48692ca5f3f24da1df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2519, "upload_time": "2016-01-24T22:35:36", "url": "https://files.pythonhosted.org/packages/07/49/24f904774457a8d6a78b1061da23836066236b8ed10cf71cc0efa7823e0a/jinja-vanish-0.1.tar.gz" } ] }