Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Motia Framework for Python

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

Installation

uv pip install iii-motia

Usage

Defining a Step

from motia import FlowContext, event

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

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

API Steps

from motia import ApiRequest, ApiResponse, FlowContext, api

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

async def handler(req: ApiRequest, ctx: FlowContext) -> ApiResponse:
    ctx.logger.info("Creating item", req.body)
    await ctx.emit({"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)

Metadata

Release files for iii-motia 1.0.0rc5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iii-motia 1.0.0rc5
File Size Uploaded Provenance
iii_motia-1.0.0rc5.tar.gz 76.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for iii-motia 1.0.0rc5
File Interpreter ABI Platform
iii_motia-1.0.0rc5-py3-none-any.whl Python 3 none any Details

Total release size: 102.0 kB

Release files / iii_motia-1.0.0rc5.tar.gz

Download URL iii_motia-1.0.0rc5.tar.gz
Size 76.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f579676077c5900b1cffebdafc4204ecbe3157a0258f6db8cbb05db5f7250d48
BLAKE2b-256 checksum
How to use checksums
d5faf3cf227bff6af7637d8a4cc5f75888898a3999dc2c60d1ca73b7f5f77c67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / iii_motia-1.0.0rc5-py3-none-any.whl

Download URL iii_motia-1.0.0rc5-py3-none-any.whl
Size 25.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fd265bb361b4bc78363653235220c21f1f6a866a6363d156da293e568185845
BLAKE2b-256 checksum
How to use checksums
cfbe55fc8f59f921355764a3f837c30e1f1eac892eb630500d7a5e683fc52afc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Security for iii-motia 1.0.0rc5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page