Python SDK for building Dhara extensions
Project description
dhara-extension-py
Python SDK for building Dhara extensions.
Installation
pip install dhara-extension
Or install from source:
cd packages/dhara-extension-py
pip install -e .
Quick Start
Create a file hello-ext/main.py:
#!/usr/bin/env python3
"""A simple Dhara extension using the Python SDK."""
from dhara_extension import Extension
ext = Extension(
name="hello-ext",
version="1.0.0",
description="A friendly hello extension",
)
@ext.tool(
name="hello",
description="Greet someone by name",
parameters={
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name to greet",
},
},
"required": ["name"],
},
)
def hello(input_data):
name = input_data.get("name", "World")
greeting = f"Hello, {name}! Welcome to Dhara."
return {
"content": [
{"type": "text", "text": greeting},
],
}
@ext.tool(
name="count",
description="Count items in a list",
)
def count(input_data):
items = input_data.get("items", [])
return {
"content": [
{"type": "text", "text": f"Counted {len(items)} items."},
],
}
if __name__ == "__main__":
ext.run()
And a manifest.json:
{
"name": "hello-ext",
"version": "1.0.0",
"runtime": {
"type": "subprocess",
"command": "python3 main.py",
"protocol": "json-rpc"
},
"provides": {
"tools": ["hello", "count"]
},
"capabilities": []
}
API Reference
Extension(name, version, description="", debug=False)
Main extension class.
tool(name, description, parameters, capabilities)— Decorator to register a tool handlerrun()— Start the JSON-RPC stdin/stdout loop
create_extension(name, version, description="")
Convenience function to create an Extension instance.
Protocol
Extensions communicate with Dhara via JSON-RPC 2.0 over stdin/stdout:
→ {"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
← {"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"0.1.0","name":"hello-ext","tools":[...]}}
→ {"jsonrpc":"2.0","id":2,"method":"tools/execute",
"params":{"toolName":"hello","input":{"name":"World"}}}
← {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"Hello, World!"}]}}
See the Dhara Extension Protocol for details.
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dhara_extension-0.5.3.tar.gz.
File metadata
- Download URL: dhara_extension-0.5.3.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c427cbcaff0e142a5970f14beff92cf493da2e3a4e4d0753574d71f93eac968
|
|
| MD5 |
7878fc6828c0c7b661c94d16c0827b9e
|
|
| BLAKE2b-256 |
63e3e0fb9623369680b5d22329d8f01c19e83676c16c32d0a8a2b19b7e91aaff
|
File details
Details for the file dhara_extension-0.5.3-py3-none-any.whl.
File metadata
- Download URL: dhara_extension-0.5.3-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e7e41305cd99c32032ef47389a3ddae2de3c6784e53d0b12df63a3a294f7ab9
|
|
| MD5 |
378b379a76580ce0ba715524b5881a38
|
|
| BLAKE2b-256 |
c95a39096167c13bca75db5395f0b9d2bd76258a8d97ddac6dd72fac1fb65cf4
|