{ "info": { "author": "Steven Hopkins", "author_email": "steve@hopkins.rocks", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n\n# JSON Events Router [![Build Status](https://travis-ci.org/srhopkins/jsonrouter.svg?branch=master)](https://travis-ci.org/srhopkins/jsonrouter)\n\nUses simple `yaml` based rules to take action on `JSON` events. Uses [jsonpath](https://readthedocs.org/projects/jsonpath-rw/) to scan the event message and `regex` for `includes` and `excludes` conditionals.\n\n> **Note!** `jsonrouter` currently converts all matching field values to `str`ings for `re`gex comparision so be aware of this when expecting `int` to be returned.\n\n## Install\n\n```\npip install jsonrouter\n```\n\n## TL;DR\n\n```python\nimport json\nimport yaml\n\nfrom jsonrouter import JsonMatchEngine\n\n\n# load rules from file or string\nconfigs = yaml.load('''\nrules:\n- name: example-rule\n routers: \n - name: print-router\n vars:\n - name: the-name\n jsonpath: $.name\n''')\n\n# an example json record\njson_string = '''\n{\n \"name\": \"jsonrouter\",\n \"type\": \"jsonpath matcher and router\",\n \"why\": {\n \"because\": \"it's easy\"\n }\n}\n'''\n\n\ndef print_router(data):\n # a trivial example router function\n print(json.dumps(data, indent=4))\n\n\n# explicitly declare your registered routers for security\nregistered_routers = {\n 'print-router': print_router\n}\n\neng = JsonMatchEngine(configs, registered_routers)\n```\n\nUse the engine to find matches:\n\n```\nIn [2]: matches = eng.route_matches(json_string)\n{\n \"name\": \"example-rule\",\n \"routers\": [\n {\n \"name\": \"print-router\"\n }\n ],\n \"vars\": {\n \"the-name\": \"jsonrouter\"\n },\n \"template\": \"\",\n \"record\": {\n \"name\": \"jsonrouter\",\n \"type\": \"jsonpath matcher and router\",\n \"why\": {\n \"because\": \"it's easy\"\n }\n }\n}\n```\n\nThe contents of `matches`:\n\n```\nIn [3]: matches\nOut[3]:\n[{'name': 'example-rule',\n 'routers': [{'name': 'print-router'}],\n 'vars': {'the-name': 'jsonrouter'},\n 'template': '',\n 'record': {'name': 'jsonrouter',\n 'type': 'jsonpath matcher and router',\n 'why': {'because': \"it's easy\"}}}]\n\n```\n\n## Rule Config\n\nAnatomy of the config.\n\n```yaml\n# `rules` is the root of the config\n# note: rules can have same name!\nrules: # required\n- name: notification # required\n routers: # required\n - name: slack # required\n # all fields besides name are optional but may be required in the router\n channel: my-channel # optional\n vars: # required\n - name: type # required\n jsonpath: $..Type # required, except for constants: see bellow \n includes: ['.*'] # optional, default `['.*']` includes all\n excludes: [] # optional, default `[]` excludes nothing\n # `template` is optional\n template: | \n This {type} just came in\n```\n\n### Constants\n\nYou can define a constant var by providing `value` field only\n\n```yaml\n vars:\n - name: my-constant\n value: my constant value\n```\n\n## Basic Usage\n\nSimple capture examples. \n\n```yaml\nrules:\n- name: notification\n routers: \n - name: slack\n channel: my-channel\n vars:\n - name: type\n jsonpath: $..Type\n # include anything\n includes: ['.*']\n # exclude empty\n excludes: ['^$']\n template: |\n This {type} just came in\n```\n\n## Advanced Regex\n\n### Match Part of String `()`\n\n```yaml\nrules:\n- name: console_login\n routers: \n - name: slack\n channel: my-channel\n vars:\n - name: detail-type\n jsonpath: $..detail-type\n includes: ['AWS Console Sign In via CloudTrail']\n excludes: ['^$']\n - name: user\n jsonpath: $..principalId\n # Match part of string\n includes: ['.*:(.*)']\n excludes: ['^$']\n - name: account\n jsonpath: $..account\n includes: ['.*']\n excludes: ['^$'] \n template: |\n Yo! {user} just signed in to {account}.\n```\n\n### Match in String with Group Name\n\nUse `(?P)` to capture patterns within the matched field.\n\n> This will override any naming collisions with `vars:name` you set in the yaml. It merges the rule vars with matched name(s) declared in the regex where named regex take precedence\n\n```yaml\nrules:\n- name: console_login\n routers: \n - name: slack\n channel: my-channel\n vars:\n - name: detail-type\n jsonpath: $..detail-type\n includes: ['AWS Console Sign In via CloudTrail']\n excludes: ['^$']\n - name: user\n jsonpath: $..principalId\n # Match part of string with variable names\n includes: ['(?P.*):(?P.*)']\n excludes: ['^$']\n - name: account\n jsonpath: $..account\n includes: ['.*']\n excludes: ['^$'] \n template: |\n Yo! {user} just signed in to {account}. This {stuff} was before the user.\n```\n\n## Lambda Example\n\nSince `jsonrouter` started from an AWS Lambda SNS parsing project it has a `jsonify_string` method that converts the SNS message field from a sting to a nested `dict`.\n\n```python\nimport json\nimport yaml\n\n\nfrom jsonrouter import JsonMatchEngine, jsonify_string\n\n\ndef slack(webhook):\n # whatever logic you want in here\n pass\n\n\nwith open('rules.yaml', 'r') as f:\n configs = yaml.safe_load(f)\n\nregistered_routers = {\n 'slack': slack\n}\n\neng = JsonMatchEngine(configs, registered_routers)\n\n\ndef handler(event, context):\n # Main lambda handler function\n eng.route_matches(jsonify_string(event)['Records'])\n\n```\n\n## Development\n\n```\n# local tests run from root of project\npython3 -m pytest -v\n# to see print output use `-s`\npython3 -m pytest -v -s\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/srhopkins/jsonrouter", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jsonrouter", "package_url": "https://pypi.org/project/jsonrouter/", "platform": "", "project_url": "https://pypi.org/project/jsonrouter/", "project_urls": { "Homepage": "https://github.com/srhopkins/jsonrouter" }, "release_url": "https://pypi.org/project/jsonrouter/0.4.8/", "requires_dist": [ "pyyaml", "jsonpath-rw (>=1.4.0)" ], "requires_python": ">=3.5.0", "summary": "JSON based events router, inspired from an AWS Lambda project.", "version": "0.4.8" }, "last_serial": 4708427, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "7ba42fcb465810fea27dfdfe371ab968", "sha256": "f694df95fc678e0909b755ce8d6fa7e8030caef74ee6253d03a18325370fdf17" }, "downloads": -1, "filename": "jsonrouter-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7ba42fcb465810fea27dfdfe371ab968", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 6707, "upload_time": "2018-12-07T00:03:53", "url": "https://files.pythonhosted.org/packages/27/62/29b4f3c1915c41ebd37d4f70c4b8a2cffa70a8b0c11c164a3f6c20c9e6a8/jsonrouter-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9406e06126e11bfbfcf95ff532eeae3", "sha256": "5cad00027689893b055dc9adb7db7192b23bcaa540662687e46fa709dc69eaea" }, "downloads": -1, "filename": "jsonrouter-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b9406e06126e11bfbfcf95ff532eeae3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6246, "upload_time": "2018-12-07T00:03:55", "url": "https://files.pythonhosted.org/packages/45/f8/f66e142582c620f7b331efef5e0fdeebe53f8693fe8c69b62f6753a90b46/jsonrouter-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a403161b72eab1ee74fad6b77903ee7d", "sha256": "549693d08f2e480b9b77c2a5358b6a1b145316facc11662e72a5b6de1b2fe9ff" }, "downloads": -1, "filename": "jsonrouter-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a403161b72eab1ee74fad6b77903ee7d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 6705, "upload_time": "2018-12-07T00:22:10", "url": "https://files.pythonhosted.org/packages/60/6b/eb95185fe1b0e7ab55962125527f500befe3d0a223f0edeca2b4d362530d/jsonrouter-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ccff6501d6e911f9b15e5a1ac8a46045", "sha256": "0ab99529bfdcfc3226115aa0cf674631e996cbc7b98d39887c9888f68f418e51" }, "downloads": -1, "filename": "jsonrouter-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ccff6501d6e911f9b15e5a1ac8a46045", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6246, "upload_time": "2018-12-07T00:22:13", "url": "https://files.pythonhosted.org/packages/b8/44/d37cfc567ec124dca80809c25be1a47c0b4052be3c9bfde4178a2052a32d/jsonrouter-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "7dc3f14170d20d4df545709e98763655", "sha256": "2a6a899df882828d36e56d7daa919dddbcf267dc09a87cb5e5a607c435153738" }, "downloads": -1, "filename": "jsonrouter-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "7dc3f14170d20d4df545709e98763655", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 6830, "upload_time": "2018-12-07T21:08:45", "url": "https://files.pythonhosted.org/packages/22/f3/a857335ce02e0dbc1a2b5c5e80e5cdebd7fd859b15df14307c356a89433e/jsonrouter-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8a528007c3d6d1d4f5605515a9c23bb", "sha256": "ac38496172df6cbe65848f3bbdb8d6193e889c085ff9d1b07596ff91b3a13f6e" }, "downloads": -1, "filename": "jsonrouter-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f8a528007c3d6d1d4f5605515a9c23bb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6351, "upload_time": "2018-12-07T21:08:46", "url": "https://files.pythonhosted.org/packages/cd/5b/8fad80507a74aa7f04cf8bf2aa06475a756569c5a0af02875e58714feb56/jsonrouter-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "678255e739b60b4a601301bccdb96bea", "sha256": "dbbc5a2a441039dd57579d218c50beb6a2635583d2e9f1394d1116d557c8fcc3" }, "downloads": -1, "filename": "jsonrouter-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "678255e739b60b4a601301bccdb96bea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 6835, "upload_time": "2018-12-07T23:03:07", "url": "https://files.pythonhosted.org/packages/09/70/ce17f729ff6f5a5c489b6cae5b93006bbba23e9384068d5880279d16291a/jsonrouter-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "209bed1576defd6952e799056b9cf3cd", "sha256": "18f2c0452818c41b5bc8f0bbd316f9669001736c5a6c561d61812b8d402bb936" }, "downloads": -1, "filename": "jsonrouter-0.2.0.tar.gz", "has_sig": false, "md5_digest": "209bed1576defd6952e799056b9cf3cd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6356, "upload_time": "2018-12-07T23:03:09", "url": "https://files.pythonhosted.org/packages/0c/bd/bb0e0fa0945d363fdf273e3b7198b01beec3cda81113857f7787c0ba8cd3/jsonrouter-0.2.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "99e388f19928a8e3b0b8aa79340bfa03", "sha256": "6f29d6050e3c1a40837f0c8360a9ece541482b9e6de736020e401eaea0dcb218" }, "downloads": -1, "filename": "jsonrouter-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "99e388f19928a8e3b0b8aa79340bfa03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 7268, "upload_time": "2018-12-17T23:35:19", "url": "https://files.pythonhosted.org/packages/59/84/9583eed6bb0cf1966ad8630a0757d22f552b2b1a531a86f8f649d93d3610/jsonrouter-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60c407f3ff4096c1d210a64a9cdf1485", "sha256": "8eb87453f9f4c065fd8b1efba3bd7f3627c241db8295c217bf6f854255ab5639" }, "downloads": -1, "filename": "jsonrouter-0.3.1.tar.gz", "has_sig": false, "md5_digest": "60c407f3ff4096c1d210a64a9cdf1485", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6834, "upload_time": "2018-12-17T23:35:20", "url": "https://files.pythonhosted.org/packages/56/b5/cad505c41888df8ea5cab14b75822447b84c3f61b6b4cbaf4ad321180598/jsonrouter-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "27eb397973dced35ebec66c5d97930e4", "sha256": "68bc8c14737bee1b59a2162ef0af6d267ba1b47db83c893a63a9e201717d1b9c" }, "downloads": -1, "filename": "jsonrouter-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "27eb397973dced35ebec66c5d97930e4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 7271, "upload_time": "2018-12-17T23:51:27", "url": "https://files.pythonhosted.org/packages/e3/75/8ded621332b31a650909ebe2075b4a6aaa80a1f997230feb78a7c985d6c2/jsonrouter-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bff303ebe5ea4e5a6f2618a2a62f26c4", "sha256": "e1fcef6e92fa162288a9002f83000e09470035d864cb89110735b25d555a756b" }, "downloads": -1, "filename": "jsonrouter-0.3.2.tar.gz", "has_sig": false, "md5_digest": "bff303ebe5ea4e5a6f2618a2a62f26c4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6829, "upload_time": "2018-12-17T23:51:29", "url": "https://files.pythonhosted.org/packages/b6/f4/1419bb5a5b7d07256ebdcafc480a1915c6e4b37e039b9d34439140f92fa5/jsonrouter-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "20fad6e57e138e682be0b06372d6a02b", "sha256": "5a32d350317716eb2d5c60d54e7794083ab8a998508eb2c1d919d12ac1a22a07" }, "downloads": -1, "filename": "jsonrouter-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "20fad6e57e138e682be0b06372d6a02b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 7315, "upload_time": "2018-12-18T06:50:49", "url": "https://files.pythonhosted.org/packages/79/b2/0598a85030984a991b6839104b40beb03457a6172e9fc30d67eecb78e329/jsonrouter-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1cd36c6f7259330ca85134ff5a7b6775", "sha256": "0f1c72de65007185706dec0a2b1ab267658c863de91c199c07cd6b56399fe191" }, "downloads": -1, "filename": "jsonrouter-0.4.0.tar.gz", "has_sig": false, "md5_digest": "1cd36c6f7259330ca85134ff5a7b6775", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6862, "upload_time": "2018-12-18T06:50:51", "url": "https://files.pythonhosted.org/packages/7f/fd/b5d8de62b5b463d920be63d67368c205663042b8b0e0a773979cee8a8696/jsonrouter-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "807702802fcd93fbcef0c10ab3ade9a4", "sha256": "f987d4ac375722c41742c9117f219fe16e975ce26f3cbecfa7aa897304bdbd23" }, "downloads": -1, "filename": "jsonrouter-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "807702802fcd93fbcef0c10ab3ade9a4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7317, "upload_time": "2018-12-18T07:58:52", "url": "https://files.pythonhosted.org/packages/6d/20/49436b39a514badb7fccef57ccae45191f8c4f890c7e0deb713dbac1ea34/jsonrouter-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "56fb7a0ad9004ea4de827be2e8f08f37", "sha256": "a659d3b622d8bc4b3c63041a0b23730bb93342ba863c0057b9e3d9bfc1f9fd37" }, "downloads": -1, "filename": "jsonrouter-0.4.1.tar.gz", "has_sig": false, "md5_digest": "56fb7a0ad9004ea4de827be2e8f08f37", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6863, "upload_time": "2018-12-18T07:58:53", "url": "https://files.pythonhosted.org/packages/1c/b4/4b5886b78d59a8c74e1ec147a2a02820baec0ec43592b064c4ae24ed87dc/jsonrouter-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "e9c07db28873cca5758f488de7749a94", "sha256": "89286856288fc50ab29cb133afc63c47813765bba5e5d615db743aaaa6756bb7" }, "downloads": -1, "filename": "jsonrouter-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e9c07db28873cca5758f488de7749a94", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7353, "upload_time": "2018-12-18T17:10:09", "url": "https://files.pythonhosted.org/packages/74/1f/49b546ff369f879556b952774cd4300ae5998d6a5392e3eb45a57908ce2d/jsonrouter-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "199e9a9a0e2ccd0559867a17f4312a2d", "sha256": "33b95c2faca04be0b79b8158ab8d350e782947df485d2f98233987338b327e4a" }, "downloads": -1, "filename": "jsonrouter-0.4.2.tar.gz", "has_sig": false, "md5_digest": "199e9a9a0e2ccd0559867a17f4312a2d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6905, "upload_time": "2018-12-18T17:10:10", "url": "https://files.pythonhosted.org/packages/91/a7/0ebd3325015d22c8cb6a9c21a606a2c34264b0c3fc2c51a55b1258f002ef/jsonrouter-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "90d3eb8a2941768e891c4e94944bb612", "sha256": "aca195f52bc703161ac1e9d12bb1aa559a434745370e582df22cc545369661ae" }, "downloads": -1, "filename": "jsonrouter-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "90d3eb8a2941768e891c4e94944bb612", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7401, "upload_time": "2018-12-18T23:03:48", "url": "https://files.pythonhosted.org/packages/7c/67/123d69519aa1549971da975a27d090a357fc413f733889602f3e637b41b9/jsonrouter-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4aaa72015a81d1afa4d6f44cbc74a9d1", "sha256": "dc08494716821b0807442a2fd7d44301b0fbd5947f09eb0ca5ac6309a5418cc5" }, "downloads": -1, "filename": "jsonrouter-0.4.3.tar.gz", "has_sig": false, "md5_digest": "4aaa72015a81d1afa4d6f44cbc74a9d1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6952, "upload_time": "2018-12-18T23:03:50", "url": "https://files.pythonhosted.org/packages/ba/8c/35afd169e9fc991bb4c54e3df59cf0bd050d33687a11431e4e96c261ecaf/jsonrouter-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "e8fa614e82b14706a63ec8980a6f5209", "sha256": "64af30bcc510dfcadb989306c7e1cfb31df1da0024fe891696405d279b22b7ba" }, "downloads": -1, "filename": "jsonrouter-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e8fa614e82b14706a63ec8980a6f5209", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7390, "upload_time": "2018-12-18T23:08:05", "url": "https://files.pythonhosted.org/packages/81/6a/51cb309eb872cf5d34972ccf524ea2d30167be327cb5f9d6b9c1fc523ca4/jsonrouter-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "778a40dd30c22a106aafcaeac297b451", "sha256": "473209b0ed0f8a7ff12d3fa65e31ae4c9fe76420f5dfa37ca1570d9cc8e7795a" }, "downloads": -1, "filename": "jsonrouter-0.4.4.tar.gz", "has_sig": false, "md5_digest": "778a40dd30c22a106aafcaeac297b451", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 6945, "upload_time": "2018-12-18T23:08:06", "url": "https://files.pythonhosted.org/packages/e6/c2/d65dc1f848be1b88e6b9bf0a7bfaf7c7475becc23b85b526299efc0ab7e5/jsonrouter-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "a754576bef348dddfd380f3788cf50a6", "sha256": "8a41494224268147889e9be51eccc417343f00096ba50b72c252a6de63b986fb" }, "downloads": -1, "filename": "jsonrouter-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "a754576bef348dddfd380f3788cf50a6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7499, "upload_time": "2018-12-19T17:05:19", "url": "https://files.pythonhosted.org/packages/ac/75/e21b0f0e94bc261a87b25dd13b76a05e867211dfd408a3a21f271e898728/jsonrouter-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "85d2eec6c375cf3d2b8c7feec53e5e40", "sha256": "83c909634d8963196e3253e1f08f790bb8fde6e0e2ab08338c295502f15d4b5d" }, "downloads": -1, "filename": "jsonrouter-0.4.5.tar.gz", "has_sig": false, "md5_digest": "85d2eec6c375cf3d2b8c7feec53e5e40", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 7037, "upload_time": "2018-12-19T17:05:20", "url": "https://files.pythonhosted.org/packages/88/02/5412069d1be5ce78ee1346e853f39bb5c30d94927cf5caee51dd3a28e4bb/jsonrouter-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "cfc34eea96b0625f29784fb1685a03fd", "sha256": "68c4d637866be889563f9d896ff6af1e3655e0aeae53a91742e6f3a5f89fa56b" }, "downloads": -1, "filename": "jsonrouter-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "cfc34eea96b0625f29784fb1685a03fd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7950, "upload_time": "2018-12-19T19:09:17", "url": "https://files.pythonhosted.org/packages/8e/9c/2fe0c6fa50bbe58cefcff72e7c604fa122bc787ad831014a08ce5087dfcd/jsonrouter-0.4.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0a0c62b02d78b919dba60473d244230", "sha256": "531c0ab8830ef4ac21a96d58f260ba89a897a1dbba9181e47da8673134ccc47f" }, "downloads": -1, "filename": "jsonrouter-0.4.6.tar.gz", "has_sig": false, "md5_digest": "b0a0c62b02d78b919dba60473d244230", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 7758, "upload_time": "2018-12-19T19:09:19", "url": "https://files.pythonhosted.org/packages/c1/66/d250861a67bb3a61d992f6382af5761f99178038fc36bfc498f9d5524eda/jsonrouter-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "307e48109da48a1756e16f6d5d9ef2dc", "sha256": "9d0537b394e7008fd76f5c6e67bd59747dfccf1c816f64580041a6e0712d9848" }, "downloads": -1, "filename": "jsonrouter-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "307e48109da48a1756e16f6d5d9ef2dc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7943, "upload_time": "2018-12-19T19:16:20", "url": "https://files.pythonhosted.org/packages/a9/ca/be4ccd6fc93522394b9a030dd384afeb781d27f32d7e71951702c47d79aa/jsonrouter-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c99fff27fab44a64b3b8fe8a0c9e0a1a", "sha256": "6a7e7e4251baa8f567ea619998247780b8bbcc50d13f3d62fd898f1766065ea3" }, "downloads": -1, "filename": "jsonrouter-0.4.7.tar.gz", "has_sig": false, "md5_digest": "c99fff27fab44a64b3b8fe8a0c9e0a1a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 7737, "upload_time": "2018-12-19T19:16:21", "url": "https://files.pythonhosted.org/packages/9d/48/708f1cd5a5ac3a86cdda48552b68e8feeb8b5eddd6cfe746603f122e3927/jsonrouter-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "ea5c3c8dba07dbbac8d4ed1b9f205516", "sha256": "32f6edf4957f878d6a32447c7a313ec5351209c40b94aae3d5fe4b9d4fd8d9eb" }, "downloads": -1, "filename": "jsonrouter-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "ea5c3c8dba07dbbac8d4ed1b9f205516", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7963, "upload_time": "2019-01-17T15:12:06", "url": "https://files.pythonhosted.org/packages/70/be/aef195153c37a4462f06d0ee6ecbdc9508d5eaa783604eb55daa9b8cbd37/jsonrouter-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "83bf3b34133e2a304e63ac00ac87542a", "sha256": "3662ce7a8f69f64368b8cf5538168dd64893f245d074c644eba28f86622c3f95" }, "downloads": -1, "filename": "jsonrouter-0.4.8.tar.gz", "has_sig": false, "md5_digest": "83bf3b34133e2a304e63ac00ac87542a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 7774, "upload_time": "2019-01-17T15:12:08", "url": "https://files.pythonhosted.org/packages/40/5d/51cd483b4b25ef71183ed80c8e048779743925f78e9e4bc72f6ff4ba951d/jsonrouter-0.4.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ea5c3c8dba07dbbac8d4ed1b9f205516", "sha256": "32f6edf4957f878d6a32447c7a313ec5351209c40b94aae3d5fe4b9d4fd8d9eb" }, "downloads": -1, "filename": "jsonrouter-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "ea5c3c8dba07dbbac8d4ed1b9f205516", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5.0", "size": 7963, "upload_time": "2019-01-17T15:12:06", "url": "https://files.pythonhosted.org/packages/70/be/aef195153c37a4462f06d0ee6ecbdc9508d5eaa783604eb55daa9b8cbd37/jsonrouter-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "83bf3b34133e2a304e63ac00ac87542a", "sha256": "3662ce7a8f69f64368b8cf5538168dd64893f245d074c644eba28f86622c3f95" }, "downloads": -1, "filename": "jsonrouter-0.4.8.tar.gz", "has_sig": false, "md5_digest": "83bf3b34133e2a304e63ac00ac87542a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5.0", "size": 7774, "upload_time": "2019-01-17T15:12:08", "url": "https://files.pythonhosted.org/packages/40/5d/51cd483b4b25ef71183ed80c8e048779743925f78e9e4bc72f6ff4ba951d/jsonrouter-0.4.8.tar.gz" } ] }