Skip to content

Commit

Permalink
Improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
lukasz-migas committed Feb 21, 2024
1 parent d2dae29 commit 3752f4b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/koyo/context.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,24 @@
"""Various context managers."""
import gc
import os
import sys
from contextlib import contextmanager


@contextmanager
def nullout():
"""Context manager to suppress stdout and stderr."""
save_stdout = sys.stdout
save_stderr = sys.stderr
sys.stdout = open(os.devnull, "w")
sys.stderr = open(os.devnull, "w")
try:
yield
finally:
sys.stdout = save_stdout
sys.stderr = save_stderr


@contextmanager
def no_gc():
"""Context manager to disable garbage collection."""
Expand Down
15 changes: 15 additions & 0 deletions src/koyo/logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,15 @@ def get_loguru_config(
return level.upper(), fmt, colorize, enqueue


def get_stderr() -> ty.TextIO:
"""Get stderr."""
if sys.stderr is None:
sys.stderr = sys.stdout
if sys.stderr is None:
sys.stderr = open(os.devnull, "w")
return sys.stderr


def set_loguru_log(
sink=sys.stderr,
level: str | int = 20,
Expand All @@ -91,6 +100,12 @@ def set_loguru_log(
"""Set loguru formatting."""
if logger is None:
from loguru import logger
if logger is None:
raise ValueError("Logger is None - cannot set loguru log.")
if sink is None:
sink = get_stderr()
if sink is None:
raise ValueError("Sink is None - cannot set loguru log.")

# automatically get format
fmt = fmt if fmt is not None else (LOG_FMT if no_color else COLOR_LOG_FMT)
Expand Down

0 comments on commit 3752f4b

Please sign in to comment.