Releases: Dramwig/FlowLine
Releases · Dramwig/FlowLine
v0.1.3
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
v0.1.2
支持自定义GPU优先比较函数,支持优先排序后的多GPU调用,func参数列表改变!
from flowline import run_cli
def func(dict, gpu_id, sorted_gpu_ids):
print(sorted_gpu_ids)
return "CUDA_VISIBLE_DEVICES="+str(gpu_id)+" python -u test/test.py "+ " ".join([f"--{k} {v}" for k, v in dict.items()])
def cmp(info1, info2):
if info1.free_memory > info2.free_memory:
return -1
elif info1.free_memory < info2.free_memory:
return 1
else:
return 0
if __name__ == "__main__":
# run_cli(func, "test/todo.csv")
run_cli(func, "test/todo.csv", user_cmp=cmp) # user_cmp可选v0.1.1
v0.1.0-alpha
Automated tool for running Python programs in a streamlined manner.