Colorize some message with ANSI colors specification

    :param printable: interface whose has __str__ or __repr__ method
    :param color: the colors defined in COLOR_MAP to colorize the text
    :style: can be 'normal', 'bold' or 'underline'

    :returns: the 'printable' colorized with style

def colorize(printable, color, style='normal', autoreset=True):
    """Colorize some message with ANSI colors specification

    :param printable: interface whose has __str__ or __repr__ method
    :param color: the colors defined in COLOR_MAP to colorize the text
    :style: can be 'normal', 'bold' or 'underline'

    :returns: the 'printable' colorized with style
    """
    if not COLORED:  # disable color
        return printable
    if color not in COLOR_MAP:
        raise RuntimeError('invalid color set, no {}'.format(color))

    return '{color}{printable}{reset}'.format(
        printable=printable,
        color=COLOR_MAP[color].format(style=STYLE_MAP[style]),
        reset=COLOR_MAP['reset'] if autoreset else ''
    )