o
    $6dS                     @   s  d Z ddlZddlZddlmZmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ee
eeef e
eeeef f Zeee f Z!ee
eeef e
eeeef f Z"G dd dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*de$ e% e$ e% e$ de% e& d
Z+de' e% e( e% e( de% e& d
Z,de$ de$ de$ de& d	Z-de' de( de( de& d	Z.dd dD Z/dej0 Z1eded G d!d" d"ej2Z3d#e
ed$f d%e#fd&d'Z4d#e d%e#fd(d)Z5dTd*eee f d+eee f d,eee f d-e	e d%e#f
d.d/Z6dUd#eee f d1ed%efd2d3Z7d#ede eef d%e	e fd4d5Z8dTd6e d7e d8e d9e d-e	e d%e#fd:d;Z9d<ed%efd=d>Z:i d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`i dadbdcdddedfdgdDdhdidjdkdldmdndodpdqdrdodsdtdudvdwdxdydzd{d|d}d~ddi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddddddddi ddÓddœddǓddɓdd˓ddɓddΓddГddғddԓdd֓dd֓ddٓddۓddݓddߓddi dddddddddddddddddddddddddddddddd ddi ddddddd	d
dddddddddddddddddddddd d!d"d#d$i d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d>d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQZ;dRdS e;< D Z=dS (V  aZ  Color definitions are used as per the CSS3
[CSS Color Module Level 3](http://www.w3.org/TR/css3-color/#svg-color) 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".

Warning: Deprecated
    The `Color` class is deprecated, use `pydantic_extra_types` instead.
    See [`pydantic-extra-types.Color`](../usage/types/extra_types/color_types.md)
    for more information.
    N)
hls_to_rgb
rgb_to_hls)AnyCallableOptionalTupleTypeUnioncast)
CoreSchemaPydanticCustomErrorcore_schema)
deprecated   )_repr)GetJsonSchemaHandler)JsonSchemaValue)PydanticDeprecatedSince20c                	   @   sD   e Zd ZdZdZdedededee fddZd	ed
efddZ	dS )RGBAz1Internal use only as a representation of a color.rgbalpha_tupler   r   r   r   c                 C   s*   || _ || _|| _|| _||||f| _d S Nr   )selfr   r   r   r    r   eC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\pydantic/color.py__init__%   s
   zRGBA.__init__itemreturnc                 C   s
   | j | S r   )r   )r   r    r   r   r   __getitem__-   s   
zRGBA.__getitem__N)
__name__
__module____qualname____doc__	__slots__floatr   r   r   r"   r   r   r   r   r       s
    r   z(\d{1,3}(?:\.\d+)?)z\s*,\s*z(\d(?:\.\d+)?|\.\d+|\d{1,2}%)z((-?\d+(?:\.\d+)?|-?\.\d+)(deg|rad|turn)?z(\d{1,3}(?:\.\d+)?)%z8\s*(?:#|0x)?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?\s*zD\s*(?:#|0x)?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?\s*z\s*rgba?\(\s*z(?:z
)?\s*\)\s*z\s*hsla?\(\s*z\s+z
(?:\s*/\s*c                 C   s   h | ]	}t |d  dqS )      int.0cr   r   r   	<setcomp>C   s    r0   Z0123456789abcdefr)   zThe `Color` class is deprecated, use `pydantic_extra_types` instead. See https://pydantic-docs.helpmanual.io/usage/types/extra_types/color_types/.)categoryc                   @   sT  e Zd ZdZdZdeddfddZedej	d	e
defd
dZdefddZdddedefddZdefddZdefddZdddee defddZdefddZdddee defddZdefdd Zed!ee d	eege	f dej	fd"d#Zed$ed%edd fd&d'Zdefd(d)Z d2d+d,Z!d-edefd.d/Z"de#fd0d1Z$dS )3ColorzRepresents a color.)	_original_rgbavaluer!   Nc                 C   sf   |  |  t |ttfrt|| _nt |trt|| _nt |tr)|j| _|j}nt	dd|| _d S )Ncolor_errorzAvalue is not a valid color: value must be a tuple, list or string)

