Client#
Misc#
JSON-RPC client.
- class pjrpc.client.AbstractAsyncClient(*, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=(), request_content_type='application/json', response_content_types=('application/json', 'application/json-rpc'))[source]#
Bases:
ABCAbstract asynchronous JSON-RPC client.
- Parameters:
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
middlewares (Iterable[AsyncMiddleware]) – client reqeust middlewares
request_content_type (str) –
- class Proxy(client)[source]#
Bases:
objectProxy object. Provides syntactic sugar to make method call using dot notation.
- Parameters:
client (AbstractAsyncClient) – JSON-RPC client instance
- batch()[source]#
Client batch wrapper.
- Return type:
AsyncGenerator[Batch, None]
- async notify(method, *args, **kwargs)[source]#
Makes a notification request
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Return type:
None
- async call(method, *args, **kwargs)[source]#
Makes a JSON-RPC call.
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Returns:
response result
- Return type:
Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]], …], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]]]]
- class pjrpc.client.AbstractClient(*, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=(), request_content_type='application/json', response_content_types=('application/json', 'application/json-rpc'))[source]#
Bases:
ABCAbstract synchronous JSON-RPC client.
- Parameters:
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
middlewares (Iterable[Middleware]) – client reqeust middlewares
request_content_type (str) –
- class Proxy(client)[source]#
Bases:
objectProxy object. Provides syntactic sugar to make method call using dot notation.
- Parameters:
client (AbstractClient) – JSON-RPC client instance
- notify(method, *args, **kwargs)[source]#
Makes a notification request
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Return type:
None
- call(method, *args, **kwargs)[source]#
Makes a JSON-RPC call.
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Returns:
response result
- Return type:
Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]], …], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef(‘JsonT’)], tuple[ForwardRef(‘JsonT’), …], dict[str, ForwardRef(‘JsonT’)]]]]
- class pjrpc.client.AsyncMiddleware(*args, **kwargs)[source]#
Bases:
ProtocolAsynchronous JSON-RPC client middleware.
- class pjrpc.client.Batch(id_gen_impl)[source]#
Bases:
objectBatch object. Provides syntactic sugar to send batch requests.
- class Proxy(batch)[source]#
Bases:
objectProxy object. Provides syntactic sugar to make method call using dot notation.
- Parameters:
batch (Batch) – batch object
- property requests: list[pjrpc.common.request.Request]#
Batch requests.
- notify(method, *args, **kwargs)[source]#
Makes a notification request
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Return type:
None
- call(method, *args, **kwargs)[source]#
Makes a JSON-RPC call.
- Parameters:
method (str) – method name
args (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method positional arguments
kwargs (Union[str, int, float, bool, None, list[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]], tuple[Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]], ...], dict[str, Union[str, int, float, bool, NoneType, list[ForwardRef('JsonT')], tuple[ForwardRef('JsonT'), ...], dict[str, ForwardRef('JsonT')]]]]) – method named arguments
- Returns:
response result
- Return type:
None
- set_response(response)[source]#
Sets batch response
- Parameters:
response (Optional[BatchResponse]) –
- Return type:
None
- exception pjrpc.client.JsonRpcError(code, message, data=UnsetType.UNSET)[source]#
Bases:
JsonRpcErrorClient JSON-RPC error.
Backends#
requests#
- class pjrpc.client.backend.requests.Client(url, *, session=None, raise_for_status=True, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=())[source]#
Bases:
AbstractClientRequests library client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint.
session (Optional[Session]) – custom session to be used instead of
requests.Sessionid_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
raise_for_status (bool) –
middlewares (Iterable[Middleware]) –
- send(request: Request, **kwargs: Any) Optional[Response][source]#
- send(request: BatchRequest, **kwargs: Any) Optional[BatchResponse]
Sends a JSON-RPC request.
- Parameters:
request – request instance
kwargs – additional client request argument
- Returns:
response instance or None if the request is a notification
httpx#
- class pjrpc.client.backend.httpx.Client(url, *, http_client=None, raise_for_status=True, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=())[source]#
Bases:
AbstractClienthttpx library sync client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint.
http_client (Optional[Client]) – custom client to be used instead of
httpx.Clientraise_for_status (bool) – should ClientResponse.raise_for_status() be called automatically
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
middlewares (Iterable[Middleware]) –
- send(request: Request, **kwargs: Any) Optional[Response][source]#
- send(request: BatchRequest, **kwargs: Any) Optional[BatchResponse]
Sends a JSON-RPC request.
- Parameters:
request – request instance
kwargs – additional client request argument
- Returns:
response instance or None if the request is a notification
- class pjrpc.client.backend.httpx.AsyncClient(url, *, http_client=None, raise_for_status=True, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=())[source]#
Bases:
AbstractAsyncClienthttpx library async client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint.
http_client (Optional[AsyncClient]) – custom client to be used instead of
httpx.AsyncClientraise_for_status (bool) – should ClientResponse.raise_for_status() be called automatically
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
middlewares (Iterable[AsyncMiddleware]) –
- async send(request: Request, **kwargs: Any) Optional[Response][source]#
- async send(request: BatchRequest, **kwargs: Any) Optional[BatchResponse]
Sends a JSON-RPC request.
- Parameters:
request – request instance
kwargs – additional client request argument
- Returns:
response instance or None if the request is a notification
aiohttp#
- class pjrpc.client.backend.aiohttp.Client(url, *, session=None, raise_for_status=True, id_gen_impl=<function sequential>, error_cls=<class 'pjrpc.client.exceptions.JsonRpcError'>, json_loader=<function loads>, json_dumper=<function dumps>, json_encoder=<class 'pjrpc.common.encoder.JSONEncoder'>, json_decoder=None, middlewares=())[source]#
Bases:
AbstractAsyncClientAiohttp library client backend.
- Parameters:
url (str) – url to be used as JSON-RPC endpoint
session (Optional[ClientSession]) – custom session to be used instead of
aiohttp.ClientSessionraise_for_status (bool) – should ClientResponse.raise_for_status() be called automatically
id_gen_impl (Callable[[...], Generator[Union[str, int], None, None]]) – identifier generator
error_cls (type[pjrpc.client.exceptions.JsonRpcError]) – JSON-RPC error base class
json_encoder (type[pjrpc.common.encoder.JSONEncoder]) – json encoder
json_decoder (Optional[JSONDecoder]) – json decoder
middlewares (Iterable[AsyncMiddleware]) –
- async send(request: Request, **kwargs: Any) Optional[Response][source]#
- async send(request: BatchRequest, **kwargs: Any) Optional[BatchResponse]
Sends a JSON-RPC request.
- Parameters:
request – request instance
kwargs – additional client request argument
- Returns:
response instance or None if the request is a notification
aio-pika#
Retry#
- class pjrpc.client.retry.Backoff(attempts, jitter=<function Backoff.<lambda>>)[source]#
Bases:
objectJSON-RPC request retry strategy.
- class pjrpc.client.retry.PeriodicBackoff(attempts, jitter=<function Backoff.<lambda>>, interval=1.0)[source]#
Bases:
BackoffPeriodic request retry strategy.
- class pjrpc.client.retry.ExponentialBackoff(attempts, jitter=<function Backoff.<lambda>>, base=1.0, factor=2.0, max_value=None)[source]#
Bases:
BackoffExponential request retry strategy.
- class pjrpc.client.retry.FibonacciBackoff(attempts, jitter=<function Backoff.<lambda>>, multiplier=1.0, max_value=1.0)[source]#
Bases:
BackoffFibonacci request retry strategy.
Integrations#
pytest client library integration.
Implements some utilities for mocking out pjrpc library clients.
- class pjrpc.client.integrations.pytest.Match(endpoint, version, method_name, once, callback, **response_data)[source]#
Bases:
objectMatch object. Incorporates request matching information.
- class pjrpc.client.integrations.pytest.PjRpcMocker(target, mocker=<module 'unittest.mock' from '/home/docs/.asdf/installs/python/3.12.10/lib/python3.12/unittest/mock.py'>, passthrough=False, dumps=<function dumps>)[source]#
Bases:
objectSynchronous JSON-RPC client mocker.
- Parameters:
- add(endpoint, method_name, result=UnsetType.UNSET, error=UnsetType.UNSET, id=None, version='2.0', once=False, callback=None)[source]#
Appends response patch. If the same method patch already exists they will be used in a round-robin way.
- replace(endpoint, method_name, result=UnsetType.UNSET, error=UnsetType.UNSET, id=None, version='2.0', once=False, callback=None, idx=0)[source]#
Replaces a previously added response patch by a new one.
- Parameters:
- Return type:
None
- pjrpc.client.integrations.pytest_aiohttp.pjrpc_aiohttp_mocker()[source]#
Aiohttp client mocking fixture.
- Return type:
Generator[PjRpcMocker, None, None]
- pjrpc.client.integrations.pytest_requests.pjrpc_requests_mocker()[source]#
Requests client mocking fixture.
- Return type:
Generator[PjRpcMocker, None, None]