T predictions WIP

This commit is contained in:
Dobromir Popov
2025-11-22 01:02:19 +02:00
parent a7def3b788
commit f967f0a142
7 changed files with 200 additions and 39 deletions

67
utils/safe_logger.py Normal file
View File

@@ -0,0 +1,67 @@
"""
Safe Logging Wrapper
This module provides a logging wrapper that handles Unicode encoding errors
gracefully, preventing crashes when logging special characters on Windows consoles.
"""
import logging
import sys
import traceback
class SafeLogger:
"""Wrapper for logging.Logger to safely handle unicode characters"""
def __init__(self, name):
self.logger = logging.getLogger(name)
def info(self, msg, *args, **kwargs):
try:
self.logger.info(msg, *args, **kwargs)
except UnicodeEncodeError:
# Fallback: sanitize message or print safely
safe_msg = msg.encode('ascii', 'replace').decode('ascii')
self.logger.info(safe_msg, *args, **kwargs)
except Exception:
# Last resort fallback
pass
def warning(self, msg, *args, **kwargs):
try:
self.logger.warning(msg, *args, **kwargs)
except UnicodeEncodeError:
safe_msg = msg.encode('ascii', 'replace').decode('ascii')
self.logger.warning(safe_msg, *args, **kwargs)
except Exception:
pass
def error(self, msg, *args, **kwargs):
try:
self.logger.error(msg, *args, **kwargs)
except UnicodeEncodeError:
safe_msg = msg.encode('ascii', 'replace').decode('ascii')
self.logger.error(safe_msg, *args, **kwargs)
except Exception:
pass
def debug(self, msg, *args, **kwargs):
try:
self.logger.debug(msg, *args, **kwargs)
except UnicodeEncodeError:
safe_msg = msg.encode('ascii', 'replace').decode('ascii')
self.logger.debug(safe_msg, *args, **kwargs)
except Exception:
pass
def exception(self, msg, *args, **kwargs):
try:
self.logger.exception(msg, *args, **kwargs)
except UnicodeEncodeError:
safe_msg = msg.encode('ascii', 'replace').decode('ascii')
self.logger.exception(safe_msg, *args, **kwargs)
except Exception:
pass
def get_logger(name):
return SafeLogger(name)