Metadata-Version: 2.4
Name: lzm-edsm
Version: 0.1.0
Summary: Event-Driven State Machine - 去中心化的事件驱动状态机引擎，pip install 即装即用
Author: Lzm
License: MIT
Project-URL: Homepage, https://github.com/lzm/lzm-edsm
Project-URL: Issues, https://github.com/lzm/lzm-edsm/issues
Project-URL: Repository, https://github.com/lzm/lzm-edsm
Keywords: state-machine,event-driven,event-bus,state,asyncio,edsm,lzm,domain-driven-design
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Provides-Extra: redis
Requires-Dist: redis>=5.0; extra == "redis"
Provides-Extra: rabbitmq
Requires-Dist: aio-pika>=9.0; extra == "rabbitmq"
Provides-Extra: mqtt
Requires-Dist: asyncio-mqtt>=0.16.0; extra == "mqtt"
Provides-Extra: kafka
Requires-Dist: aiokafka>=0.10; extra == "kafka"
Provides-Extra: nats
Requires-Dist: nats-py>=2.0; extra == "nats"
Provides-Extra: zmq
Requires-Dist: pyzmq>=24.0; extra == "zmq"
Provides-Extra: all
Requires-Dist: lzm-edsm[redis]; extra == "all"
Requires-Dist: lzm-edsm[rabbitmq]; extra == "all"
Requires-Dist: lzm-edsm[mqtt]; extra == "all"
Requires-Dist: lzm-edsm[kafka]; extra == "all"
Requires-Dist: lzm-edsm[nats]; extra == "all"
Requires-Dist: lzm-edsm[zmq]; extra == "all"

# lzm-edsm

> 编码：utf8 | 作者：Lzm | 日期：2026-07-15

## 项目定位

**Event-Driven State Machine**——去中心化的事件驱动状态机引擎。

一句话：**状态转移 = 事件发布，事件消费 = 状态响应。不再分"状态机"和"事件总线"两个概念。**

lzm-edsm 将状态机、事件总线、蓝图合并成一个统一的 Python 包，安装即可使用，不绑定任何框架或中间件。

## 核心理念

```
旧架构：                      新架构：
StateBlueprint  ← 定义状态    Domain（统一容器）
EventRegistry   ← 注册事件        ├── state() 注册状态
EventBus        ← 发布/消费       ├── transition() 注册转移（自动派生事件）
Subscribers     ← 监听事件        └── on() 注册监听

状态机引擎                        Engine（执行器）
事件总线                          Transport（可插拔传输层）
```

## 技术栈

| 层 | 技术 | 版本 |
|----|------|------|
| 语言 | Python | >= 3.11 |
| 核心（零依赖） | 纯 asyncio | — |
| 传输：Redis | redis-py | >= 5.0（可选） |
| 传输：RabbitMQ | aio-pika | >= 9.0（可选） |
| 存储：SQLite | aiosqlite | 内置 |
| 测试 | pytest | >= 8.0 |

## 项目状态

- **当前阶段**：设计阶段
- **进度**：[docs/timeline.md](docs/timeline.md)
- **TODO**：[docs/todo.md](docs/todo.md)

## 快速安装（待发布）

```bash
# 核心（零依赖）
pip install lzm-edsm

# 带 Redis 传输
pip install lzm-edsm[redis]

# 带 RabbitMQ 传输
pip install lzm-edsm[rabbitmq]

# 全量
pip install lzm-edsm[all]
```

## 目录结构

```
lzm-edsm/
├── pyproject.toml          # 项目元数据 + 可选依赖
├── src/
│   └── lzm/edsm/
│       ├── __init__.py     # 导出 Domain, Engine, Event
│       ├── core/
│       │   ├── domain.py   # Domain 类（状态+转移+事件容器）
│       │   ├── engine.py   # Engine 执行器（Pipeline）
│       │   ├── event.py    # Event 数据结构
│       │   └── exceptions.py
│       ├── transports/
│       │   ├── base.py     # Transport 抽象基类
│       │   ├── inprocess.py
│       │   ├── redis.py
│       │   └── rabbitmq.py
│       └── contrib/
│           ├── store.py    # SQLiteStore 事件溯源
│           └── mermaid.py  # 可视化
├── tests/
├── examples/
└── docs/
    ├── timeline.md
    ├── common-errors.md
    ├── coding-standards.md
    ├── todo.md
    └── logic-records/
```

## 相关文档

- [开发进度时间线](docs/timeline.md)
- [常见错误归档](docs/common-errors.md)
- [编码规范](docs/coding-standards.md)
- [TODO 管理](docs/todo.md)
- [逻辑记录](docs/logic-records/)
