Skip to content

建立弃用策略:给每条 DeprecationWarning 写明移除版本,并收敛版本号来源 + 加 dependabot #162

Description

@SongshGeo

其中「文档与代码矛盾」和「文档发布别名固定在 0.8」两项已在 commit 71a5b34 修复;弃用策略本身仍待定。

1. 兼容层没有终点

代码里有 3 处会发 DeprecationWarning

位置 内容
abses/core/base_module.py 组件参数的小写 key 回退到 PascalCase 类名
abses/core/base_subsystem.py 0.7.x 的 how= 参数被接受并忽略
abses/core/job_manager.py 结果里的 repeat_id 列,已被 run_id 取代

另有 6 处不发警告的静默兼容层:

  • abses/core/base.py —— 整个 60 行文件只是 re-export 垫片,docstring 自陈用途;
  • abses/core/types.pyabses/core/type_aliases.py —— 同名 TypeVar 定义两遍(一份带 bound、一份不带),纯粹为了绕开循环 import;
  • abses/core/protocols.py_MovementsProtocol = MovementProtocol 别名——私有名,外部不可能依赖,可以直接删;
  • abses/utils/config.pyreportstrackertracker.agent 键改名;
  • abses/core/experiment.py 两处 OmegaConf.set_struct(cfg, False),为 <0.8.x 项目全局关闭 Hydra 的 struct 模式。

三条警告的文案全是 "in a future version",没有一条写了目标版本。 0.7→0.8 的兼容层如今已经落后两个小版本(包已到 0.10.0),还背着 33 个专用测试(tests/test_backward_compatibility.py 21 个 + tests/test_actor_params_backward_compatibility.py 12 个)。

其中代价最大的是第 6 条:全局关掉 struct 模式意味着所有用户都永久失去 OmegaConf 的配置拼写检查。

建议

定一条明确的策略并写进 contributing.mddocs/api/stability_guarantee.md,例如:

在 X 版本引入的 DeprecationWarning,在 X+2 的小版本移除。

然后把每条警告的文案改成带具体版本号的,例如「will be removed in 0.12」。这样这堆维护负担就从开放式变成了有计划的清理。

_MovementsProtocol 这类私有别名可以立刻删。

2. 版本号在三处手写(部分已修)

  • pyproject.tomlversion = "0.10.0"
  • abses/__init__.py 的回落值 "v0.10.0-dev"
  • .github/workflows/gh-page.yml 里写死的 mike deploy --update-aliases 0.8 latest —— 已改为从 pyproject.toml 读取

master 分支每次推送都曾把最新文档发布到 0.8 这个别名下(包已经是 0.10.0)。已修,但建议进一步统一:仓库里没有 .release-please-manifest.json,而 release-please-config.json 用的已经是 googleapis 的 schema——把版本号收敛成单一来源可以顺带解决 __init__.py 的手写回落值。

3. Action 版本全线滞后,且没有自动更新

.github/ 下没有 dependabot.yml,四个 workflow 的 action 都落后:

Action 当前 状态
google-github-actions/release-please-action v3 该 action 已迁移到 googleapis/release-please-action,v3 已弃用,v4 为当前版本
codecov/codecov-action v4 v5 为当前版本
astral-sh/setup-uv v4 v6 为当前版本

release-please 这条尤其别扭:根目录的 release-please-config.json 用的已经是 googleapis 的 schema,但 workflow 还指向旧的 google-github-actions 仓库。

建议

加一个 .github/dependabot.ymlpackage-ecosystem: github-actions,weekly),并把上述三个 action 升到当前版本。

验收标准

  • contributing.mdstability_guarantee.md 写明弃用策略(引入版本 → 移除版本)。
  • 三条 DeprecationWarning 的文案都带具体的移除版本号。
  • _MovementsProtocol 等私有别名已删除。
  • OmegaConf.set_struct(cfg, False) 给出结论:要么定版本移除,要么改成可配置项(默认恢复 struct 模式)。
  • 版本号只有一处手写来源。
  • .github/dependabot.yml 存在,三个滞后的 action 已升级。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    🏗️ buildDependencies related📄 documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions