Skip to content

refactor(config): remove remaining thin wrappers and type aliases#298

Merged
liujuanjuan1984 merged 1 commit intomainfrom
eval/issue-275
Mar 23, 2026
Merged

refactor(config): remove remaining thin wrappers and type aliases#298
liujuanjuan1984 merged 1 commit intomainfrom
eval/issue-275

Conversation

@liujuanjuan1984
Copy link
Collaborator

@liujuanjuan1984 liujuanjuan1984 commented Mar 23, 2026

变更概述

  • 当前主干已经完成 pydantic-settings 迁移。
  • 本 PR 不重复迁移配置体系,而是完成 #275 在当前代码形态下仍然合理的一步收敛:清理无额外语义价值的薄别名 / 薄包装,并进一步对齐 a2a-sdk 已提供的核心协议类型。

模块变更

src/opencode_a2a/config.py

  • 删除 Settings.from_env() 这层单纯转发的包装方法。
  • 保留 Settings 作为唯一配置模型入口。

src/opencode_a2a/server/application.py

  • 服务入口不再依赖 Settings.from_env()
  • 在调用点直接实例化 Settings,并通过 BaseSettings 类型适配保持静态类型检查通过。

src/opencode_a2a/client/client.py

  • 删除对 facade 私有 A2AClientEvent alias 的依赖。
  • send_message() / send() 的返回类型注解改为直接使用真实 a2a-sdk 事件类型组合。

src/opencode_a2a/client/__init__.py

  • 删除 A2AClientEvent / A2AClientEventStream / A2AClientMetadata 的对外导出。
  • 保持 client facade 的公开 API 更聚焦于实际可用对象,而不是额外包装别名。

src/opencode_a2a/client/types.py

  • 删除该薄别名模块。

tests/server/test_app_behaviors.py

  • 同步调整入口测试,改为 patch 模块级 Settings,避免继续依赖已删除包装层。

提交记录

  • a840fd5 refactor(config): remove remaining thin wrappers and type aliases (#275)

验证

  • uv run pre-commit run --all-files
  • uv run pytest
  • 345 passed
  • coverage: 91.03%

Closes #275

@liujuanjuan1984
Copy link
Collaborator Author

本轮审查结论:

  • 未发现阻塞问题。
  • 本 PR 的实现范围与当前重定义后的 #275 一致:不重复做 pydantic-settings 迁移,而是收掉主干上仍残留的薄别名 / 薄包装。
  • Closes #275 当前是准确的,不需要额外补充 Relates to

非阻塞风险:

  • 这次删除了 opencode_a2a.clientA2AClientEvent / A2AClientEventStream / A2AClientMetadata 的导出,以及 src/opencode_a2a/client/types.py 模块本身。
  • 如果仓库外已有调用方显式 import 这些 facade alias,会产生兼容性变化。
  • 以当前仓库视角,这个变化是可接受的:仓库内没有剩余调用点,且这些 alias 不再提供额外语义价值。

@liujuanjuan1984
Copy link
Collaborator Author

更苛刻一轮 reviewer 审查结论:

  1. 中:这是一个显式的对外兼容性变更,当前 PR 描述里应明确它不是纯内部重构
  • 位置:src/opencode_a2a/client/__init__.pysrc/opencode_a2a/client/types.pysrc/opencode_a2a/config.py
  • 问题:本 PR 删除了 A2AClientEvent / A2AClientEventStream / A2AClientMetadata 的对外导出,删除了 src/opencode_a2a/client/types.py 模块,并删除了 Settings.from_env()
  • 风险:如果仓库外已有调用方 import 这些 symbol 或调用 Settings.from_env(),会直接 break。对本仓内部这没有问题,但它不是“完全无外部影响”的收敛。
  • 建议:PR 描述里最好显式写明这是一次小范围 public API cleanup / compatibility change,方便 reviewer 和 release note 判断。

除此之外,这轮没有发现新的阻塞问题。

@liujuanjuan1984 liujuanjuan1984 marked this pull request as ready for review March 23, 2026 10:55
@liujuanjuan1984 liujuanjuan1984 merged commit 5395342 into main Mar 23, 2026
3 checks passed
@liujuanjuan1984 liujuanjuan1984 deleted the eval/issue-275 branch March 23, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Priority: Med] [Refactor/Ops] 迁移配置管理至 pydantic-settings

1 participant