§
    ªöÉgù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dS )zN
Utilities for interpreting CSS from Stylers for formatting non-HTML outputs.
é    )ÚannotationsN)ÚTYPE_CHECKINGÚCallable)Ú
CSSWarning)Úfind_stack_level)Ú	GeneratorÚIterableÚIteratorÚprop_fmtÚstrÚreturnr   c                ó   ‡ — 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
    Úvaluer   r   ú&Generator[tuple[str, str], None, None]c              3  ó`  •K  — |                      ¦   «         }	 | j        t          |¦  «                 }n@# t          $ r3 t	          j        d|› d|› d�t          t          ¦   «         ¬¦  «         Y dS w xY wt          | j	        |¦  «        D ]$\  }}‰ 
                    |¦  «        ||         fV — Œ%dS )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Úpropr   ÚtokensÚmappingÚkeyÚidxr   s          €úa/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/pandas/io/formats/css.pyÚexpandz_side_expander.<locals>.expand&   sÞ   øè è € ð —’‘”ˆð	ØÔ*­3¨v©;¬;Ô7ˆGˆGøÝð 	ð 	ð 	ÝŒMØ5 TÐ5Ð5¨UÐ5Ð5Ð5ÝÝ+Ñ-Ô-ðñ ô ð ð
 ˆFˆFð	øøøõ ˜DœJ¨Ñ0Ô0ð 	4ð 	4‰HˆC�Ø—/’/ #Ñ&Ô&¨¨s¬Ð3Ð3Ð3Ð3Ð3ð	4ð 	4s   ™4 ´9A1Á0A1©r   r   r   r   © )r   r%   s   ` r$   Ú_side_expanderr(      s(   ø€ ð4ð 4ð 4ð 4ð 4ð 4ð4 €Mó    Ú Úsidec                ó*   ‡ — ‰ dk    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
    r*   ú-r   r   r   r   c              3  ó  •‡K  — |                      ¦   «         }t          |¦  «        dk    st          |¦  «        dk    r,t          j        d|› d�t          t          ¦   «         ¬¦  «         d‰› d�dd‰› d	�d
d‰› d�di}|D ]ZŠ‰                     ¦   «         | j        v r
‰|d‰› d	�<   Œ't          ˆfd„| j	        D ¦   «         ¦  «        r
‰|d‰› d�<   ŒQ‰|d‰› d�<   Œ[|  
                    |                     ¦   «         ¦  «        E d{V —† dS )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  óD   •K  — | ]}|‰                      ¦   «         v V — Œd S ©N)Úlower)Ú.0ÚratioÚtokens     €r$   ú	<genexpr>z3_border_expander.<locals>.expand.<locals>.<genexpr>s   s0   øè è € ÐRÐR°�U˜eŸkšk™mœmÐ+ÐRÐRÐRÐRÐRÐRr)   N)r   r   r   r   r   r   r7   ÚBORDER_STYLESÚanyÚBORDER_WIDTH_RATIOSÚatomizeÚitems)r   r   r   r    Úborder_declarationsr:   r+   s        @€r$   r%   z _border_expander.<locals>.expandS   s|  øøè è € ð —’‘”ˆÝˆv‰;Œ;˜!ÒÐ�s 6™{œ{¨Qš˜ÝŒMØF°ÐFÐFÐFÝÝ+Ñ-Ô-ðñ ô ð ð "�TÐ!Ð!Ð! 7Ø!�TÐ!Ð!Ð! 6Ø!�TÐ!Ð!Ð! 8ð
Ðð
 ð 	Cð 	CˆEØ�{Š{‰}Œ} Ô 2Ð2Ð2Ø=BÐ#Ð$9¨TÐ$9Ð$9Ð$9Ñ:Ð:ÝÐRÐRÐRÐR¸Ô9QÐRÑRÔRÑRÔRð CØ=BÐ#Ð$9¨TÐ$9Ð$9Ð$9Ñ:Ð:à=BÐ#Ð$9¨TÐ$9Ð$9Ð$9Ñ:Ð:ð —<’<Ð 3× 9Ò 9Ñ ;Ô ;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<r)   r&   r'   )r+   r%   s   ` r$   Ú_border_expanderrB   C   s?   ø€ ð ˆr‚z€zØ�4ˆzˆzˆð'=ð '=ð '=ð '=ð '=ð '=ðR €Mr)   c                  ó(  — e Zd ZdZddddddddd	d
ddœZe                     ¦   «         Ze                     ddddddddddddœ¦  «         e                     ¦   «         Ze                     ddi¦  «         e                     ¦   «         Z	e	                     dddddœ¦  «         g d¢Z
g d¢g d ¢g d!¢g d"¢d#œZd$Zi d%„ d&D ¦   «         ¥d'„ d(D ¦   «         ¥ ed)¦  «         ed*¦  «        d+œ¥Z	 dEdFd3„ZdGd5„ZdGd6„ZdHd8„ZdId<„ZdJd=„Zd,efdKd>„ZdLdA„ZdMdD„Zd,S )NÚ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Úsmallr4   Úlargezx-largezxx-largeÚsmallerÚlargerrS   r2   )rE   r   )rO   é   )rO   rT   )rO   rF   )r2   Úthickr4   Úthin)r2   Ú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Úleftc                ó<   — i | ]}|rd |› �ndt          |¦  «        “ŒS )úborder-r0   )rB   ©r8   r   s     r$   ú
<dictcomp>zCSSResolver.<dictcomp>Ð   sF   € ð 
ð 
ð 
àð "&Ð3Ð�tÐÐÐ¨8Õ6FÀtÑ6LÔ6Lð
ð 
ð 
r)   )r*   rm   rn   ro   rp   c                ó:   — i | ]}d |› �t          d|› �¦  «        “ŒS )rr   zborder-{:s}-)r(   rs   s     r$   rt   zCSSResolver.<dictcomp>Ô   sC   € ð 
ð 
ð 
àð �dÐÐ�nÐ-D¸dÐ-DÐ-DÑEÔEð
ð 
ð 
r)   )ÚcolorÚstyleÚwidthzmargin-{:s}zpadding-{:s})ÚmarginÚpaddingNÚdeclarationsústr | Iterable[tuple[str, str]]Ú	inheritedúdict[str, str] | Noner   údict[str, str]c                ó$  — t          |t          ¦  «        r|                      |¦  «        }t          |                      |¦  «        ¦  «        }|€i }|                      ||¦  «        }|                      ||¦  «        }|                      |¦  «        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   r{   r}   Úpropss       r$   Ú__call__zCSSResolver.__call__Ü   sŠ   € õX �l¥CÑ(Ô(ð 	4ØŸ:š: lÑ3Ô3ˆLÝ�T—\’\ ,Ñ/Ô/Ñ0Ô0ˆØÐØˆIà×$Ò$ U¨IÑ6Ô6ˆØ×&Ò& u¨iÑ8Ô8ˆØ×'Ò'¨Ñ.Ô.Ð.r)   r‡   c                óú   — |                      ¦   «         D ]\  }}||vr|||<   Œ|                     ¦   «         }|                      ¦   «         D ].\  }}|dk    r|                     |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”Lˆ	ØŸš™œð 	&ð 	&‰IˆD�#Ø�iÒÐØ—m’m D¨)Ñ4Ô4�àÐ'Ð'Ð'à˜d�O�Oà"%�	˜$‘�ØÐr)   c                ó¢   — |                      d¦  «        r9|                      |d         |                      |¦  «        | 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(  s[   € ð �9Š9�[Ñ!Ô!ð 	Ø!%§¢Ø�kÔ"Ø×#Ò# IÑ.Ô.Ø Ô1ð "1ñ "ô "ˆE�+Ñð
 ˆr)   úfloat | Nonec                ój   — |                      d¦  «        r|d         }|                      |¦  «        S d S )Nr‘   )r�   Ú_get_float_font_size_from_pt)r   r‡   Úfont_size_strings      r$   r•   zCSSResolver._get_font_size6  s<   € Ø�9Š9�[Ñ!Ô!ð 	GØ$ [Ô1ÐØ×4Ò4Ð5EÑFÔFÐFØˆtr)   rš   r   Úfloatc                ót   — |                      d¦  «        sJ ‚t          |                     d¦  «        ¦  «        S )NrE   )Úendswithr›   Úrstrip)r   rš   s     r$   r™   z(CSSResolver._get_float_font_size_from_pt<  s9   € Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ÝÐ%×,Ò,¨TÑ2Ô2Ñ3Ô3Ð3r)   c                ó  — |                       |¦  «        }| j        D ]i}d|› d�}||v r&|                      ||         || j        ¬¦  «        ||<   d|› �d|› �fD ],}||v r&|                      ||         || j        ¬¦  «        ||<   Œ-Œj|S )Nrr   r3   )Úem_ptr“   zmargin-zpadding-)r•   r   r”   r>   ÚMARGIN_RATIOS)r   r‡   Ú	font_sizer+   r   s        r$   r†   zCSSResolver._update_other_units@  sÔ   € Ø×'Ò'¨Ñ.Ô.ˆ	à”Jð 	ð 	ˆDØ)˜TÐ)Ð)Ð)ˆDØ�uˆ}ˆ}Ø"ŸošoØ˜$”KØ#Ø $Ô 8ð .ñ ô ��d‘ð * 4Ð)Ð)Ð+<°dÐ+<Ð+<Ð=ð ð �Ø˜5�=�=à"&§/¢/Ø˜dœØ'Ø$(Ô$6ð #2ñ #ô #�E˜$‘Køðð ˆr)   c                ó  ‡ ‡‡— ˆˆˆ fd„}t          j        d‰¦  «        }|€
 |¦   «         S |                     ¦   «         \  }}|dk    rd}n+	 t          |¦  «        }n# t          $ r  |¦   «         cY S w xY w|dk    rE|dk    r|€d}n||z  }d}Œ	 ‰|         \  }}n# t
          $ r  |¦   «         cY S w xY w||z  }|dk    °Et          |d¦  «        }t          |¦  «        |k    rt          |¦  «        d	›d�}	n|d
