eihab2342/code-efficiency
0
1# src/model/evaluator.py2"""3يقيّم الموديل على الـ test set ويطبع تقرير.4 5تشغيل:6 python -m src.model.evaluator7"""8import ast9from src.model.predictor import Predictor10from src.preprocessing.data_loader import load_dataset, Sample11from src.utils.logger import get_logger12from typing import List13 14log = get_logger("evaluator")15 16 17def _is_valid_python(code: str) -> bool:18 try:19 ast.parse(code)20 return True21 except SyntaxError:22 return False23 24 25def evaluate(predictor: Predictor, test_samples: List[Sample]) -> dict:26 correct, total = 0, 027 28 for s in test_samples:29 total += 130 try:31 result = predictor.predict(s.slow_code)32 if _is_valid_python(result.optimized_code):33 correct += 134 except Exception as e:35 log.warning(f"فشل sample: {e}")36 37 metrics = {38 "total": total,39 "correct": correct,40 "correctness": f"{correct/total:.1%}" if total else "0%",41 }42 log.info(f"Evaluation: {metrics}")43 return metrics44 45 46if __name__ == "__main__":47 _, _, test = load_dataset()48 p = Predictor()49 evaluate(p, test)50 