def wrapper(*args, **kwargs):
    start_wall_time = time()
    start_cpu_time = perf_counter()
    result = func(*args, **kwargs)
    end_wall_time = time()
    end_cpu_time = perf_counter()
    code = func.__code__
    try:
        outerframes = inspect.getouterframes(inspect.currentframe(), 2)
        real_caller = outerframes[1]
        L.trace(f"""{{"metric_type": "func_profile", "qualname": "{func.__qualname__}", "caller": "{real_caller.filename.rsplit('/', 1)[(- 1)]}:{real_caller.lineno}", "cpu_time": {(end_cpu_time - start_cpu_time)}, "wall_time": {(end_wall_time - start_wall_time)}}}""")
        return result
    except Exception as e:
        L.trace(f'{{"metric_type": "func_profile", "qualname": "{func.__qualname__}", "caller": "unknown", "cpu_time": {(end_cpu_time - start_cpu_time)}, "wall_time": {(end_wall_time - start_wall_time)}}}')
def wrapper(*args, **kwargs):
    start_wall_time = time()
    start_cpu_time = perf_counter()
    result = func(*args, **kwargs)
    end_wall_time = time()
    end_cpu_time = perf_counter()
    code = func.__code__
    try:
        outerframes = inspect.getouterframes(inspect.currentframe(), 2)
        real_caller = outerframes[1]
        L.trace(f"{{"metric_type": "func_profile", "qualname": "{func.__qualname__}", "caller": "{real_caller.filename.rsplit('/', 1)[(- 1)]}:{real_caller.lineno}", "cpu_time": {(end_cpu_time - start_cpu_time)}, "wall_time": {(end_wall_time - start_wall_time)}}}")
        return result
    except Exception as e:
        L.trace(f'{{"metric_type": "func_profile", "qualname": "{func.__qualname__}", "caller": "unknown", "cpu_time": {(end_cpu_time - start_cpu_time)}, "wall_time": {(end_wall_time - start_wall_time)}}}')