o
    _h+                  	   @   s  d dl Z d dlZd dlmZ ddlmZ G dd de dg dZdd	 Zd
d Z	dd Z
dd Zdd ZdeddejjfdeddejjfdeddejjfdeddejjffZg dZg dZdedddddZe Zedd ee D  dS )    N)
hls_to_rgb   )parse_one_component_valuec                   @   s   e Zd ZdZdS )RGBAa  An RGBA color.

    A tuple of four floats in the 0..1 range: ``(red, green, blue, alpha)``.

    .. attribute:: red

        Convenience access to the red channel. Same as ``rgba[0]``.

    .. attribute:: green

        Convenience access to the green channel. Same as ``rgba[1]``.

    .. attribute:: blue

        Convenience access to the blue channel. Same as ``rgba[2]``.

    .. attribute:: alpha

        Convenience access to the alpha channel. Same as ``rgba[3]``.

    N)__name__
__module____qualname____doc__ r
   r
   C/var/www/html/myenv/lib/python3.10/site-packages/tinycss2/color3.pyr      s    r   )redgreenbluealphac                    sR  t | trt| dd}n| }|jdkrt|jS |jdkrJtD ]'\ }||j}|rG fdd|	 D }t
|dkrA|d t|   S q dS |jd	krt|j}|r|j}|d
krct|ddS |dkr~t|dd }|dur|t|dd |S dS |dkrt|ddS |dkrt|dd }|durt|dd |S dS dS dS dS )a  Parse a color value as defined in CSS Color Level 3.

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

    :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
        * Or a :class:`RGBA` object for every other values
          (including keywords, HSL and HSLA.)
          The alpha channel is clipped to [0, 1]
          but red, green, or blue can be out of range
          (eg. ``rgb(-10%, 120%, 0%)`` is represented as
          ``(-0.1, 1.2, 0, 1)``.)

    T)skip_commentsidenthashc                    s   g | ]}t |  d d qS )      )int).0group
multiplierr
   r   
<listcomp>=   s    zparse_color.<locals>.<listcomp>         ?functionrgb)r   rgbaNhslhsla)
isinstancestrr   type_COLOR_KEYWORDSgetlower_value_HASH_REGEXPSvaluegroupslenappendr   _parse_comma_separated	arguments
lower_name
_parse_rgb_parse_alpha
_parse_hsl)inputtokenregexpmatchchannelsargsnamer   r
   r   r   parse_color    sL   






	

r:   c                 C   s8   t | dkr| d jdkrtdtd| d jS dS dS )zParse a list of one alpha value.

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

    r   r   numberN)r+   r$   minmaxr)   )r8   r
   r
   r   r1   U   s   r1   c                 C   s   dd | D }|g dkr+t dd | D r+dd | dd D \}}}t||||S |g d	krFd
d | dd D \}}}t||||S dS )zParse a list of RGB channels.

    If args is a list of 3 INTEGER tokens or 3 PERCENTAGE tokens, return RGB
    values as a tuple of 3 floats in 0..1. Otherwise, return None.

    c                 S      g | ]}|j qS r
   r$   r   argr
   r
   r   r   g       z_parse_rgb.<locals>.<listcomp>)r;   r;   r;   c                 s   s    | ]}|j V  qd S )N)
is_integer)r   ar
   r
   r   	<genexpr>i   s    z_parse_rgb.<locals>.<genexpr>c                 S      g | ]}|j d  qS )r   )	int_valuer@   r
   r
   r   r   j       Nr   )
