
    Bh@                     @   S SK Jr  S SKJrJrJrJr  SSKJrJ	r	J
r
  SSKJr  SrSr1 Skr\1 S	k-  r " S
 S5      rS rS rS rS rS rS rS rS rS rS rS rS rSrSrSr Sr!S r"S r#S r$\	RJ                  " 5       r	\	RL                  " S5        \'" \\	-   5      r(g )!    )
hls_to_rgb)cosdegreesradianssin   )_BASIC_COLOR_KEYWORDS_EXTENDED_COLOR_KEYWORDS_HASH_REGEXPS)parse_one_component_value)g>?r   gqAg?)g=_"j?r   gl?>	   xyzsrgbrec2020a98-rgbxyz-d50xyz-d65
display-p3srgb-linearprophoto-rgb>   hslhwblablchoklaboklchc                   P   ^  \ rS rSrSrS rS rS rS rS r	U 4S jr
S	 rS
rU =r$ )Color   zA specified color in a defined color space.

The color space is one of ``COLOR_SPACES``.

Coordinates are floats with undefined ranges, but alpha channel is clipped
to [0, 1]. Coordinates can also be set to ``None`` when undefined.

c           	          U[         ;   d
   U S35       eXl        [        S U 5       5      U l        [	        S[        S[        U5      5      5      U l        g )Nz is not a supported color spacec              3   B   #    U  H  nUc  S O
[        U5      v   M     g 7fN)float.0
coordinates     A/var/www/html/env/lib/python3.13/site-packages/tinycss2/color4.py	<genexpr>!Color.__init__.<locals>.<genexpr>   s&      !+)
 &DE*,==)s   g              ?)COLOR_SPACESspacetuplecoordinatesmaxminr"   alpha)selfr+   r-   r0   s       r&   __init__Color.__init__   sW    $O/N&OO$
  !+)!+ + SU5\23
    c                     SR                  S U R                   5       5      nSU R                   SU SU R                   S3$ )N c              3   8   #    U  H  n[        U5      v   M     g 7fr!   )strr#   s     r&   r'   !Color.__repr__.<locals>.<genexpr>#   s     RAQ:s:AQs   zcolor(z / ))joinr-   r+   r0   )r1   r-   s     r&   __repr__Color.__repr__"   s?    hhRAQAQRR

