Spaces:
Sleeping
Sleeping
import subprocess | |
import sys | |
from typing import Any, Callable | |
from style_bert_vits2.logging import logger | |
from style_bert_vits2.utils.stdout_wrapper import SAFE_STDOUT | |
def run_script_with_log( | |
cmd: list[str], ignore_warning: bool = False | |
) -> tuple[bool, str]: | |
""" | |
指定されたコマンドを実行し、そのログを記録する。 | |
Args: | |
cmd: 実行するコマンドのリスト | |
ignore_warning: 警告を無視するかどうかのフラグ | |
Returns: | |
tuple[bool, str]: 実行が成功したかどうかのブール値と、エラーまたは警告のメッセージ(ある場合) | |
""" | |
logger.info(f"Running: {' '.join(cmd)}") | |
result = subprocess.run( | |
[sys.executable] + cmd, | |
stdout=SAFE_STDOUT, | |
stderr=subprocess.PIPE, | |
text=True, | |
encoding="utf-8", | |
check=False, | |
) | |
if result.returncode != 0: | |
logger.error(f"Error: {' '.join(cmd)}\n{result.stderr}") | |
return False, result.stderr | |
elif result.stderr and not ignore_warning: | |
logger.warning(f"Warning: {' '.join(cmd)}\n{result.stderr}") | |
return True, result.stderr | |
logger.success(f"Success: {' '.join(cmd)}") | |
return True, "" | |
def second_elem_of( | |
original_function: Callable[..., tuple[Any, Any]] | |
) -> Callable[..., Any]: | |
""" | |
与えられた関数をラップし、その戻り値の 2 番目の要素のみを返す関数を生成する。 | |
Args: | |
original_function (Callable[..., tuple[Any, Any]])): ラップする元の関数 | |
Returns: | |
Callable[..., Any]: 元の関数の戻り値の 2 番目の要素のみを返す関数 | |
""" | |
def inner_function(*args, **kwargs) -> Any: # type: ignore | |
return original_function(*args, **kwargs)[1] | |
return inner_function | |