Open-RPC API hosting and interactive documentation.
Project description
Tabella
Open-RPC development framework with builtin interactive documentation.
Live Demo
A live demo is available here.
Install
Tabella is on PyPI and can be installed with:
pip install tabella
Or with Poetry
poetry add tabella
Python OpenRPC Docs
The RPC server hosted and documented by Tabella is powered by Python OpenRPC. Refer to the Python OpenRPC docs hosted here for advanced use.
Getting Started
A basic Tabella app:
from tabella import Tabella
app = Tabella()
@app.method()
def echo(a: str, b: float) -> tuple[str, float]:
"""Echo parameters back in result."""
return a, b
if __name__ == "__main__":
app.run()
Run this, then open http://127.0.0.1:8000/ in your browser to use the interactive documentation.
The Open-RPC API will be hosted over HTTP on http://127.0.0.1:8000/api
and over
WebSockets on ws://127.0.0.1:8000/api
.
Further Usage
Routers
An app with many modules can be organized into segments using Method Routers.
Security and Depends Arguments
Tabella passes request headers to the RPCServer process request methods. Details on usage can be found in the Python OpenRPC docs on Depends Arguments.
Set Servers
Set RPC servers manually to specify transport and paths to host the RPC server on, e.g.
from openrpc import Server
from tabella import Tabella
app = Tabella(
servers=[
Server(name="HTTP API", url="http://localhost:8000/my/api/path"),
Server(name="WebSocket API", url="ws://localhost:8000/my/api/path"),
]
)
This app will host the RPCServer over HTTP and over WebSockets with the
path /my/api/path
.
Pydantic
Pydantic is used for request/response deserialization/serialization as well as schema generation. Pydantic should be used for any models as seen here in the Python OpenRPC Docs.
Starlette
Tabella HTTP and WebSocket server hosting uses Starlette. Uvicorn can be used to run the starlette app.
uvicorn main:app.starlette --reload
Monitor
If you are running the app with in debug mode, e.g. app = Tabella(debug=True)
, then at
the path /monitor
there is a display that will show requests and responses made to the
RPC server as they happen.
This requires websockets
pip install websockets
Inspired By
Support The Developer
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.