from __future__ import annotations from typing import Optional from models import ExplainerResult from explainers.explainer_percent import explain_percent_question from explainers.explainer_ratio import explain_ratio_question from explainers.explainer_algebra import explain_algebra_question from explainers.explainer_probability import explain_probability_question def route_explainer(text: str) -> Optional[ExplainerResult]: for fn in ( explain_percent_question, explain_ratio_question, explain_algebra_question, explain_probability_question ): result = fn(text) if result is not None and getattr(result, "understood", False): return result return None