DeepSeekOracle's picture
Update utils.py
d57898d verified
Raw
History Blame Contribute Delete
1.37 kB
#!/usr/bin/env python3
"""
Utils for LYGO Factory Suite
Shared helpers: logging, safe file handling, error wrapping.
"""
import logging
import soundfile as sf
from pathlib import Path
# Setup global logger
logger = logging.getLogger("LYGO_Factory")
if not logger.handlers:
handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
def safe_sf_write(filepath, data, samplerate):
"""Bulletproof soundfile write: forces string path."""
sf.write(str(filepath), data, samplerate)
def safe_save_json(data, filepath):
"""Safely save JSON with UTF-8 encoding."""
import json
with open(str(filepath), 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2)
def ui_wrapper(fn):
"""Decorator to handle errors gracefully in Gradio."""
def wrapped(*args, **kwargs):
try:
return fn(*args, **kwargs)
except Exception as e:
logger.error(f"UI Error: {str(e)}", exc_info=True)
return f"❌ System Error: {str(e)}", None, None
return wrapped
def cleanup_temp_files(file_list):
"""Remove temporary files after use."""
for f in file_list:
try:
Path(f).unlink()
except:
pass