psychos.utils.Color#

class psychos.utils.Color(color: str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float] | Color | None = None, space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str = 'auto')[source]#

Bases: object

A class to handle color conversions between different formats.

Parameters:

value (Optional[ColorType]) – The initial color value. Can be: - None: This sets the color to None. - str: A hex string (e.g., “#FF5733”) or color name (e.g., “red”). - Iterable with 3 or 4 numbers (ints [0,255] or floats).

__init__(color: str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float] | Color | None = None, space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str = 'auto') None[source]#

Initialize the Color

Methods

__init__([color, space])

Initialize the Color

batch_register_named_colors(colors)

Register multiple named colors at once.

list_named_colors()

List all available named colors.

list_spaces()

List all available color spaces.

register_conversion(from_space, to_space[, func])

Register a new color conversion function, either by using it as a decorator or by calling it directly with a function.

register_named_color(name, hex_code)

Register a new named color.

to(space)

Generic class to get the color in a specific space.

to_cmyk()

Convert the current color to the CMYK color space.

to_hex()

Convert the current color to a hexadecimal string.

to_hexa()

Convert the current color to a hexadecimal string with alpha (transparency) included.

to_hsl()

Convert the current color to the HSL color space (Hue, Saturation, Lightness).

to_hsv()

Convert the current color to the HSV color space.

to_name()

Convert the current color to a named color, if available.

to_rgb()

Convert the current color to the RGB color space (float values between 0 and 1).

to_rgb255()

Convert the current color to the RGB color space (integer values between 0 and 255).

to_rgba()

Convert the current color to the RGBA color space (float values between 0 and 1).

to_rgba255()

Convert the current color to the RGBA color space (integer values between 0 and 255).

to_yiq()

Convert the current color to the YIQ color space (used for TV broadcasting).

Attributes

