import functools import inspect def debug(func): if inspect.iscoroutinefunction(func): @functools.wraps(func) async def wrap(*args, **kwargs): print(f"DEBUG: Calling {func.__name__} with args: {args}, kwargs: {kwargs}") result = await func(*args, **kwargs) print(f"DEBUG: {func.__name__} returned: {result}") return result return wrap @functools.wraps(func) def wrap(*args, **kwargs): print(f"DEBUG: Calling {func.__name__} with args: {args}, kwargs: {kwargs}") result = func(*args, **kwargs) print(f"DEBUG: {func.__name__} returned: {result}") return result return wrap