{ "info": { "author": "Benjamin Mintz", "author_email": "bmintz@protonmail.com", "bugtrack_url": null, "classifiers": [ "License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development" ], "description": "# querypp\n\n## Deprecation Notice\n\nquerypp has been deprecated in favor of vanilla jinja2. After porting it to jinja2, I realized that none of querypp\nwas actually necessary. [Migrating docs here](https://github.com/iomintz/querypp/blob/master/MIGRATING.md).\n\n[v0.0.3](https://github.com/iomintz/querypp/tree/v0.0.3) is the last version that doesn't use jinja2, in case\nyou want a more lightweight version.\n\n-------------------------------------------------------------------------------------------------------------\n\nquerypp is a SQL query[1] templating system based on [jinja2](https://palletsprojects.com/p/jinja/).\n\n[1]: Although it is trivially adapted to other languages, as the only SQL-specific assumption is the line comment\nsyntax.\n\nTake an example:\n\n```\n-- :query users\nSELECT *\nFROM users\n-- :qblock profiles\n\tLEFT JOIN profiles USING (user_id)\n\t-- :block login_history\n\t\tLEFT JOIN login_history USING (profile_id)\n\t-- :endqblock\n-- :endqblock\n-- :qblock user_id WHERE user_id = $1\n-- :endquery\n```\n\nA Query template can be called:\n - with no block names to return the query without any blocks\n - with one or more block names to return the query with only those block names.\n\nIn this case, `q('profiles', 'user_id')` would return the query with the `login_history` JOIN removed.\n\nAdditionally, any [jinja2 templating features](https://jinja.readthedocs.io/en/2.10.x/templates/),\nsuch as variables and macro functions, can be used, using either the line syntax (e.g. `-- :include 'foo.sql'`)\nor the block syntax (e.g. `{% if x == 1 %}`).\n\n## Usage\n\n```\nenv = querypp.QueryEnvironment('sql/')\nqueries = env.get_template('queries.sql') # opens sql/queries.sql\ndb.execute(queries.users('login_history', 'user_id'), user_id)\n```\n\n## Motivation\n\nAfter moving all my SQL queries to separate files,\nI noticed that I was duplicating some of them except for one extra clause.\nI created this to allow me to deduplicate such queries.\n\n## License\n\nPublic domain, see [COPYING](https://github.com/bmintz/querypp/blob/master/COPYING)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bmintz/querypp", "keywords": "", "license": "CC0 1.0", "maintainer": "", "maintainer_email": "", "name": "querypp", "package_url": "https://pypi.org/project/querypp/", "platform": "", "project_url": "https://pypi.org/project/querypp/", "project_urls": { "Homepage": "https://github.com/bmintz/querypp" }, "release_url": "https://pypi.org/project/querypp/0.1.2/", "requires_dist": [ "jinja2 (<3.0.0,>=2.10.1)" ], "requires_python": "", "summary": "SQL query templating shorthand", "version": "0.1.2" }, "last_serial": 5918511, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0c7214bd43a734b89a471daa672be344", "sha256": "82577e94804f61b4ef2e8df4ed4c83ab70c4fc9ce5a5bf12a58b1f28bba41c48" }, "downloads": -1, "filename": "querypp-0.0.1.tar.gz", "has_sig": false, "md5_digest": "0c7214bd43a734b89a471daa672be344", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4202, "upload_time": "2019-08-09T09:18:08", "url": "https://files.pythonhosted.org/packages/17/ed/21f3238001e49dafa395820b650b4c7cb117fa2aca7430642738e3019572/querypp-0.0.1.tar.gz" } ], "0.0.1.post1": [ { "comment_text": "", "digests": { "md5": "3afdddcda110fc115bc3a0776c9339b5", "sha256": "7437dc2033e5c852864df5fd2424a9f42ab171444d891eedbf2453d244dbdef6" }, "downloads": -1, "filename": "querypp-0.0.1.post1.tar.gz", "has_sig": false, "md5_digest": "3afdddcda110fc115bc3a0776c9339b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4202, "upload_time": "2019-08-09T09:20:20", "url": "https://files.pythonhosted.org/packages/a9/24/81a78e709cc51db7dba7b101a5bb5388f1ffcfd64565d49e860f81ae6c8f/querypp-0.0.1.post1.tar.gz" } ], "0.0.1.post2": [ { "comment_text": "", "digests": { "md5": "32e735191d750e6d66aef56eeddef2ea", "sha256": "1e0772680e183a1e2b815033a8ad4dcf1f6950adce7c09c98f60107dd40eff8b" }, "downloads": -1, "filename": "querypp-0.0.1.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "32e735191d750e6d66aef56eeddef2ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7448, "upload_time": "2019-08-09T18:19:05", "url": "https://files.pythonhosted.org/packages/79/d5/27cedc161703c86a410726954a2bf72320c94317bca0b6bf0f1857f35b76/querypp-0.0.1.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98e92f81d7366540ab1350e914167553", "sha256": "c8bce334d69a484456d45fedc21580b951b7d9e31c1bca0a8358dd1636063cfd" }, "downloads": -1, "filename": "querypp-0.0.1.post2.tar.gz", "has_sig": false, "md5_digest": "98e92f81d7366540ab1350e914167553", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4376, "upload_time": "2019-08-09T09:20:39", "url": "https://files.pythonhosted.org/packages/1e/f9/0f780e02a644e144c975ae8bf45f148ba42c5ac1e08503ee886092ec2f81/querypp-0.0.1.post2.tar.gz" } ], "0.0.1.post3": [ { "comment_text": "", "digests": { "md5": "53ff0128737d495e63093db3beff4a14", "sha256": "a15ebd02534fe7c72e0cdc70d639a2d086806ae84a789b42bca0e887b95b5572" }, "downloads": -1, "filename": "querypp-0.0.1.post3.tar.gz", "has_sig": false, "md5_digest": "53ff0128737d495e63093db3beff4a14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4318, "upload_time": "2019-08-09T09:27:10", "url": "https://files.pythonhosted.org/packages/13/a4/cbf5a1eb954d77540ecd87f707d1f33665095b4c1916bdfa5590db539143/querypp-0.0.1.post3.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "8b9262ea0fe12afc5b6113928d9a67a4", "sha256": "817a20e5bdafd199f80d34ac396b798d18ba281ac800ab2421e15e764a010c30" }, "downloads": -1, "filename": "querypp-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "8b9262ea0fe12afc5b6113928d9a67a4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7377, "upload_time": "2019-08-09T18:19:06", "url": "https://files.pythonhosted.org/packages/5c/97/84f09ab0b0984ad33b194832aa89996f1a94527d9c80c39f0fdf217799cf/querypp-0.0.2-py3-none-any.whl" } ], "0.0.2.post1": [ { "comment_text": "", "digests": { "md5": "af114303852bd32e1c809da32511fda1", "sha256": "67be32345d79286f3093a81e26f9285833b37149c0285de7f4da8e87030d098b" }, "downloads": -1, "filename": "querypp-0.0.2.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "af114303852bd32e1c809da32511fda1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7450, "upload_time": "2019-08-09T18:20:25", "url": "https://files.pythonhosted.org/packages/22/40/3db67cc9f6a1bfe3c9435a9f6700ff719c298635804a4997745fdf6170cd/querypp-0.0.2.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4cc879512c9777244f1036a697fbf527", "sha256": "c71c4613d5deade64e0ba5e565f0de9bc9e5433f86c0ce4fb30dd442856b1a93" }, "downloads": -1, "filename": "querypp-0.0.2.post1.tar.gz", "has_sig": false, "md5_digest": "4cc879512c9777244f1036a697fbf527", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4377, "upload_time": "2019-08-09T18:20:27", "url": "https://files.pythonhosted.org/packages/d8/bb/2aaedbe15df852914175deff51ec61df1196b8d19f04480977e844c722d1/querypp-0.0.2.post1.tar.gz" } ], "0.0.2.post2": [ { "comment_text": "", "digests": { "md5": "b83529580f8c78317468d7714b37001f", "sha256": "5976d9971f85bf83c6f5eabd7e7319708afa3beb62f637e25dc4b97024415a48" }, "downloads": -1, "filename": "querypp-0.0.2.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "b83529580f8c78317468d7714b37001f", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 7442, "upload_time": "2019-08-09T18:26:49", "url": "https://files.pythonhosted.org/packages/52/21/96a072abb7287a8c35d36c1a59811d1ebbddd98ec82307fc01123915cff6/querypp-0.0.2.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dde38d116c67a3b42374ac0002905dad", "sha256": "238ec23339fbb425e4e74fb78191ea707d6384fb4598a60249158c66eec65f40" }, "downloads": -1, "filename": "querypp-0.0.2.post2.tar.gz", "has_sig": false, "md5_digest": "dde38d116c67a3b42374ac0002905dad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4362, "upload_time": "2019-08-09T18:26:48", "url": "https://files.pythonhosted.org/packages/2e/af/11000d9994036e0bc48fa0b22c27811b274e08534227633c36e3869d480d/querypp-0.0.2.post2.tar.gz" } ], "0.0.2.post3": [ { "comment_text": "", "digests": { "md5": "17efc49c36d6cf2da96e7f740748e7fd", "sha256": "e9f58dd3ec0f501ea8770d49fb65b2d73a85555dfce163f15e65d1e76af8dca8" }, "downloads": -1, "filename": "querypp-0.0.2.post3-py3-none-any.whl", "has_sig": false, "md5_digest": "17efc49c36d6cf2da96e7f740748e7fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7444, "upload_time": "2019-08-09T18:27:15", "url": "https://files.pythonhosted.org/packages/9a/b4/6a541a3c777f868b3c728fb906f6a3e8e3473b0237175f5879a8040251d6/querypp-0.0.2.post3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "69ff1f9a5cac2176ba158716715f8870", "sha256": "907fff7050cdbfd0ef33805c31d04b87a5a1ec8d038df44e50c4d682b1f6a79f" }, "downloads": -1, "filename": "querypp-0.0.2.post3.tar.gz", "has_sig": false, "md5_digest": "69ff1f9a5cac2176ba158716715f8870", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4361, "upload_time": "2019-08-09T18:27:18", "url": "https://files.pythonhosted.org/packages/d8/e7/e16d29d502a0b8bcc3635b46afdc5ae168d125d40bbc2423bc2fb0a0d7fa/querypp-0.0.2.post3.tar.gz" } ], "0.0.2.post4": [ { "comment_text": "", "digests": { "md5": "bd9c003709a3f1332b1721c5e31814d0", "sha256": "0a8d04712e40a834880bcc76dfaa29e7e02d604ec6085dbc278b059391e69ec9" }, "downloads": -1, "filename": "querypp-0.0.2.post4-py3-none-any.whl", "has_sig": false, "md5_digest": "bd9c003709a3f1332b1721c5e31814d0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7455, "upload_time": "2019-08-09T18:29:16", "url": "https://files.pythonhosted.org/packages/70/d7/4370426c36a2343d40ace05744e042e6aac96888a42dafe971b873883d75/querypp-0.0.2.post4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d4cf38c4e5289441930a99809abfba47", "sha256": "58461c1b40039bfd55dd323a9de80b6b68c23f14ed3644007620dea40307bbe3" }, "downloads": -1, "filename": "querypp-0.0.2.post4.tar.gz", "has_sig": false, "md5_digest": "d4cf38c4e5289441930a99809abfba47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4375, "upload_time": "2019-08-09T18:29:17", "url": "https://files.pythonhosted.org/packages/ed/a4/2412d8891017225b519c0485af0c12b90ee790f111b09e457c8ee791f899/querypp-0.0.2.post4.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5c356136bdacacaaec087273f5cda662", "sha256": "411b2b1782fd6616db1183d8ad8b350e96fbc821bfcd15e7d553285da4f66737" }, "downloads": -1, "filename": "querypp-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5c356136bdacacaaec087273f5cda662", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7360, "upload_time": "2019-08-12T17:11:10", "url": "https://files.pythonhosted.org/packages/83/08/e55048040dd1ae74dbe7454260bf36c93b8e9b1b7c8cf92dad5418b5418c/querypp-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a03d5e39a903db1f016439b12dcb0d0", "sha256": "ca2f5793a836258d0fa579261800394015110b4b4691bb1fe9195696cae069ae" }, "downloads": -1, "filename": "querypp-0.0.3.tar.gz", "has_sig": false, "md5_digest": "4a03d5e39a903db1f016439b12dcb0d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4331, "upload_time": "2019-08-12T17:11:12", "url": "https://files.pythonhosted.org/packages/cf/6c/0035d36b9411dfddf16a62e3b723a3f4b43890766665eed164f78396376c/querypp-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "e696e1cf28c9fb9affe7c204a495f12b", "sha256": "4c37c05e9b765a4bfae83af6bd70a8a1917da055410f35b1a65f80a32a694abb" }, "downloads": -1, "filename": "querypp-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e696e1cf28c9fb9affe7c204a495f12b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8679, "upload_time": "2019-09-05T15:53:18", "url": "https://files.pythonhosted.org/packages/64/82/6b22a40d073abcb2f274852f778b543e6b13534e8b60dd5def6c35ba9925/querypp-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fda6cc5b8d5d6cf1821cebf192487e0", "sha256": "953d79c7f02d6cf6373c9935707f6c17feaacf0b35b8c8eeabcbf67a235f7730" }, "downloads": -1, "filename": "querypp-0.1.0.tar.gz", "has_sig": false, "md5_digest": "5fda6cc5b8d5d6cf1821cebf192487e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3247, "upload_time": "2019-09-05T15:53:21", "url": "https://files.pythonhosted.org/packages/6f/46/0e52db1adeebc944237ca345853cdbd2be0af35c7a090bf30ab1d0204f47/querypp-0.1.0.tar.gz" } ], "0.1.0.post1": [ { "comment_text": "", "digests": { "md5": "b030bdbb295e225950acb4021963b520", "sha256": "89630760d8eab6600e5a78b1acf3077e42ef813cc782422115457575bfe718f0" }, "downloads": -1, "filename": "querypp-0.1.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "b030bdbb295e225950acb4021963b520", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6061, "upload_time": "2019-09-05T16:46:01", "url": "https://files.pythonhosted.org/packages/3d/ae/8714e305386797d56e50dae246483ed6cf49198761c2165852b5a3092ff0/querypp-0.1.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0a690f899e91b1d98ce30b085da1c96", "sha256": "4d1503b8a8ce7e1a4ab9dfd79d83f4789829f877a6d7a0af20ec2a8efed2ae32" }, "downloads": -1, "filename": "querypp-0.1.0.post1.tar.gz", "has_sig": false, "md5_digest": "f0a690f899e91b1d98ce30b085da1c96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3263, "upload_time": "2019-09-05T16:46:03", "url": "https://files.pythonhosted.org/packages/87/7d/b530f60b101b3654b07391c73136354e56e9adcebc1b8cb8f9d3e2c49387/querypp-0.1.0.post1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "73940f5fa0635c56343a6bca363909dc", "sha256": "e5e4d941012000a476cb020fbc81532bc7801bf8991dd815725fe54dad59bb97" }, "downloads": -1, "filename": "querypp-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "73940f5fa0635c56343a6bca363909dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5987, "upload_time": "2019-09-05T17:25:04", "url": "https://files.pythonhosted.org/packages/b3/aa/c6ce1df380199d67f5e412040d089b9d3f41850622b5bd356718f8cd78d4/querypp-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdce8ce599ba0c6858afb7cc06e59806", "sha256": "a4d83e29e78c41168ecf8e717ceb372725dbdc0d84ec5a81b2fb3adf9c0020ef" }, "downloads": -1, "filename": "querypp-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fdce8ce599ba0c6858afb7cc06e59806", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3250, "upload_time": "2019-09-05T17:25:06", "url": "https://files.pythonhosted.org/packages/77/58/845e4f46d591d21c7482412fee690bfdd3b1b31944a2f8f86f739ce63e62/querypp-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "6d3f8044834bada1316e7bbaf8471a8a", "sha256": "c2135587be928aa57a54244fcc354559f48b8f281fd6a33699a3e3b2286e5e11" }, "downloads": -1, "filename": "querypp-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6d3f8044834bada1316e7bbaf8471a8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6282, "upload_time": "2019-10-02T15:21:22", "url": "https://files.pythonhosted.org/packages/82/3e/437d5dd925675ff6f8ea88d7b2d48fb86abf2a5377a4609dd598e1730da5/querypp-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6aae75d1ac808f7096f589a13a6426fe", "sha256": "12e1d42e7a5616b9dd94fe2a8f0375c05d32c6b8dfa86fa935b6990b37984832" }, "downloads": -1, "filename": "querypp-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6aae75d1ac808f7096f589a13a6426fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3505, "upload_time": "2019-10-02T15:21:32", "url": "https://files.pythonhosted.org/packages/04/b0/27f30f3a8b774ff6c0dbbb8374ff41c2cd339f0f143762edf9422a71831b/querypp-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d3f8044834bada1316e7bbaf8471a8a", "sha256": "c2135587be928aa57a54244fcc354559f48b8f281fd6a33699a3e3b2286e5e11" }, "downloads": -1, "filename": "querypp-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6d3f8044834bada1316e7bbaf8471a8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6282, "upload_time": "2019-10-02T15:21:22", "url": "https://files.pythonhosted.org/packages/82/3e/437d5dd925675ff6f8ea88d7b2d48fb86abf2a5377a4609dd598e1730da5/querypp-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6aae75d1ac808f7096f589a13a6426fe", "sha256": "12e1d42e7a5616b9dd94fe2a8f0375c05d32c6b8dfa86fa935b6990b37984832" }, "downloads": -1, "filename": "querypp-0.1.2.tar.gz", "has_sig": false, "md5_digest": "6aae75d1ac808f7096f589a13a6426fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3505, "upload_time": "2019-10-02T15:21:32", "url": "https://files.pythonhosted.org/packages/04/b0/27f30f3a8b774ff6c0dbbb8374ff41c2cd339f0f143762edf9422a71831b/querypp-0.1.2.tar.gz" } ] }