U
    Ëøïc®+  ã                “   @   sZ  d dl Z d dlZd dlmZ ddlmZ G dd„ de  dddd	d
g¡ƒ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dddddd d!d"d#d$d%d&d'd(d)d*gZd+d,d*d-d.d/d0dd1d(d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWd"dXdYdZd[dd#d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvd$dwdxdyddzd{d|d}d~dd€dd‚dƒd„d…d†d‡d'dˆd%d‰dŠd‹dŒddŽddd‘d’d“d”d•d–d!d d—d˜d™dšd›dœddžddŸd d¡d¢d£d¤d¥d¦d)d§d¨d©dªd«dd¬d&d­g“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
   ú3/tmp/pip-unpacked-wheel-7m2lthj9/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r’t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rÈt|ddS |dkr t|dd… ƒ}|dk	rLt|dd… |ƒS nL|dkrt|ddS |dkrLt|dd… ƒ}|dk	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 )zªParse 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)   T   s    r)   c                 C   s”   dd„ | D ƒ}|dddgkrXt dd„ | D ƒƒrXdd„ | dd… D ƒ\}}}t||||ƒS |d	d	d	gkrd
d„ | dd… D ƒ\}}}t||||ƒS dS )z´Parse 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   f   s     z_parse_rgb.<locals>.<listcomp>r2   c                 s   s   | ]}|j V  qd S )N)Ú
is_integer)r   Úar
   r
   r   Ú	<genexpr>h   s     z_parse_rgb.<locals>.<genexpr>c                 S   s   g | ]}|j d  ‘qS )r   )Ú	int_valuer6   r
   r
   r   r   i   s     Nr   Ú
percentagec                 S   s   g | ]}|j d  ‘qS )éd   )r"   r6   r
   r
   r   r   l   s     )Úallr   ©r/   r   ÚtypesÚrÚgÚbr
   r
   r   r(   _   s    ÿr(   c                 C   sh   dd„ | D ƒ}|dddgkrd| d j rdt| d jd | d jd | d	 jd ƒ\}}}t||||ƒS d
S )z´Parse a list of HSL channels.

    If args is a list of 1 INTEGER 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   w   s     z_parse_hsl.<locals>.<listcomp>r2   r<   r   ih  é   r=   r   N)r8   r   r;   r"   r   r?   r
   r
   r   r*   p   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 k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:   ‹   s     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)éÀ   rJ   rJ   )Zgray©é€   rL   rL   )Zwhite)r   r   r   )Zmaroon)rL   r   r   )r   )r   r   r   )Zpurple)rL   r   rL   )Zfuchsia©r   r   r   )r   )r   rL   r   )Zlime)r   r   r   )Zolive)rL   rL   r   )Zyellow)r   r   r   )Znavy)r   r   rL   )r   )r   r   r   )Zteal)r   rL   rL   )Zaqua©r   r   r   )Z	aliceblue)éð   éø   r   )Zantiquewhite)éú   éë   é×   )Z
