Spaces:
Sleeping
Sleeping
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]: | |
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 | |