o
    $6dA                     @   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 ddlmZmZ er<ddlmZ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e e e e e dZ dZ!de e e e e e e! d	Z"dZ#dZ$de# e e$ e e$ dZ%de# e e$ e e$ e e! d	Z&dd dD Z'dej( Z)G dd deZ*deedf defd d!Z+dedefd"d#Z,d$eeef d%eeef d&eeef d'e
e def
d(d)Z-dNdeeef d+edefd,d-Z.dedeeef de
e fd.d/Z/dOd0ed1ed2ed3ed'e
e defd4d5Z0d6edefd7d8Z1i d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZi d[d\d]d^d_d`dad>dbdcdddedfdgdhdidjdkdldidmdndodpdqdrdsdtdudvdwdxdydzi d{d|d}d~dd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ddddi dd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)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d8d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKZ2dLdM e23 D Z4dS (P  an  
Color definitions are  used as per CSS3 specification:
http://www.w3.org/TR/css3-color/#svg-color

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".
    N)
hls_to_rgb
rgb_to_hls)TYPE_CHECKINGAnyDictOptionalTupleUnioncast   )
ColorError)Representationalmost_equal_floats)CallableGeneratorReprArgsc                	   @   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 )RGBAz;
    Internal 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   hC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\pydantic/v1/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   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(\d{1,3}(?:\.\d+)?)z\s*,\s*z\s*rgb\(\s*z\)\s*z(\d(?:\.\d+)?|\.\d+|\d{1,2}%)z\s*rgba\(\s*z\s*\)\s*z((-?\d+(?:\.\d+)?|-?\.\d+)(deg|rad|turn)?z(\d{1,3}(?:\.\d+)?)%z\s*hsl\(\s*c                 C   s   h | ]	}t |d  dqS )      int.0cr   r   r   	<setcomp>;   s    r-   Z0123456789abcdefr&   c                   @   s  e Zd ZdZdeddfddZedeee	f dd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,d d!Zdefd"d#Zd-d%d&Zd'e	defd(d)Zdefd*d+ZdS ).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 )Nz%value must be a tuple, list or stringreason)

isinstancetuplelistparse_tupler0   str	parse_strr.   r/   r   )r   r1   r   r   r   r   B   s   



zColor.__init__field_schemac                 C   s   |j ddd d S )Nstringcolor)typeformat)update)clsr:   r   r   r   __modify_schema__R   s   zColor.__modify_schema__c                 C   s   | j S )z0
        Original value passed to Color
        )r/   r   r   r   r   originalV   s   zColor.originalFfallbackrE   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 )Nz=no named color found, use fallback=True, as_hex() or as_rgb())
r0   r   r
   r   r)   as_rgb_tupleCOLORS_BY_VALUEKeyErroras_hex
ValueError)r   rE   rgber   r   r   as_named\   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 )z
        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.
        c                 S   s   g | ]}t |qS r   float_to_255r*   r   r   r   
<listcomp>n   s    z Color.as_hex.<locals>.<listcomp>N    c                 s   s    | ]}|d V  qdS )02xNr   r+   vr   r   r   	<genexpr>r       zColor.as_hex.<locals>.<genexpr>c                 s   s    | ]}|t v V  qd S r   )repeat_colorsr*   r   r   r   rV   s   rW   c                 3   s    | ]} | V  qd S r   r   r*   rI   r   r   rV   t   rW   r   r&   #)r0   r   appendrO   joinallrangelen)r   valuesr   rY   r   rI   i   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 )zT
        Color as an rgb(<r>, <g>, <b>) or rgba(<r>, <g>, <b>, <a>) string.
        Nzrgb(, )zrgba(r&   )r0   r   rO   r   r   r   round_alpha_floatrB   r   r   r   as_rgbw   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 )ap  
        Color as an RGB or RGBA tuple; red, green and blue are in the range 0 to 255, alpha if included is
        in the range 0 to 1.

        :param alpha: whether to include the alpha channel, options are
          None - (default) include alpha only if it's set (e.g. not None)
          True - always include alpha,
          False - always omit alpha,
        c                 s       | ]}t |V  qd S r   rN   r*   r   r   r   rV      rW   z%Color.as_rgb_tuple.<locals>.<genexpr>NrQ   )r0   r   rd   )r   r   r   r   r   r   r   r   rF      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 )zS
        Color as an hsl(<h>, <s>, <l>) or hsl(<h>, <s>, <l>, <a>) string.
        NFrf   zhsl(h  z0.0fra   z0.0%rb   Tr&   )r0   r   as_hsl_tuplerc   )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 )a  
        Color as an HSL or HSLA tuple, e.g. hue, saturation, lightness and optionally alpha; 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.

        :param alpha: whether to include the alpha channel, options are
          None - (default) include alpha only if it's set (e.g. not None)
          True - always include alpha,
          False - always omit alpha,
        N)r   r0   r   r   r   r   rd   )r   r   rj   lrk   r   r   r   ri      s   

zColor.as_hsl_tuplec                 C   s   | j jd u rdS | j jS )Nr   )r0   r   rB   r   r   r   rd      s   zColor._alpha_floatr   c                 c   s    | V  d S r   r   )r@   r   r   r   __get_validators__   s   
zColor.__get_validators__c                 C   s   | j ddS )NTrD   )rM   rB   r   r   r   __str__      zColor.__str__r   c                 C   s    d | j ddfgd|  fg S )NTrD   rK   )rM   rF   rB   r   r   r   __repr_args__   s    zColor.__repr_args__otherc                 C   s   t |to|  | kS r   )r4   r.   rF   )r   rs   r   r   r   __eq__   s   zColor.__eq__c                 C   s   t |  S r   )hashrF   rB   r   r   r   __hash__   rq   zColor.__hash__)r   r   )r   r   )r    r!   r"   r$   	ColorTyper   classmethodr   r8   r   rA   rC   boolrM   rI   re   r   
ColorTuplerF   rm   HslColorTupleri   r%   rd   ro   rp   rr   rt   r)   rv   r   r   r   r   r.   ?   s&    
r.   r1   .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)	z+
    Parse a tuple or list as a color.
    rQ   c                 s   rg   r   parse_color_valuerT   r   r   r   rV      rW   zparse_tuple.<locals>.<genexpr>N   c                 s   rg   r   r|   rT   r   r   r   rV      rW   ztuples must have length 3 or 4r2   )r_   r   parse_float_alphar   )r1   r   r   r   r   r   r   r7      s   
r7   c                 C   s  |   }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
|}|rtg | dR  S tt|}|rt|  S tt|}|r| \}	}
}}t|	|
||S tt|}|r| \}	}
}}}t|	|
||t|S tdd	)
aQ  
    Parse a string to an RGBA tuple, trying the following formats (in this order):
    * named color, see COLORS_BY_NAME below
    * 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>)`
    Nc                 s   s    | ]
}t |d  dV  qdS )r&   r'   Nr(   rT   r   r   r   rV      s    zparse_str.<locals>.<genexpr>r&   r'      c                 s   s    | ]}t |d V  qdS )r'   Nr(   rT   r   r   r   rV      s    z&string not recognised as a valid colorr2   )lowerCOLORS_BY_NAMErH   ints_to_rgbare	fullmatchr_hex_shortgroupsr)   
r_hex_longr_rgbr_rgbar_hsl	parse_hslr_hslar   r   )r1   Zvalue_lowerr   r   r   mrK   rl   r   rj   h_unitsrk   Zl_r   r   r   r9      sL   	
r9   r   r   r   r   c                 C   s   t t| t|t|t|S 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)z
    Parse a value checking it's a valid int in the range 0 to max_val and divide by max_val to give a number
    in the range 0 to 1
    z#color values must be a valid numberr2   r   z'color values must be in the range 0 to )r%   rJ   r   )r1   r   r<   r   r   r   r}     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r5dS d|  kr@dkrA|S  td	d)
