Source code for smarttimers.decorators

"""SmartTimer decorators

Functions:
    :func:`time`
"""


__all__ = ['time', '_timer']


from functools import (partial, wraps)
from .smarttimer import SmartTimer


# Global instance for all decorators
_timer = SmartTimer('Function decorator')


[docs]def time(func=None, *, timer=None): """Measure runtime for functions/methods. Args: timer (SmartTimer, optional): Instance to use to measure time. If None, then global SmartTimer instance, *_timer*, is used. """ if not timer: timer = _timer if not func: return partial(time, timer=timer) @wraps(func) def wrapper(*args, **kwargs): timer.tic(func.__qualname__) ret = func(*args, **kwargs) timer.toc() return ret return wrapper