|1[MTZZLBBr4   c              #   T   #    U R                    S h  vN   U R                  v   g  N7fr!   r-   r0   r1   s    r&   __iter__Color.__iter__&   s#     ####jj 	$s   (&(c                 >    / U R                   QU R                  P7U   $ r!   r?   )r1   keys     r&   __getitem__Color.__getitem__*   s!    .!!.4::.s33r4   c                 *    [        [        U 5      5      $ r!   )hashr8   r@   s    r&   __hash__Color.__hash__-   s    CIr4   c                 0  > [        U[        5      (       a  g[        U[        5      (       a  [        U 5      U:H  $ [        U[        5      (       a9  U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ [        TU ]  U5      $ )NF)
isinstancer8   r,   r   r+   r-   super__eq__)r1   other	__class__s     r&   rN   Color.__eq__0   st    eS!!u%%;%''u%%::,V1A1AUEVEV1VVw~e$$r4   c                   ^^	 [        S U R                   5       5      nUS:X  a  SnXR                  :X  a  [        XU R                  5      $ US:X  a  U R                  S:X  a5  [        US   S-  US   S	-  US
   S	-  5      n[        XU R                  5      $ U R                  S:X  aR  US
S u  m	mT	T-   S	:  a  T	T	T-   -  4S-  nOUU	4S j[        US   S-  SS
5       5       n[        XU R                  5      $  [        eUS:X  a  U R                  S:X  a'  [        / UQ[        P76 n[        XU R                  5      $ U R                  S:X  ad  US
   [        [        US   5      5      -  nUS
   [        [        US   5      5      -  n[        US   XV[        5      n[        XU R                  5      $  [        eUS:X  a  U R                  S:X  a  [        U6 n[        XU R                  5      $ U R                  S:X  a_  US
   [        [        US   5      5      -  nUS
   [        [        US   5      5      -  n[        US   XV5      n[        XU R                  5      $  [        eUS:X  Ga  U R                  S:X  a'  [        / UQ[        P76 n[        XU R                  5      $ U R                  S:X  a'  [        / UQ[        P76 n[        XU R                  5      $ U R                  S:X  aU  US
   [        [        US   5      5      -  nUS
   [        [        US   5      5      -  n[        XS   XV4U R                  5      $ U R                  S:X  a/  [        U6 n[        / UQ[        P76 n[        XU R                  5      $ U R                  S:X  ap  US
   [        [        US   5      5      -  nUS
   [        [        US   5      5      -  n[        US   XV5      n[        / UQ[        P76 n[        XU R                  5      $ [        e)at  Return new instance with coordinates transformed to given ``space``.

The destination color space is one of ``SPACES``.

``None`` coordinates are always transformed into ``0`` values.

Here are the supported combinations:

- from hsl and hwb to srgb;
- from lab and lch to xyz-d50;
- from oklab and oklch to xyz-d65;
- from xyz-d50, xyz-d65, lch, oklab and oklch to lab.

c              3   6   #    U  H  o=(       d    S v   M     g7f)r   N r#   s     r&   r'   Color.to.<locals>.<genexpr>H   s     O>N
O!O>Ns   r   r   r   r   r   h     d   r   r   N   c              3   F   >#    U  H  nUS T-
  T-
  -  T-   S -  v   M     g7f)rX   NrT   )r$   channelblackwhites     r&   r'   rU   Z   s1      Q'OG "S5[5%89UBcI'Os   !g      ?r   r   r   r   r   )r,   r-   r+   r   r0   r   _lab_to_xyzD50r   r   r   _oklab_to_xyz_xyz_to_labD65NotImplementedError)
r1   r+   r-   rgbr   abr   r\   r]   s
           @@r&   toColor.to9   s    Od>N>NOOE>EJJTZZ88f_zzU" NS(NS(NS(
 U44u$*12u5=C' EEM24q8CQ'1+a.32FQ'OQC U44 %` "!O izzU"!4;44U44u$NSQ)@%AANSQ)@%AA!+a.!<U44	 %F "!= izzW$#[1U44w&NSQ)@%AANSQ)@%AA#KNA9U44	 '4 "!+ e^zzY&!4;44U44y(!4;44U44u$NSQ)@%AANSQ)@%AAU^Q$:DJJGGw&#[1!,3,,U44w&NSQ)@%AANSQ)@%AA#KNA9!,3,,U44!!r4   )r0   r-   r+   )__name__
__module____qualname____firstlineno____doc__r2   r<   rA   rE   rI   rN   rg   __static_attributes____classcell__)rP   s   @r&   r   r      s3    4C4%L" L"r4   r   c                    [        U [        5      (       a  [        U SS9nOU nUR                  S:X  at  UR                  S:X  a  gUR                  S:X  a  [        SSS5      $ [        R                  UR                  5      =n(       a  [        S	 U 5       5      n[        SUS
5      $ gUR                  S:X  a  [         H|  u  pEU" UR                  5      nU(       d  M   UR                  5        Vs/ s H  n[        Xt-  S5      S-  PM     nn[        U5      S:X  a  UR                  5       OS
n	[        SX5      s  $    gUR                  S:X  Gam  UR                   Vs/ s H  nUR                  S;  d  M  UPM     n
nWR                   nUS:X  a  U
tp[        U
5      nUS;   a(  [#        S U
S
SS2    5       5      (       a  SnU
SSS2   n
O-US:X  a  SnO$US:X  a  U
S   S:X  a  U
R                  S5        SnOgU
SS [%        U
SS 5      pU	c  gUS;   a  ['        X5      $ US;   a  [)        X5      $ US:X  a  [+        X5      $ US:X  a  U(       d  [-        X5      $ US:X  a  U(       d  [/        X5      $ US:X  a  U(       d  [1        X5      $ US :X  a  U(       d  [3        X5      $ US:X  a  U(       d  [5        WX5      $ gggs  snf s  snf )!a  Parse a color value as defined in CSS Color Level 4.

https://www.w3.org/TR/css-color-4/

:type input: :obj:`str` or :term:`iterable`
:param input: A string or an iterable of :term:`component values`.
:returns:
    * :obj:`None` if the input is not a valid color value.
      (No exception is raised.)
    * The string ``'currentcolor'`` for the ``currentcolor`` keyword
    * A :class:`Color` object for every other values, including keywords.

T)skip_commentsidentcurrentcolortransparentr   )r   r   r   r   c              3   *   #    U  H	  oS -  v   M     g7f)   NrT   )r$   r[   s     r&   r'   parse_color.<locals>.<genexpr>   s     ;U'#U   r   rH      rv      function)
whitespacecommentcolor)      c              3   *   #    U  H	  oS :H  v   M     g7f),NrT   )r$   tokens     r&   r'   rw      s     #KlUSLlrx   NrW   rY   Fr   /)rd   rgba)r   hslar   r   r   r   r   )rL   r8   r   typelower_valuer   _COLOR_KEYWORDSgetr,   r   valuegroupsintlenpop	arguments
lower_nameall_parse_alpha
_parse_rgb
_parse_hsl
_parse_hwb
_parse_lab
_parse_lch_parse_oklab_parse_oklch_parse_color)inputr   r~   rd   
multiplierregexpmatchgroupchannelsr0   tokensnamer+   length
old_syntaxargss                   r&   parse_colorr      s    %)%tDzzW.!-/A..%))%*;*;<<U<;U;;Ca(( = 
v	"/J5;;'Eu "'1!/ *B/#5!/  1 +.h-1*<!VX55 #0 
z	!$<.ezz!::  	 < 7?#NEVV#KfQTTl#K K KJCaC[Fq[Jq[VAY#-JJqMJRaj,vabz":e=?"d**_$d**U]d**U]:d**U]:d**W_Z,,W_Z,,W_Zt33 &0_G 
"1<s   /J=K5Kc                 "   [        U 5      S:X  a  g[        U 5      S:X  ap  U S   R                  S:X  a#  [        S[        SU S   R                  5      5      $ U S   R                  S:X  a&  [        S[        SU S   R                  S-  5      5      $ gg)zParse a list of one alpha value.

If args is a list of a single INTEGER, NUMBER or PERCENTAGE token,
return its value clipped to the 0..1 range. Otherwise, return None.

r   r)   r   number
percentagerX   N)r   r   r/   r.   r   )r   s    r&   r   r      s     4yA~	Ta7<<8#q#aa/00!W\\\)q#aa!4566 * 
r4   c                     [        U 5      [        5       S1S14;  a  gU  Vs/ s HC  nUR                  S:X  a  UR                  S-  O UR                  S:X  a  UR                  S-  OSPME     nn[	        SX15      $ s  snf )zParse a list of RGB channels.

If args is a list of 3 NUMBER tokens or 3 PERCENTAGE tokens, return
sRGB :class:`Color`. Otherwise, return None.

Input R, G, B ranges are [0, 255], output are [0, 1].

r   r   Nrv   rX   r   )_typessetr   r   r   )r   r0   argr-   s       r&   r   r      s     d|CEH:~>>  C 88x/		C88|3		C	>   ,,	s   A
A:c                 :   [        U SS 5      [        5       S1S14;  a  g[        U S   5      =nc  gU S   R                  S:X  a  SOUU S   R                  S:X  a  SOU S   R                  U S   R                  S:X  a  SOU S   R                  /n[        SX15      $ )	zParse a list of HSL channels.

If args is a list of 1 NUMBER or ANGLE token and 2 PERCENTAGE tokens,
return HSL :class:`Color`. Otherwise, return None.

H range is [0, 360). S, L ranges are [0, 100].

r   Nr   r   r   rr   rW   r   )r   r   
_parse_huer   r   r   r   r0   huer-   s       r&   r   r      s     d12hzL>BB$q'""+Q'SQ'T!W]]Q'T!W]]K
 ++r4   c                 $   [        U SS 5      SS1::  d  g[        U S   5      =nc  gU S   R                  S:X  a  SOUU S   R                  S:X  a  SOU S   R                  U S   R                  S:X  a  SOU S   R                  /n[	        SX15      $ )	zParse a list of HWB channels.

If args is a list of 1 NUMBER or ANGLE token and 2 NUMBER or PERCENTAGE
tokens, return HWB :class:`Color`. Otherwise, return None.

H range is [0, 360). W, B ranges are [0, 100].

r   Nr   r   r   rr   rW   r   r   r   r   r   r   r   s       r&   r   r   	  s     $qr(,77$q'""+Q'SQ'T!W]]Q'T!W]]K
 ++r4   c                 t   [        U 5      SS1::  d  gU S   R                  S:X  a  SOU S   R                  U S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  U S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  /n[        S	X!5      $ )
zParse a list of CIE Lab channels.

If args is a list of 3 NUMBER or PERCENTAGE tokens, return Lab
:class:`Color`. Otherwise, return None.

L range is [0, 100]. a, b ranges are [-125, 125].

r   r   Nr   rr   r   g      ?rW   r   r   r   r   r   r   r0   r-   s      r&   r   r     s     $<Hl33Q'T!W]]Q'GMM$q',,(":QEQ'GMM$q',,(":QEK ++r4   c                 T   [        U SS 5      SS1::  d  g[        U S   5      =nc  gU S   R                  S:X  a  SOU S   R                  U S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  U S   R                  S:X  a  SOU/n[	        S	X15      $ )
zParse a list of CIE LCH channels.

If args is a list of 2 NUMBER or PERCENTAGE tokens and 1 NUMBER or ANGLE
token, return LCH :class:`Color`. Otherwise, return None.

L range is [0, 100]. C range is [0, 150]. H ranges is [0, 360).

NrW   r   r   r   rr   r   g      ?r   r   r   s       r&   r   r   3  s     $r(,77$q'""+Q'T!W]]Q'GMM$q',,(":QDQ'S	K ++r4   c                    [        U 5      SS1::  d  gU S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  U S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  U S	   R                  S:X  a  SO&U S	   R                  U S	   R                  S:X  a  SOS-  /n[        S
X!5      $ )zParse a list of Oklab channels.

If args is a list of 3 NUMBER or PERCENTAGE tokens, return Oklab
:class:`Color`. Otherwise, return None.

L range is [0, 100]. a, b ranges are [-0.4, 0.4].

r   r   Nr   rr   r   {Gz?Mbp?rW   r   r   r   s      r&   r   r   I  s     $<Hl33Q'GMM$q',,(":QEQ'GMM$q',,(":QFQ'GMM$q',,(":QFK +--r4   c                    [        U SS 5      SS1::  d  g[        U S   5      =nc  gU S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS-  U S   R                  S:X  a  SO&U S   R                  U S   R                  S:X  a  SOS	-  U S   R                  S:X  a  SOU/n[	        S
X15      $ )zParse a list of Oklch channels.

If args is a list of 2 NUMBER or PERCENTAGE tokens and 1 NUMBER or ANGLE
token, return Oklch :class:`Color`. Otherwise, return None.

L range is [0, 1]. C range is [0, 0.4]. H range is [0, 360).

NrW   r   r   r   rr   r   r   r   r   r   r   s       r&   r   r   _  s     $r(,77$q'""+Q'GMM$q',,(":QEQ'GMM$q',,(":QFQ'SK +--r4   c                 @   [        U5      SS1::  d  gU R                  S:w  d  U R                  =n [        ;  a  gU S:X  a  Sn U Vs/ s H@  nUR                  S:X  a  UR                  O UR                  S:X  a  UR                  S-  OSPMB     nn[        XU5      $ s  snf )zCParse a color space name list of coordinates.

Ranges are [0, 1].

r   r   Nrr   r   r   rX   )r   r   r   _FUNCTION_SPACESr   r   )r+   r   r0   r   r-   s        r&   r   r   v  s     $<Hl33zzW%*;*;!;DT T~  C XX)		88|3		C	>   U++	s   ABc                    U R                   S:X  a  U R                  S-  $ U R                   S:X  a  U R                  S:X  a  U R                  S-  $ U R                  S:X  a  U R                  S-  S-  S-  $ U R                  S:X  a  [        U R                  5      S-  $ U R                  S:X  a  U R                  S-  S-  $ gU R                   S	:X  a  U R                  S
:X  a  ggg)z;Parse hue token.

Range is [0, 360). ``none`` value is 0.

r   rV   	dimensiondeggradi  radturnrr   noner   N)r   r   unitr   r   )r   s    r&   r   r     s     zzX{{S  	{	"::;;$$ZZ6!;;$s*S00ZZ5 5;;'#--ZZ6!;;$s** "	w	5#4#4#> $?	r4   c                     [        5       nU  H@  nUR                  S:X  a  UR                  S:X  a  M%  UR                  UR                  5        MB     U$ )z3Get a set of token types, ignoring ``none`` values.rr   r   )r   r   r   add)r   typesr   s      r&   r   r     sF    EE:: U%6%6&%@		%**  Lr4   g&^:@g|T#?))g3DL?g՞g|yO?)gXƤg@F?g͎[)gvy-gy"ڿgfm"r
d?))g
+?g/]?gȜ!u?)gYb  ?g qg[HX)g9  ?gpso趿g!Fc                    XS   -  nXS   -  nX#S   -  nU[         :  a  US-  O[        U-  S-   S-  nU[         :  a  US-  O[        U-  S-   S-  nU[         :  a  US-  O[        U-  S-   S-  n	SU-  S-
  n
SXx-
  -  nSX-
  -  nXU4$ )	Nr   r   rW   gUUUUUU?ry   t           _ε   _κ)XYZdxyzf0f1f2Lre   rf   s                r&   ra   ra     s    	aDA	aDA	aDASusQw|s&:BSusQw|s&:BSusQw|s&:B	rRArwArwA7Nr4   c                 0   U S-   S-  nUS-  U-   nXBS-  -
  nUS-  [         :  a  US-  OSU-  S-
  [        -  nU [        [         -  :  a  U S-   S-  S-  OU [        -  nUS-  [         :  a  US-  OSU-  S-
  [        -  n	XsS   -  n
XS   -  nXS   -  nXU4$ )	Nry   r   r   r   rY   r   r   rW   r   )r   re   rf   r   r   r   r   r   r   r   r   r   r   s                r&   r^   r^     s    
b&CB	
S2B	#gB!GcMqb2'<A"#cCi-1r6S.Q	QWA!GcMqb2'<A	aDA	aDA	aDA7Nr4   c           	        ^^^ XU4m[        S5       V^s/ s H"  m[        UU4S j[        S5       5       5      PM$     snm[        S5       V^s/ s H"  m[        UU4S j[        S5       5       5      PM$     snu  pEnXEU4$ s  snf s  snf )NrY   c              3   H   >#    U  H  n[         T   U   TU   -  v   M     g 7fr!   )_OKLAB_TO_LMS)r$   jir   s     r&   r'    _oklab_to_xyz.<locals>.<genexpr>  s$     >X}Q"SV+Xs   "c              3   N   >#    U  H  n[         T   U   TU   S -  -  v   M     g7f)rY   N)_LMS_TO_XYZ)r$   r   r   lmss     r&   r'   r     s'     C(Q;q>!$s1vqy0(s   "%)rangesum)	r   re   rf   r   r   r   r   r   r   s	      `   @@r&   r`   r`     sq    )CHMa
Q13>U1X>>
QCMRSTXVXsC%(CCXVGA!7N RVs   )B)B)rebeccapurple)f   3      N))colorsysr   mathr   r   r   r   color3r	   r
   r   parserr   r_   rb   r   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r^   r`   copyappenddictr   rT   r4   r&   <module>r      s     + + R R -:: 
  "PPt" t"nG4T7 -$,*,*,*,,.,..,&* 


 488:     A B,/GGHr4   