Pre-release
This release is a pre-release and may not be stable for production use.
iii-sdk
Python SDK for the iii engine.
Install
pip install iii-sdk
Hello World
from iii import register_worker
iii = register_worker("ws://localhost:49134")
def greet(data):
return {"message": f"Hello, {data['name']}!"}
iii.register_function("hello::greet", greet)
iii.register_trigger({
"type": "http",
"function_id": "hello::greet",
"config": {"api_path": "/greet", "http_method": "POST"},
})
iii.connect()
result = iii.trigger({"function_id": "hello::greet", "payload": {"name": "world"}})
print(result) # {"message": "Hello, world!"}
API
| Operation | Signature | Description |
|---|---|---|
| Initialize | register_worker(url, options?) |
Create an SDK instance and auto-connect |
| Register function | iii.register_function(id, handler) |
Register a function that can be invoked by name |
| Register trigger | iii.register_trigger({"type": ..., "function_id": ..., "config": ...}) |
Bind a trigger (HTTP, cron, queue, etc.) to a function |
| Invoke (await result) | iii.trigger({"function_id": id, "payload": data}) |
Invoke a function and wait for the result |
| Invoke (fire-and-forget) | iii.trigger({"function_id": id, ..., "action": TriggerAction.Void()}) |
Fire-and-forget |
| Invoke (enqueue) | iii.trigger({"function_id": id, ..., "action": TriggerAction.Enqueue(queue="name")}) |
Route invocation through a named queue |
| Shutdown | iii.shutdown() |
Disconnect and stop background thread |
register_worker() creates the SDK instance and auto-connects to the engine.
Registering Functions
def create_order(data):
return {"status_code": 201, "body": {"id": "123", "item": data["body"]["item"]}}
iii.register_function("orders::create", create_order)
Registering Triggers
iii.register_trigger({
"type": "http",
"function_id": "orders::create",
"config": {"api_path": "/orders", "http_method": "POST"},
})
Invoking Functions
result = iii.trigger({"function_id": "orders::create", "payload": {"body": {"item": "widget"}}})
Development
Install in development mode
pip install -e .
Type checking
mypy src
Linting
ruff check src
Resources
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
iii_sdk-0.23.1rc1.tar.gz
(201.9 kB
view details)
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 iii_sdk-0.23.1rc1.tar.gz.
File metadata
- Download URL: iii_sdk-0.23.1rc1.tar.gz
- Upload date:
- Size: 201.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80a23531cf64b1cc90fa109efeb987a0a28f3382494263d5cdc12c385e6ca2ab
|
|
| MD5 |
f7c8098a27793a160e492b1dffc3cd73
|
|
| BLAKE2b-256 |
04b01e075d774800c01359fb3e41d36225d5fb1ed5cbf2a0c23c26a71ec5e3ef
|
File details
Details for the file iii_sdk-0.23.1rc1-py3-none-any.whl.
File metadata
- Download URL: iii_sdk-0.23.1rc1-py3-none-any.whl
- Upload date:
- Size: 42.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1828ea5fdd382175fc09272906e763f5f70c875dfa8135b3a1bb91a48857d044
|
|
| MD5 |
c076c33878b6f55d2369c1efc618cba8
|
|
| BLAKE2b-256 |
4e105ce299a558e3b15696cbb88ad5cfce5002becb7063496fdc56e7ee70b270
|