{"id":24713,"library":"tinyrpc","title":"tinyrpc","description":"A small, modular, transport and protocol neutral RPC library supporting JSON-RPC (2.0, 1.0), zmq, and more. Current version 1.1.7. Low release cadence.","status":"active","version":"1.1.7","language":"python","source_language":"en","source_url":"https://github.com/mbr/tinyrpc","tags":["rpc","json-rpc","transport","client","server","tiny"],"install":[{"cmd":"pip install tinyrpc","lang":"bash","label":"Standard install"}],"dependencies":[],"imports":[{"note":"RPCClient is exposed via tinyrpc top-level, not submodule.","wrong":"from tinyrpc.client import RPCClient","symbol":"RPCClient","correct":"from tinyrpc import RPCClient"},{"note":"JSONRPCProtocol lives in tinyrpc.protocols.jsonrpc.","wrong":"from tinyrpc.jsonrpc import JSONRPCProtocol","symbol":"JSONRPCProtocol","correct":"from tinyrpc.protocols.jsonrpc import JSONRPCProtocol"},{"note":"The dispatcher is RPCDispatcher, not ServerDispatcher.","wrong":"from tinyrpc.server import ServerDispatcher","symbol":"ServerDispatcher","correct":"from tinyrpc.dispatch import RPCDispatcher"},{"note":"tinyrpc uses RPCError base class, not ServerError.","wrong":"from tinyrpc import ServerError","symbol":"ServerError","correct":"from tinyrpc.exc import RPCError"}],"quickstart":{"code":"from tinyrpc import RPCClient\nfrom tinyrpc.protocols.jsonrpc import JSONRPCProtocol\nfrom tinyrpc.transports.http import HttpPostClientTransport\n\nclient = RPCClient(JSONRPCProtocol(), HttpPostClientTransport('http://localhost:5000/api'))\nresult = client.call('add', x=1, y=2)\nprint(result)","lang":"python","description":"Quickstart: create a JSON-RPC client via HTTP."},"warnings":[{"fix":"Test thoroughly before depending on it for critical systems.","message":"The library is very lightly maintained. Many issues remain open; consider it stable but not actively developed.","severity":"gotcha","affected_versions":"all"},{"fix":"Use other libraries (e.g., jsonrpcclient) if you need robust batch handling.","message":"JSON-RPC 2.0 is supported but not all edge cases (e.g., batch requests) are handled correctly.","severity":"gotcha","affected_versions":"<=1.1.7"},{"fix":"Catch RPCError from tinyrpc.exc instead of expecting standard error dictionaries.","message":"The library uses its own exception classes; standard JSON-RPC error object mapping is partial.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Upgrade to latest: pip install --upgrade tinyrpc. Use correct import: from tinyrpc import RPCClient.","cause":"Installed version is very old (pre-1.0) or import path used is wrong.","error":"ImportError: cannot import name 'RPCClient' from 'tinyrpc'"},{"fix":"pip install tinyrpc[http] to get the HTTP transport.","cause":"HTTP transport is provided by an extra (tinyrpc[http]) not installed by default.","error":"ModuleNotFoundError: No module named 'tinyrpc.transports.http'"},{"fix":"Use correct constructor: HttpPostClientTransport(endpoint) (no keyword).","cause":"User tried to pass a 'post' argument to HttpPostClientTransport; wrong parameter name.","error":"TypeError: __init__() got an unexpected keyword argument 'post'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}