isinstancetuplelistparse_tupler4   str	parse_strr2   r3   r   )r   r5   r   r   r   r   Q   s   


zColor.__init__r   handlerc                 C   s   i }|j ddd |S )Nstringcolor)typeformat)update)clsr   r=   Zfield_schemar   r   r   __get_pydantic_json_schema__c   s   z"Color.__get_pydantic_json_schema__c                 C   s   | j S )z!Original value passed to `Color`.)r3   r   r   r   r   originalk   s   zColor.originalFfallbackrH   c             
   C   sr   | j jdu r5tttttf |  }zt| W S  ty4 } z|r+|  W  Y d}~S t	d|d}~ww |  S )a<  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`.

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

        Returns:
            The name of the color, or the hexadecimal representation of the color.

        Raises:
            ValueError: When no named color is found and fallback is `False`.
        Nz=no named color found, use fallback=True, as_hex() or as_rgb())
r4   r   r
   r   r,   as_rgb_tupleCOLORS_BY_VALUEKeyErroras_hex
ValueError)r   rH   rgber   r   r   as_namedo   s   

zColor.as_namedc                    s   dd | j dd D }| j jdur|t| j j ddd |D  tdd |D r@d fd	dtd
t dD  d  S )aS  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:
            The hexadecimal representation of the color.
        c                 S   s   g | ]}t |qS r   float_to_255r-   r   r   r   
<listcomp>   s    z Color.as_hex.<locals>.<listcomp>N    c                 s   s    | ]}|d V  qdS )02xNr   r.   vr   r   r   	<genexpr>       zColor.as_hex.<locals>.<genexpr>c                 s   s    | ]}|t v V  qd S r   )repeat_colorsr-   r   r   r   rY      rZ   c                 3   s    | ]} | V  qd S r   r   r-   rL   r   r   rY      rZ   r   r)   #)r4   r   appendrR   joinallrangelen)r   valuesr   r\   r   rL      s   	$zColor.as_hexc              
   C   s|   | j jdu rdt| j j dt| j j dt| j j dS dt| j j dt| j j dt| j j dt|  d d	S )zFColor as an `rgb(<r>, <g>, <b>)` or `rgba(<r>, <g>, <b>, <a>)` string.Nzrgb(, )zrgba(r)   )r4   r   rR   r   r   r   round_alpha_floatrE   r   r   r   as_rgb   s   0,zColor.as_rgbr   r   c                C   sj   dd | j dd D \}}}|du r&| j jdu r|||fS ||||  fS |r0||||  fS |||fS )a  Returns the color as an RGB or RGBA tuple.

        Args:
            alpha: 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.

        Returns:
            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.
        c                 s       | ]}t |V  qd S r   rQ   r-   r   r   r   rY      rZ   z%Color.as_rgb_tuple.<locals>.<genexpr>NrT   )r4   r   rg   )r   r   r   r   r   r   r   r   rI      s   

zColor.as_rgb_tuplec              
   C   s   | j jdu r | jdd\}}}d|d dd|dd|dd	S | jd
d\}}}}d|d dd|dd|ddt|d d		S )zEColor as an `hsl(<h>, <s>, <l>)` or `hsl(<h>, <s>, <l>, <a>)` string.NFri   zhsl(h  z0.0frd   z0.0%re   Tr)   )r4   r   as_hsl_tuplerf   )r   hsZliar   r   r   as_hsl   s
   ".zColor.as_hslc                C   sj   t | jj| jj| jj\}}}|du r&| jjdu r|||fS ||||  fS |r0||||  fS |||fS )aS  Returns the color as an HSL or HSLA tuple.

        Args:
            alpha: 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.

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

        Note:
            This is HSL as used in HTML and most other places, not HLS as used in Python's `colorsys`.
        N)r   r4   r   r   r   r   rg   )r   r   rm   lrn   r   r   r   rl      s   

zColor.as_hsl_tuplec                 C   s   | j jd u rdS | j jS )Nr   )r4   r   rE   r   r   r   rg      s   zColor._alpha_floatsourcec                 C   s   t j| jt  dS )N)Zserialization)r   Z general_plain_validator_function	_validateZto_string_ser_schema)rC   rr   r=   r   r   r   __get_pydantic_core_schema__   s   
z"Color.__get_pydantic_core_schema___Color__input_value_c                 C   s   | |S r   r   )rC   ru   rv   r   r   r   rs      s   zColor._validatec                 C   s   | j ddS )NTrG   )rP   rE   r   r   r   __str__      zColor.__str___repr.ReprArgsc                 C   s    d | j ddfgd|  fg S )NTrG   rN   )rP   rI   rE   r   r   r   __repr_args__   s    zColor.__repr_args__otherc                 C   s   t |to|  | kS r   )r7   r2   rI   )r   r{   r   r   r   __eq__   s   zColor.__eq__c                 C   s   t |  S r   )hashrI   rE   r   r   r   __hash__   rx   zColor.__hash__)r!   ry   )%r#   r$   r%   r&   r'   	ColorTyper   classmethodr   r   _GetJsonSchemaHandlerr   rD   rF   boolr;   rP   rL   rh   r   
ColorTuplerI   rp   HslColorTuplerl   r(   rg   r   r   r   rt   rs   rw   rz   r|   r,   r~   r   r   r   r   r2   G   sD    
	
r2   r5   .r!   c                 C   sv   t | dkrdd | D \}}}t|||dS t | dkr6dd | dd D \}}}t|||t| d S tdd)	zParse a tuple or list to get RGBA values.

    Args:
        value: A tuple or list.

    Returns:
        An `RGBA` tuple parsed from the input tuple.

    Raises:
        PydanticCustomError: If tuple is not valid.
    rT   c                 s   rj   r   parse_color_valuerW   r   r   r   rY     rZ   zparse_tuple.<locals>.<genexpr>N   c                 s   rj   r   r   rW   r   r   r   rY     rZ   r6   z:value is not a valid color: tuples must have length 3 or 4)rb   r   parse_float_alphar   )r5   r   r   r   r   r   r   r:     s   
r:   c           	      C   sJ  |   }z	t| \}}}W n	 ty   Y nw t|||dS tt|}|rL| ^ }}dd |D \}}}|rCt|d dd }nd}t||||S tt	|}|rx| ^ }}dd |D \}}}|rot|dd }nd}t||||S tt
|ptt|}|rt|  S tt|ptt|}|rt|  S tdd	)
a8  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>)`

    Args:
        value: A string representing a color.

    Returns:
        An `RGBA` tuple parsed from the input string.

    Raises:
        ValueError: If the input string cannot be parsed to an RGBA tuple.
    Nc                 s   s    | ]
}t |d  dV  qdS )r)   r*   Nr+   rW   r   r   r   rY   6  s    zparse_str.<locals>.<genexpr>r)   r*      c                 s   s    | ]}t |d V  qdS )r*   Nr+   rW   r   r   r   rY   @  s    r6   zBvalue is not a valid color: string not recognised as a valid color)lowerCOLORS_BY_NAMErK   ints_to_rgbare	fullmatchr_hex_shortgroupsr,   
r_hex_longr_rgbr_rgb_v4_styler_hslr_hsl_v4_style	parse_hslr   )	r5   Zvalue_lowerr   r   r   mrN   ro   r   r   r   r   r<     s<   
r<   r   r   r   r   c                 C   s   t t| t|t|t|S )a  Converts integer or string values for RGB color and an optional alpha value to an `RGBA` object.

    Args:
        r: An integer or string representing the red color value.
        g: An integer or string representing the green color value.
        b: An integer or string representing the blue color value.
        alpha: A float representing the alpha value. Defaults to None.

    Returns:
        An instance of the `RGBA` class with the corresponding color and alpha values.
    )r   r   r   )r   r   r   r   r   r   r   r   R  s   r   r   max_valc                 C   sR   zt | }W n ty   tddw d|  kr |kr!|| S  tddd|i)a8  Parse the color value provided and return a number between 0 and 1.

    Args:
        value: An integer or string color value.
        max_val: Maximum range value. Defaults to 255.

    Raises:
        PydanticCustomError: If the value is not a valid color.

    Returns:
        A number between 0 and 1.
    r6   z?value is not a valid color: color values must be a valid numberr   zLvalue is not a valid color: color values must be in the range 0 to {max_val}r   )r(   rM   r   )r5   r   r?   r   r   r   r   a  s   
