rss-mcp-client / client /gradio_functions.py
gperdrizet's picture
Fixed tool name for get_feed().
9b866fc verified
'''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)