›d�}	|	S )Nc                 ó¢   •— t          j        dt          ‰¦  «        › �t          t	          ¦   «         ¬¦  «         ‰                     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  sQ   ø€ ÝŒMØ1¥4¨¡<¤<Ð1Ð1ÝÝ+Ñ-Ô-ðñ ô ð ð
 —?’? <¸[�?ÑIÔ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ð 	Jð 	Jð 	Jð 	Jð 	Jð 	Jõ ”Ð1°6Ñ:Ô:ˆØˆ=Ø�6‘8”8ˆOà—L’L‘N”N‰	ˆˆTØ�"Š9ˆ9àˆCˆCð Ý˜C‘j”j��øÝð  ð  ð  Ø�v‘x”x���ð øøøð �dŠlˆlØ�tŠ|ˆ|Ø�=Ø �D�Dà˜5‘L�CØ�DØð Ø'¨Ô-‘	��c�cøÝð  ð  ð  Ø�v‘x”x���ð øøøà�3‰JˆCð �dŠlˆlõ �C˜‰mŒmˆÝˆs‰8Œ8�sŠ?ˆ?Ý˜c™(œ(Ð(Ð(Ð(Ð(ˆHˆHà�|�|�|�|ˆHØˆs$   ÁA ÁA4Á3A4ÂB ÂB4Â3B4r	   r   c              #  óÊ   K  — |D ]]\  }}|                      ¦   «         }|                      ¦   «         }|| j        v r!| j        |         } || ||¦  «        E d {V —† ŒW||fV — Œ^d S r6   )r7   ÚCSS_EXPANSIONS)r   r{   r   r   r%   s        r$   r?   zCSSResolver.atomizeƒ  s”   è è € Ø'ð 	"ð 	"‰KˆD�%Ø—:’:‘<”<ˆDØ—K’K‘M”MˆEØ�tÔ*Ð*Ð*ØÔ,¨TÔ2�Ø!˜6 $¨¨eÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4à˜E�kÐ!Ð!Ð!Ð!ð	"ð 	"r)   Údeclarations_strúIterator[tuple[str, str]]c              #  ó°  K  — |                      d¦  «        D ]½}|                     ¦   «         sŒ|                     d¦  «        \  }}}|                     ¦   «                              ¦   «         }|                     ¦   «                              ¦   «         }|r||fV — Œ…t	          j        dt          |¦  «        › �t          t          ¦   «         ¬¦  «         Œ¾dS )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Ú	partitionr7   r   r   r¥   r   r   )r   r¶   Údeclr   ÚseprŽ   s         r$   r‚   zCSSResolver.parse�  sÝ   è è € ð %×*Ò*¨3Ñ/Ô/ð 	ð 	ˆDØ—:’:‘<”<ð ØØ!Ÿ^š^¨CÑ0Ô0‰NˆD�#�sØ—:’:‘<”<×%Ò%Ñ'Ô'ˆDà—)’)‘+”+×#Ò#Ñ%Ô%ˆCØð Ø˜C�i����å”ØPÅDÈÁJÄJÐPÐPÝÝ/Ñ1Ô1ðñ ô ð ð ð	ð 	r)   r6   )r{   r|   r}   r~   r   r   )r‡   r   r}   r   r   r   )r‡   r   r   r—   )rš   r   r   r›   )r‡   r   r   r   )r   r   )r{   r	   r   r   )r¶   r   r   r·   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚUNIT_RATIOSrŒ   r–   Úupdater¡   r>   r<   r   r   r(   rµ   rˆ   r„   r…   r•   r™   r†   r”   r?   r‚   r'   r)   r$   rD   rD      s’  € € € € € ðð ð
 ØØØàØØØØØØðð €Kð #×'Ò'Ñ)Ô)ÐØ×ÒàØ$Ø%Ø!Ø Ø#Ø#Ø"Ø&Ø!Ø"ð	
ð 	
ñô ð ð   ×$Ò$Ñ&Ô&€MØ×Ò˜& )Ð,Ñ-Ô-Ð-à%×*Ò*Ñ,Ô,ÐØ×ÒàØØØð		
ð 	
ñô ð ðð ð €Mð* ˆ<ˆ<Øˆ<ˆ<Øˆ<ˆ<Øˆ<ˆ<ð	ð €Oð /€Eðð
ð 
à>ð
ñ 
ô 
ðð

ð 
à3ð
ñ 
ô 
ðð !�. Ñ/Ô/Ø!�> .Ñ1Ô1ðð ð €Nð  ,0ð4/ð 4/ð 4/ð 4/ð 4/ðlð ð ð ð,ð ð ð ðð ð ð ð4ð 4ð 4ð 4ðð ð ð ð, (,¸ð +ð +ð +ð +ð +ðZ"ð "ð "ð "ðð ð ð ð ð r)   rD   )r   r   r   r   )r*   )r+   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Ê      s(  ððð ð #Ð "Ð "Ð "Ð "Ð "à 	€	€	€	ðð ð ð ð ð ð ð ð €€€à $Ð $Ð $Ð $Ð $Ð $Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4àð ðð ð ð ð ð ð ð ð ð ð(ð (ð (ð (ðV9ð 9ð 9ð 9ð 9ðxfð fð fð fð fñ fô fð fð fð fr)   