fix(solve): random_walk 的 start 校验恢复后收尾(文案/空格/测试)
两条口径由用户第二轮改定,Codex 顺手补工程侧。 - 用户:恢复 start 的入口类型校验;n_steps/n_paths 注解放宽为 int | np.integer - Codex:start 报错文案"必须是整数" -> "必须是数值"(这条校验本来就收 float,原文案自相矛盾), 类型名统一 type(x).__name__;n_paths 默认值补空格;docstring 的 start 说明与 Raises 同步 - tests:start="a" 恢复断言 TypeError;补回 np.int64 的 n_steps/n_paths;solve 段 42 条 - 验证:209 收集 / 178 passed / 31 skipped / 0 xfail,ruff 0,pyright 0 - docs:STATUS 决策 55(方阵歧义两条路)+ 验证计数;CHANGELOG
This commit is contained in:
1 parent
6fca82e3fc
commit
cd6f613568
4 files changed
+54
-21
No files matched your search
+11
-2
@@ -331,8 +331,8 @@ def test_random_walk_rejects_bad_arguments():
|
||||
random_walk(n_steps=0)
|
||||
with pytest.raises(ValueError):
|
||||
random_walk(n_steps=10, n_paths=0)
|
||||
r = random_walk(n_steps=10, start="a") # type: ignore[arg-type] # 就是要传错
|
||||
assert r.success is False # 口径待定:入口抛 TypeError 也可以,见 STATUS"下一步"
|
||||
with pytest.raises(TypeError):
|
||||
random_walk(n_steps=10, start="a") # type: ignore[arg-type] # 就是要传错
|
||||
|
||||
|
||||
def test_random_walk_failure_returns_result_not_exception():
|
||||
@@ -363,6 +363,15 @@ def test_random_walk_rejects_nan_steps():
|
||||
assert "NaN" in r.message
|
||||
|
||||
|
||||
def test_random_walk_accepts_numpy_integer():
|
||||
"""§4.7:`np.int64` 不是 `int` 的子类,注解与运行期都要收(易错点 1)。"""
|
||||
from mcm_toolkit.solve import random_walk
|
||||
|
||||
r = random_walk(n_steps=np.int64(20), n_paths=np.int64(3), random_state=0)
|
||||
assert r.success
|
||||
assert r.data.shape == (3, 21)
|
||||
|
||||
|
||||
def test_random_walk_metrics_are_terminal_positions():
|
||||
"""终点位置的标准差按 √t 扩散(t = n_steps)—— 随机游走的核心性质。"""
|
||||
from mcm_toolkit.solve import random_walk
|
||||
|
||||
Reference in new issue
Block a user