Event-Driven State Machine - 去中心化的事件驱动状态机引擎,pip install 即装即用
Project description
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
- TODO:docs/todo.md
快速安装(待发布)
# 核心(零依赖)
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/
相关文档
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
lzm_edsm-0.1.0.tar.gz
(27.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
lzm_edsm-0.1.0-py3-none-any.whl
(34.6 kB
view details)
File details
Details for the file lzm_edsm-0.1.0.tar.gz.
File metadata
- Download URL: lzm_edsm-0.1.0.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d3992227c9571e1bd0bef5c0095ca13e252a2312c6e877a8af321a078ef365c
|
|
| MD5 |
14e4a474a9e1ce7cf9a3bd615c6f6a6c
|
|
| BLAKE2b-256 |
01e2ff98cf09a6cf47946d55b9bc0bb1676d9a06cb0e637186d316b6cb87d7a4
|
File details
Details for the file lzm_edsm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: lzm_edsm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67811e3c3c9af7496d3b33a86819e25167e5266db65c63cbe3c6734db952a7ff
|
|
| MD5 |
683ffbec71052fcafd99ac78fd11f0cf
|
|
| BLAKE2b-256 |
f584cc566b49a9bf25926b2ca32adf0e8dd0356f194e3dd0521a4cf230d18019
|