a
    ZXh+                  	   @   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
   T/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/tinycss2/color3.pyr      s   r   )redgreenbluealphac                    sP  t | trt| dd}n| }|jdkr2t|jS |jdkrtD ]N\ }||j}|r@ fdd|	 D }t
|dkr|d t|   S q@n|jd	krLt|j}|rL|j}|d
krt|ddS |dkr t|dd }|durLt|dd |S nL|dkrt|ddS |dkrLt|dd }|durLt|d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)Zskip_commentsidenthashc                    s   g | ]}t |  d d qS )      )int).0groupZ
multiplierr
   r   
<listcomp>=   s   zparse_color.<locals>.<listcomp>         ?functionZrgb)r   ZrgbaNZhslZhsla)
isinstancestrr   type_COLOR_KEYWORDSgetZlower_value_HASH_REGEXPSvaluegroupslenappendr   _parse_comma_separated	argumentsZ
lower_name
_parse_rgb_parse_alpha
_parse_hsl)inputtokenregexpmatchZchannelsargsnamer   r
   r   r   parse_color    s>    











r1   c                 C   s4   t | dkr0| d jdkr0tdtd| d j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"   )r/   r
   r
   r   r)   U   s    r)   c                 C   s   dd | D }|g dkrVt dd | D rVdd | dd D \}}}t||||S |g d	krd
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   s   g | ]
}|j qS r
   r   r   argr
   r
   r   r   g       z_parse_rgb.<locals>.<listcomp>)r2   r2   r2   c                 s   s   | ]}|j V  qd S )N)
is_integer)r   ar
   r
   r   	<genexpr>i   r8   z_parse_rgb.<locals>.<genexpr>c                 S   s   g | ]}|j d  qS )r   )Z	int_valuer6   r
   r
   r   r   j   r8   Nr   )
