{ "info": { "author": "WYF", "author_email": "dev@wyf.io", "bugtrack_url": null, "classifiers": [], "description": "mitest - Mongo Inspired policy test\n===================================\n\n.. image:: https://travis-ci.org/WYFDEV/mitest.svg?branch=master\n :target: https://travis-ci.org/WYFDEV/mitest\n :alt: Travis status for master branch\n\n.. image:: https://codecov.io/gh/WYFDEV/mitest/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/WYFDEV/mitest\n :alt: codecov.io status for master branch\n\nIntroduction\n------------\n\nTest if data match policy, inspired by\n`MongoDB query format `_\n\nA **policy** express the expected *relationship* between *variable* and *data*\nuesing json (or python dict direct).\n\nKey beginning with \"$\" to indicate relationship like `$and`, `$lt`, `$gte`.\n\n\nExample\n-------\n\npolicy, variable \"a\" less then 10::\n\n {\"a\": {\"$lt\": 10}}\n\ntest, if given data match policy::\n\n >>> policy = TestPolicy({'a': {'$lt': 10}})\n >>>\n >>> result = policy.test({'a': 9})\n >>> bool(result)\n True\n >>> result.how\n [('a', {'$lt': 10}, 9)]\n >>>\n >>> result = policy.test({'a': 11})\n >>> bool(result)\n False\n >>> result.how\n [('a', {'$lt': 10}, 11)]\n\nArrtibute `how` express how data match or not match policy.\nFor example, `(\"a\", {\"$lt\": 10}, 9)` mean that for variable `a`, policy is `lessthen 10`,\nand (or but, if not match) given data is `9`.\n\n\nPolicy format\n-------------\n\nMongoDB query format is a little complicated, but\n\"Simple is better than complex\".\n\nFor this MongoDB query::\n\n {\"$or\":[\n {\"$and\":[\n {\"a\":\"23\"},\n {\"b\":6}\n ]},\n {\"$and\":[\n {\"c\":{\"$gte\":2}},\n {\"c\":{\"$lt\":4}}\n ]}\n ]}\n\n\"$and\" is default for each items in list::\n\n {\"$or\":[\n [\n {\"a\":\"23\"},\n {\"b\":6}\n ],\n [\n {\"c\":{\"$gte\":2}},\n {\"c\":{\"$lt\":4}}\n ]\n ]}\n\nMerge items to single dict::\n\n {\"$or\":[\n {\"a\":\"23\", \"b\":6},\n {\"c\":{\"$gte\":2, \"$lt\":4}}\n ]}\n\nMuch simpler :-)\n\n----------------------------------------\n\nWish this can help you.\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://project.wyf.io/mitest", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mitest", "package_url": "https://pypi.org/project/mitest/", "platform": "", "project_url": "https://pypi.org/project/mitest/", "project_urls": { "Homepage": "http://project.wyf.io/mitest" }, "release_url": "https://pypi.org/project/mitest/0.2.1/", "requires_dist": null, "requires_python": "", "summary": "mongo inspired policy test", "version": "0.2.1" }, "last_serial": 3809093, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "950cea44ef9eb4b5c6e48fb83605264d", "sha256": "73483940de0482ac99526322b8f9070c57c9e866644da1d05ddf0b51574e3aae" }, "downloads": -1, "filename": "mitest-0.1.tar.gz", "has_sig": false, "md5_digest": "950cea44ef9eb4b5c6e48fb83605264d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3823, "upload_time": "2018-04-23T09:49:50", "url": "https://files.pythonhosted.org/packages/8c/80/b05a29c345b3ae355eb6af761aeb1fff61edc53d8b71c8803a8aad8c2324/mitest-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "89957e6c841e41dbe32bf23a04eaba6c", "sha256": "44791e05d35a8f9357c856e1e58bada84d1edfa0664e787ab630944f84c7cc75" }, "downloads": -1, "filename": "mitest-0.2.tar.gz", "has_sig": false, "md5_digest": "89957e6c841e41dbe32bf23a04eaba6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3993, "upload_time": "2018-04-26T03:16:43", "url": "https://files.pythonhosted.org/packages/d8/e0/4fc7c475a91dd1421112895ecd164485ae33c5e7ef68925584ef89203fc1/mitest-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c011156f6ef6236a0952cb8722bf049b", "sha256": "2be5cb7ee06fac11416c590f62c82406bddf2241d300bea37cedd16fffd30b87" }, "downloads": -1, "filename": "mitest-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c011156f6ef6236a0952cb8722bf049b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4080, "upload_time": "2018-04-26T04:40:36", "url": "https://files.pythonhosted.org/packages/38/9e/d9a15a6acf054cf4730bd36225dd2ad41832af493d5bd5a714a548dc76ba/mitest-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c011156f6ef6236a0952cb8722bf049b", "sha256": "2be5cb7ee06fac11416c590f62c82406bddf2241d300bea37cedd16fffd30b87" }, "downloads": -1, "filename": "mitest-0.2.1.tar.gz", "has_sig": false, "md5_digest": "c011156f6ef6236a0952cb8722bf049b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4080, "upload_time": "2018-04-26T04:40:36", "url": "https://files.pythonhosted.org/packages/38/9e/d9a15a6acf054cf4730bd36225dd2ad41832af493d5bd5a714a548dc76ba/mitest-0.2.1.tar.gz" } ] }