# Gnu General Public License - see LICENSE.TXT
from __future__ import division, absolute_import, print_function, unicode_literals

import sys
import functools
import time
from .lazylogger import LazyLogger

log = LazyLogger(__name__)

enabled = False


def set_timing_enabled(val):
    global enabled
    enabled = val


def timer(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        started = time.time()
        value = func(*args, **kwargs)
        ended = time.time()
        if enabled:
            data = ""
            if func.__name__ == "download_url" and len(args) > 1:
                data = args[1]
            elif func.__name__ == "main_entry_point" and len(sys.argv) > 2:
                data = sys.argv[2]
            log.info("timing_data|{0}|{1}|{2}|{3}".format(func.__name__, started, ended, data))
        return value
    return wrapper
