Download tests/test_compose.py from 42e/mathcompose: direct link, hf CLI and curl.
- Browser
- Download file 1.26 kB
-
https://huggingface.co/42e/mathcompose/resolve/main/tests/test_compose.py
- Command line
-
hf download hf://42e/mathcompose/tests/test_compose.py
-
curl -L -o test_compose.py https://huggingface.co/42e/mathcompose/resolve/main/tests/test_compose.py
1.26 kB
| """Smoke #8: composition math (gap, recovery) with fake callbacks.""" | |
| from mathcompose.eval.compose import evaluate_composition, _weighted_vote | |
| def test_weighted_vote_rescues_minority_correct(): | |
| answers = ["4", "4", "7", "7", "7"] | |
| correct = [True, True, False, False, False] | |
| # plain vote -> "7" (wrong) | |
| assert _weighted_vote(answers, [1] * 5, correct) is False | |
| # V-weighted (correct ones weighted high) -> "4" (right) | |
| assert _weighted_vote(answers, [0.9, 0.9, 0.1, 0.1, 0.1], correct) is True | |
| def test_composition_gap_and_recovery(): | |
| samples = [r"\boxed{4} #0", r"\boxed{4} #1", r"\boxed{7} #2", r"\boxed{7} #3", r"\boxed{7} #4"] | |
| vmap = {0: 0.9, 1: 0.9, 2: 0.1, 3: 0.1, 4: 0.1} | |
| def solve_fn(_): | |
| return samples | |
| def v_score_fn(_, steps): | |
| joined = " ".join(steps) | |
| for i in range(len(samples)): | |
| if f"#{i}" in joined: | |
| return vmap[i] | |
| return 0.0 | |
| res = evaluate_composition([("q", "4")], solve_fn, v_score_fn, progress=False) | |
| assert res["maj@n"] == 0.0 | |
| assert res["oracle"] == 1.0 | |
| assert res["weighted_maj"] == 1.0 | |
| assert res["best_of_n"] == 1.0 | |
| assert res["generator_verifier_gap"] == 1.0 | |
| assert res["gap_recovered_by_V"] == 1.0 | |