Ë
    ¤ehù1  ã                  óŠ   — d Z ddlmZ ddlZddlmZmZ ddlZddlm	Z	 ddl
mZ er
ddlmZmZmZ dd„Zddd	„Z G d
„ d«      Zy)zN
Utilities for interpreting CSS from Stylers for formatting non-HTML outputs.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚCallable)Ú
CSSWarning)Úfind_stack_level)Ú	GeneratorÚIterableÚIteratorc                ó   ‡ — dˆ fd„}|S )a)  
    Wrapper to expand shorthand property into top, right, bottom, left properties

    Parameters
    ----------
    side : str
        The border side to expand into properties

    Returns
    -------
        function: Return to call when a 'border(-{side}): {value}' string is encountered
    c              3  ó@  •K  — |j                  «       }	 | j                  t        |«         }t        | j                  |«      D ]  \  }}‰j                  |«      ||   f–— Œ y# t        $ r. t	        j
                  d|› d|› d�t        t        «       ¬«       Y yw xY w­w)a<  
        Expand shorthand property into side-specific property (top, right, bottom, left)

        Parameters
        ----------
            prop (str): CSS property name
            value (str): String token for property

        Yields
        ------
            Tuple (str, str): Expanded property, value
        zCould not expand "z: ú"©Ú
stacklevelN)ÚsplitÚSIDE_SHORTHANDSÚlenÚKeyErrorÚwarningsÚwarnr   r   ÚzipÚSIDESÚformat)ÚselfÚpropÚvalueÚtokensÚmappingÚkeyÚidxÚprop_fmts          €úS/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/io/formats/css.pyÚexpandz_side_expander.<locals>.expand&   s¡   øè ø€ ð —‘“ˆð	Ø×*Ñ*¬3¨v«;Ñ7ˆGô ˜DŸJ™J¨Ó0ò 	4‰HˆC�Ø—/‘/ #Ó&¨¨s©Ð3Ó3ñ	4øô ò 	Ü�M‰MØ$ T F¨"¨U¨G°1Ð5ÜÜ+Ó-õñ
 ð	üs'   ƒB•A$ ­7BÁ$4BÂBÂBÂB©r   ÚstrÚreturnú&Generator[tuple[str, str], None, None]© )r    r"   s   ` r!   Ú_side_expanderr(      s   ø€ õ4ð4 €Mó    c                ó(   ‡ — ‰ dk7  rd‰ › �Š dˆ fd„}|S )a.  
    Wrapper to expand 'border' property into border color, style, and width properties

    Parameters
    ----------
    side : str
        The border side to expand into properties

    Returns
    -------
        function: Return to call when a 'border(-{side}): {value}' string is encountered
    Ú ú-c              3  óî  •‡K  — |j                  «       }t        |«      dk(  st        |«      dkD  r(t        j                  d|› d�t        t        «       ¬«       d‰› d�dd‰› d	�d
d‰› d�di}|D ]Y  Š‰j                  «       | j                  v r
‰|d‰› d	�<   Œ)t        ˆfd„| j                  D «       «      r
‰|d‰› d�<   ŒQ‰|d‰› d�<   Œ[ | j                  |j                  «       «      E d{  –—†  y7 Œ­w)aV  
        Expand border into color, style, and width tuples

        Parameters
        ----------
            prop : str
                CSS property name passed to styler
            value : str
                Value passed to styler for property

        Yields
        ------
            Tuple (str, str): Expanded property, value
        r   é   zToo many tokens provided to "z" (expected 1-3)r   Úborderz-colorÚblackz-styleÚnoneú-widthÚmediumc              3  óB   •K  — | ]  }|‰j                  «       v –— Œ y ­w©N)Úlower)Ú.0ÚratioÚtokens     €r!   ú	<genexpr>z3_border_expander.<locals>.expand.<locals>.<genexpr>s   s   øè ø€ ÒR°�U˜eŸk™k›mÔ+ÑRùs   ƒN)r   r   r   r   r   r   r6   ÚBORDER_STYLESÚanyÚBORDER_WIDTH_RATIOSÚatomizeÚitems)r   r   r   r   Úborder_declarationsr9   Úsides        @€r!   r"   z _border_expander.<locals>.expandS   s  ùè ø€ ð —‘“ˆÜˆv‹;˜!Òœs 6›{¨QšÜ�M‰MØ/°¨vÐ5EÐFÜÜ+Ó-õð �T�F˜&Ð! 7Ø�T�F˜&Ð! 6Ø�T�F˜&Ð! 8ð
