a classmethod decorator to immediately turn a function into a timer

        .. note::

            you won't find this on `threading.Timer`, it is an extension to
            that API

        this is a function *returning a decorator*, so it is used like so:

        >>> @Timer.wrap(5, args=("world",))
        >>> def say_hi_timer(name):
        ...     print "hello, %s" % name

        :param secs:
            how far in the future to defer running the function in seconds
        :type secs: int or float
        :param args: positional arguments to pass to the function
        :type args: tuple
        :param kwargs: keyword arguments to pass to the function
        :type kwargs: dict

        :returns:
            a decorator function which produces an unstarted :class:`Timer`

def wrap(cls, secs, args=(), kwargs=None):
        """a classmethod decorator to immediately turn a function into a timer

        .. note::

            you won't find this on `threading.Timer`, it is an extension to
            that API

        this is a function *returning a decorator*, so it is used like so:

        >>> @Timer.wrap(5, args=("world",))
        >>> def say_hi_timer(name):
        ...     print "hello, %s" % name

        :param secs:
            how far in the future to defer running the function in seconds
        :type secs: int or float
        :param args: positional arguments to pass to the function
        :type args: tuple
        :param kwargs: keyword arguments to pass to the function
        :type kwargs: dict

        :returns:
            a decorator function which produces an unstarted :class:`Timer`
        """
        def decorator(func):
            return cls(secs, func, args, kwargs)
        return decorator