{ "info": { "author": "Adam Mills", "author_email": "adam@armills.info", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries" ], "description": "jsonrpc-websocket: a compact JSON-RPC websocket client library for asyncio\n=======================================================================================================\n\n.. image:: https://travis-ci.org/armills/jsonrpc-websocket.svg\n :target: https://travis-ci.org/armills/jsonrpc-websocket\n.. image:: https://coveralls.io/repos/armills/jsonrpc-websocket/badge.svg\n :target: https://coveralls.io/r/armills/jsonrpc-websocket\n\nThis is a compact and simple JSON-RPC websocket client implementation for asyncio python code. This code is forked from https://github.com/gciotta/jsonrpc-requests\n\nMain Features\n-------------\n\n* Python 3.5 & 3.6 compatible\n* Supports nested namespaces (eg. `app.users.getUsers()`)\n* 100% test coverage\n\nUsage\n-----\nIt is recommended to manage the aiohttp ClientSession object externally and pass it to the Server constructor. `(See the aiohttp documentation.) `_ If not passed to Server, a ClientSession object will be created automatically.\n\nExecute remote JSON-RPC functions\n\n.. code-block:: python\n\n import asyncio\n from jsonrpc_websocket import Server\n\n async def routine():\n server = Server('ws://localhost:9090')\n try:\n await server.ws_connect()\n\n await server.foo(1, 2)\n await server.foo(bar=1, baz=2)\n await server.foo({'foo': 'bar'})\n await server.foo.bar(baz=1, qux=2)\n finally:\n await server.close()\n await server.session.close()\n\n asyncio.get_event_loop().run_until_complete(routine())\n\nA notification\n\n.. code-block:: python\n\n import asyncio\n from jsonrpc_websocket import Server\n\n async def routine():\n server = Server('ws://localhost:9090')\n try:\n await server.ws_connect()\n\n await server.foo(bar=1, _notification=True)\n finally:\n await server.close()\n await server.session.close()\n\n asyncio.get_event_loop().run_until_complete(routine())\n\nHandle requests from server to client\n\n.. code-block:: python\n\n import asyncio\n from jsonrpc_websocket import Server\n\n def client_method(arg1, arg2):\n return arg1 + arg2\n\n async def routine():\n server = Server('ws://localhost:9090')\n # client_method is called when server requests method 'namespace.client_method'\n server.namespace.client_method = client_method\n try:\n await server.ws_connect()\n finally:\n await server.close()\n await server.session.close()\n\n asyncio.get_event_loop().run_until_complete(routine())\n\nPass through arguments to aiohttp (see also `aiohttp documentation `_)\n\n.. code-block:: python\n\n import asyncio\n import aiohttp\n from jsonrpc_websocket import Server\n\n async def routine():\n server = Server(\n 'ws://localhost:9090',\n auth=aiohttp.BasicAuth('user', 'pass'),\n headers={'x-test2': 'true'})\n try:\n await server.ws_connect()\n\n await server.foo()\n finally:\n await server.close()\n await server.session.close()\n\n asyncio.get_event_loop().run_until_complete(routine())\n\nPass through aiohttp exceptions\n\n.. code-block:: python\n\n import asyncio\n import aiohttp\n from jsonrpc_websocket import Server\n\n async def routine():\n server = Server('ws://unknown-host')\n try:\n await server.ws_connect()\n\n await server.foo()\n except TransportError as transport_error:\n print(transport_error.args[1]) # this will hold a aiohttp exception instance\n finally:\n await server.close()\n await server.session.close()\n\n asyncio.get_event_loop().run_until_complete(routine())\n\nTests\n-----\nInstall the Python tox package and run ``tox``, it'll test this package with various versions of Python.\n\nChangelog\n---------\n1.0.1 (August 23, 2018)\n~~~~~~~~~~~~~~\n- Bumped jsonrpc-base to version 1.0.2\n\n1.0.0 (July 6, 2018)\n~~~~~~~~~~~~~~\n- Bumped jsonrpc-base to version 1.0.1\n\n0.6 (March 11, 2018)\n~~~~~~~~~~~~~~\n- Minimum required version of aiohttp is now 3.0.\n- Support for Python 3.4 is now dropped.\n\nCredits\n-------\n`@gciotta `_ for creating the base project `jsonrpc-requests `_.\n\n`@mbroadst `_ for providing full support for nested method calls, JSON-RPC RFC\ncompliance and other improvements.\n\n`@vaab `_ for providing api and tests improvements, better RFC compliance.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/armills/jsonrpc-websocket", "keywords": "json-rpc async asyncio websocket", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "jsonrpc-websocket", "package_url": "https://pypi.org/project/jsonrpc-websocket/", "platform": "", "project_url": "https://pypi.org/project/jsonrpc-websocket/", "project_urls": { "Homepage": "http://github.com/armills/jsonrpc-websocket" }, "release_url": "https://pypi.org/project/jsonrpc-websocket/1.0.1/", "requires_dist": null, "requires_python": "", "summary": "A JSON-RPC websocket client library for asyncio", "version": "1.0.1" }, "last_serial": 4201503, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a8906f1b9fa0b249d6f2d76398fb0903", "sha256": "2b01e0237f2e05f52e6099a4ad1d79ad2624b4c636797383e3eede2c8711c187" }, "downloads": -1, "filename": "jsonrpc-websocket-0.1.tar.gz", "has_sig": false, "md5_digest": "a8906f1b9fa0b249d6f2d76398fb0903", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4866, "upload_time": "2017-02-15T16:55:56", "url": "https://files.pythonhosted.org/packages/19/b2/97e6c1e807b7e43d05c8ed69d58712c14abbbde5562f36911c126807fb9d/jsonrpc-websocket-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "4addfb7a9a7f993a22168d5307c20fee", "sha256": "608b4b99532059ca6e77025c936751c7b33bac726609b5ac2acbf1f8c6307141" }, "downloads": -1, "filename": "jsonrpc-websocket-0.2.tar.gz", "has_sig": false, "md5_digest": "4addfb7a9a7f993a22168d5307c20fee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4938, "upload_time": "2017-02-16T01:29:18", "url": "https://files.pythonhosted.org/packages/e6/90/a196a99a2db1712476e82ba84f03b1b9d21440e3eb475b5e55db51bd2ab6/jsonrpc-websocket-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "b0a41d5adb5696a484696611fdaf570f", "sha256": "c7c62e364d7856d3d3eb18ad17cc016e532770ecaeae2cc4da34c5d2b8cd4de5" }, "downloads": -1, "filename": "jsonrpc-websocket-0.3.tar.gz", "has_sig": false, "md5_digest": "b0a41d5adb5696a484696611fdaf570f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4895, "upload_time": "2017-03-19T15:38:58", "url": "https://files.pythonhosted.org/packages/c0/55/06500a5dc4ca07bae5bd327c46fd2f8020487df3342708e495f9c0a82d44/jsonrpc-websocket-0.3.tar.gz" } ], "0.4": [], "0.5": [ { "comment_text": "", "digests": { "md5": "7d7fa81ff1a71c9b89fb8d31cad1c5d0", "sha256": "04c30808f9dd21713f9b77e357418a5751d31e90baf8a45bc131ededd0c23232" }, "downloads": -1, "filename": "jsonrpc-websocket-0.5.tar.gz", "has_sig": false, "md5_digest": "7d7fa81ff1a71c9b89fb8d31cad1c5d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4905, "upload_time": "2017-04-06T21:52:19", "url": "https://files.pythonhosted.org/packages/11/ea/85f2bc48b322a1e36f40636e43b34b65ca9e48e1a488dd83095da4dfea41/jsonrpc-websocket-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "d71261b0cd63e58525d5a9968bbea5af", "sha256": "cf349bee4ab96db2e457b6a71a45380e1a9cf3e1ceb08260ecfd9928040ebe71" }, "downloads": -1, "filename": "jsonrpc-websocket-0.6.tar.gz", "has_sig": false, "md5_digest": "d71261b0cd63e58525d5a9968bbea5af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5031, "upload_time": "2018-03-11T17:21:06", "url": "https://files.pythonhosted.org/packages/0d/0c/27c53b8953404c6bc150649af58937a2962c451d1c4101a5e309d85806e2/jsonrpc-websocket-0.6.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "84b206d511a9b0b790cc0631311d21c3", "sha256": "40949836996c0a8104e7878997d3f68bda4561e9d3af64e5cd178127ec3c2778" }, "downloads": -1, "filename": "jsonrpc-websocket-1.0.0.tar.gz", "has_sig": false, "md5_digest": "84b206d511a9b0b790cc0631311d21c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5018, "upload_time": "2018-07-06T15:13:23", "url": "https://files.pythonhosted.org/packages/76/ff/c9328b57b01a124af77809ec53d17759c245830953fe49df3f3809b191c3/jsonrpc-websocket-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "0ea966e05f51fc0d0fb98ae0b5379011", "sha256": "e74e490fefa3b8f33620fca98f7cd9a53fb765b9ed6f78360482a3f364230885" }, "downloads": -1, "filename": "jsonrpc-websocket-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0ea966e05f51fc0d0fb98ae0b5379011", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5058, "upload_time": "2018-08-23T21:37:01", "url": "https://files.pythonhosted.org/packages/9b/7c/36967cced11972a6f69c27d48ee40ce868774e15c0369adb45973f0d5294/jsonrpc-websocket-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ea966e05f51fc0d0fb98ae0b5379011", "sha256": "e74e490fefa3b8f33620fca98f7cd9a53fb765b9ed6f78360482a3f364230885" }, "downloads": -1, "filename": "jsonrpc-websocket-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0ea966e05f51fc0d0fb98ae0b5379011", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5058, "upload_time": "2018-08-23T21:37:01", "url": "https://files.pythonhosted.org/packages/9b/7c/36967cced11972a6f69c27d48ee40ce868774e15c0369adb45973f0d5294/jsonrpc-websocket-1.0.1.tar.gz" } ] }