COLOR_CONVERSIONS = {'cmyk': [('rgb', <function cmyk_to_rgb>)], 'hex': [('name', <function hex_to_name>), ('rgb255', <function hex_to_rgb255>), ('hexa', <function hex_to_hexa>)], 'hexa': [('hex', <function hexa_to_hex>), ('rgba255', <function hexa_to_rgba255>)], 'hls': [('rgb', <function hls_to_rgb>), ('hsl', <function hls_to_hsl>)], 'hsl': [('hls', <function hsl_to_hls>)], 'hsv': [('rgb', <function hsv_to_rgb>)], 'name': [('hex', <function name_to_hex>)], 'rgb': [('rgba', <function rgb_to_rgba>), ('rgb255', <function rgb_to_rgb255>), ('yiq', <function rgb_to_yiq>), ('hls', <function rgb_to_hls>), ('hsv', <function rgb_to_hsv>), ('cmyk', <function rgb_to_cmyk>)], 'rgb255': [('rgb', <function rgb255_to_rgb>), ('hex', <function rgb255_to_hex>)], 'rgba': [('rgb', <function rgba_to_rgb>), ('rgba255', <function rgba_to_rgba255>)], 'rgba255': [('rgba', <function rgba255_to_rgba>), ('hexa', <function rgba255_to_hexa>)], 'yiq': [('rgb', <function yiq_to_rgb>)]}#
NAMED_COLORS = {'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff', 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff', 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887', 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50', 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c', 'cyan': '#00ffff', 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9', 'darkgreen': '#006400', 'darkgrey': '#a9a9a9', 'darkkhaki': '#bdb76b', 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f', 'darkorange': '#ff8c00', 'darkorchid': '#9932cc', 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkslategrey': '#2f4f4f', 'darkturquoise': '#00ced1', 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969', 'dimgrey': '#696969', 'dodgerblue': '#1e90ff', 'eigengrau': '#16161d', 'firebrick': '#b22222', 'floralwhite': '#fffaf0', 'forestgreen': '#228b22', 'fuchsia': '#ff00ff', 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff', 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000', 'greenyellow': '#adff2f', 'grey': '#808080', 'honeydew': '#f0fff0', 'hotpink': '#ff69b4', 'indianred': '#cd5c5c', 'indigo': '#4b0082', 'ivory': '#fffff0', 'khaki': '#f0e68c', 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd', 'lightblue': '#add8e6', 'lightcoral': '#f08080', 'lightcyan': '#e0ffff', 'lightgoldenrodyellow': '#fafad2', 'lightgray': '#d3d3d3', 'lightgreen': '#90ee90', 'lightgrey': '#d3d3d3', 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa', 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightslategrey': '#778899', 'lightsteelblue': '#b0c4de', 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6', 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd', 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370db', 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee', 'mediumspringgreen': '#00fa9a', 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970', 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5', 'navajowhite': '#ffdead', 'navy': '#000080', 'oldlace': '#fdf5e6', 'olive': '#808000', 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6', 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee', 'palevioletred': '#db7093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9', 'peru': '#cd853f', 'pink': '#ffc0cb', 'plum': '#dda0dd', 'powderblue': '#b0e0e6', 'purple': '#800080', 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1', 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57', 'seashell': '#fff5ee', 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb', 'slateblue': '#6a5acd', 'slategray': '#708090', 'slategrey': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f', 'steelblue': '#4682b4', 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0', 'violet': '#ee82ee', 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5', 'yellow': '#ffff00', 'yellowgreen': '#9acd32'}#
classmethod batch_register_named_colors(colors: dict) None[source]#

Register multiple named colors at once.

classmethod list_named_colors() List[str][source]#

List all available named colors.

classmethod list_spaces() List[str][source]#

List all available color spaces.

classmethod register_conversion(from_space: str, to_space: str, func: Callable | None = None) Callable[source]#

Register a new color conversion function, either by using it as a decorator or by calling it directly with a function.

Usage:

@Color.register_conversion(“rgb”, “rgba”) def rgb_to_rgba(…): pass

or

Color.register_conversion(“rgb”, “rgba”, rgb_to_rgba)

Parameters:
  • from_space (str) – The source color space.

  • to_space (str) – The target color space.

  • func (callable, optional) – The conversion function to register. If None, it’s used as a decorator.

Returns:

The conversion function, or the decorator if func is None.

Return type:

callable

classmethod register_named_color(name: str, hex_code: str) None[source]#

Register a new named color.

to(space: Literal['auto', 'rgb', 'rgba', 'rgb255', 'rgba255', 'hex', 'hexa', 'name', 'hsv', 'cmyk', 'yiq', 'hsl', None] | str) str | Tuple[int, int, int] | Tuple[int, int, int, int] | Tuple[float, float, float] | Tuple[float, float, float, float][source]#

Generic class to get the color in a specific space.

Parameters:

space (ColorSpace) – The target color space. Can see available options calling list_spaces().

Returns:

The color in the target space (e.g. An RGB tuple, a hex string, etc).

Return type:

ColorType

to_cmyk() Tuple[float, float, float, float][source]#

Convert the current color to the CMYK color space.

Returns:

A tuple representing the CMYK components of the color.

Return type:

Tuple[float, float, float, float]

Example

>>> color = Color("#ff5733")
>>> color.to_cmyk()
(0.0, 0.66, 0.8, 0.0)
>>> color = Color("yellow")
>>> color.to_cmyk()
(0.0, 0.0, 1.0, 0.0)
to_hex() str[source]#

Convert the current color to a hexadecimal string.

Returns:

A string representing the color in hex format.

Return type:

str

Example

>>> color = Color((255, 87, 51))
>>> color.to_hex()
'#ff5733'
>>> color = Color("blue")
>>> color.to_hex()
'#0000ff'
to_hexa() str[source]#

Convert the current color to a hexadecimal string with alpha (transparency) included.

Returns:

A string representing the color in hex format, including the alpha value.

Return type:

str

Example

>>> color = Color((255, 87, 51, 128))
>>> color.to_hexa()
'#ff573380'
>>> color = Color("red")
>>> color.to_hexa()
'#ff0000ff'
to_hsl() Tuple[float, float, float][source]#

Convert the current color to the HSL color space (Hue, Saturation, Lightness).

Returns:

A tuple representing the HSL components of the color.

Return type:

Tuple[float, float, float]

Example

>>> color = Color("#ff5733")
>>> color.to_hsl()
(0.033, 1.0, 0.6)
>>> color = Color("blue")
>>> color.to_hsl()
(0.667, 1.0, 0.5)
to_hsv() Tuple[float, float, float][source]#

Convert the current color to the HSV color space.

Returns:

A tuple representing the HSV components of the color.

Return type:

Tuple[float, float, float]

Example

>>> color = Color("#ff5733")
>>> color.to_hsv()
(0.033, 0.8, 1.0)
>>> color = Color("purple")
>>> color.to_hsv()
(0.833, 1.0, 0.502)
to_name() str[source]#

Convert the current color to a named color, if available.

Returns:

A string representing the color name, if it matches one of the known color names.

Return type:

str

Raises:

ValueError – If no matching color name is found.

Example

>>> color = Color("#ff0000")
>>> color.to_name()
'red'
>>> color = Color("green")
>>> color.to_name()
'green'
to_rgb() Tuple[float, float, float][source]#

Convert the current color to the RGB color space (float values between 0 and 1).

Returns:

A tuple representing the RGB components of the color.

Return type:

Tuple[float, float, float]

Example

>>> color = Color("#ff5733")
>>> color.to_rgb()
(1.0, 0.341, 0.2)
>>> color = Color("red")
>>> color.to_rgb()
(1.0, 0.0, 0.0)
to_rgb255() Tuple[int, int, int][source]#

Convert the current color to the RGB color space (integer values between 0 and 255).

Returns:

A tuple representing the RGB components of the color in integer form.

Return type:

Tuple[int, int, int]

Example

>>> color = Color("#ff5733")
>>> color.to_rgb255()
(255, 87, 51)
>>> color = Color("blue")
>>> color.to_rgb255()
(0, 0, 255)
to_rgba() Tuple[float, float, float, float][source]#

Convert the current color to the RGBA color space (float values between 0 and 1).

Returns:

A tuple representing the RGBA components of the color, with the alpha channel.

Return type:

Tuple[float, float, float, float]

Example

>>> color = Color("#ff573380")
>>> color.to_rgba()
(1.0, 0.341, 0.2, 0.5)
>>> color = Color("green")
>>> color.to_rgba()
(0.0, 1.0, 0.0, 1.0)
to_rgba255() Tuple[int, int, int, int][source]#

Convert the current color to the RGBA color space (integer values between 0 and 255).

Returns:

A tuple representing the RGBA components of the color in integer form.

Return type:

Tuple[int, int, int, int]

Example

>>> color = Color("#ff573380")
>>> color.to_rgba255()
(255, 87, 51, 128)
>>> color = Color("red")
>>> color.to_rgba255()
(255, 0, 0, 255)
to_yiq() Tuple[float, float, float][source]#

Convert the current color to the YIQ color space (used for TV broadcasting).

Returns:

A tuple representing the YIQ components of the color.

Return type:

Tuple[float, float, float]

Example

>>> color = Color("#ff5733")
>>> color.to_yiq()
(0.592, 0.458, 0.079)
>>> color = Color("black")
>>> color.to_yiq()
(0.0, 0.0, 0.0)