dia-gov's picture
Upload 569 files
cd6f98e verified
Raw History Blame Contribute Delete
789 Bytes
from functools import wraps
from time import time
from typing import Any, Callable, Literal
from loguru import logger
Log_Level = Literal[
"TRACE",
"DEBUG",
"INFO",
"SUCCESS",
"WARNING",
"ERROR",
"CRITICAL",
]
def timed_function(level: Log_Level = "INFO") -> Callable[..., Any]:
def decorator(func: Any) -> Callable[..., Any]:
@wraps(func)
def wrapper(*args: Any, **kwargs: Any) -> Any:
start_time = time()
result = func(*args, **kwargs)
execution_time = time() - start_time
logger.log(
level,
f"Function '{func.__qualname__}' executed in {execution_time:.4f} seconds",
)
return result
return wrapper
return decorator