""" FormScout rubric scorers — one pure-function scorer per FMS test. """ from formscout.rubric.deep_squat import score_deep_squat from formscout.rubric.hurdle_step import score_hurdle_step from formscout.rubric.inline_lunge import score_inline_lunge from formscout.rubric.shoulder_mobility import score_shoulder_mobility from formscout.rubric.active_slr import score_active_slr from formscout.rubric.trunk_stability_pushup import score_trunk_stability_pushup from formscout.rubric.rotary_stability import score_rotary_stability from formscout.types import BiomechFeatures, ScoreResult SCORERS = { "deep_squat": score_deep_squat, "hurdle_step": score_hurdle_step, "inline_lunge": score_inline_lunge, "shoulder_mobility": score_shoulder_mobility, "active_slr": score_active_slr, "trunk_stability_pushup": score_trunk_stability_pushup, "rotary_stability": score_rotary_stability, } def score_test(features: BiomechFeatures) -> ScoreResult: """Dispatch to the appropriate rubric scorer by test name.""" fn = SCORERS.get(features.test_name) if fn is None: return ScoreResult( score=1, rationale=f"No rubric for test '{features.test_name}'", confidence=0.0, notes="unknown test", ) return fn(features)