import re def parse_error(execution_result: dict) -> dict: stderr = execution_result.get("stderr", "") stdout = execution_result.get("stdout", "") if execution_result.get("timed_out"): return { "type": "TimeoutError", "message": "Execution exceeded the time limit.", "line_number": None, "traceback": stderr, } combined = stdout + "\n" + stderr error_type = "UnknownError" error_message = "An unknown error occurred." line_number = None type_match = re.search(r"(\w+(?:Error|Exception|Warning)):\s*(.*?)(?:\n|$)", combined) if type_match: error_type = type_match.group(1) error_message = type_match.group(2).strip() line_match = re.search(r'File ".*?", line (\d+)', combined) if line_match: line_number = int(line_match.group(1)) if "AssertionError" in combined: error_type = "AssertionError" assert_msg = re.search(r"AssertionError:\s*(.*?)(?:\n|$)", combined) error_message = assert_msg.group(1).strip() if assert_msg else "Assertion failed." return { "type": error_type, "message": error_message, "line_number": line_number, "traceback": stderr.strip() or stdout.strip(), }