| 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 |