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 0.3.1a20260213150703
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-0.3.1a20260213150703.tar.gz | 76.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iii_motia-0.3.1a20260213150703-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 102.2 kB
Release files / iii_motia-0.3.1a20260213150703.tar.gz
| Download URL | iii_motia-0.3.1a20260213150703.tar.gz |
|---|---|
| Size | 76.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2657930ca90b2ec8583ed274b7132e523f23268413dd102c80172bbbfff54d1d
|
|
BLAKE2b-256 checksum How to use checksums |
707bec5fc44150c7f64610e32074371b6348c84a447ebb635ab42da2c5e1f447
|
| 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-0.3.1a20260213150703-py3-none-any.whl
| Download URL | iii_motia-0.3.1a20260213150703-py3-none-any.whl |
|---|---|
| Size | 26.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
addc2fb44a21f113e092e10277edc7bbf32c3fa5f67e22cbcaad905ca42fc4d0
|
|
BLAKE2b-256 checksum How to use checksums |
39d886f31e4da4f2582a01437b1e50ab4ac6839c85e0d0a61de48e5435cdd9db
|
| 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 0.3.1a20260213150703
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.