zG
    Parse a value checking it's a valid float in the range 0 to 1
    N%d   z"alpha values must be a valid floatr2   r   r   z(alpha values must be in the range 0 to 1)r4   r8   endswithr%   rJ   r   r   )r1   r   r   r   r   r   +  s    


r   rj   r   satlightc                 C   sr   t |dt |d}}t| }|dv r|d d }n|dkr%|t t }n|d }t|||\}}	}
t||	|
|S )zT
    Parse raw hue, saturation, lightness and alpha values and convert to RGBA.
    r   >   degNrh   Zradr   )r}   r%   radsr   r   )rj   r   r   r   r   Zs_valueZl_valueZh_valuer   r   r   r   r   r   r   A  s   r   r,   c                 C   s   t t| d S )Nr   )r)   rc   )r,   r   r   r   rO   T  s   rO   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+   krU   r   r   r   
<dictcomp>  s    r,  )r   r   )5r#   mathr   colorsysr   r   typingr   r   r   r   r   r	   r
   errorsr   utilsr   r   r   r   r)   r%   rz   r8   rw   r{   r   r   r   Z_r_255Z_r_commar   Z_r_alphar   Z_r_hZ_r_slr   r   rX   pir   r.   r7   r9   r   r}   r   r   rO   r   itemsrG   r   r   r   r   <module>   s   	$""$$
 ::""*	
 !"#$%&'()*+,-./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{|}~                 	  
 
 