Spaces:
Sleeping
Sleeping
'''Collections of helper functions for Gradio user interface.''' | |
import os | |
import re | |
import logging | |
from pathlib import Path | |
from logging.handlers import RotatingFileHandler | |
def get_dialog_logger(name: str = 'dialog', clear: bool = True) -> logging.Logger: | |
'''Sets up logger for model's internal dialog.''' | |
# Make sure log directory exists | |
Path('logs').mkdir(parents=True, exist_ok=True) | |
# Clear old logs if desired | |
if clear: | |
delete_old_logs('logs', 'dialog') | |
# Create logger | |
new_dialog_logger = logging.getLogger(name) | |
# Create handler | |
handler = RotatingFileHandler( | |
'logs/dialog.log', | |
maxBytes=100000, | |
backupCount=10, | |
mode='w' | |
) | |
# Add format to handler | |
formatter = logging.Formatter('%(message)s') | |
handler.setFormatter(formatter) | |
new_dialog_logger.addHandler(handler) | |
# Set logging level | |
new_dialog_logger.setLevel(logging.INFO) | |
return new_dialog_logger | |
def update_dialog(n: int = 10): | |
'''Gets updated internal dialog logging output from disk to display to user. | |
Args: | |
n: number of most recent lines of internal dialog output to display | |
Returns: | |
Internal dialog logging output as string | |
''' | |
with open('logs/dialog.log', 'r', encoding='utf-8') as log_file: | |
lines = log_file.readlines() | |
return ''.join(lines[-n:]) | |
def delete_old_logs(directory:str, basename:str) -> None: | |
'''Deletes old log files from previous optimization sessions, if present. | |
Args: | |
directory: path to log file directory as string | |
basename: log file base name as string | |
Returns: | |
None | |
''' | |
for filename in os.listdir(directory): | |
file_path = os.path.join(directory, filename) | |
if re.search(basename, filename): | |
os.remove(file_path) | |