Spaces:
Runtime error
Runtime error
| """ | |
| 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() | |