percentager<   r<   c                 S   s   g | ]}|j d  qS )d   )r"   r6   r
   r
   r   r   m   r8   )allr   r/   r   typesrgbr
   r
   r   r(   `   s    r(   c                 C   s\   dd | D }|g dkrXt | 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   s   g | ]
}|j qS r
   r5   r6   r
   r
   r   r   x   r8   z_parse_hsl.<locals>.<listcomp>)r2   r<   r<   r   ih     r=   r   N)r   r"   r   r?   r
   r
   r   r*   q   s    $
r*   c                 C   sT   dd | D } | sg S t | d dkrPtdd | ddd D rP| dd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commentr5   r   r,   r
   r
   r   r      s   
z*_parse_comma_separated.<locals>.<listcomp>rD   r   c                 s   s   | ]}|d kV  qdS ),Nr
   rG   r
   r
   r   r;      r8   z)_parse_comma_separated.<locals>.<genexpr>N)r$   r>   )tokensr
   r
   r   r&      s
    	,r&   rD   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}))Zblack)r   r   r   Zsilver)   rL   rL   Zgray   rO   rO   Zwhite)r   r   r   Zmaroon)rO   r   r   r   )r   r   r   Zpurple)rO   r   rO   Zfuchsiar   r   r   r   )r   rO   r   Zlime)r   r   r   Zolive)rO   rO   r   Zyellow)r   r   r   Znavy)r   r   rO   r   )r   r   r   Zteal)r   rO   rO   Zaquar   r   r   ))Z	aliceblue)      r   )Zantiquewhite)         r]   )Z
aquamarine)   r      )Zazure)r_   r   r   )Zbeige)   rf      )Zbisque)r         rJ   )Zblanchedalmond)r   rb      r[   )Z
blueviolet)   +      )Zbrown)   *   ro   )Z	burlywood)         )Z	cadetblue)_         )Z
chartreuse)rd   r   r   )Z	chocolate)   i      )Zcoral)r   rd   P   )Zcornflowerblue)r=         )Zcornsilk)r   r`   rg   )Zcrimson)rg      <   )Zcyanr^   )Zdarkblue)r   r      )Zdarkcyan)r   r~   r~   )Zdarkgoldenrod)rq         )Zdarkgray   r   r   )Z	darkgreen)r   r=   r   )Zdarkgreyr   )Z	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darkslategreyr   )Zdarkturquoise)r         )Z
darkviolet)   r      )Zdeeppink)r   r|      )Zdeepskyblue)r      r   )Zdimgrayrw   rw   rw   )Zdimgreyr   )Z
dodgerblue)rx      r   )Z	firebrick)   "   r   )Zfloralwhite)r   ra   r_   )Zforestgreen)r   r~   r   rT   )Z	gainsboro)rg   rg   rg   )Z
ghostwhite)r`   r`   r   )Zgold)r   rc   r   )Z	goldenrod)   rn       rM   rV   )Zgreenyellow)   r   r   )ZgreyrN   )Zhoneydew)r_   r   r_   )Zhotpink)r   rw      )Z	indianred)rj   \   r   )Zindigo)K   r      )Zivory)r   r   r_   )Zkhaki)r_      r   )Zlavender)r   r   ra   )Zlavenderblush)r   r_   rf   )Z	lawngreen)|      r   )Zlemonchiffon)r   ra   rj   )Z	lightblue)r      r   )Z
lightcoral)r_   rO   rO   )Z	lightcyan)   r   r   )Zlightgoldenrodyellow)ra   ra   rv   )Z	lightgrayr   r   r   )Z
lightgreen)r      r   )Z	lightgreyr   )Z	lightpink)r         )Zlightsalmon)r   ru   r   )Zlightseagreen)r   r      )Zlightskyblue)rr   r   ra   )Zlightslategrayw      r   )Zlightslategreyr   )Zlightsteelblue)   ri   rp   )Zlightyellow)r   r   r   rW   )Z	limegreen)r   rj   r   )Zlinen)ra   r_   r   )ZmagentarU   rQ   )Zmediumaquamarine)f   rj   r   )Z
mediumblue)r   r   rj   )Zmediumorchid)   r   r   )Zmediumpurple)r   p      )Zmediumseagreen)r}      q   )Zmediumslateblue){   h   r   )Zmediumspringgreen)r   ra      )Zmediumturquoise)r   r   r   )Zmediumvioletred)         )Zmidnightblue)   r   r   )Z	mintcream)rf   r   ra   )Z	mistyrose)r   rh      )Zmoccasin)r   rh      )Znavajowhite)r   rp   r   rZ   )Zoldlace)   rf   r   rX   )Z	olivedrab)r      #   )Zorange)r   rn   r   )Z	orangered)r   E   r   )Z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      )Zperu)rj   r   ?   )Zpink)r   rL      )Zplum)   ru   r   )Z
powderblue)r   r   r   rS   rR   )Z	rosybrown)r   r   r   )Z	royalblue)A   rw   r   )Zsaddlebrown)r~   r      )Zsalmon)ra   rO   r   )Z
sandybrown)      `   )Zseagreen).   r~   W   )Zseashell)r   rf   r   )Zsienna)ru   R   -   rK   )Zskyblue)rr   r   rb   )Z	slateblue)j   Z   rj   )Z	slategrayr   rO   r   )Z	slategreyr   )Zsnow)r   ra   ra   )Zspringgreen)r   r   rd   )Z	steelblue)F   r   r   )tan)rv   r   r   r\   )Zthistle)r   r   r   )Ztomato)r   c   G   )Z	turquoise)@   r      )Zviolet)r   r   r   )Zwheat)rf   rp   r   rP   )Z
whitesmoke)rf   rf   rf   rY   )Zyellowgreen)r   rj   r   ZcurrentColorg        )ZcurrentcolorZtransparentc                 c   s6   | ].\}\}}}|t |d  |d  |d  dfV  qdS )g     o@r   N)r   )r   keywordrA   rB   rC   r
   r
   r   r;   N  s   r;   )collectionsreZcolorsysr   parserr   
namedtupler   r1   r)   r(   r*   r&   compileformatIr.   r!   Z_BASIC_COLOR_KEYWORDSZ_EXTENDED_COLOR_KEYWORDSZ_SPECIAL_COLOR_KEYWORDScopyr   updater
   r
   r
   r   <module>   s0   5	 
