human
I wrote the below code

    if (logger is None):
        logger = logging.getLogger(u'gmusicapi.utils')
    if (retry_exception is None):
        retry_exception = (AssertionError, CallFailure)
    @decorator
    def retry_wrapper(f, *args, **kwargs):
        (mtries, mdelay) = (tries, delay)
        while (mtries > 1):
            try:
                return f(*args, **kwargs)
            except retry_exception as e:
                logger.info(u'%s,    retrying    in    %s    seconds...', e, mdelay)
                time.sleep(mdelay)
                mtries -= 1
                mdelay *= backoff
        return f(*args, **kwargs)
    return retry_wrapper

What's a good function header?
 ... Here's a good function header?
assistant
#Here's a good function header.

@dual_decorator
def retry(retry_exception=None, tries=5, delay=2, backoff=2, logger=None):