Metadata-Version: 2.4 Name: jsonrpc-async Version: 2.1.3 Summary: A JSON-RPC client library for asyncio Home-page: http://github.com/emlove/jsonrpc-async Author: Emily Love Watson Author-email: emily@emlove.me License: BSD Keywords: json-rpc async asyncio Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Topic :: Software Development :: Libraries Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 License-File: LICENSE.txt Requires-Dist: jsonrpc-base>=2.1.0 Requires-Dist: aiohttp>=3.0.0 Dynamic: author Dynamic: author-email Dynamic: classifier Dynamic: description Dynamic: home-page Dynamic: keywords Dynamic: license Dynamic: license-file Dynamic: requires-dist Dynamic: summary jsonrpc-async: a compact JSON-RPC client library for asyncio ======================================================================================================= .. image:: https://img.shields.io/pypi/v/jsonrpc-async.svg :target: https://pypi.python.org/pypi/jsonrpc-async .. image:: https://github.com/emlove/jsonrpc-async/workflows/tests/badge.svg :target: https://github.com/emlove/jsonrpc-async/actions .. image:: https://coveralls.io/repos/emlove/jsonrpc-async/badge.svg :target: https://coveralls.io/r/emlove/jsonrpc-async This is a compact and simple JSON-RPC client implementation for asyncio python code. This code is forked from https://github.com/gciotta/jsonrpc-requests Main Features ------------- * Supports nested namespaces (eg. `app.users.getUsers()`) * 100% test coverage Usage ----- It 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. Execute remote JSON-RPC functions .. code-block:: python import asyncio from jsonrpc_async import Server async def routine(): async with Server('http://localhost:8080') as server: await server.foo(1, 2) await server.foo(bar=1, baz=2) await server.foo({'foo': 'bar'}) await server.foo.bar(baz=1, qux=2) asyncio.get_event_loop().run_until_complete(routine()) A notification .. code-block:: python import asyncio from jsonrpc_async import Server async def routine(): async with Server('http://localhost:8080') as server: await server.foo(bar=1, _notification=True) asyncio.get_event_loop().run_until_complete(routine()) Pass through arguments to aiohttp (see also `aiohttp documentation `_) .. code-block:: python import asyncio import aiohttp from jsonrpc_async import Server async def routine(): async with Server( 'http://localhost:8080', auth=aiohttp.BasicAuth('user', 'pass'), headers={'x-test2': 'true'} ) as server: await server.foo() asyncio.get_event_loop().run_until_complete(routine()) Pass through aiohttp exceptions .. code-block:: python import asyncio import aiohttp from jsonrpc_async import Server async def routine(): async with Server('http://unknown-host') as server: try: await server.foo() except TransportError as transport_error: print(transport_error.args[1]) # this will hold a aiohttp exception instance asyncio.get_event_loop().run_until_complete(routine()) Tests ----- Install the Python tox package and run ``tox``, it'll test this package with various versions of Python. Changelog --------- 2.1.3 (2025-08-21) ~~~~~~~~~~~~~~~~~~ - Fix tests with pytest 8.4 `(#11) `_ `@mweinelt `_ 2.1.2 (2023-07-10) ~~~~~~~~~~~~~~~~~~ - Add support for `async with` `(#10) `_ `@lieryan `_ 2.1.1 (2022-05-03) ~~~~~~~~~~~~~~~~~~ - Unpin test dependencies 2.1.0 (2021-05-03) ~~~~~~~~~~~~~~~~~~ - Bumped jsonrpc-base to version 2.1.0 2.0.0 (2021-03-16) ~~~~~~~~~~~~~~~~~~ - Bumped jsonrpc-base to version 2.0.0 - BREAKING CHANGE: `Allow single mapping as a positional parameter. `_ Previously, when calling with a single dict as a parameter (example: ``server.foo({'bar': 0})``), the mapping was used as the JSON-RPC keyword parameters. This made it impossible to send a mapping as the first and only positional parameter. If you depended on the old behavior, you can recreate it by spreading the mapping as your method's kwargs. (example: ``server.foo(**{'bar': 0})``) 1.1.1 (2019-11-12) ~~~~~~~~~~~~~~~~~~ - Bumped jsonrpc-base to version 1.0.3 1.1.0 (2018-09-04) ~~~~~~~~~~~~~~~~~~ - Added support for using a custom json.loads method `(#1) `_ `@tdivis `_ 1.0.1 (2018-08-23) ~~~~~~~~~~~~~~~~~~ - Bumped jsonrpc-base to version 1.0.2 1.0.0 (2018-07-06) ~~~~~~~~~~~~~~~~~~ - Bumped minimum aiohttp version to 3.0.0 - Bumped jsonrpc-base to version 1.0.1 Credits ------- `@gciotta `_ for creating the base project `jsonrpc-requests `_. `@mbroadst `_ for providing full support for nested method calls, JSON-RPC RFC compliance and other improvements. `@vaab `_ for providing api and tests improvements, better RFC compliance.