Ðð
 ò 	CˆEØ�{‰{‹} × 2Ñ 2Ñ2Ø=BÐ# f¨T¨F°&Ð$9Ò:ÜÓR¸×9QÑ9QÔRÔRØ=BÐ# f¨T¨F°&Ð$9Ò:à=BÐ# f¨T¨F°&Ð$9Ò:ð	Cð —<‘<Ð 3× 9Ñ 9Ó ;Ó<×<Ò<ús   „C)C5Ã-C3Ã.C5r#   r'   )rA   r"   s   ` r!   Ú_border_expanderrB   C   s$   ø€ ð ˆr‚zØ�4�&ˆzˆõ'=ðR €Mr)   c                  óŠ  — e Zd ZdZddddddddd	d
ddœZej                  «       Zej                  ddddddddddddœ«       ej                  «       Zej                  ddi«       ej                  «       Z	e	j                  dddddœ«       g d¢Z
g d¢g d ¢g d!¢g d"¢d#œZd$Zi d%D � ��ci c]  }|rd&|› �nd't        |«      “Œ c}}} ¥d(D � ��ci c]  }d&|› �t        d)|› �«      “Œ c}}} ¥ ed*«       ed+«      d,œ¥Z	 d7	 	 	 	 	 d8d.„Z	 	 	 	 	 	 d9d/„Z	 	 	 	 	 	 d9d0„Zd:d1„Zd;d2„Zd<d3„Zd-efd=d4„Zd>d5„Zd?d6„Zy-c c}}} w c c}}} w )@ÚCSSResolverzH
    A callable for parsing and resolving CSS to atomic properties.
    )Úpté   )ÚemrF   )rE   é   )rG   ç      à?)rE   g      è?)rE   éH   )ÚingL&“Éd2Ù?)rK   g
…B¡P(¤?)Úmmg      Ð?)rG   r   )rE   rG   ÚremÚexÚpxÚpcrK   ÚcmrL   Úqú	!!default)rG   g{®Gáz„?)rM   rI   )rM   g      ä?)rM   gš™™™™™é?)rM   rF   )rM   g      ò?)rM   g      ø?)rM   é   )rG   g«ªªªªªê?)rG   g333333ó?)ú%zxx-smallzx-smallÚsmallr3   Úlargezx-largezxx-largeÚsmallerÚlargerrS   r1   )rE   r   )rO   é   )rO   rT   )rO   rF   )r1   Úthickr3   Úthin)r1   ÚhiddenÚdottedÚdashedÚsolidÚdoubleÚgrooveÚridgeÚinsetÚoutsetÚmediumdashdotÚ
dashdotdotÚhairÚmediumdashdotdotÚdashdotÚslantdashdotÚmediumdashed)r   r   r   r   )r   rF   r   rF   )r   rF   rT   rF   )r   rF   rT   r.   )rF   rT   r.   rZ   )ÚtopÚrightÚbottomÚleft)r+   rm   rn   ro   rp   úborder-r/   )ÚcolorÚstyleÚwidthzborder-{:s}-zmargin-{:s}zpadding-{:s})ÚmarginÚpaddingNc                óê   — t        |t        «      r| j                  |«      }t        | j	                  |«      «      }|€i }| j                  ||«      }| j                  ||«      }| j                  |«      S )a£  
        The given declarations to atomic properties.

        Parameters
        ----------
        declarations_str : str | Iterable[tuple[str, str]]
            A CSS string or set of CSS declaration tuples
            e.g. "font-weight: bold; background: blue" or
            {("font-weight", "bold"), ("background", "blue")}
        inherited : dict, optional
            Atomic properties indicating the inherited style context in which
            declarations_str is to be resolved. ``inherited`` should already
            be resolved, i.e. valid output of this method.

        Returns
        -------
        dict
            Atomic CSS 2.2 properties.

        Examples
        --------
        >>> resolve = CSSResolver()
        >>> inherited = {'font-family': 'serif', 'font-weight': 'bold'}
        >>> out = resolve('''
        ...               border-color: BLUE RED;
        ...               font-size: 1em;
        ...               font-size: 2em;
        ...               font-weight: normal;
        ...               font-weight: inherit;
        ...               ''', inherited)
        >>> sorted(out.items())  # doctest: +NORMALIZE_WHITESPACE
        [('border-bottom-color', 'blue'),
         ('border-left-color', 'red'),
         ('border-right-color', 'red'),
         ('border-top-color', 'blue'),
         ('font-family', 'serif'),
         ('font-size', '24pt'),
         ('font-weight', 'bold')]
        )Ú
