ai-content-maker/.venv/Lib/site-packages/spacy_loggers/chain.py

55 lines
1.5 KiB
Python

"""
A utility logger that allows multiple loggers to be daisy-chained.
"""
from typing import Dict, Any, Optional, IO
import sys
from spacy import Language
from .util import LoggerT
def chain_logger_v1(
logger1: Optional[LoggerT] = None,
logger2: Optional[LoggerT] = None,
logger3: Optional[LoggerT] = None,
logger4: Optional[LoggerT] = None,
logger5: Optional[LoggerT] = None,
logger6: Optional[LoggerT] = None,
logger7: Optional[LoggerT] = None,
logger8: Optional[LoggerT] = None,
logger9: Optional[LoggerT] = None,
logger10: Optional[LoggerT] = None,
) -> LoggerT:
def setup_logger(nlp: Language, stdout: IO = sys.stdout, stderr: IO = sys.stderr):
loggers = [
logger1,
logger2,
logger3,
logger4,
logger5,
logger6,
logger7,
logger8,
logger9,
logger10,
]
if not any(loggers):
raise ValueError("No loggers passed to chain logger")
callbacks = [
setup(nlp, stdout, stderr) for setup in loggers if setup is not None
]
def log_step(info: Optional[Dict[str, Any]]):
nonlocal callbacks
for log_stepper, _ in callbacks:
log_stepper(info)
def finalize():
nonlocal callbacks
for _, finalizer in callbacks:
finalizer()
return log_step, finalize
return setup_logger