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.
-
Install dev dependencies:
cd motia && uv sync --all-extras
-
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| iii_motia-1.0.0rc5.tar.gz | 76.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.