isinstancer$   ÚparseÚdictr>   Ú_update_initialÚ_update_font_sizeÚ_update_other_units)r   ÚdeclarationsÚ	inheritedÚpropss       r!   Ú__call__zCSSResolver.__call__Ü   sp   € ôX �l¤CÔ(ØŸ:™: lÓ3ˆLÜ�T—\‘\ ,Ó/Ó0ˆØÐØˆIà×$Ñ$ U¨IÓ6ˆØ×&Ñ& u¨iÓ8ˆØ×'Ñ'¨Ó.Ð.r)   c                óâ   — |j                  «       D ]  \  }}||vsŒ|||<   Œ |j                  «       }|j                  «       D ])  \  }}|dk(  r|j                  |d«      }|dv r||= Œ%|||<   Œ+ |S )NÚinheritÚinitial)r„   N)r?   ÚcopyÚget)r   r€   r   r   ÚvalÚ	new_propss         r!   r{   zCSSResolver._update_initial  sŽ   € ð #Ÿ™Ó*ò 	"‰IˆD�#Ø˜5Ò Ø!��d’ð	"ð —J‘J“Lˆ	ØŸ™›ò 	&‰IˆD�#Ø�iÒØ—m‘m D¨)Ó4�àÐ'Ñ'à˜d‘Oà"%�	˜$’ð	&ð Ðr)   c                óŽ   — |j                  d«      r3| j                  |d   | j                  |«      | j                  ¬«      |d<   |S )Nú	font-size©Úconversions)r†   Ú
size_to_ptÚ_get_font_sizeÚFONT_SIZE_RATIOS)r   r€   r   s      r!   r|   zCSSResolver._update_font_size(  sN   € ð �9‰9�[Ô!Ø!%§¡Ø�kÑ"Ø×#Ñ# IÓ.Ø ×1Ñ1ð "1ó "ˆE�+Ñð
 ˆr)   c                óR   — |j                  d«      r|d   }| j                  |«      S y )NrŠ   )r†   Ú_get_float_font_size_from_pt)r   r€   Úfont_size_strings      r!   rŽ   zCSSResolver._get_font_size6  s.   € Ø�9‰9�[Ô!Ø$ [Ñ1ÐØ×4Ñ4Ð5EÓFÐFØr)   c                ó\   — |j                  d«      sJ ‚t        |j                  d«      «      S )NrE   )ÚendswithÚfloatÚrstrip)r   r’   s     r!   r‘   z(CSSResolver._get_float_font_size_from_pt<  s-   € Ø×(Ñ(¨Ô.Ð.Ð.ÜÐ%×,Ñ,¨TÓ2Ó3Ð3r)   c                ó  — | j                  |«      }| j                  D ]h  }d|› d�}||v r$| j                  ||   || j                  ¬«      ||<   d|› �d|› �fD ]+  }||v sŒ| j                  ||   || j                  ¬«      ||<   Œ- Œj |S )Nrq   r2   )Úem_ptrŒ   zmargin-zpadding-)rŽ   r   r�   r=   ÚMARGIN_RATIOS)r   r€   Ú	font_sizerA   r   s        r!   r}   zCSSResolver._update_other_units@  sÀ   € Ø×'Ñ'¨Ó.ˆ	à—J‘Jò 	ˆDØ˜T˜F &Ð)ˆDØ�u‰}Ø"Ÿo™oØ˜$‘KØ#Ø $× 8Ñ 8ð .ó ��d‘ð # 4 &Ð)¨X°d°VÐ+<Ð=ò �Ø˜5’=à"&§/¡/Ø˜d™Ø'Ø$(×$6Ñ$6ð #2ó #�E˜$’Kñð	ð" ˆr)   c                ó¶  ‡ ‡‡— ˆˆˆ fd„}t        j                  d‰«      }|€ |«       S |j                  «       \  }}|dk(  rd}n	 t        |«      }|dk7  r&|dk(  r|€d}n||z  }d}Œ	 ‰|   \  }}||z  }|dk7  rŒ&t        |d«      }t        |«      |k(  rt        |«      d	›d�}	|	S |d
›d�}	|	S # t        $ r
  |«       cY S w xY w# t
        $ r
  |«       cY S w xY w)Nc                 óŠ   •— t        j                  dt        ‰«      › �t        t	        «       ¬«       ‰j                  d‰ ¬«      S )NzUnhandled size: r   z
1!!defaultr‹   )r   r   Úreprr   r   r�   )rŒ   Úin_valr   s   €€€r!   Ú_errorz&CSSResolver.size_to_pt.<locals>._errorW  s;   ø€ Ü�M‰MØ"¤4¨£< .Ð1ÜÜ+Ó-õð
 —?‘? <¸[�?ÓIÐIr)   z^(\S*?)([a-zA-Z%!].*)r+   rF   rE   rG   rM   é   ÚdÚf)ÚreÚmatchÚgroupsr•   Ú
