{ "info": { "author": "Lahache Stephane", "author_email": "slahache@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# aio-jsonrpc-2.0\n\n[![Build Status](https://travis-ci.org/steffgrez/aio-jsonrpc-2.0.svg?branch=master)](https://travis-ci.org/steffgrez/aio-jsonrpc-2.0)\n[![Coverage Status](https://coveralls.io/repos/github/steffgrez/aio-jsonrpc-2.0/badge.svg?branch=master)](https://coveralls.io/github/steffgrez/aio-jsonrpc-2.0?branch=master)\n\n-- **Still in beta** --\n\n## Description\njson rpc 2.0 protocol implementation for asyncio, without transport.\n\nspecification: http://www.jsonrpc.org/\n\n##\u00a0Usage:\nExample to resolve request:\n\n\n```python\nimport asyncio\nimport json\n\nfrom aio_jsonrpc_20 import RequestResolver\n\n\nasync def foo(msg):\n await asyncio.sleep(0.1)\n return 'foobar ' + str(msg)\n\nrouter = {'foo': foo}\nresolver = RequestResolver(router)\njson_request = json.dumps(\n {\"jsonrpc\": \"2.0\", \"method\": \"foo\", \"params\": [\"toto\"], \"id\": 1}\n)\n\n\nasync def main():\n json_response = await resolver.handle(json_request)\n print(json_response)\n\nloop = asyncio.get_event_loop()\nloop.run_until_complete(main())\n```\nResult:\n```JSON\n{\"jsonrpc\": \"2.0\", \"result\": \"foobar toto\", \"id\": 1}\n```\n\nExample to build request:\n```python\nfrom aio_jsonrpc_20 import RequestBuilder\n\nbuilder = RequestBuilder()\njson_request = builder.call(method=\"foo\", params={\"name\": \"bar\"})\nprint(json_request)\njson_request = builder.call(method=\"foo\", params={\"name\": \"bar2\"})\nprint(json_request)\njson_request = builder.notify(method=\"log\", params=[\"hello\"])\nprint(json_request)\n```\n\nResult:\n```JSON\n{\"jsonrpc\": \"2.0\", \"method\": \"foo\", \"params\": {\"name\": \"bar\"}, \"id\": 1}\n{\"jsonrpc\": \"2.0\", \"method\": \"foo\", \"params\": {\"name\": \"bar2\"}, \"id\": 2}\n{\"jsonrpc\": \"2.0\", \"method\": \"log\", \"params\": [\"hello\"]}\n\n```\n\nExample to build batch request:\n```python\nfrom aio_jsonrpc_20 import BatchRequestBuilder\n\nbatch_builder = BatchRequestBuilder()\nid1 = batch_builder.call(method=\"foo\", params={\"name\": \"bar\"})\nid2 = batch_builder.call(method=\"foo2\", params={\"name\": \"bar\"})\nprint(id1, id2)\nbatch_builder.notify(method=\"foo3\", params={\"name\": \"bar\"})\njson_request = batch_builder.get_request()\nprint(json_request)\n```\n\nResult:\n```JSON\n1 2\n[\n {\"jsonrpc\": \"2.0\", \"method\": \"foo\", \"params\": {\"name\": \"bar\"}, \"id\": 1},\n {\"jsonrpc\": \"2.0\", \"method\": \"foo2\", \"params\": {\"name\": \"bar\"}, \"id\": 2},\n {\"jsonrpc\": \"2.0\", \"method\": \"foo3\", \"params\": {\"name\": \"bar\"}}\n]\n```\n\n## TODO:\n* Fix definitely interface for builders\n* More Test\n* Documentation\n* Optimisation\n* ...\n\n## Testing:\npy.test --cov=aio_jsonrpc_20 --cov-report term-missing tests/\n\n0.1.0\n=====\n\nInitial release.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/steffgrez/aio-jsonrpc-2.0", "keywords": "json rpc jsonrpc json-rpc 2.0", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aio-jsonrpc-2.0", "package_url": "https://pypi.org/project/aio-jsonrpc-2.0/", "platform": "", "project_url": "https://pypi.org/project/aio-jsonrpc-2.0/", "project_urls": { "Homepage": "https://github.com/steffgrez/aio-jsonrpc-2.0" }, "release_url": "https://pypi.org/project/aio-jsonrpc-2.0/0.1.0/", "requires_dist": null, "requires_python": "", "summary": "fast JSON-RPC protocol implementation for asyncio, without transport", "version": "0.1.0" }, "last_serial": 3213007, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "1d9d7de7e3290e921869beae30b8fa46", "sha256": "fad43167501b4f438fc62dcb33e563a47ac8e48eabb1cfa769568dde545131e0" }, "downloads": -1, "filename": "aio-jsonrpc-2.0-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1d9d7de7e3290e921869beae30b8fa46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5921, "upload_time": "2017-09-29T14:36:59", "url": "https://files.pythonhosted.org/packages/7f/c5/9e19181f75e1fc47b54d2b61dad7e331c0ad7aba5a5cfa699d721c569cdb/aio-jsonrpc-2.0-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1d9d7de7e3290e921869beae30b8fa46", "sha256": "fad43167501b4f438fc62dcb33e563a47ac8e48eabb1cfa769568dde545131e0" }, "downloads": -1, "filename": "aio-jsonrpc-2.0-0.1.0.tar.gz", "has_sig": false, "md5_digest": "1d9d7de7e3290e921869beae30b8fa46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5921, "upload_time": "2017-09-29T14:36:59", "url": "https://files.pythonhosted.org/packages/7f/c5/9e19181f75e1fc47b54d2b61dad7e331c0ad7aba5a5cfa699d721c569cdb/aio-jsonrpc-2.0-0.1.0.tar.gz" } ] }