65 lines
1.4 KiB
Python
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
|