ValueErrorr   ÚroundÚint)
r   rž   r˜   rŒ   rŸ   r¤   r‡   ÚunitÚmulÚsize_fmts
   `` `      r!   r�   zCSSResolver.size_to_ptV  s  ú€ ö	Jô —‘Ð1°6Ó:ˆØˆ=Ù“8ˆOà—L‘L“N‰	ˆˆTØ�"Š9à‰Cð Ü˜C“j�ð �dŠlØ�tŠ|Ø�=Ø ‘Dà˜5‘L�CØ�DØð Ø'¨Ñ-‘	��cð �3‰JˆCð �d‹lô �C˜‹mˆÜˆs‹8�sŠ?Ü˜c›( 1˜ RÐ(ˆHð ˆð ˜a˜ �|ˆHØˆøô/ ò  Ù“x’ð ûô ò  Ù“x’ð ús$   ÁB/ Á)C Â/CÃCÃCÃCc              #  óÐ   K  — |D ][  \  }}|j                  «       }|j                  «       }|| j                  v r"| j                  |   } || ||«      E d {  –—†  ŒV||f–— Œ] y 7 Œ­wr5   )r6   ÚCSS_EXPANSIONS)r   r~   r   r   r"   s        r!   r>   zCSSResolver.atomizeƒ  sn   è ø€ Ø'ò 	"‰KˆD�%Ø—:‘:“<ˆDØ—K‘K“MˆEØ�t×*Ñ*Ñ*Ø×,Ñ,¨TÑ2�Ù! $¨¨eÓ4×4Ñ4à˜E�kÓ!ñ	"ð
 5ús   ‚AA&ÁA$ÁA&c              #  ón  K  — |j                  d«      D ]�  }|j                  «       sŒ|j                  d«      \  }}}|j                  «       j                  «       }|j                  «       j                  «       }|r||f–— Œnt	        j
                  dt        |«      › �t        t        «       ¬«       ŒŸ y­w)zÖ
        Generates (prop, value) pairs from declarations.

        In a future version may generate parsed tokens from tinycss/tinycss2

        Parameters
        ----------
        declarations_str : str
        ú;ú:z-Ill-formatted attribute: expected a colon in r   N)	r   ÚstripÚ	partitionr6   r   r   r�   r   r   )r   Údeclarations_strÚdeclr   Úsepr‡   s         r!   ry   zCSSResolver.parse�  s™   è ø€ ð %×*Ñ*¨3Ó/ò 	ˆDØ—:‘:”<ØØ!Ÿ^™^¨CÓ0‰NˆD�#�sØ—:‘:“<×%Ñ%Ó'ˆDà—)‘)“+×#Ñ#Ó%ˆCÙØ˜C�i“ä—‘ØCÄDÈÃJÀ<ÐPÜÜ/Ó1öñ	ùs   ‚B3B5r5   )r~   zstr | Iterable[tuple[str, str]]r   zdict[str, str] | Noner%   údict[str, str])r€   r¶   r   r¶   r%   r¶   )r€   r¶   r%   zfloat | None)r’   r$   r%   r•   )r€   r¶   r%   r¶   )r%   r$   )r~   r	   r%   r&   )r³   r$   r%   zIterator[tuple[str, str]])Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚUNIT_RATIOSr…   r�   Úupdater™   r=   r;   r   r   rB   r(   r­   r�   r{   r|   rŽ   r‘   r}   r�   r>   ry   )r7   r   rB   r(   s   0000r!   rD   rD      s  „ ñð
 ØØØàØØØØØØñ€Kð #×'Ñ'Ó)ÐØ×ÑàØ$Ø%Ø!Ø Ø#Ø#Ø"Ø&Ø!Ø"ñ	
ôð   ×$Ñ$Ó&€MØ×Ñ˜& )Ð,Ô-à%×*Ñ*Ó,ÐØ×ÑàØØØñ		
ôò€Mò* ÚÚÚñ	€Oð /€Eðð ?÷
ð 
àñ "&ˆw�t�fÑ¨8Ô6FÀtÓ6LÑLô
ðð 4÷
ð 
àð �d�VÐœn¨~¸d¸VÐ-DÓEÑEô
ðñ ! Ó/Ù! .Ó1ò€Nð  ,0ð4/à5ð4/ð )ð4/ð 
ó	4/ðlàðð "ðð 
ó	ð,àðð "ðð 
ó	óó4óð, (,¸ô +óZ"ôùô{
ùô
s   Â'D7
ÃD>
rD   )r    r$   r%   r   )r+   )rA   r$   r%   r   )rº   Ú
__future__r   r£   Útypingr   r   r   Úpandas.errorsr   Úpandas.util._exceptionsr   Úcollections.abcr   r	   r
   r(   rB   rD   r'   r)   r!   ú<module>rÂ      sG   ðñõ #ã 	÷ó å $Ý 4á÷ñ ó(ôV9÷xfò fr)   