コンテンツにスキップ

pytilpack.tqdm

必要なextra

pip install pytilpack[tqdm]

pytilpack.tqdm

tqdm用のユーティリティ集。

TqdmStreamHandler

Bases: StreamHandler

tqdm対応のStreamHandler。

使用例:: import pytilpack.tqdm_

logging.basicConfig(
    level=logging.INFO,
    format="[%(levelname)-5s] %(message)s",
    handlers=[pytilpack.tqdm_.TqdmStreamHandler()],
)

capture(capture_stdout=True, capture_stderr=True)

標準出力、標準エラー出力をキャプチャして最後にまとめて(tqdm対応で)出力する。

引数:

名前 タイプ デスクリプション デフォルト
capture_stdout bool

標準出力をキャプチャするかどうか。

True
capture_stderr bool

標準エラー出力をキャプチャするかどうか。

True
ソースコード位置: pytilpack/tqdm.py
@contextlib.contextmanager
def capture(capture_stdout: bool = True, capture_stderr: bool = True):
    """標準出力、標準エラー出力をキャプチャして最後にまとめて(tqdm対応で)出力する。

    Args:
        capture_stdout: 標準出力をキャプチャするかどうか。
        capture_stderr: 標準エラー出力をキャプチャするかどうか。

    """
    stdout_buffer = io.StringIO()
    stderr_buffer = io.StringIO()
    try:
        with (
            contextlib.redirect_stdout(stdout_buffer) if capture_stdout else contextlib.nullcontext(),
            contextlib.redirect_stderr(stderr_buffer) if capture_stderr else contextlib.nullcontext(),
        ):
            yield
    finally:
        stdout = stdout_buffer.getvalue()
        stderr = stderr_buffer.getvalue()
        if len(stdout) > 0:
            tqdm.tqdm.write(stdout, end="", file=sys.stdout)
        if len(stderr) > 0:
            tqdm.tqdm.write(stderr, end="", file=sys.stderr)