Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 15:08
· 3 commits to main since this release

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