Skip to content
You're viewing docs for v2.0. See the latest version →

pydantic.color

Color definitions are used as per the CSS3 CSS Color Module Level 3 specification.

A few colors have multiple names referring to the sames colors, eg. grey and gray or aqua and cyan.

In these cases the last color when sorted alphabetically takes preferences, eg. Color((0, 255, 255)).as_named() == 'cyan' because “cyan” comes after “aqua”.

PydanticDeprecatedSince20

Bases: PydanticDeprecationWarning

A specific PydanticDeprecationWarning subclass defining functionality deprecated since Pydantic 2.0.


RGBA

Internal use only as a representation of a color.

Attributes

r

Default: r

g

Default: g

b

Default: b

alpha

Default: alpha


Color

Bases: Representation

Represents a color.

Methods

original

def original() -> ColorType

Original value passed to Color.

Returns

ColorType

as_named

def as_named(fallback: bool = False) -> str

Returns the name of the color if it can be found in COLORS_BY_VALUE dictionary, otherwise returns the hexadecimal representation of the color or raises ValueError.

Returns

str — The name of the color, or the hexadecimal representation of the color.

Parameters

fallback : bool Default: False

If True, falls back to returning the hexadecimal representation of the color instead of raising a ValueError when no named color is found.

Raises
  • ValueError — When no named color is found and fallback is False.

as_hex

def as_hex() -> str

Returns the hexadecimal representation of the color.

Hex string representing the color can be 3, 4, 6, or 8 characters depending on whether the string a “short” representation of the color is possible and whether there’s an alpha channel.

Returns

str — The hexadecimal representation of the color.

as_rgb

def as_rgb() -> str

Color as an rgb(<r>, <g>, <b>) or rgba(<r>, <g>, <b>, <a>) string.

Returns

str

as_rgb_tuple

def as_rgb_tuple(alpha: Optional[bool] = None) -> ColorTuple

Returns the color as an RGB or RGBA tuple.

Returns

ColorTuple — A tuple that contains the values of the red, green, and blue channels in the range 0 to 255. If alpha is included, it is in the range 0 to 1.

Parameters

alpha : Optional[bool] Default: None

Whether to include the alpha channel. There are three options for this input:

  • None (default): Include alpha only if it’s set. (e.g. not None)
  • True: Always include alpha.
  • False: Always omit alpha.

as_hsl

def as_hsl() -> str

Color as an hsl(<h>, <s>, <l>) or hsl(<h>, <s>, <l>, <a>) string.

Returns

str

as_hsl_tuple

def as_hsl_tuple(alpha: Optional[bool] = None) -> HslColorTuple

Returns the color as an HSL or HSLA tuple.

Returns

HslColorTuple — The color as a tuple of hue, saturation, lightness, and alpha (if included). All elements are in the range 0 to 1.

Parameters

alpha : Optional[bool] Default: None

Whether to include the alpha channel.

  • None (default): Include the alpha channel only if it’s set (e.g. not None).
  • True: Always include alpha.
  • False: Always omit alpha.

parse_tuple

def parse_tuple(value: Tuple[Any, ...]) -> RGBA

Parse a tuple or list to get RGBA values.

Returns

RGBA — An RGBA tuple parsed from the input tuple.

Parameters

value : Tuple[Any, ...]

A tuple or list.

Raises

  • PydanticCustomError — If tuple is not valid.

parse_str

def parse_str(value: str) -> RGBA

Parse a string representing a color to an RGBA tuple.

