mirror of
https://ghfast.top/https://github.com/aeroxw/easy_tdx_max.git
synced 2026-09-12 16:54:20 +08:00
fix(types): v1.20.2 修复 v1.20.1 引入的 CI mypy 失败
v1.20.1 把 BacktestResult.performance 扩大为 dict[str, float | str] (为塞 diagnostic_warning 字符串),破坏 6 处下游消费方类型契约, CI mypy job 转红。重构为更干净的设计: - 诊断信息走独立的 BacktestResult.diagnostic 字段(performance.py PerformanceAnalyzer.diagnostic 属性 → engine 透出 → to_dict 含该字段 → CLI 显示),performance 字典回归 dict[str, float](保留别名键)。 - optimizer.py 补 npt.NDArray 标注,消除 3 个既有 ndarray type-arg 错误。 测试:932 passed;mypy backtest/+portfolio/ 零错误;ruff 全绿。
This commit is contained in:
@@ -233,9 +233,9 @@ def test_empty_equity_curve() -> None:
|
||||
# 数值指标应为 0
|
||||
numeric_metrics = {k: v for k, v in metrics.items() if isinstance(v, int | float)}
|
||||
assert all(v == 0 for v in numeric_metrics.values())
|
||||
# issue #22:数据不全时给出诊断提示,而非静默全 0
|
||||
assert "diagnostic_warning" in metrics
|
||||
assert isinstance(metrics["diagnostic_warning"], str)
|
||||
# issue #22:数据不全时给出诊断提示(analyzer.diagnostic),而非静默全 0
|
||||
assert analyzer.diagnostic is not None
|
||||
assert isinstance(analyzer.diagnostic, str)
|
||||
|
||||
|
||||
def test_single_point_equity_curve() -> None:
|
||||
@@ -249,7 +249,7 @@ def test_single_point_equity_curve() -> None:
|
||||
# 数值指标应为 0(需要至少 2 个点才能计算收益率)
|
||||
numeric_metrics = {k: v for k, v in metrics.items() if isinstance(v, int | float)}
|
||||
assert all(v == 0 for v in numeric_metrics.values())
|
||||
assert "diagnostic_warning" in metrics
|
||||
assert analyzer.diagnostic is not None
|
||||
|
||||
|
||||
def test_profit_factor() -> None:
|
||||
|
||||
Reference in New Issue
Block a user