r   c                 C   s   | du rdS zt | tr| drt| dd d }nt| }W n ty-   tddw t|dr6dS d|  krAdkrB|S  tdd	)
aZ  Parse an alpha value checking it's a valid float in the range 0 to 1.

    Args:
        value: The input value to parse.

    Returns:
        The parsed value as a float, or `None` if the value was None or equal 1.

    Raises:
        PydanticCustomError: If the input value cannot be successfully parsed as a float in the expected range.
    N%d   r6   z>value is not a valid color: alpha values must be a valid floatr   r   zDvalue is not a valid color: alpha values must be in the range 0 to 1)r7   r;   endswithr(   rM   r   mathisclose)r5   r   r   r   r   r   |  s    

r   rm   h_unitssatlightc                 C   sv   t |dt |d}}t| }|dv r|d d }n|dkr%|t t }n|d }t|||\}}	}
t||	|
t|S )a.  Parse raw hue, saturation, lightness, and alpha values and convert to RGBA.

    Args:
        h: The hue value.
        h_units: The unit for hue value.
        sat: The saturation value.
        light: The lightness value.
        alpha: Alpha value.

    Returns:
        An instance of `RGBA`.
    r   >   degNrk   Zradr   )r   r(   radsr   r   r   )rm   r   r   r   r   Zs_valueZl_valueZh_valuer   r   r   r   r   r   r     s   r   r/   c                 C   s   t t| d S )a  Converts a float value between 0 and 1 (inclusive) to an integer between 0 and 255 (inclusive).

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

    Returns:
        The integer equivalent of the given float value rounded to the nearest whole number.

    Raises:
        ValueError: If the given float value is outside the acceptable range of 0 to 1 (inclusive).
    r   )r,   rf   )r/   r   r   r   rR     s   rR   Z	aliceblue)      r   Zantiquewhite)         Zaqua)r   r   r   Z
