import time
from enum import Enum
from datetime import datetime
from termcolor import colored

DEBUG = True

class DEBUGLEVEL(Enum):
    NO_DEBUG = 0
    NOTIFICATION = 1
    WARNING = 2
    ERROR = 3
    ALL = 4

CURRENT_DEBUG_LEVEL = DEBUGLEVEL.ALL

def PrintElapsedTime(functotest, funcData, lang):
    start_time = time.time()
    answer = functotest(funcData, languages=lang)
    elapsed_time = time.time() - start_time
    print(f"{{{datetime.now()}}} Elapsed time: {elapsed_time:.2f} seconds")
    return answer

def print_colored_debug_info(colored_text):
    print(colored_text)

def debug(text, severity='NOTIFICATION', *args):
    if DEBUG:
        severity_level = DEBUGLEVEL[severity]
        if severity_level.value <= CURRENT_DEBUG_LEVEL.value:
            colored_text = ""
            if severity == 'NOTIFICATION':
                colored_text = colored(text, 'cyan')
            elif severity == 'WARNING':
                colored_text = colored(text, 'yellow')
            elif severity == 'ERROR':
                colored_text = colored(text, 'red')
            elif severity == 'ALL':
                colored_text = colored(text, 'white', 'on_blue')
            else:
                colored_text = colored(text, 'white')  # Default color for unknown severity

            print_colored_debug_info(colored_text)

class Language(Enum):
    RU = "ru"
    EN = "en"