Repository navigation
easy_fastapi 1.0.0 — 分包重构 + 扩展化架构 + 脚手架 CLI
将原单体项目重构为双包 monorepo(uv workspace):
- easy_fastapi:运行时库,扩展化 FastAPI 框架
- easy_fastapi_cli:脚手架 CLI,一键生成 FastAPI 项目
核心架构
- Extension 协议(config_model + init_app)+ ExtensionContext(provide/require)
- EasyFastAPI 应用装配器(config → section → init_app + app.state 挂载)
- 运行时可校验协议:Persistence / PasswordHasher / DbSession / AuthUser / ModelIntrospector
- 配置系统:YAML 加载 + env overlay(EFA_ 前缀)+ 嵌套段 + 进程级缓存
ORM 扩展(tortoise / sqlalchemy / sqlmodel)
- 各 ORM 独立 Extension(init_app + lifespan + session_factory)
- build_uri 按 ORM×dialect URL 规则(Tortoise 两斜杠 vs SQLAlchemy 三斜杠)
- ExtendedCRUD / Pagination / ModelIntrospector 通用能力
- 删除框架内建 Repository/User 模型,改由扩展 provide 注入
其他扩展
- auth:AuthExtension 类化 + TokenService(JWT access/refresh)+ OAuth2PasswordBearer + scope_match(any/all)
- migration:aerich(tortoise) / alembic(sqlalchemy/sqlmodel) 分派
- redis:RedisExtension + RedisPersistence(disabled 回退)
- static:StaticExtension + 配置化挂载
- i18n:core/i18n.py(contextvars + gettext)+ I18nExtension + Accept-Language 中间件 + 内嵌 msgfmt + CLI 插件
脚手架 CLI(efa)
- create:交互向导(questionary)/ 全参数模式 → 选项校验(铁律 A/B/C)→ manifest → 落盘
- run / db(init|migrate|upgrade|sync) / gen(introspector 驱动 CRUD 生成)
- Fragment + Manifest 数据模型 + Renderer(Jinja2 StrictUndefined)
- venv_bridge 转发层 + CLI 插件协议与发现注册器
前端模板(fullstack 模式)
- pnpm workspace + admin 应用(Vue3 + Element Plus + vue-query + Pinia + vue-i18n)
- api-sdk 包(@hey-api/openapi-ts 生成)
工程化
- uv 管理依赖(非 pip)+ hatchling 构建 + .mo 构建钩子
- 1349 测试全绿 + ruff lint
- GitHub Actions:CI(lint + pytest 多版本矩阵)+ tag 触发 PyPI 发包(Trusted Publisher)
Full Changelog: v0.13.1...v1.0.0