FlowLine v0.1.3 · 发布说明
TL;DR
- 不再支持顶层导入:
from flowline import ...- 新用法:
- CLI:
from flowline.api import run_cli- Web/ASGI:
from flowline.api.routes import get_app- CLI 与 Web 依赖彻底解耦:纯 CLI 安装不再拉取 FastAPI/Flask/Uvicorn 等 Web 依赖(通过可选依赖实现)。
🚨 重要变更(Breaking Change)
-
移除 顶层导入:
from flowline import run_cli / get_app -
改为 API 命名空间:
- 命令行入口:
flowline.api.run_cli - Web/ASGI 应用工厂:
flowline.api.routes.get_app
- 命令行入口:
行为与参数语义未改变,仅导入路径变更。
为什么要这样改?
- 模块边界更清晰:CLI 与路由解耦,降低隐式副作用。
- 导入更轻量:避免导入顶层时加载不必要依赖。
- 类型检查与文档更友好:API 所在路径一目了然,IDE 辅助更准确。
- 为后续扩展(如
flowline.api.*其他子模块)考虑
📦 接口兼容性说明
接口兼容性说明:本次改动为向前兼容——推荐的新导入
from flowline.api import run_cli在旧版与 v0.1.3 中均可正常使用,建议统一迁移为该写法;而旧写法
from flowline import run_cli自 v0.1.3 起已移除,不具备向后兼容性,升级到新版本将触发 ImportError。
🔧 迁移指南
1) CLI 场景
之前:
# ❌ v0.1.2 及更早
from flowline import run_cli
run_cli()现在:
# ✅ v0.1.3
from flowline.api import run_cli
run_cli()2) Web/ASGI 场景(例如 FastAPI/Uvicorn)
之前:
# ❌ v0.1.2 及更早
from flowline import get_app
app = get_app()现在:
# ✅ v0.1.3
from flowline.api.routes import get_app
app = get_app()批量替换(示例)
from flowline import run_cli → from flowline.api import run_cli
from flowline import get_app → from flowline.api.routes import get_app