percentagerI   rI   c                 S   rF   )d   )r)   r@   r
   r
   r   r   m   rH   )allr   r8   r   typesrgbr
   r
   r   r0   `   s   r0   c                 C   s\   dd | D }|g dkr,t | d jd | d jd | d jd \}}}t||||S d	S )
zParse a list of HSL channels.

    If args is a list of 1 NUMBER token and 2 PERCENTAGE tokens, return RGB
    values as a tuple of 3 floats in 0..1. Otherwise, return None.

    c                 S   r>   r
   r?   r@   r
   r
   r   r   x   rB   z_parse_hsl.<locals>.<listcomp>)r;   rI   rI   r   ih     rJ   r   N)r   r)   r   rL   r
   r
   r   r2   q   s   $
r2   c                 C   sX   dd | D } | sg S t | d dkr(tdd | ddd D r*| ddd S dS dS )aT  Parse a list of tokens (typically the content of a function token)
    as arguments made of a single token each, separated by mandatory commas,
    with optional white space around each argument.

    return the argument list without commas or white space;
    or None if the function token content do not match the description above.

    c                 S   s   g | ]	}|j d vr|qS ))
whitespacecommentr?   r   r4   r
   r
   r   r      s    
z*_parse_comma_separated.<locals>.<listcomp>rQ   r   c                 s   s    | ]}|d kV  qdS ),Nr
   rT   r
   r
   r   rE      s    z)_parse_comma_separated.<locals>.<genexpr>N)r+   rK   )tokensr
   r
   r   r-      s   	,r-   rQ   z^{}$z$([\da-f])([\da-f])([\da-f])([\da-f])z0([\da-f]{2})([\da-f]{2})([\da-f]{2})([\da-f]{2})z([\da-f])([\da-f])([\da-f])z$([\da-f]{2})([\da-f]{2})([\da-f]{2}))black)r   r   r   silver)   r[   r[   gray   r_   r_   white)r   r   r   maroon)r_   r   r   r   )r   r   r   purple)r_   r   r_   fuchsiar   r   r   r   )r   r_   r   lime)r   r   r   olive)r_   r_   r   yellow)r   r   r   navy)r   r   r_   r   )r   r   r   teal)r   r_   r_   aquar   r   r   ))	aliceblue)      r   )antiquewhite)         rv   )
aquamarine)   r      )azure)rz   r   r   )beige)   r      )bisque)r         rW   )blanchedalmond)r   r~      rs   )
blueviolet)   +      )brown)   *   r   )	burlywood)         )	cadetblue)_         )
chartreuse)r   r   r   )	chocolate)   i      )coral)r   r   P   )cornflowerblue)rJ         )cornsilk)r   r{   r   )crimson)r      <   )cyanrx   )darkblue)r   r      )darkcyan)r   r   r   )darkgoldenrod)r         )darkgray   r   r   )	darkgreen)r   rJ   r   )darkgreyr   )	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   )darkslategreyr   )darkturquoise)r         )
darkviolet)   r      )deeppink)r   r      )deepskyblue)r      r   )dimgrayr   r   r   )dimgreyr   )
dodgerblue)r      r   )	firebrick)   "   r   )floralwhite)r   r}   rz   )forestgreen)r   r   r   rg   )	gainsboro)r   r   r   )
ghostwhite)r{   r{   r   )gold)r   r   r   )	goldenrod)   r       r\   rj   )greenyellow)   r   r   )greyr^   )honeydew)rz   r   rz   )hotpink)r   r      )	indianred)r   \   r   )indigo)K   r      )ivory)r   r   rz   )khaki)rz      r   )lavender)r   r   r}   )lavenderblush)r   rz   r   )	lawngreen)|      r   )lemonchiffon)r   r}   r   )	lightblue)r      r   )
lightcoral)rz   r_   r_   )	lightcyan)   r   r   )lightgoldenrodyellow)r}   r}   r   )	lightgrayr   r   r   )
lightgreen)r      r   )	lightgreyr  )	lightpink)r         )lightsalmon)r   r   r   )lightseagreen)r   r      )lightskyblue)r   r   r}   )lightslategrayw      r   )lightslategreyr  )lightsteelblue)   r   r   )lightyellow)r   r   r  rk   )	limegreen)r   r   r   )linen)r}   rz   r   )magentari   rb   )mediumaquamarine)f   r   r  )
mediumblue)r   r   r   )mediumorchid)   r   r   )mediumpurple)r   p      )mediumseagreen)r      q   )mediumslateblue){   h   r	  )mediumspringgreen)r   r}      )mediumturquoise)r   r   r   )mediumvioletred)         )midnightblue)   r3  r#  )	mintcream)r   r   r}   )	mistyrose)r   r      )moccasin)r   r      )navajowhite)r   r   r   rq   )oldlace)   r   r   rm   )	olivedrab)r      #   )orange)r   r   r   )	orangered)r   E   r   )orchid)r   r#     )palegoldenrod)r	     r  )	palegreen)      rG  )paleturquoise)   r	  r	  )palevioletred)r$  r#  r   )
papayawhip)r         )	peachpuff)r   r      )peru)r   r1  ?   )pink)r   r[      )plum)   r   rV  )
powderblue)r  r  r   re   rd   )	rosybrown)r   r   r   )	royalblue)A   r   r6  )saddlebrown)r   rA     )salmon)r}   r_   r   )
sandybrown)      `   )seagreen).   r   W   )seashell)r   r   r	  )sienna)r   R   -   rY   )skyblue)r   r   r~   )	slateblue)j   Z   r   )	slategrayr#  r_   r   )	slategreyro  )snow)r   r}   r}   )springgreen)r   r   r   )	steelblue)F   r   r   )tan)r   r   r   rt   )thistle)r  r   r  )tomato)r   c   G   )	turquoise)@   r     )violet)r	  r   r	  )wheat)r   r   r&  r`   )
whitesmoke)r   r   r   ro   )yellowgreen)r,  r   r   currentColorg        )currentcolortransparentc                 c   s8    | ]\}\}}}|t |d  |d  |d  dfV  qdS )g     o@r   N)r   )r   keywordrN   rO   rP   r
   r
   r   rE   N  s
    
rE   )collectionsrecolorsysr   parserr   
namedtupler   r:   r1   r0   r2   r-   compileformatIr6   r(   _BASIC_COLOR_KEYWORDS_EXTENDED_COLOR_KEYWORDS_SPECIAL_COLOR_KEYWORDScopyr%   updater
   r
   r
   r   <module>   s2    5	 
