高级特性实现总结¶
实现完成¶
本次更新实现了两个重要的高级特性:
1. ✅ 泛型类型参数区分 (Generic Type Parameters)¶
允许区分不同类型参数的泛型服务,如 Repository[User] 和 Repository[Order] 被视为不同的服务。
核心文件:
- src/symphra_container/generics.py - 泛型支持实现
- tests/unit/test_generics.py - 泛型测试 (13 个测试全部通过)
主要功能:
- GenericKey 类
- 表示泛型类型的唯一键
- 支持
__eq__和__hash__用于字典查找 -
可读的
__repr__表示 -
register_generic() 函数
- 注册泛型服务
- 支持实现类或工厂函数
-
支持指定生命周期
-
resolve_generic() 函数
- 解析泛型服务
-
自动依赖注入
-
is_generic_type() 函数
- 检查类型是否为泛型类型
使用示例:
from typing import Generic, TypeVar
from symphra_container import Container, Lifetime
from symphra_container.generics import register_generic, resolve_generic
T = TypeVar('T')
class Repository(Generic[T]):
def get(self, id: int) -> T:
...
class UserRepository(Repository[User]):
def get(self, id: int) -> User:
return User(f"User {id}")
# 注册
container = Container()
register_generic(container, Repository[User], UserRepository)
register_generic(container, Repository[Order], OrderRepository)
# 解析
user_repo = resolve_generic(container, Repository[User])
order_repo = resolve_generic(container, Repository[Order])
测试覆盖: 93.55% (46 语句, 2 未覆盖)
2. ✅ 可视化和调试工具 (Visualization & Debugging Tools)¶
提供强大的容器可视化和诊断功能,帮助开发者理解依赖关系和调试问题。
核心文件:
- src/symphra_container/visualization.py - 可视化工具实现
- tests/unit/test_visualization.py - 可视化测试 (16 个测试全部通过)
主要功能:
- visualize_container()
- 生成 DOT 格式 (Graphviz)
- 生成 Mermaid 格式
- 支持生命周期着色
-
显示依赖关系箭头
-
print_dependency_graph()
- 打印文本格式的依赖树
- 支持打印所有服务或特定服务
-
树形结构显示
-
debug_resolution()
- 显示服务解析的详细步骤
- 列出所有依赖及其注册状态
- 显示解析顺序
-
显示解析结果或错误
-
diagnose_container()
- 容器健康诊断
- 统计各生命周期服务数量
- 检测循环依赖
- 检测无法解析的服务
-
计算健康评分 (0-100)
-
ContainerDiagnostic 数据类
- 诊断报告的结构化数据
使用示例:
from symphra_container.visualization import (
visualize_container,
print_dependency_graph,
debug_resolution,
diagnose_container
)
# 生成可视化图
dot = visualize_container(container, format='dot')
mermaid = visualize_container(container, format='mermaid')
# 打印依赖树
print_dependency_graph(container)
# 调试特定服务
debug_resolution(container, UserService)
# 健康诊断
report = diagnose_container(container)
print(f"健康评分: {report.health_score}/100")
测试覆盖: 91.16% (175 语句, 11 未覆盖)
更新内容¶
新增文件¶
src/symphra_container/generics.py(46 行代码)src/symphra_container/visualization.py(175 行代码)tests/unit/test_generics.py(236 行测试)tests/unit/test_visualization.py(275 行测试)docs/advanced-features.md(完整文档)examples/advanced_features_demo.py(演示脚本)
更新文件¶
src/symphra_container/__init__.py- 导出新模块的所有公共 API
测试结果¶
tests/unit/test_generics.py: 13 个测试 ✅ 全部通过
tests/unit/test_visualization.py: 16 个测试 ✅ 全部通过
总计: 29 个测试全部通过 🎉
代码覆盖率¶
generics.py: 93.55%visualization.py: 91.16%
功能特点¶
泛型支持特点¶
✅ 完整的类型参数区分
✅ 支持多类型参数泛型 (如 Mapper[T1, T2])
✅ 自动依赖注入
✅ 工厂函数和实现类两种注册方式
✅ 灵活的生命周期配置
✅ 类型检查辅助函数
可视化工具特点¶
✅ 多种输出格式 (DOT, Mermaid)
✅ 生命周期颜色编码
✅ 依赖关系可视化
✅ 详细的解析步骤跟踪
✅ 容器健康评分系统
✅ 循环依赖检测
✅ 文本树形结构显示
文档¶
API 文档¶
完整的 API 参考文档已添加到 docs/advanced-features.md:
- 泛型支持 API
- 可视化工具 API
- 使用示例
- 最佳实践
示例代码¶
examples/advanced_features_demo.py 提供了完整的使用演示:
- 泛型类型注册和解析
- 依赖关系可视化
- 容器健康诊断
- 调试工具使用
集成¶
这两个新特性已完全集成到主 API 中:
from symphra_container import (
# 泛型支持
GenericKey,
register_generic,
resolve_generic,
is_generic_type,
# 可视化工具
ContainerDiagnostic,
visualize_container,
print_dependency_graph,
debug_resolution,
diagnose_container,
)
使用场景¶
泛型支持适用于:¶
- 通用仓储模式 (Generic Repository Pattern)
- 数据访问层抽象
- 服务适配器模式
- 命令/查询处理器
可视化工具适用于:¶
- 开发阶段依赖关系理解
- 生产环境健康监控
- CI/CD 流程验证
- 文档自动生成
- 问题诊断和调试
后续优化建议¶
泛型支持¶
- 支持泛型约束 (Generic Constraints)
- 支持协变和逆变 (Covariance & Contravariance)
- 更好的错误消息
可视化工具¶
- 交互式 Web UI
- 实时监控仪表板
- 性能分析集成
- 导出为图片格式 (PNG, SVG)
总结¶
✅ 泛型类型参数区分 - 完整实现,13 个测试通过,93.55% 覆盖率
✅ 可视化和调试工具 - 完整实现,16 个测试通过,91.16% 覆盖率
✅ 完整文档 - API 参考 + 使用示例 + 演示代码
✅ 生产就绪 - 高测试覆盖率,完善的错误处理
这两个高级特性大大增强了 symphra-container 的开发体验和可维护性!🚀