Files
ray-project--ray/python/ray/tune/utils/log.py
T
2026-07-13 13:17:40 +08:00

65 lines
1.4 KiB
Python

import time
from enum import Enum
from typing import Dict, Tuple, Union
from ray.util import PublicAPI
from ray.util.annotations import DeveloperAPI
@PublicAPI
class Verbosity(Enum):
V0_MINIMAL = 0
V1_EXPERIMENT = 1
V2_TRIAL_NORM = 2
V3_TRIAL_DETAILS = 3
def __int__(self):
return self.value
verbosity: Union[int, Verbosity] = Verbosity.V3_TRIAL_DETAILS
@DeveloperAPI
def set_verbosity(level: Union[int, Verbosity]):
global verbosity
if isinstance(level, int):
verbosity = Verbosity(level)
else:
verbosity = level
@DeveloperAPI
def has_verbosity(level: Union[int, Verbosity]) -> bool:
"""Return True if passed level exceeds global verbosity level."""
global verbosity
log_level = int(level)
verbosity_level = int(verbosity)
return verbosity_level >= log_level
@DeveloperAPI
def disable_ipython():
"""Disable output of IPython HTML objects."""
try:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.clear_instance()
except Exception:
pass
_log_cache_count: Dict[str, Tuple[str, float]] = {}
def _dedup_logs(domain: str, value: str, repeat_after_s: int = 5) -> bool:
cur_val, ts = _log_cache_count.get(domain, (None, None))
if value == cur_val and time.monotonic() - repeat_after_s < ts:
return False
else:
_log_cache_count[domain] = value, time.monotonic()
return True