def find_color_code_naive(h, s, b):
    if check_gray(s, b):
        return 'gray'
    if check_black(s, b):
        return 'black'
    if check_white(s, b):
        return 'white'
    first = find_nearest_idx(HUE_TABLE.values(), h)
    if b > BRIGHTNESS_IMPORTANCE_LEVEL:
        logger.info('Brightness is important')
        second = find_nearest_idx(SATURATION_TABLE, s)
    else:
        logger.info('Saturation is important')
        second = find_nearest_idx(BRIGHTNESS_TABLE, b)
    color = HSVColor(HUE_TABLE[first], SATURATION_TABLE[second]/100.0, BRIGHTNESS_TABLE[second]/100.0)
    color = convert_color(color, sRGBColor)
    return color.get_value_tuple(), (first, second)
logger = logging.getLogger()

from colormath.color_conversions import convert_color
from colormath.color_diff import delta_e_cie2000
from colormath.color_objects import HSVColor, sRGBColor, LabColor
import numpy as np
from itertools import product, izip
from config import (BLACK_MAX_BRIGHTNESS, WHITE_MIN_BRIGHTNESS, GRAY_MAX_SATURATION, WHITE_MAX_SATURATION, HUE_TABLE,
                    BRIGHTNESS_IMPORTANCE_LEVEL, SATURATION_TABLE, BRIGHTNESS_TABLE)

from utils import find_nearest_idx

__author__ = 'vvvkamper'


color_wheel = product(enumerate(HUE_TABLE.values()), enumerate(izip(SATURATION_TABLE, BRIGHTNESS_TABLE)))
color_wheel = [(HSVColor(h, s / 100.0, v / 100.0), ih, iy) for (ih, h), (iy, (s, v)) in color_wheel]

extended_colors = [(HSVColor(212, 0.11, 0.91), 13, 0)]

colors = color_wheel + extended_colors

algorithms = {
    'delta_e_cie2000': delta_e_cie2000
}


def find_color_code_by_color_distance(r, g, b, algorithm='delta_e_cie2000'):
    """

    :param r: