
    $O=dC                     X   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
          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             Z'dej(        z  Z) G d de          Z*deedf         defdZ+dedefd Z,d!eeef         d"eeef         d#eeef         d$e
e         def
d%Z-dEdeeef         d'edefd(Z.dedeeef         de
e         fd)Z/dFd*ed+ed,ed-ed$e
e         defd.Z0d/edefd0Z1i d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRi dSdTdUdVdWdXdYd6dZd[d\d]d^d_d`dadbdcdddadedfdgdhdidjdkdldmdndodpdqdri dsdtdudvdwdxdydxdzd{d|d}d~d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dddddd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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/d0d1d0d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCZ2dD e23                                D             Z4dS (G  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            	       J    e Zd ZdZdZdedededee         fdZded	efd
Z	dS )RGBAz;
    Internal use only as a representation of a color.
    rgbalpha_tupler   r   r   r   c                 T    || _         || _        || _        || _        ||||f| _        d S Nr   )selfr   r   r   r   s        8D:\Sites\api_v1\venv\Lib\site-packages\pydantic/color.py__init__zRGBA.__init__!   s2    
DEq!UCS    itemreturnc                     | j         |         S r   )r   )r   r    s     r   __getitem__zRGBA.__getitem__)   s    {4  r   N)
__name__
__module____qualname____doc__	__slots__floatr   r   r   r#    r   r   r   r      s          1IT% TE Te THUO T T T T! ! ! ! ! ! ! !r   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                 4    h | ]}t          |d z  d          S )      int.0cs     r   	<setcomp>r3   ;   s$    <<<AQUB<<<r   0123456789abcdefr,   c                   0   e Zd ZdZdeddfdZedeee	f         ddfd            Z
defdZd	d
dedefdZdefdZdefdZdddee         defdZdefdZdddee         defdZdefdZedd            ZdefdZddZde	defdZdefdZdS )Color)	_original_rgbavaluer!   Nc                 D   |  |  t          |t          t          f          rt          |          | _        nct          |t
                    rt          |          | _        n9t          |t                    r|j        | _        |j        }nt          d          || _        d S )Nz%value must be a tuple, list or stringreason)

isinstancetuplelistparse_tupler8   str	parse_strr6   r7   r   )r   r9   s     r   r   zColor.__init__B   s    !eeT]++ 	M$U++DJJs## 	M"5))DJJu%% 	MDJOEE$KLLLL r   field_schemac                 4    |                     dd           d S )Nstringcolor)typeformat)update)clsrC   s     r   __modify_schema__zColor.__modify_schema__R   s!    ':::::r   c                     | j         S )z0
        Original value passed to Color
        )r7   r   s    r   originalzColor.originalV   s     ~r   FfallbackrP   c                V   | j         j        t          t          t          t          t          f         |                                           }	 t          |         S # t          $ r0}|r|                                 cY d }~S t          d          |d }~ww xY w|                                 S )Nz=no named color found, use fallback=True, as_hex() or as_rgb())
r8   r   r   r	   r/   as_rgb_tupleCOLORS_BY_VALUEKeyErroras_hex
ValueError)r   rP   rgbes       r   as_namedzColor.as_named\   s    :#uS#s]+T->->-@-@AACm&s++ m m m m;;==(((((($%deekll	m ;;== s$   A 
B$B9B?BBc           	         d | j         dd         D             }| j         j        ,|                    t          | j         j                             d                    d |D                       t          d |D                       r=d                    fdt          dt                    d	          D                       d
z   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                 ,    g | ]}t          |          S r*   float_to_255r0   s     r   
<listcomp>z Color.as_hex.<locals>.<listcomp>n   s    :::a,q//:::r   N    c              3      K   | ]}|d V  	dS )02xNr*   r1   vs     r   	<genexpr>zColor.as_hex.<locals>.<genexpr>r   s&      44A444444r   c              3   (   K   | ]}|t           v V  d S r   )repeat_colorsr0   s     r   re   zColor.as_hex.<locals>.<genexpr>s   s'      22aqM!222222r   c              3   (   K   | ]}|         V  d S r   r*   )r1   r2   rU   s     r   re   zColor.as_hex.<locals>.<genexpr>t   s'      II1VAYIIIIIIr   r   r,   #)r8   r   appendr]   joinallrangelen)r   valuesrU   s     @r   rU   zColor.as_hexi   s    
 ;:4:bqb>::::'MM,tz'78899944V4444422622222 	JWWIIIIaVa0H0HIIIIIFV|r   c                    | j         j        Qd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,   )r8   r   r]   r   r   r   round_alpha_floatrM   s    r   as_rgbzColor.as_rgbw   s     :#s,tz|44ssTZ\8R8RssVbcgcmcoVpVpssss4TZ\22 4 4l4:<6P6P 4 4T`aeakamTnTn 4 4**,,a004 4 4r   r   r   c                    d | j         dd         D             \  }}}|)| j         j        |||fS ||||                                 fS |r||||                                 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              3   4   K   | ]}t          |          V  d S r   r\   r0   s     r   re   z%Color.as_rgb_tuple.<locals>.<genexpr>   s(      ;;q<??;;;;;;r   Nr_   )r8   r   rt   )r   r   r   r   r   s        r   rR   zColor.as_rgb_tuple   s     <;DJrrN;;;1a=z'!Qw!Q 1 1 3 333 	aD--//// a7Nr   c                     | j         j        ,|                     d          \  }}}d|dz  dd|dd|dd	S |                     d
          \  }}}}d|dz  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.
        NFrv   zhsl(h  z0.0frq   z0.0%rr   Tr,   )r8   r   as_hsl_tuplers   )r   hslias        r   as_hslzColor.as_hsl   s     :#((u(55HAq">!c'>>>!>>>B>>>>>++$+77KAq"aM!c'MMM!MMMBMMMuQ{{MMMMr   c                    t          | j        j        | j        j        | j        j                  \  }}}|)| j        j        |||fS ||||                                 fS |r||||                                 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,
        )r   r8   r   r   r   r   rt   )r   r   r|   lr}   s        r   r{   zColor.as_hsl_tuple   s     TZ\4:<FF1a=z'!Qw!Q 1 1 3 333 	aD--//// a7Nr   c                 6    | j         j        dn| j         j        S )Nr   )r8   r   rM   s    r   rt   zColor._alpha_float   s    J$,qq$*2BBr   r   c              #      K   | V  d S r   r*   )rJ   s    r   __get_validators__zColor.__get_validators__   s      					r   c                 .    |                      d          S )NTrO   )rY   rM   s    r   __str__zColor.__str__   s    }}d}+++r   r   c                 d    d |                      d          fgd|                                 fgz   S )NTrO   rW   )rY   rR   rM   s    r   __repr_args__zColor.__repr_args__   s7    t}}d}3345%ARARATAT9U8VVVr   otherc                     t          |t                    o)|                                 |                                k    S r   )r=   r6   rR   )r   r   s     r   __eq__zColor.__eq__   s4    %''WD,=,=,?,?5CUCUCWCW,WWr   c                 D    t          |                                           S r   )hashrR   rM   s    r   __hash__zColor.__hash__   s    D%%''(((r   )r!   r   )r!   r   )r$   r%   r&   r(   	ColorTyper   classmethodr   rA   r   rK   rN   boolrY   rU   ru   r   
ColorTuplerR   r   HslColorTupler{   r)   rt   r   r   r   r   r/   r   r*   r   r   r6   r6   ?   s3       $Ii D      ;T#s(^ ; ; ; ; [;)     ,1 ! ! !D !S ! ! ! !    
 
 
 
 
 7;   Xd^ z    ,	N 	N 	N 	N 	N 7;   Xd^ }    0Ce C C C C    [, , , , ,W W W WXC XD X X X X)# ) ) ) ) ) )r   r6   r9   .r!   c           	      ,   t          |           dk    r"d | D             \  }}}t          |||d          S t          |           dk    r=d | dd         D             \  }}}t          |||t          | d                             S t          d          )z+
    Parse a tuple or list as a color.
    r_   c              3   4   K   | ]}t          |          V  d S r   parse_color_valuerc   s     r   re   zparse_tuple.<locals>.<genexpr>   s+      77A$Q''777777r   N   c              3   4   K   | ]}t          |          V  d S r   r   rc   s     r   re   zparse_tuple.<locals>.<genexpr>   s+      ;;A$Q'';;;;;;r   ztuples must have length 3 or 4r;   )rn   r   parse_float_alphar   )r9   r   r   r   s       r   r@   r@      s     5zzQ777771aAq!T"""	Uq;;rr;;;1aAq!.uQx88999 @AAAAr   c           	         |                                  }	 t          |         \  }}}t          |||d          S # t          $ r Y nw xY wt	          j        t          |          }|rT|                                ^ }}d |D             \  }}}|rt          |dz  d          dz  }nd}t          ||||          S t	          j        t          |          }|rQ|                                ^ }}d |D             \  }}}|rt          |d          dz  }nd}t          ||||          S t	          j        t          |          }|r t          g |                                dR  S t	          j        t          |          }|rt          |                                 S t	          j        t          |          }|r+|                                \  }	}
}}t          |	|
||          S t	          j        t          |          }|r:|                                \  }	}
}}}t          |	|
||t          |                    S t!          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              3   <   K   | ]}t          |d z  d          V  dS )r,   r-   Nr.   rc   s     r   re   zparse_str.<locals>.<genexpr>   s.      //a3q1ub>>//////r   r,   r-      c              3   6   K   | ]}t          |d           V  dS )r-   Nr.   rc   s     r   re   zparse_str.<locals>.<genexpr>   s*      ++!3q"::++++++r   z&string not recognised as a valid colorr;   )lowerCOLORS_BY_NAMEints_to_rgbarT   re	fullmatchr_hex_shortgroupsr/   
r_hex_longr_rgbr_rgbar_hsl	parse_hslr_hslar   r   )r9   value_lowerr   r   r   mrW   r   r   r|   h_unitsr}   l_s                r   rB   rB      s`    ++--K+ -1a Aq!T***    
 	[+..A ,((**a//3///1a 	%(Q^^c%9EEEAq!U+++
Z--A ,((**a++s+++1a 	2JJ$EEEAq!U+++
UK((A /.QXXZZ.....
V[))A )QXXZZ((
UK((A ,HHJJ7ArGQ+++
V[))A B xxzz7Ar1GQ,=a,@,@AAA
D
E
E
EEs   9 
AAr   r   r   r   c                     t          t          |           t          |          t          |          t          |                    S r   )r   r   r   )r   r   r   r   s       r   r   r     s;    !!$$&7&:&:<Ma<P<PRcdiRjRjkkkr   r   max_valc                     	 t          |           }n# t          $ r t          d          w xY wd|cxk    r|k    rn n||z  S t          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 numberr;   r   z'color values must be in the range 0 to )r)   rV   r   )r9   r   rF   s      r   r   r     s    
Ge G G G EFFFFGEWw S' S STTTTs    -c                 Z   | dS 	 t          | t                    r0|                     d          rt          | dd                   dz  }nt          |           }n# t          $ r t          d          w xY wt          |d          rdS d|cxk    rdk    rn n|S t          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 floatr;   r   r   z(alpha values must be in the range 0 to 1)r=   rA   endswithr)   rV   r   r   )r9   r   s     r   r   r   +  s     }tFeS!! 	!ennS&9&9 	!%*%%+EE%LLE F F F DEEEEF 5!$$ Lt	
eq JKKKKs   AA A6r|   r   satlightc                    t          |d          t          |d          }}t          |           }|dv r	|dz  dz  }n|dk    r|t          z  t          z  }n|dz  }t          |||          \  }}	}
t	          ||	|
|          S )zT
    Parse raw hue, saturation, lightness and alpha values and convert to RGBA.
    r   >   Ndegrz   radr   )r   r)   radsr   r   )r|   r   r   r   r   s_valuel_valueh_valuer   r   r   s              r   r   r   A  s     )c224EeS4Q4QWGAhhG-C-#%	E		D.4' A+'733GAq!1ar   r2   c                 @    t          t          | dz                      S )Nr   )r/   rs   )r2   s    r   r]   r]   T  s    uQW~~r   	aliceblue)      r   antiquewhite)         aqua)r   r   r   
aquamarine)   r      azure)r   r   r   beige)   r      bisque)r         black)r   r   r   blanchedalmond)r   r      blue)r   r   r   
blueviolet)   +      brown)   *   r   	burlywood)         	cadetblue)_         
chartreuse)r   r   r   	chocolate)   i      coral)r   r   P   cornflowerblue)r         cornsilk)r   r   r   crimson)r      <   cyandarkblue)r   r      darkcyan)r   r   r   darkgoldenrod)r         darkgray)   r   r   	darkgreen)r   r   r   darkgrey	darkkhaki)      k   darkmagenta)r   r   r   darkolivegreen)U   r  /   
darkorange)r      r   
darkorchid)   2      darkred)r   r   r   
darksalmon)      z   darkseagreen)      r  darkslateblue)H   =   r   darkslategray)r  O   r  darkslategreydarkturquoise)r         
darkviolet)   r      deeppink)r   r      deepskyblue)r      r   dimgray)r   r   r   dimgrey
dodgerblue)r      r   	firebrick)   "   r-  floralwhite)r   r   r   forestgreen)r-  r   r-  fuchsia)r   r   r   	gainsboro)r   r   r   
ghostwhite)r   r   r   gold)r   r   r   	goldenrod)   r       gray)   r8  r8  green)r   r8  r   greenyellow)   r   r  greyhoneydew)r   r   r   hotpink)r   r      	indianred)r   \   rA  indigo)K   r      ivory)r   r   r   khaki)r      r
  lavender)rG  rG  r   lavenderblush)r   r   r   	lawngreen)|      r   lemonchiffon)r   r   r   	lightblue)r;     rG  
lightcoral)r   r8  r8  	lightcyan)   r   r   lightgoldenrodyellow)r   r   r   	lightgray)r"  r"  r"  
lightgreen)r*     r*  	lightgrey	lightpink)r         lightsalmon)r   r   r  lightseagreen)r6  r,     lightskyblue)r   r  r   lightslategray)w      r  lightslategreylightsteelblue)   r   r   lightyellow)r   r   rR  lime)r   r   r   	limegreen)r  r   r  linen)r   r   rG  magentamaroon)r8  r   r   mediumaquamarine)f   r   r]  
mediumblue)r   r   r   mediumorchid)   r  r"  mediumpurple)r$  p      mediumseagreen)r      q   mediumslateblue){   h   rV  mediumspringgreen)r   r      mediumturquoise)r  r  r  mediumvioletred)         midnightblue)   r  rq  	mintcream)r   r   r   	mistyrose)r   r      moccasin)r   r      navajowhite)r   r   r;  navy)r   r   r8  oldlace)   r   rG  olive)r8  r8  r   	olivedrab)r     #   orange)r   r   r   	orangered)r   E   r   orchid)r5  rq     palegoldenrod)rV     r]  	palegreen)      r  paleturquoise)   rV  rV  palevioletred)rr  rq  r$  
papayawhip)r         	peachpuff)r   r5     peru)r   r  ?   pink)r         plum)   r   r  
powderblue)rd  rR  rG  purple)r8  r   r8  red)r   r   r   	rosybrown)r  r  r  	royalblue)A   r   r  saddlebrown)r   r     salmon)r   r8  r   
sandybrown)      `   seagreen).   r   W   seashell)r   r   rV  sienna)r   R   -   silver)r  r  r  skyblue)r   r  r   	slateblue)j   Z   r   	slategray)rq  r8  r*  	slategreysnow)r   r   r   springgreen)r   r   r   	steelblue)F   rD  r?  )r   r?  r
  )r   r8  r8  )rO  r&  rO  )r   c   G   )@   rR     )rV  rD  rV  )r   r   rt  )r   r   r   )r   r   r   )r   r   r   )rz  r   r  )tantealthistletomato	turquoisevioletwheatwhite
whitesmokeyellowyellowgreenc                     i | ]\  }}||	S r*   r*   )r1   krd   s      r   
<dictcomp>r    s    ;;;DAq1a;;;r   )r   r   )5r'   mathr   colorsysr   r   typingr   r   r   r   r	   r
   r   errorsr   utilsr   r   r   r   r/   r)   r   rA   r   r   r   r   r   _r_255_r_commar   _r_alphar   _r_h_r_slr   r   rg   pir   r6   r@   rB   r   r   r   r   r]   r   itemsrS   r*   r   r   <module>r     sj     				 + + + + + + + + I I I I I I I I I I I I I I I I I I       6 6 6 6 6 6 6 6 4333333335c3'sCe/C)DDE
*c/"	eE5%/0%ueU8R2SST! ! ! ! ! ! ! !( JT
	HvHxHHH6HHH+	a	a	a6	a8	aV	aX	ax	a	a	a2GtGXGuGhGGGG	\	\h	\	\x	\	\	\(	\	\	\ =<);<<<47{N) N) N) N) N)N N) N) N)bBuS#X B4 B B B B7FS 7FT 7F 7F 7F 7FtlE#s(O lc3h lE#s(O lT\]bTc lhl l l l lU UU38_ Us UU U U U ULU4eS#89 Lhuo L L L L,     s    S  %  \`        &E c    TTOT MT /	T
 _T _T oT YT oT KT .T ]T T T -T  !T" ^#T T$ o%T& 'T( })T* M+T, -T. /T0 ^1T2 3T4 5T6 7T8 9T: =;T< m=T> -?T@ .ATB {CTD /ET T TF OGTH ]ITJ \KTL \MTN ]OTP -QTR STT =UTV WTX YTZ .[T\ ]T^ ?_T` =aTb }cTd eTf /gT T Th MiTj kTl OmTn [oTp >qTr OsTt uTv wTx yTz l{T| _}T~ _T@ ATB _CTD ETF OGTH IT T TJ /KTL MTN OOTP QTR /STT UTV WTX ?YTZ ^[T\ O]T^ o_T` oaTb ocTd ?eTf KgTh iTj _kT T Tl }mTn koTp qTr +sTt NuTv OwTx nyTz {T| }T~ ~T@ ~ATB MCTD ETF GTH ITJ ?KTL KMT T TN OTP ]QTR STT mUTV WTX oYTZ _[T\ ]T^ __T` _aTb /cTd eTf NgTh OiTj OkTl /mTn moT T Tp 
;qTr sTt uTv =wTx oyTz .{T| }T~ T@ mATB oCTD ETF GTH ITJ KTL OMTN =OTP QT TR !!gT T Tl <;N$8$8$:$:;;;r   