from typing import Callable
import time


def timeIt(func:Callable) -> Callable:
    """
    Funcion decoradora que recibe una funcion y devuelve una version cronometrada 
    de la misma que muestra por pantalla su tiempo de ejecucion (en segundos).

    Parameters
    ----------
    func : Callable
        Funcion a cronometrar.

    Returns
    -------
    wrapper : Callable
        Version cronometrada de la funcion pasada como argumento.

    """
    
    def wrapper(*args, **kwargs):
        start = time.time()
        result = func(*args, **kwargs)
        sec = time.time() - start
        print(func)
        print(f'Tiempo de interpolacion: {sec:.5}s')
        return result
    
    return wrapper