{ "info": { "author": "Christoph Brand", "author_email": "christoph@brand.rest", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "# Python Filterparams #\n\nFilterparams is a library for parsing URL paramters for filter\npurposes in a backend. It provides a syntax to map SQL-like \nqueries on top of the query parameters and parses it into a\npython object.\n\nThis is a helper library for providing filter collection APIs. \nThe primary use case for developing the library is to\nuse it with a REST-API which uses the [JSONAPI](http://jsonapi.org/) \nstandard. Because of this the syntax is completely compatible with \nthe standard and encapsulates everything in the `filter` query \nparameter.\n\n## Example ##\n\nGiven the URL (non URL escaped for better readability):\n```\n/users?filter[param][name][like][no_default_name]=doe&filter[param][first_name]=doe%&filter[binding]=(!no_brand_name&first_name)&filter[order]=name&filter[order]=desc(first_name)\n```\n\nIt can be parsed by the given function:\n\n```python\nfrom urllib.parse import urlsplit, parse_qs\nfrom filterparams import build_parser\n\nurl = urlsplit(\n '/users?filter[param][name][like][no_default_name]=doe'\n '&filter[param][first_name]=doe%&filter[binding]='\n '(!no_brand_name&first_name)&filter[order]=name'\n '&filter[order]=desc(first_name)'\n)\nparams = parse_qs(url)\n\nvalid_filters = ['eq', 'like']\ndefault_filter = 'eq'\n\nparser = build_parser(\n valid_filters=valid_filters,\n default_filter=default_filter,\n)\n\nquery = parser(params)\n```\n\nWould parse the data. You can access the parsed filters through\n`.param_order` and the orders through `.orders`. The param order\nin this specific case would be resolved to:\n\n```python\nAnd(\n left=Parameter(\n name='name',\n alias='no_default_name',\n filter='like',\n value='doe%',\n ),\n right=Parameter(\n name='first_name',\n alias='first_name',\n filter='eq',\n value='doe',\n )\n)\n```\n\nThe orders would be:\n\n```python\n[Order(name='name', direction='asc'), \n Order(name='first_name', direction='desc')]\n```\n\n## Syntax ##\n\nAll arguments must be prefixed by \"filter\". It is possible to \nquery for specific data with filters, apply orders to the result \nand to combine filters through AND, NOT and OR bindings.\n\nThe syntax builds under the filter parameter a virtual object. \nThe keys of the object are simulated through specifying `[{key}]` \nin the passed query parameter. Thus `filter[param]` would point \nto the param key in the filter object.\n\n### Filter specification ###\n\nThe solution supports to query data through the `param` subkey.\n\n```\nfilter[param][{parameter_name}][{operation}][{alias}] = {to_query_value}\n```\n\nThe `operation` and `alias` parameters may be omitted. If no \n`alias` is provided the given parameter name is used for it.\nIf no `operation` is given, the default one is used (in the \nexample this would be equal).\n\nExample:\n```\nfilter[param][phone_number][like]=001%\n```\n\nThis would add a filter to all phone numbers which start with \"001\".\n\n### Filter binding ###\n\nPer default all filters are combined through AND clauses. \nYou can change that by specifying the `filter[binding]` argument.\n\nThis is where the aliases which you can define come into place. \nThe binding provides means to combine filters with AND and OR. \nAlso you are able to negate filters here.\n\nThe filters are addressed by their alias or name, if no alias is \nprovided.\n\nIf you have a filter `search_for_name`, `search_for_phone_number` \nand `search_for_account_number` defined you can say \n`search_for_name OR NOT search_for_number AND search_for_account_number` \nby specifying the following filter:\n\n```\nfilter[binding]=search_for_name|(!search_for_phone_number&search_for_account_number)\n```\n\nEven though the brackets are useless here, you can use them in \nmore complex filters.\n\nThe following table summarizes the possible configuration options:\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TypeSymbolExample
AND&a&b
OR|a|b
NOT!!a
Bracket()(a|b)&c
\n\n### Ordering ###\n\nTo specify a sort order of the results the `filter[order]` parameter \nmay be used. The value can be specified multiple times. To add \nordering you have to provide the name of the parameter which should \nbe ordered, not its alias!\n\nIf you want to order by `name`, `first_name` and in reverse order \n`balance` you can do so by specifying the following query url \nparameters:\n\n```\nfilter[order]=name&filter[order]=first_name&filter[order]=desc(balance)\n```\n\nAs you can see the `desc()` definition can be used to indicate \nreverse ordering.\n\n### Filter definition ###\n\nNot every backend does or should support all possible filter \nmechanisms. This is why the filters which should be accepted \nby the backend have to be added before processing the query \nparameters.\n\nYou can limit the allowed filters by building a parse through the\n`filterparams.build_parser` function. You can configure the allowed\nfilters through the `valid_filters` definition. Additionally you\nhave to add the default filter by using the second `default_filter`\nparameter.\n\n```python\nfrom filterparams import build_parser\n\nvalid_filters = ['eq', 'like']\ndefault_filter = 'eq'\n\nparser = build_parser(\n valid_filters=valid_filters,\n default_filter=default_filter,\n)\n\nquery = parser({})\n```\n\nIf you don't want any validation you can use the `parse` function.\n\n```python\nfrom filterparams import parse\n\nquery = parse({})\n```\n\n## Notes ##\n\n- There do no yet exist any public projects which use this library to provide transparent mapping to an underlying \nbackend. I plan long-term to add another library which does use this package and provide a way to map it on sqlalchemy models. \nIf you are planning to do this or use it for other data mapping please contact me and I'll add a reference to it in\nthe README.\n- The same as mentioned above is valid for client libraries, which generate the filter query structure in any language. \nAgain, as soon as the API is stable I'll probably add a JavaScript library.\n- Depending on your backend it might not make sense to support all features (ordering, parameter binding) of the\nlanguage. You might still want to use it to parse your basic parameters though and ignore the rest.\n\n## Used Libraries ##\n\nFor evaluating the filter params ordering the [funcparserlib](https://github.com/vlasovskikh/funcparserlib) ([MIT license](https://github.com/vlasovskikh/funcparserlib/blob/master/LICENSE))\nmodule is used. Additionally the [Werkzeug](https://github.com/mitsuhiko/werkzeug/blob/master/LICENSE) package is used for supporting dicts with multiple values in the same key.\n\n## Other Languages ##\n\nThis is a list of projects implementing the same API for other languages.\nCurrently this list only has one entry.\n \n- Go - [go-filterparams](https://github.com/cbrand/go-filterparams)\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/cbrand/python-filterparams/tarball/1.0.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cbrand/python-filterparams", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "filterparams", "package_url": "https://pypi.org/project/filterparams/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/filterparams/", "project_urls": { "Download": "https://github.com/cbrand/python-filterparams/tarball/1.0.2", "Homepage": "https://github.com/cbrand/python-filterparams" }, "release_url": "https://pypi.org/project/filterparams/1.0.2/", "requires_dist": null, "requires_python": null, "summary": "Filterparams", "version": "1.0.2" }, "last_serial": 1958345, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "284a268d2e4c6f6441b9797dec689409", "sha256": "7ae8042b5188c12e7b177ff472422339daf2337a95beb9b77cbd1f1f9c153ab4" }, "downloads": -1, "filename": "filterparams-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "284a268d2e4c6f6441b9797dec689409", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5477, "upload_time": "2016-02-16T00:26:46", "url": "https://files.pythonhosted.org/packages/23/d2/2980f35db71ffcb9de32e2d609fa388a4cd06bd820a689e6a193c3f2acce/filterparams-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "455675e16faa3f6b6df0b840997fce42", "sha256": "0681ebe05d49523029009a4f71bb755f275377fe00d88f378592cf98710a169f" }, "downloads": -1, "filename": "filterparams-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "455675e16faa3f6b6df0b840997fce42", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6759, "upload_time": "2016-02-16T00:26:39", "url": "https://files.pythonhosted.org/packages/e7/32/e7d77082da678dbbcd11a930412068513de43a946bf0a1bab6e3a7176a9c/filterparams-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41019118e71eec62a3e484188730f0fa", "sha256": "ab79b6c116801bbdd1d19de8c74a7656b87d881682413faf015326ba962487f4" }, "downloads": -1, "filename": "filterparams-1.0.0-py3.2.egg", "has_sig": false, "md5_digest": "41019118e71eec62a3e484188730f0fa", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 10975, "upload_time": "2016-02-16T00:28:58", "url": "https://files.pythonhosted.org/packages/93/17/ed6c730c1fcf36ce20cfd57231ff3017dec2da583b7ab92b591eeff00ea0/filterparams-1.0.0-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "1a7f2f8f7e9a86867d9992fcca6e9df1", "sha256": "757a8473e001fa9fd3f4f30f8d026002e5f4406e8d2c2ce6c3a8a2a0d17d00f1" }, "downloads": -1, "filename": "filterparams-1.0.0-py3.3.egg", "has_sig": false, "md5_digest": "1a7f2f8f7e9a86867d9992fcca6e9df1", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 12995, "upload_time": "2016-02-16T00:28:45", "url": "https://files.pythonhosted.org/packages/c9/69/868ef4c94068ff20c72444fca45cef965a49ae3a7e859d5e4ac7220d24ab/filterparams-1.0.0-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "61a5965ebfd63a9dfba259c7bdf3a434", "sha256": "5e7baabdcf3ecf05dc1ac1bf216fc7994b5e8528ad3c1850e558261fa05fca1a" }, "downloads": -1, "filename": "filterparams-1.0.0-py3.4.egg", "has_sig": false, "md5_digest": "61a5965ebfd63a9dfba259c7bdf3a434", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 12761, "upload_time": "2016-02-16T00:28:29", "url": "https://files.pythonhosted.org/packages/aa/ca/3b11d56ef03fe231b8066d63fa0cf92d1a574c2c6ca7eb4bf25099db4aa6/filterparams-1.0.0-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "33b084013438324687bd33262ceafca6", "sha256": "2538c205cf0739cb4ea1feb596522438a0edda448aacb699b65daf804891478c" }, "downloads": -1, "filename": "filterparams-1.0.0-py3.5.egg", "has_sig": false, "md5_digest": "33b084013438324687bd33262ceafca6", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 5344, "upload_time": "2016-02-16T00:27:34", "url": "https://files.pythonhosted.org/packages/1e/6a/935394d1b446c50a4825e989a105a634ed2ff79fa3c4242c808d678f791a/filterparams-1.0.0-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "54c89b7ba5319fe371756692f16f608b", "sha256": "650e67187849e21145b56fa222d68020e7dbf0e40d0b6f1387089010896a400d" }, "downloads": -1, "filename": "filterparams-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "54c89b7ba5319fe371756692f16f608b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6621, "upload_time": "2016-02-16T00:27:29", "url": "https://files.pythonhosted.org/packages/5e/e3/9f8c781522eee6cca6e41b91bc03fda6539d191dc026c1aa34b8a31061fe/filterparams-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bde39a1d253c82703d23d17b13a8ea9d", "sha256": "33e5e776d99d8ecc5c11f610db5fb4562bd24367dd991a84e6dceaabc5e6d1f2" }, "downloads": -1, "filename": "filterparams-1.0.0.tar.gz", "has_sig": false, "md5_digest": "bde39a1d253c82703d23d17b13a8ea9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9638, "upload_time": "2016-02-16T00:27:52", "url": "https://files.pythonhosted.org/packages/97/ca/b30397d0db5aa79d28666c0627ae60d9e102c47cc133d7744f20b90fbec9/filterparams-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "859cc6cd5d17c0632c6e6101e0bdcfa3", "sha256": "ef64fb2f5f000b12b7cd5f8a34b2fa0ea50551d21cad11f1115695675f00bb4d" }, "downloads": -1, "filename": "filterparams-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "859cc6cd5d17c0632c6e6101e0bdcfa3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5513, "upload_time": "2016-02-16T00:32:37", "url": "https://files.pythonhosted.org/packages/e7/67/4ea43c82e60b9dc18b266de63c840b2e71e8b09cb8185d923c660d35352d/filterparams-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "9274a772469d5cea02aba089fdf9cb01", "sha256": "16095cda8fe0f06258996938d2b9bc5c35310d3bca977e26c52023773947b2a8" }, "downloads": -1, "filename": "filterparams-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "9274a772469d5cea02aba089fdf9cb01", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6835, "upload_time": "2016-02-16T00:32:30", "url": "https://files.pythonhosted.org/packages/f4/00/4534bee24008f064663a246862f81fc9291aa58ca900fac1bb9f7a50e1cf/filterparams-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72aaf0c3f80cf3e6d8a9ddd120111ad9", "sha256": "e4d99f9281940c2dded4bdc79a432f8078a16dca8734926852436fa88ea9951a" }, "downloads": -1, "filename": "filterparams-1.0.1-py3.1.egg", "has_sig": false, "md5_digest": "72aaf0c3f80cf3e6d8a9ddd120111ad9", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 10788, "upload_time": "2016-02-16T00:35:11", "url": "https://files.pythonhosted.org/packages/36/17/61570ff2de8ded9636636027e1a45489debab6bc6763017c7722d54d8f2b/filterparams-1.0.1-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "428da9160a1db9f06c5e22e5a165e838", "sha256": "7971cb652ab67316cd58c675a6ba68585979964e2abc0bb5cd9cc85c5d4ebb9d" }, "downloads": -1, "filename": "filterparams-1.0.1-py3.2.egg", "has_sig": false, "md5_digest": "428da9160a1db9f06c5e22e5a165e838", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 11011, "upload_time": "2016-02-16T00:34:07", "url": "https://files.pythonhosted.org/packages/4f/96/d2ad137be93698ea3565bc1cd9529014b1e7a1db74d8f2a4d8b4d48eec00/filterparams-1.0.1-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "61db5690f47b1595e6bf715be6ff1a5a", "sha256": "7af6970a3e1ad970150141331f0033a0a142699b0fc4ca875d7967de1be63cd7" }, "downloads": -1, "filename": "filterparams-1.0.1-py3.3.egg", "has_sig": false, "md5_digest": "61db5690f47b1595e6bf715be6ff1a5a", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 13031, "upload_time": "2016-02-16T00:34:27", "url": "https://files.pythonhosted.org/packages/17/de/cf0fa92ea955088b706a6afe3b079b96fb38c10ca0383275cc856306211a/filterparams-1.0.1-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "f66f2487a8c54d22d820d79522dd4413", "sha256": "874e2adf9edfb7d824990832db52c243aaaf4eaf97d7997a661d5f56f04e0b39" }, "downloads": -1, "filename": "filterparams-1.0.1-py3.4.egg", "has_sig": false, "md5_digest": "f66f2487a8c54d22d820d79522dd4413", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 12797, "upload_time": "2016-02-16T00:34:42", "url": "https://files.pythonhosted.org/packages/4f/e9/a0ffe25dcc4a43e4f45d8e94162da5a115fd8ccdd785a75f86f56fb52aae/filterparams-1.0.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "4f069d54b0d48085ee456ba1fad649a9", "sha256": "faf64a78d03c91959f8be450d7148fac790a42ecad5185dd731bb426c3122065" }, "downloads": -1, "filename": "filterparams-1.0.1-py3.5.egg", "has_sig": false, "md5_digest": "4f069d54b0d48085ee456ba1fad649a9", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 5380, "upload_time": "2016-02-16T00:33:01", "url": "https://files.pythonhosted.org/packages/46/18/155941b170b878c3d32b19624eba884e878b4c6f76cf7301d35b42de95a4/filterparams-1.0.1-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "13d1e0806e1d1c091447b3c153c08367", "sha256": "9db673544f37294c02e70d3e02cdbbade5b8f06bef8e3c7754b7852566df7366" }, "downloads": -1, "filename": "filterparams-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "13d1e0806e1d1c091447b3c153c08367", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6696, "upload_time": "2016-02-16T00:32:53", "url": "https://files.pythonhosted.org/packages/09/ae/6cbc861fc748b360ad4c880fe88ba1d43a2400d54ed5ddbfb690fe68a82e/filterparams-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c1bb47b86d8d033be44c2b868936820", "sha256": "2d5191fc80a52cdc813059876fc9fb4e1c794dcf9447c6f8676222489741650f" }, "downloads": -1, "filename": "filterparams-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6c1bb47b86d8d033be44c2b868936820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9709, "upload_time": "2016-02-16T00:33:50", "url": "https://files.pythonhosted.org/packages/7d/fb/e6437aa7acde54bc4d1015437a81edcf5a56ab003f53675a0996afff30b2/filterparams-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "af4be28fe373ccb81a33d3ad9e2c6460", "sha256": "f72c5c6ebdad25d43e38d912b2ac0e2d6cec9b14b10748514d52596f9fe743e9" }, "downloads": -1, "filename": "filterparams-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "af4be28fe373ccb81a33d3ad9e2c6460", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5612, "upload_time": "2016-02-16T00:55:33", "url": "https://files.pythonhosted.org/packages/c8/9d/b08705ac4db1df61a7a5faec9b93c8cefeda7794e83f7ee8b6eb2c52b2ae/filterparams-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6146ae24e9da35c9c78303ba1e8b153a", "sha256": "604c5fbbaf5b5b345c9745ee6d81037bf7eb2d7f0108623dadc6181e5420056f" }, "downloads": -1, "filename": "filterparams-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "6146ae24e9da35c9c78303ba1e8b153a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6933, "upload_time": "2016-02-16T00:55:27", "url": "https://files.pythonhosted.org/packages/35/48/10a03bf21d400cdf2d5c45225349ee37a317ec72e7e00dad0c64fdda8f45/filterparams-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24c7767396e625b7809b309d8c4d61cf", "sha256": "4ce3b91c9034fbd2c686c37a3f18f9880fc0a7e960b25500b377093c3b2d1b5e" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.1.egg", "has_sig": false, "md5_digest": "24c7767396e625b7809b309d8c4d61cf", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 11076, "upload_time": "2016-02-16T00:55:39", "url": "https://files.pythonhosted.org/packages/3b/3c/8e087c821ce2efd9034eb13f478b76061b6e8f87345dd86cd2a675caffd7/filterparams-1.0.2-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "bc78fde1701b21a8553dc756f34833fc", "sha256": "4f9d13de7f07a5e52bbd9c9574cff95915a61486b95913fa4fa8811c01adbd8f" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.2.egg", "has_sig": false, "md5_digest": "bc78fde1701b21a8553dc756f34833fc", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 11298, "upload_time": "2016-02-16T00:55:45", "url": "https://files.pythonhosted.org/packages/5e/7b/c2dc43e590f3ae6333148d3d2c870315b76c39471487270930a4e19f2fa3/filterparams-1.0.2-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "87e826740018e0622435a710ea01c018", "sha256": "308d1fd02b19436a2c2f8ff849fcbeaae24e365ee835d0c365357f10026449b9" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.3.egg", "has_sig": false, "md5_digest": "87e826740018e0622435a710ea01c018", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 13331, "upload_time": "2016-02-16T00:55:53", "url": "https://files.pythonhosted.org/packages/e1/70/f5deb8de5ad883af2efddd4eefb18dee87504445a33b1cf15eb30e13b52b/filterparams-1.0.2-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "67e1b31057f4149e868370f9e9f2c41d", "sha256": "de0f2b2c0ca3691a337d19ce4e755f0a8228ca760c94b39ee9d8b805a9345b07" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.4.egg", "has_sig": false, "md5_digest": "67e1b31057f4149e868370f9e9f2c41d", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 13093, "upload_time": "2016-02-16T00:55:59", "url": "https://files.pythonhosted.org/packages/90/0a/1b46ae285bcb3da3bf1c1a616ccc60a426889e3a0c4cb400b3f175b79aee/filterparams-1.0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "edc25af8a125a8d2a3f9f3564f732458", "sha256": "98ea57300bcb4d1ac6839c656275aa6d6f2d231a68b9f3dac6fb9c70f034bf61" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.5.egg", "has_sig": false, "md5_digest": "edc25af8a125a8d2a3f9f3564f732458", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13074, "upload_time": "2016-02-16T00:56:11", "url": "https://files.pythonhosted.org/packages/51/fd/4a8f55f57322961f34d9ee63073067190ff3a082016cc4c92319550e99e0/filterparams-1.0.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "3f3f34daac7ecc05fcf5fc8950e174a8", "sha256": "98a2af142d935b5e3b3d99ec30265b81b1ce45f09b9de1b65d52fc6ac385e683" }, "downloads": -1, "filename": "filterparams-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f3f34daac7ecc05fcf5fc8950e174a8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6795, "upload_time": "2016-02-16T00:56:22", "url": "https://files.pythonhosted.org/packages/33/70/020a75fca95ae7eea0f6fe9cb2d14c1f4fc84f742a341c25e637fe9f5f44/filterparams-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a0adf314876022a5f8d9ec2619c8276", "sha256": "dfbe999f7742d70b9626d91bf006056ed4d5c8053d82b450c47a291f9bcec2c9" }, "downloads": -1, "filename": "filterparams-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6a0adf314876022a5f8d9ec2619c8276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9891, "upload_time": "2016-02-16T00:56:29", "url": "https://files.pythonhosted.org/packages/cd/c3/f88324493684fd88ec5abd0f078aa2cf5cb11bc3998800053e377d11ba20/filterparams-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "af4be28fe373ccb81a33d3ad9e2c6460", "sha256": "f72c5c6ebdad25d43e38d912b2ac0e2d6cec9b14b10748514d52596f9fe743e9" }, "downloads": -1, "filename": "filterparams-1.0.2-py2.7.egg", "has_sig": false, "md5_digest": "af4be28fe373ccb81a33d3ad9e2c6460", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 5612, "upload_time": "2016-02-16T00:55:33", "url": "https://files.pythonhosted.org/packages/c8/9d/b08705ac4db1df61a7a5faec9b93c8cefeda7794e83f7ee8b6eb2c52b2ae/filterparams-1.0.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6146ae24e9da35c9c78303ba1e8b153a", "sha256": "604c5fbbaf5b5b345c9745ee6d81037bf7eb2d7f0108623dadc6181e5420056f" }, "downloads": -1, "filename": "filterparams-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "6146ae24e9da35c9c78303ba1e8b153a", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6933, "upload_time": "2016-02-16T00:55:27", "url": "https://files.pythonhosted.org/packages/35/48/10a03bf21d400cdf2d5c45225349ee37a317ec72e7e00dad0c64fdda8f45/filterparams-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24c7767396e625b7809b309d8c4d61cf", "sha256": "4ce3b91c9034fbd2c686c37a3f18f9880fc0a7e960b25500b377093c3b2d1b5e" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.1.egg", "has_sig": false, "md5_digest": "24c7767396e625b7809b309d8c4d61cf", "packagetype": "bdist_egg", "python_version": "3.1", "requires_python": null, "size": 11076, "upload_time": "2016-02-16T00:55:39", "url": "https://files.pythonhosted.org/packages/3b/3c/8e087c821ce2efd9034eb13f478b76061b6e8f87345dd86cd2a675caffd7/filterparams-1.0.2-py3.1.egg" }, { "comment_text": "", "digests": { "md5": "bc78fde1701b21a8553dc756f34833fc", "sha256": "4f9d13de7f07a5e52bbd9c9574cff95915a61486b95913fa4fa8811c01adbd8f" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.2.egg", "has_sig": false, "md5_digest": "bc78fde1701b21a8553dc756f34833fc", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 11298, "upload_time": "2016-02-16T00:55:45", "url": "https://files.pythonhosted.org/packages/5e/7b/c2dc43e590f3ae6333148d3d2c870315b76c39471487270930a4e19f2fa3/filterparams-1.0.2-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "87e826740018e0622435a710ea01c018", "sha256": "308d1fd02b19436a2c2f8ff849fcbeaae24e365ee835d0c365357f10026449b9" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.3.egg", "has_sig": false, "md5_digest": "87e826740018e0622435a710ea01c018", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 13331, "upload_time": "2016-02-16T00:55:53", "url": "https://files.pythonhosted.org/packages/e1/70/f5deb8de5ad883af2efddd4eefb18dee87504445a33b1cf15eb30e13b52b/filterparams-1.0.2-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "67e1b31057f4149e868370f9e9f2c41d", "sha256": "de0f2b2c0ca3691a337d19ce4e755f0a8228ca760c94b39ee9d8b805a9345b07" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.4.egg", "has_sig": false, "md5_digest": "67e1b31057f4149e868370f9e9f2c41d", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 13093, "upload_time": "2016-02-16T00:55:59", "url": "https://files.pythonhosted.org/packages/90/0a/1b46ae285bcb3da3bf1c1a616ccc60a426889e3a0c4cb400b3f175b79aee/filterparams-1.0.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "edc25af8a125a8d2a3f9f3564f732458", "sha256": "98ea57300bcb4d1ac6839c656275aa6d6f2d231a68b9f3dac6fb9c70f034bf61" }, "downloads": -1, "filename": "filterparams-1.0.2-py3.5.egg", "has_sig": false, "md5_digest": "edc25af8a125a8d2a3f9f3564f732458", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 13074, "upload_time": "2016-02-16T00:56:11", "url": "https://files.pythonhosted.org/packages/51/fd/4a8f55f57322961f34d9ee63073067190ff3a082016cc4c92319550e99e0/filterparams-1.0.2-py3.5.egg" }, { "comment_text": "", "digests": { "md5": "3f3f34daac7ecc05fcf5fc8950e174a8", "sha256": "98a2af142d935b5e3b3d99ec30265b81b1ce45f09b9de1b65d52fc6ac385e683" }, "downloads": -1, "filename": "filterparams-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3f3f34daac7ecc05fcf5fc8950e174a8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 6795, "upload_time": "2016-02-16T00:56:22", "url": "https://files.pythonhosted.org/packages/33/70/020a75fca95ae7eea0f6fe9cb2d14c1f4fc84f742a341c25e637fe9f5f44/filterparams-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a0adf314876022a5f8d9ec2619c8276", "sha256": "dfbe999f7742d70b9626d91bf006056ed4d5c8053d82b450c47a291f9bcec2c9" }, "downloads": -1, "filename": "filterparams-1.0.2.tar.gz", "has_sig": false, "md5_digest": "6a0adf314876022a5f8d9ec2619c8276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9891, "upload_time": "2016-02-16T00:56:29", "url": "https://files.pythonhosted.org/packages/cd/c3/f88324493684fd88ec5abd0f078aa2cf5cb11bc3998800053e377d11ba20/filterparams-1.0.2.tar.gz" } ] }