get_rng 的"共享单例生成器"设计由用户本人提出,本提交只在其上修 bug。 - random_state 判断从 isinstance(x, int) 放宽到 (int, np.integer): np.int64 不是 int 的子类,之前会静默退回全局流、种子被无声忽略 - 非预期类型改成抛 TypeError(含 bool / float / str / list),不再静默降级 - get_rng 签名补上 np.integer 与 Generator,与 docstring 的承诺一致 - set_seed 同时调用 np.random.seed:sklearn / statsmodels 走的是 numpy 旧全局状态,不覆盖它们"提交能重跑"就有洞(带 noqa: NPY002 与理由) - 测试:TestRandom 由 4 条增到 7 条(np.integer、非法类型、共享生成器推进) - 新增 docs/dev/personal-pitfalls.md:个人易错点清单,只追加、不通读, 首批记录本轮 4 个点;docs/README.md 补上 05 与该文件的索引 - STATUS.md:L0 进度说明更新,决策 24 改写(共享单例)、新增决策 25 (src/ 实现默认由用户本人写)
2.3 KiB
2.3 KiB
更新日志
格式参考 Keep a Changelog, 版本号参考 语义化版本。
[Unreleased]
Added
- 仓库骨架:
src/mcm_toolkit/7 个包(core / data / stats / models / solve / decision / viz) - 顶层
__init__.py只导出 7 个子包 + 8 个快捷函数,__all__即公开 API 清单 core.Result:唯一的结果对象(替代原建议里的 5 个 Result 类)docs/01-suggestion-review.md:对 ChatGPT 建库建议的审查与精简(14 包 → 7 包,~250 函数 → ~40)docs/02-architecture.md:包边界、Result/ RNG /fit-predict-score协议、依赖分层docs/03-roadmap.md:L0/L1/L2 分级 + 永久不做清单docs/04-environment.md:conda / venv 配置与三个已踩的坑docs/dev/function-card-template.md:S 档算法的函数卡片模板.venv(基于 Anaconda base,--system-site-packages)+ 可编辑安装 —— 10.5 MB,离线可用- conda 环境
mcm-toolkit(D:\anaconda\envs\mcm-toolkit)—— Python 3.13.15,含 SALib / pymoo / pyright scripts/setup-conda.ps1/scripts/setup-venv.ps1/scripts/doctor.ps1environment.yml:需联网时的精确复现方案pyproject.toml:核心依赖只 4 个,其余走 extras
Changed
core.get_rng/core.set_seed:实现(L0 第 2 项)。get_rng收int/np.integer/Generator/None,其余类型抛TypeError;无参调用复用同一个会推进的共享生成器。set_seed同时覆盖 numpy 旧全局状态,让 sklearn / statsmodels 也可复现。core.Result:补上__repr__与summary()实现(L0 第 1 项落地)。repr紧凑单行且不打印data内容;summary()输出可直接贴进论文的 Markdown 表格。
Added
docs/dev/personal-pitfalls.md:个人易错点清单,只追加、不通读
Notes
- 除
core.Result、core.get_rng、core.set_seed外,其余函数体尚未实现(统一raise NotImplementedError+TODO(L0/L1/v0.2)标记)。 这是刻意的:先定接口,再按docs/03-roadmap.md的 L0 → L1 顺序填实现。 - 已知缺口:
SALib(Sobol/Morris)、pymoo、pyright未安装(本机离线)。
[0.0.1] - 2026-10-01
Added
- 项目初始化,包结构落盘(实现为空)。