in project/paperbench/paperbench/judge/utils.py [0:0]
def reduce_log(input_string: str) -> str:
"""
Reduce a multi-line log string to a filtered version with repeated lines collapsed.
"""
template_miner = TemplateMiner()
output_lines = []
previous_cluster_id = None
repeat_count = 1
for raw_line in input_string.splitlines():
original_line = raw_line
sanitized = sanitize_line(original_line)
result = template_miner.add_log_message(sanitized)
cluster_id = result["cluster_id"]
if previous_cluster_id is None:
# First line
output_lines.append(original_line)
previous_cluster_id = cluster_id
continue
if cluster_id == previous_cluster_id:
repeat_count += 1
else:
if repeat_count > 1:
output_lines.append(f" (repeated {repeat_count} times)")
output_lines.append(original_line)
repeat_count = 1
previous_cluster_id = cluster_id
if previous_cluster_id is not None and repeat_count > 1:
output_lines.append(f" (repeated {repeat_count} times)")
return "\n".join(output_lines)