Skip to content

chore: 代码库健康度清理(测试重复、死代码、index 范围收缩) #1

Description

@HowieMen

背景

项目搭到现在功能迭代了几轮(compare 子命令、trade_date 历史查询、checkpoint 续传等),但清理没跟上迭代节奏。这个 issue 汇总一次代码审查发现的具体问题,作为后续拆包(hqdata 接口层 + hqdata-xxx 实现包)之前的收尾清理。

不在本 issue 范围内:复权支持、其他新数据源接入、多包拆分本身——这些是后续独立的工作。

清理项

  1. 明确 index 支持的去留

当前 get_index_list/get_index_minute_bar/get_index_daily_bar 及对应 CLI 命令、测试、compare 计划(stock-list 之后原计划还有 index-list/index-daily 两项对比)都已实现,但对当前使用场景不是刚需。

  • 拍板:保留还是删除 index 相关能力
  • 若删除:清理 api.py/base.py/两个 sources/.py/cli.py/tests/ 中的 index 相关代码,同步更新 README、CLAUDE.md 里的函数顺序约定
  1. 消除 CLI 数据抓取的死代码与不一致
  • cli.py::_fetch_stock_bar_by_trading_day:逐日抓取后 merge 成一个大 DataFrame,再交给 _write_by_date 按日期拆开重写——多此一举,应改为逐日抓完立即写当天的文件
  • 同一改动顺带解决:该函数出错时直接 return,已抓到的所有日期数据全部丢弃、不落盘;改成逐日落盘后自然获得增量续传(跳过已存在的 {day}.csv,与 stock-list 命令做法一致)
  • _CHUNK_SIZES["stock-daily"]、_CHUNK_SIZES["stock-minute"] 两个配置项从未被读取(只有走 _fetch_bar_with_checkpoint 的 index 系命令才查 _CHUNK_SIZES,stock 系命令走的是上面这个函数)——删除死配置,或者补上使用它们的逻辑(取决于上面两项改完后 stock 系命令是否也要走 checkpoint 分块)
  1. 消除测试重复
  • tests/test_tushare.py 与 tests/test_ricequant.py 的集成测试类(TestXxIntegration)里,test_get_calendar、test_get_stock_list、test_get_stock_list_by_symbol/by_exchange/by_board/combined_filters 等测试逐行重复,只是换了 self.source。改成参数化(pytest.fixture(params=[...]) 或共享 mixin 基类),两个文件各自只保留数据源特有的用例(如 ricequant 的 .WI 后缀指数、tushare 的 CSI 指数)
  1. 修正文档/代码漂移
  • ricequant.py::_get_hs_connect_stocks docstring 写 "walks back up to 60 trading days",实际实现是回溯一整年(today.replace(year=today.year - 1)),两者不一致,需要核实哪个是期望行为并修正另一边
  • 全库 grep 一遍 SZSE 残留(api.py、base.py 的 docstring 里 market 参数默认值仍写 "SSE,SZSE",应为 "SSE,SZE",违反 CLAUDE.md 的参数描述一致性规范)
  • README 错字:「以 tushare/ricequant为例 为例」
  • CLAUDE.md 声明 pyproject.toml 已被 gitignore,但该文件实际在仓库中且有提交记录,需要更正说明
  1. 数据完整性风险(可选,视优先级并入本次或单开 issue)

审查中还发现几个可能影响数据正确性的问题,是否随本次清理一并处理待讨论:

  • tushare get_stock_list 的 stock_basic(list_status="L,D") 单次调用上限 6000 行,当前在市股票已 5517 只,加上历史退市股接近/可能超限,超限时静默返回空
  • ricequant 指数接口的 except Exception: return empty(get_index_minute_bar/get_index_daily_bar)会把网络错误/认证过期也吞成"无数据"

验收标准
- [x] pytest tests/ -v 全量通过

  • black 格式检查通过
  • README / CLAUDE.md 与代码行为一致
  • 上述死代码/重复测试/文档漂移问题清零

Activity

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions