Skip to main content

Motia framework for III Engine

Project description

Motia Framework for Python

High-level framework for building workflows with the III Engine.

Installation

uv pip install motia

Usage

Defining a Step

from motia import FlowContext, queue

config = {
    "name": "process-data",
    "triggers": [queue("data.created")],
    "enqueues": ["data.processed"],
}

async def handler(data: dict, ctx: FlowContext) -> None:
    ctx.logger.info("Processing data", data)
    await ctx.enqueue({"topic": "data.processed", "data": data})

API Steps

from motia import ApiRequest, ApiResponse, FlowContext, http

config = {
    "name": "create-item",
    "triggers": [http("POST", "/items")],
    "emits": ["item.created"],
}

async def handler(req: ApiRequest, ctx: FlowContext) -> ApiResponse:
    ctx.logger.info("Creating item", req.body)
    await ctx.enqueue({"topic": "item.created", "data": req.body})
    return ApiResponse(status=201, body={"id": "123"})

Streams

from motia import Stream

# Define a stream
todo_stream = Stream[dict]("todos")

# Use the stream
item = await todo_stream.get("group-1", "item-1")
await todo_stream.set("group-1", "item-1", {"title": "Buy milk"})
await todo_stream.delete("group-1", "item-1")
items = await todo_stream.get_group("group-1")

Build & Publish

python -m build
uv publish --index cloudsmith dist/*

Features

  • Event-driven step definitions
  • API route handlers
  • Cron job support
  • Stream-based state management
  • Type-safe context with logging

Testing

Running Integration Tests

Integration tests require a running III Engine instance. Make sure to have it built or installed before running tests.

  1. Install dev dependencies:

    cd motia && uv sync --all-extras
    
  2. Run tests:

    uv run pytest
    

Test Configuration

Tests use non-default ports to avoid conflicts:

  • Engine WebSocket: ws://localhost:49199
  • HTTP API: http://localhost:3199

Set III_ENGINE_PATH environment variable to point to the III engine binary.

Test Coverage

The integration test suite covers:

  • Bridge connection and function registration
  • API triggers (HTTP endpoints)
  • KV Server operations
  • PubSub messaging
  • Logging module
  • Motia framework integration
  • Stream operations (when available)
  • State management (when available)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

motia-1.0.0rc22.tar.gz (98.6 kB view details)

Uploaded Source

Built Distribution

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

motia-1.0.0rc22-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file motia-1.0.0rc22.tar.gz.

File metadata

  • Download URL: motia-1.0.0rc22.tar.gz
  • Upload date:
  • Size: 98.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for motia-1.0.0rc22.tar.gz
Algorithm Hash digest
SHA256 23c0832302c6df1fe7af7ce573fef17534b9b5fb583c93157a11380dda6d5c30
MD5 4c74ef6f87d11be108bae9a0a1a315fb
BLAKE2b-256 5921e18b90392c6638de9aebbb2b24fa7c536d4c87e5fb9e4343b445338f378d

See more details on using hashes here.

File details

Details for the file motia-1.0.0rc22-py3-none-any.whl.

File metadata

  • Download URL: motia-1.0.0rc22-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for motia-1.0.0rc22-py3-none-any.whl
Algorithm Hash digest
SHA256 e57b2a0b66894ec2e0296bd8424a11d231b8b27795efe224bc1aa7e71478880a
MD5 cc308e0b5f2e244f6d93d5dfb9e5b923
BLAKE2b-256 51c45c3fef7dfd43d69897af755ac256b5d3b8f5063967df14026e75098eaf50

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