Spaces:
Sleeping
Sleeping
""" | |
Attack Summary Results Logs to Json | |
======================== | |
""" | |
import json | |
from textattack.shared import logger | |
from .logger import Logger | |
class JsonSummaryLogger(Logger): | |
def __init__(self, filename="results_summary.json"): | |
logger.info(f"Logging Summary to JSON at path {filename}") | |
self.filename = filename | |
self.json_dictionary = {} | |
self._flushed = True | |
def log_summary_rows(self, rows, title, window_id): | |
self.json_dictionary[title] = {} | |
for i in range(len(rows)): | |
row = rows[i] | |
if isinstance(row[1], str): | |
try: | |
row[1] = row[1].replace("%", "") | |
row[1] = float(row[1]) | |
except ValueError: | |
raise ValueError( | |
f'Unable to convert row value "{row[1]}" for Attack Result "{row[0]}" into float' | |
) | |
for metric, summary in rows: | |
self.json_dictionary[title][metric] = summary | |
self._flushed = False | |
def flush(self): | |
with open(self.filename, "w") as f: | |
json.dump(self.json_dictionary, f, indent=4) | |
self._flushed = True | |
def close(self): | |
super().close() | |