Skip to main content

III SDK for Python

Project description

iii-sdk

Python SDK for the iii engine.

PyPI Python License

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

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

iii_sdk-0.21.8.dev1.tar.gz (188.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iii_sdk-0.21.8.dev1-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

Details for the file iii_sdk-0.21.8.dev1.tar.gz.

File metadata

  • Download URL: iii_sdk-0.21.8.dev1.tar.gz
  • Upload date:
  • Size: 188.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iii_sdk-0.21.8.dev1.tar.gz
Algorithm Hash digest
SHA256 a7b2a04a50b6d2c5db3b5c4b8fddcf225904cab99a4b373e61ce126178b32e35
MD5 b35b6af092b8b2a7ee8ce970d9ddf710
BLAKE2b-256 c5e54f7c370778a923f35a52b991b8071548b67316c53be0b5df1184f2b490ba

See more details on using hashes here.

File details

Details for the file iii_sdk-0.21.8.dev1-py3-none-any.whl.

File metadata

  • Download URL: iii_sdk-0.21.8.dev1-py3-none-any.whl
  • Upload date:
  • Size: 36.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for iii_sdk-0.21.8.dev1-py3-none-any.whl
Algorithm Hash digest
SHA256 469b0da12276a071fc71308a17adef25967df0ecdbaa5619a237031e1905e62d
MD5 3df1f2b265d237e777888de32b5bb875
BLAKE2b-256 bd3f411b097e876f14dc04c3087901de6607ff617be8bb2f57294c863a8a634a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page