aquamarine)   r      Zazure)r   r   r   Zbeige)   r      Zbisque)r         black)r   r   r   Zblanchedalmond)r   r      blue)r   r   r   Z
blueviolet)   +      Zbrown)   *   r   Z	burlywood)         Z	cadetblue)_         Z
chartreuse)r   r   r   Z	chocolate)   i      Zcoral)r   r   P   Zcornflowerblue)r         Zcornsilk)r   r   r   Zcrimson)r      <   cyanZdarkblue)r   r      Zdarkcyan)r   r   r   Zdarkgoldenrod)r         Zdarkgray)   r   r   Z	darkgreen)r   r   r   ZdarkgreyZ	darkkhaki)      k   Zdarkmagenta)r   r   r   Zdarkolivegreen)U   r   /   Z
darkorange)r      r   Z
darkorchid)   2      Zdarkred)r   r   r   Z
darksalmon)      z   Zdarkseagreen)      r   Zdarkslateblue)H   =   r   Zdarkslategray)r   O   r   ZdarkslategreyZdarkturquoise)r         Z
darkviolet)   r      Zdeeppink)r   r      Zdeepskyblue)r      r   Zdimgray)r   r   r   ZdimgreyZ
dodgerblue)r      r   Z	firebrick)   "   r   Zfloralwhite)r   r   r   Zforestgreen)r   r   r   Zfuchsia)r   r   r   Z	gainsboro)r   r   r   Z
ghostwhite)r   r   r   Zgold)r   r   r   Z	goldenrod)   r       gray)   r   r   green)r   r   r   Zgreenyellow)   r   r   ZgreyZhoneydew)r   r   r   Zhotpink)r   r      Z	indianred)r   \   r   Zindigo)K   r      Zivory)r   r   r   Zkhaki)r      r   Zlavender)r   r   r   Zlavenderblush)r   r   r   Z	lawngreen)|      r   Zlemonchiffon)r   r   r   Z	lightblue)r      r   Z
lightcoral)r   r   r   Z	lightcyan)   r   r   Zlightgoldenrodyellow)r   r   r   Z	lightgray)r   r   r   Z
lightgreen)r      r   Z	lightgreyZ	lightpink)r         Zlightsalmon)r   r   r   Zlightseagreen)r   r      Zlightskyblue)r   r   r   Zlightslategray)w      r   ZlightslategreyZlightsteelblue)   r   r   Zlightyellow)r   r   r   Zlime)r   r   r   Z	limegreen)r   r   r   Zlinen)r   r   r   magentaZmaroon)r   r   r   Zmediumaquamarine)f   r   r   Z
mediumblue)r   r   r   Zmediumorchid)   r   r   Zmediumpurple)r   p      Zmediumseagreen)r      q   Zmediumslateblue){   h   r   Zmediumspringgreen)r   r      Zmediumturquoise)r   r   r   Zmediumvioletred)         Zmidnightblue)   r  r   Z	mintcream)r   r   r   Z	mistyrose)r   r      Zmoccasin)r   r      Znavajowhite)r   r   r   Znavy)r   r   r   Zoldlace)   r   r   Zolive)r   r   r   Z	olivedrab)r      #   Zorange)r   r   r   Z	orangered)r   E   r   orchid)r   r      Zpalegoldenrod)r      r   Z	palegreen)      r  Zpaleturquoise)   r   r   Zpalevioletred)r   r   r   Z
papayawhip)r         Z	peachpuff)r   r      peru)r   r  ?   Zpink)r         Zplum)   r   r  Z
powderblue)r   r   r   purple)r   r   r   red)r   r   r   Z	rosybrown)r   r   r   Z	royalblue)A   r   r  Zsaddlebrown)r   r     Zsalmon)r   r   r   Z
sandybrown)      `   Zseagreen).   r   W   Zseashell)r   r   r   Zsienna)r   R   -   silver)r  r  r  Zskyblue)r   r   r   Z	slateblue)j   Z   r   Z	slategray)r   r   r   Z	slategreyZsnow)r   r   r   Zspringgreen)r   r   r   Z	steelblue)F   r   r   )r   r   r   )r   r   r   )r   r   r   )r   c   G   )@   r      )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r  r   r   )tantealZthistletomatoZ	turquoisevioletZwheatwhiteZ
whitesmokeyellowZyellowgreenc                 C   s   i | ]\}}||qS r   r   )r.   krX   r   r   r   
<dictcomp>[  s    r7  r   )r   )>r&   r   r   colorsysr   r   typingr   r   r   r   r   r	   r
   Zpydantic_corer   r   r   Ztyping_extensionsr   	_internalr   Z#_internal._schema_generation_sharedr   r   Zjson_schemar   warningsr   r,   r(   r   r;   r   r   r   Z_r_255Z_r_commaZ_r_alphaZ_r_hZ_r_slr   r   r   r   r   r   r[   pir   ZRepresentationr2   r:   r<   r   r   r   r   rR   r   itemsrJ   r   r   r   r   <module>   s   $""&&
 6>;""*	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 	  
 
 