Rajan Sharma
Create math_validator.py
07c72fd verified
raw
history blame
1.11 kB
def parse_int_from_formula(text: str) -> int:
# Best-effort: look for pattern "A x B x C = N" and return N if present.
# In production, prefer explicit numeric fields for each factor.
import re
m = re.search(r"=\s*([\d,]+)", text)
if not m:
return None
return int(m.group(1).replace(",", ""))
def assert_valid(data: dict):
cap = data.get("capacity", {})
total_clients = cap.get("total_clients")
formula = cap.get("formula_used", "")
parsed_total = parse_int_from_formula(formula)
if parsed_total is not None and total_clients is not None and parsed_total != total_clients:
raise ValueError(f"MathValidator: capacity total {total_clients} disagrees with formula {parsed_total}")
# Cost: total_for_n should equal total_per_client * N (if N is stated in formula or benchmark string).
cost = data.get("cost", {})
tpc = cost.get("total_per_client")
tfn = cost.get("total_for_n")
if None not in (tpc, tfn) and tpc >= 0 and tfn >= 0:
# can't infer N safely; trust validators upstream. This check is minimal by design.
pass