aquamarine)é   r   éÔ   )Zazure)rO   r   r   )Zbeige)éõ   rV   éÜ   )Zbisque)r   éä   éÄ   )Zblanchedalmond)r   rR   éÍ   )Z
blueviolet)éŠ   é+   éâ   )Zbrown)é¥   é*   r_   )Z	burlywood)éÞ   é¸   é‡   )Z	cadetblue)é_   éž   é    )Z
chartreuse)rT   r   r   )Z	chocolate)éÒ   éi   é   )Zcoral)r   rT   éP   )Zcornflowerblue)r=   é•   éí   )Zcornsilk)r   rP   rW   )Zcrimson)rW   é   é<   )ZcyanrN   )Zdarkblue)r   r   é‹   )Zdarkcyan)r   rn   rn   )Zdarkgoldenrod)ra   é†   é   )Zdarkgray©é©   rr   rr   )Z	darkgreen)r   r=   r   )Zdarkgreyrq   )Z	darkkhaki)é½   é·   ék   )Zdarkmagenta)rn   r   rn   )Zdarkolivegreen)éU   ru   é/   )Z
darkorange)r   éŒ   r   )Z
darkorchid)é™   é2   éÌ   )Zdarkred)rn   r   r   )Z
darksalmon)éé   é–   éz   )Zdarkseagreen)é   é¼   r   )Zdarkslateblue)éH   é=   rn   )Zdarkslategray©rw   éO   r„   )Zdarkslategreyrƒ   )Zdarkturquoise)r   éÎ   éÑ   )Z
darkviolet)é”   r   éÓ   )Zdeeppink)r   rl   é“   )Zdeepskyblue)r   é¿   r   )Zdimgray©rg   rg   rg   )Zdimgreyr‹   )Z
dodgerblue)rh   é   r   )Z	firebrick)é²   é"   rŽ   )Zfloralwhite)r   rQ   rO   )Zforestgreen)rŽ   rn   rŽ   )Z	gainsboro)rW   rW   rW   )Z
ghostwhite)rP   rP   r   )Zgold)r   rS   r   )Z	goldenrod)éÚ   r^   é    )Zgreenyellow)é­   r   rw   )ZgreyrK   )Zhoneydew)rO   r   rO   )Zhotpink)r   rg   é´   )Z	indianred)rZ   é\   r“   )Zindigo)éK   r   é‚   )Zivory)r   r   rO   )Zkhaki)rO   éæ   rx   )Zlavender)r–   r–   rQ   )Zlavenderblush)r   rO   rV   )Z	lawngreen)é|   éü   r   )Zlemonchiffon)r   rQ   rZ   )Z	lightblue)r‘   éØ   r–   )Z
lightcoral)rO   rL   rL   )Z	lightcyan)éà   r   r   )Zlightgoldenrodyellow)rQ   rQ   rf   )Z	lightgray©rˆ   rˆ   rˆ   )Z
lightgreen)rŒ   éî   rŒ   )Z	lightgreyr›   )Z	lightpink)r   é¶   éÁ   )Zlightsalmon)r   re   r~   )Zlightseagreen)r   r   éª   )Zlightskyblue)rb   r…   rQ   )Zlightslategray©éw   éˆ   ry   )Zlightslategreyr    )Zlightsteelblue)é°   rY   r`   )Zlightyellow)r   r   rš   )Z	limegreen)rz   rZ   rz   )Zlinen)rQ   rO   r–   )ZmagentarM   )Zmediumaquamarine)éf   rZ   rŸ   )Z
mediumblue)r   r   rZ   )Zmediumorchid)éº   rv   rˆ   )Zmediumpurple)r‰   ép   éÛ   )Zmediumseagreen)rm   é³   éq   )Zmediumslateblue)é{   éh   rœ   )Zmediumspringgreen)r   rQ   éš   )Zmediumturquoise)r   r†   r{   )Zmediumvioletred)éÇ   é   é…   )Zmidnightblue)é   r°   r¦   )Z	mintcream)rV   r   rQ   )Z	mistyrose)r   rX   éá   )Zmoccasin)r   rX   éµ   )Znavajowhite)r   r`   r‘   )Zoldlace)éý   rV   r–   )Z	olivedrab)ru   éŽ   é#   )Zorange)r   r^   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)rZ   r¯   é?   )Zpink)r   rJ   éË   )Zplum)éÝ   re   rÁ   )Z
powderblue)r£   rš   r–   )Z	rosybrown)r€   r   r   )Z	royalblue)éA   rg   r±   )Zsaddlebrown)rn   r¶   é   )Zsalmon)rQ   rL   ér   )Z
sandybrown)éô   é¤   é`   )Zseagreen)é.   rn   éW   )Zseashell)r   rV   rœ   )Zsienna)re   éR   é-   )Zskyblue)rb   r…   rR   )Z	slateblue)éj   éZ   rZ   )Z	slategray©r¦   rL   rŒ   )Z	slategreyrÎ   )Zsnow)r   rQ   rQ   )Zspringgreen)r   r   rT   )Z	steelblue)éF   r•   r’   )Útan)rf   r’   rx   )Zthistle)r™   rŠ   r™   )Ztomato)r   éc   éG   )Z	turquoise)é@   rš   éÐ   )Zviolet)rœ   r•   rœ   )Zwheat)rV   r`   r¨   )Z
whitesmoke)rV   rV   rV   )Zyellowgreen)r¬   rZ   rz   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:   M  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>   sx   4ü
ð€ í þ
ý