Possible formats for the input string include:

  • named color, see COLORS_BY_NAME
  • hex short eg. <prefix>fff (prefix can be #, 0x or nothing)
  • hex long eg. <prefix>ffffff (prefix can be #, 0x or nothing)
  • rgb(<r>, <g>, <b>)
  • rgba(<r>, <g>, <b>, <a>)

Returns

RGBA — An RGBA tuple parsed from the input string.

Parameters

value : str

A string representing a color.

Raises

  • ValueError — If the input string cannot be parsed to an RGBA tuple.

ints_to_rgba

def ints_to_rgba(
    r: Union[int, str],
    g: Union[int, str],
    b: Union[int, str],
    alpha: Optional[float] = None,
) -> RGBA

Converts integer or string values for RGB color and an optional alpha value to an RGBA object.

Returns

RGBA — An instance of the RGBA class with the corresponding color and alpha values.

Parameters

r : Union[int, str]

An integer or string representing the red color value.

g : Union[int, str]

An integer or string representing the green color value.

b : Union[int, str]

An integer or string representing the blue color value.

alpha : Optional[float] Default: None

A float representing the alpha value. Defaults to None.


parse_color_value

def parse_color_value(value: Union[int, str], max_val: int = 255) -> float

Parse the color value provided and return a number between 0 and 1.

Returns

float — A number between 0 and 1.

Parameters

value : Union[int, str]

An integer or string color value.

max_val : int Default: 255

Maximum range value. Defaults to 255.

Raises

  • PydanticCustomError — If the value is not a valid color.

parse_float_alpha

def parse_float_alpha(value: Union[None, str, float, int]) -> Optional[float]

Parse an alpha value checking it’s a valid float in the range 0 to 1.

Returns

Optional[float] — The parsed value as a float, or None if the value was None or equal 1.

Parameters

value : Union[None, str, float, int]

The input value to parse.

Raises

  • PydanticCustomError — If the input value cannot be successfully parsed as a float in the expected range.

parse_hsl

def parse_hsl(
    h: str,
    h_units: str,
    sat: str,
    light: str,
    alpha: Optional[float] = None,
) -> RGBA

Parse raw hue, saturation, lightness, and alpha values and convert to RGBA.

Returns

RGBA — An instance of RGBA.

Parameters

h : str

The hue value.

h_units : str

The unit for hue value.

sat : str

The saturation value.

light : str

The lightness value.

alpha : Optional[float] Default: None

Alpha value.


float_to_255

def float_to_255(c: float) -> int

Converts a float value between 0 and 1 (inclusive) to an integer between 0 and 255 (inclusive).

Returns

int — The integer equivalent of the given float value rounded to the nearest whole number.

Parameters

c : float

The float value to be converted. Must be between 0 and 1 (inclusive).

Raises

  • ValueError — If the given float value is outside the acceptable range of 0 to 1 (inclusive).

JsonSchemaValue

A type alias for a JSON schema value. This is a dictionary of string keys to arbitrary values.

Default: Dict[str, Any]

ColorTuple

Default: Union[Tuple[int, int, int], Tuple[int, int, int, float]]

ColorType

Default: Union[ColorTuple, str]

HslColorTuple

Default: Union[Tuple[float, float, float], Tuple[float, float, float, float]]

r_hex_short

Default: '\\s*(?:#|0x)?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?\\s*'

r_hex_long

Default: '\\s*(?:#|0x)?([0-9a-f]\{2\})([0-9a-f]\{2\})([0-9a-f]\{2\})([0-9a-f]\{2\})?\\s*'

r_rgb

Default: f'\s*rgba?\(\s*\{_r_255\}\{_r_comma\}\{_r_255\}\{_r_comma\}\{_r_255\}(?:\{_r_comma\}\{_r_alpha\})?\s*\)\s*'

r_hsl

Default: f'\s*hsla?\(\s*\{_r_h\}\{_r_comma\}\{_r_sl\}\{_r_comma\}\{_r_sl\}(?:\{_r_comma\}\{_r_alpha\})?\s*\)\s*'

r_rgb_v4_style

Default: f'\s*rgba?\(\s*\{_r_255\}\s+\{_r_255\}\s+\{_r_255\}(?:\s*/\s*\{_r_alpha\})?\s*\)\s*'

r_hsl_v4_style

Default: f'\s*hsla?\(\s*\{_r_h\}\s+\{_r_sl\}\s+\{_r_sl\}(?:\s*/\s*\{_r_alpha\})?\s*\)\s*'

repeat_colors

Default: \{(int(c * 2, 16)) for c in '0123456789abcdef'\}

rads

Default: 2 * math.pi

COLORS_BY_NAME

Default: \{'aliceblue': (240, 248, 255), 'antiquewhite': (250, 235, 215), 'aqua': (0, 255, 255), 'aquamarine': (127, 255, 212), 'azure': (240, 255, 255), 'beige': (245, 245, 220), 'bisque': (255, 228, 196), 'black': (0, 0, 0), 'blanchedalmond': (255, 235, 205), 'blue': (0, 0, 255), 'blueviolet': (138, 43, 226), 'brown': (165, 42, 42), 'burlywood': (222, 184, 135), 'cadetblue': (95, 158, 160), 'chartreuse': (127, 255, 0), 'chocolate': (210, 105, 30), 'coral': (255, 127, 80), 'cornflowerblue': (100, 149, 237), 'cornsilk': (255, 248, 220), 'crimson': (220, 20, 60), 'cyan': (0, 255, 255), 'darkblue': (0, 0, 139), 'darkcyan': (0, 139, 139), 'darkgoldenrod': (184, 134, 11), 'darkgray': (169, 169, 169), 'darkgreen': (0, 100, 0), 'darkgrey': (169, 169, 169), 'darkkhaki': (189, 183, 107), 'darkmagenta': (139, 0, 139), 'darkolivegreen': (85, 107, 47), 'darkorange': (255, 140, 0), 'darkorchid': (153, 50, 204), 'darkred': (139, 0, 0), 'darksalmon': (233, 150, 122), 'darkseagreen': (143, 188, 143), 'darkslateblue': (72, 61, 139), 'darkslategray': (47, 79, 79), 'darkslategrey': (47, 79, 79), 'darkturquoise': (0, 206, 209), 'darkviolet': (148, 0, 211), 'deeppink': (255, 20, 147), 'deepskyblue': (0, 191, 255), 'dimgray': (105, 105, 105), 'dimgrey': (105, 105, 105), 'dodgerblue': (30, 144, 255), 'firebrick': (178, 34, 34), 'floralwhite': (255, 250, 240), 'forestgreen': (34, 139, 34), 'fuchsia': (255, 0, 255), 'gainsboro': (220, 220, 220), 'ghostwhite': (248, 248, 255), 'gold': (255, 215, 0), 'goldenrod': (218, 165, 32), 'gray': (128, 128, 128), 'green': (0, 128, 0), 'greenyellow': (173, 255, 47), 'grey': (128, 128, 128), 'honeydew': (240, 255, 240), 'hotpink': (255, 105, 180), 'indianred': (205, 92, 92), 'indigo': (75, 0, 130), 'ivory': (255, 255, 240), 'khaki': (240, 230, 140), 'lavender': (230, 230, 250), 'lavenderblush': (255, 240, 245), 'lawngreen': (124, 252, 0), 'lemonchiffon': (255, 250, 205), 'lightblue': (173, 216, 230), 'lightcoral': (240, 128, 128), 'lightcyan': (224, 255, 255), 'lightgoldenrodyellow': (250, 250, 210), 'lightgray': (211, 211, 211), 'lightgreen': (144, 238, 144), 'lightgrey': (211, 211, 211), 'lightpink': (255, 182, 193), 'lightsalmon': (255, 160, 122), 'lightseagreen': (32, 178, 170), 'lightskyblue': (135, 206, 250), 'lightslategray': (119, 136, 153), 'lightslategrey': (119, 136, 153), 'lightsteelblue': (176, 196, 222), 'lightyellow': (255, 255, 224), 'lime': (0, 255, 0), 'limegreen': (50, 205, 50), 'linen': (250, 240, 230), 'magenta': (255, 0, 255), 'maroon': (128, 0, 0), 'mediumaquamarine': (102, 205, 170), 'mediumblue': (0, 0, 205), 'mediumorchid': (186, 85, 211), 'mediumpurple': (147, 112, 219), 'mediumseagreen': (60, 179, 113), 'mediumslateblue': (123, 104, 238), 'mediumspringgreen': (0, 250, 154), 'mediumturquoise': (72, 209, 204), 'mediumvioletred': (199, 21, 133), 'midnightblue': (25, 25, 112), 'mintcream': (245, 255, 250), 'mistyrose': (255, 228, 225), 'moccasin': (255, 228, 181), 'navajowhite': (255, 222, 173), 'navy': (0, 0, 128), 'oldlace': (253, 245, 230), 'olive': (128, 128, 0), 'olivedrab': (107, 142, 35), 'orange': (255, 165, 0), 'orangered': (255, 69, 0), 'orchid': (218, 112, 214), 'palegoldenrod': (238, 232, 170), 'palegreen': (152, 251, 152), 'paleturquoise': (175, 238, 238), 'palevioletred': (219, 112, 147), 'papayawhip': (255, 239, 213), 'peachpuff': (255, 218, 185), 'peru': (205, 133, 63), 'pink': (255, 192, 203), 'plum': (221, 160, 221), 'powderblue': (176, 224, 230), 'purple': (128, 0, 128), 'red': (255, 0, 0), 'rosybrown': (188, 143, 143), 'royalblue': (65, 105, 225), 'saddlebrown': (139, 69, 19), 'salmon': (250, 128, 114), 'sandybrown': (244, 164, 96), 'seagreen': (46, 139, 87), 'seashell': (255, 245, 238), 'sienna': (160, 82, 45), 'silver': (192, 192, 192), 'skyblue': (135, 206, 235), 'slateblue': (106, 90, 205), 'slategray': (112, 128, 144), 'slategrey': (112, 128, 144), 'snow': (255, 250, 250), 'springgreen': (0, 255, 127), 'steelblue': (70, 130, 180), 'tan': (210, 180, 140), 'teal': (0, 128, 128), 'thistle': (216, 191, 216), 'tomato': (255, 99, 71), 'turquoise': (64, 224, 208), 'violet': (238, 130, 238), 'wheat': (245, 222, 179), 'white': (255, 255, 255), 'whitesmoke': (245, 245, 245), 'yellow': (255, 255, 0), 'yellowgreen': (154, 205, 50)\}

COLORS_BY_VALUE

Default: \{v: k for k, v in (COLORS_BY_NAME.items())\}