{ "info": { "author": "Greg.YIM", "author_email": "greg.yim@kakaocorp.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3" ], "description": "# json_matcher\n\nMatch json object with query like elasticsearch/lucene query.\n\nexamples (jrep)\n\n # cat a.txt\n { \"foo\": \"bar\", \"bar\": \"foo\" }\n # jrep \"foo:bar\" /tmp/a.txt\n { \"foo\": \"bar\", \"bar\": \"foo\" }\n\nexamples (json\\_matcher)\n\n >>> import json_matcher\n >>> matcher = json_matcher.compile('foo:bar bar:foo')\n >>> j = dict(foo='bar', bar='foo')\n >>> m = matcher.match(j)\n >>> m.groups()\n [('foo', 'bar'), ('bar', 'foo')]\n\n >>> matcher = json_matcher.compile('foo:>10 bar:foo')\n >>> j = dict(foo=11, bar='foo')\n >>> matcher.match(j).groups()\n [('foo', 11), ('bar', 'foo')]\n >>> j = dict(foo=9, bar='foo')\n >>> matcher.match(j)\n >>> m = matcher.match(j)\n >>> print(m)\n None\n\n >>> json_matcher.match('foo:[10 TO 20] AND bar:foo', dict(foo=11, bar='foo')).groups()\n [('foo', 11), ('bar', 'foo')]\n\n >>> nested = dict(A=dict(B=dict(C='Hello World')))\n >>> json_matcher.match('A.B.C:\"Hello World\"', nested).groups()\n [('A.B.C', 'Hello World')]\n\n \n- match text or number with ```field_name:value```\n- match regular expression with ```field_name:/regular expression/```\n- match range with ```field_name:[10 TO 20]```, ```field_name:[10 TO 20}``` (exclusive 20)\n- match range(open range) with ```field_name:>20``` (like elasticsearch not lucene)\n- match field existence with ```_exists_:field_name```\n- match expression with ```_expression:\"python expression\"```\n \nTODO:\n - multiple match with high performace (with Ahocorasik and RE2???)", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/hosung-yim/json_matcher", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "json-matcher", "package_url": "https://pypi.org/project/json-matcher/", "platform": "any", "project_url": "https://pypi.org/project/json-matcher/", "project_urls": { "Homepage": "https://github.com/hosung-yim/json_matcher" }, "release_url": "https://pypi.org/project/json-matcher/0.0.2/", "requires_dist": null, "requires_python": "", "summary": "Match json with lucece-like query", "version": "0.0.2" }, "last_serial": 5975380, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "d3aa978c694c86a9c63275fbdb169f03", "sha256": "fdff161bf6a76a0b656c6447f8383286419a88ab92b1b9dabfdf4919ad39fa90" }, "downloads": -1, "filename": "json_matcher-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d3aa978c694c86a9c63275fbdb169f03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7165, "upload_time": "2019-10-15T07:55:05", "url": "https://files.pythonhosted.org/packages/bf/6e/ac893acc37fa2e59ecb0ebf4d5b1eca4eaad521892df1b21e1f5b44a49b1/json_matcher-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d3aa978c694c86a9c63275fbdb169f03", "sha256": "fdff161bf6a76a0b656c6447f8383286419a88ab92b1b9dabfdf4919ad39fa90" }, "downloads": -1, "filename": "json_matcher-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d3aa978c694c86a9c63275fbdb169f03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7165, "upload_time": "2019-10-15T07:55:05", "url": "https://files.pythonhosted.org/packages/bf/6e/ac893acc37fa2e59ecb0ebf4d5b1eca4eaad521892df1b21e1f5b44a49b1/json_matcher-0.0.2.tar.gz" } ] }