Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import logging | |
from platform import system | |
from tqdm import tqdm | |
import sys | |
loggers = {} | |
# https://stackoverflow.com/questions/38543506/ | |
class TqdmLoggingHandler(logging.StreamHandler): | |
def __init__(self): | |
super().__init__(sys.stderr) | |
def emit(self, record): | |
try: | |
msg = self.format(record) | |
set_mp_lock() | |
tqdm.write(msg, file=sys.stderr) | |
self.flush() | |
except (KeyboardInterrupt, SystemExit): | |
raise | |
except Exception: | |
self.handleError(record) | |
def set_mp_lock(): | |
try: | |
from multiprocessing import Lock | |
tqdm.set_lock(Lock()) | |
except (ImportError, OSError): | |
# Some python environments do not support multiprocessing | |
# See: https://github.com/slhck/ffmpeg-normalize/issues/156 | |
pass | |
def setup_custom_logger(name): | |
""" | |
Create a logger with a certain name and level | |
""" | |
global loggers | |
if loggers.get(name): | |
return loggers.get(name) | |
formatter = logging.Formatter(fmt="%(levelname)s: %(message)s") | |
# handler = logging.StreamHandler() | |
handler = TqdmLoggingHandler() | |
handler.setFormatter(formatter) | |
# \033[1;30m - black | |
# \033[1;31m - red | |
# \033[1;32m - green | |
# \033[1;33m - yellow | |
# \033[1;34m - blue | |
# \033[1;35m - magenta | |
# \033[1;36m - cyan | |
# \033[1;37m - white | |
if system() not in ["Windows", "cli"]: | |
logging.addLevelName( | |
logging.ERROR, f"[1;31m{logging.getLevelName(logging.ERROR)}[1;0m" | |
) | |
logging.addLevelName( | |
logging.WARNING, | |
f"[1;33m{logging.getLevelName(logging.WARNING)}[1;0m", | |
) | |
logging.addLevelName( | |
logging.INFO, f"[1;34m{logging.getLevelName(logging.INFO)}[1;0m" | |
) | |
logging.addLevelName( | |
logging.DEBUG, f"[1;35m{logging.getLevelName(logging.DEBUG)}[1;0m" | |
) | |
logger = logging.getLogger(name) | |
logger.setLevel(logging.WARNING) | |
# if (logger.hasHandlers()): | |
# logger.handlers.clear() | |
if logger.handlers: | |
logger.handlers = [] | |
logger.addHandler(handler) | |
loggers.update(dict(name=logger)) | |
return logger | |