Ë
    u™ãjd6  ã                  ó¢   — d Z ddlmZ ddlZddl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mZ 	 	 	 	 dd„Z	 d	 	 	 dd	„Zdd
„Z G d„ d«      Zy)zN
Utilities for interpreting CSS from Stylers for formatting non-HTML outputs.
é    )ÚannotationsN)ÚTYPE_CHECKING)Ú
CSSWarning)Úfind_stack_level)ÚCallableÚ	GeneratorÚIterableÚIteratorc                ó   ‡ — dˆ fd„}|S )am  
    Wrapper to expand shorthand property into top, right, bottom, left properties

    Parameters
    ----------
    prop_fmt : str
        Format string for the expanded property, with a placeholder for the
        side, e.g. ``"margin-{:s}"``.

    Returns
    -------
        function: Return to call when a 'border(-{side}): {value}' string is encountered
    c              3  óD  •K  — |j                  «       }	 | j                  t        |«         }t        | j                  |d¬«      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: ú"©Ú
stacklevelNT)Ústrict)ÚsplitÚSIDE_SHORTHANDSÚlenÚKeyErrorÚwarningsÚwarnr   r   ÚzipÚSIDESÚformat)ÚselfÚpropÚvalueÚtokensÚmappingÚkeyÚidxÚprop_fmts          €ú`/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/io/formats/css.pyÚexpandz_side_expander.<locals>.expand(   s£   øè ø€ ð —‘“ˆð	Ø×*Ñ*¬3¨v«;Ñ7ˆGô ˜DŸJ™J¨¸Ô=ò 	4‰HˆC�Ø—/‘/ #Ó&¨¨s©Ð3Ó3ñ	4øô ò 	Ü�M‰MØ$ T F¨"¨U¨G°1Ð5ÜÜ+Ó-õñ
 ð	üs'   ƒB •A& ­9B Á&4BÂB ÂBÂB ©r   ÚCSSResolverr   Ústrr   r&   ÚreturnúGenerator[tuple[str, str]]© )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>w   s   øè ø€ ÒR°�U˜eŸk™k›mÔ+ÑRùs   ƒN)r   r   r   r   r   r   r8   ÚBORDER_STYLESÚanyÚBORDER_WIDTH_RATIOSÚatomizeÚitems)r   r   r   r   Úborder_declarationsr;   Úsides        @€r"   r#   z _border_expander.<locals>.expandW   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)   )rC   r#   s   ` r"   Ú_border_expanderrD   E   s$   ø€ ð ˆr‚zØ�4�&ˆzˆõ'=ðR €Mr+   c                óL  — t        j                  d| «      }g }|D ]w  }|j                  d«      r|j                  d«      s"|j                  d«      r#|j                  d«      r|j	                  |«       ŒY|j	                  |j                  «       «       Œy dj                  |«      S )a¬  
    Preserves the case for all characters within single or double-quoted strings,
    but lowercases everything else.

    Intended to lowercase CSS properties and preserve string literals
    (e.g. in Excel number formats).
    Parameters
    ----------
    value: str
        The CSS value string to process.

    Returns
    -------
    str
        The processed lowercase value with preserved case for quoted strings.

    z(".*?"|\'.*?\')ú'r   r-   )Úrer   Ú
startswithÚendswithÚappendr8   Újoin)r   r   ÚresÚss       r"   Ú_lowercase_css_valuesrN   ƒ   s‚   € ô$ �H‰HÐ'¨Ó/€EØ
€CØò "ˆØ�L‰L˜Ô !§*¡*¨S¤/Ø�L‰L˜Ô !§*¡*¨S¤/à�J‰J�q�Mà�J‰J�q—w‘w“yÕ!ð"ð �7‰7�3‹<Ðr+   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 )@r%   zH
    A callable for parsing and resolving CSS to atomic properties.
    )Úpté   )ÚemrQ   )rP   é   )rR   ç      à?)rP   g      è?)rP   éH   )ÚingL&“Éd2Ù?)rV   g
…B¡P(¤?)Úmmg      Ð?)rR   r   )rP   rR   ÚremÚexÚpxÚpcrV   ÚcmrW   Úqú	!!default)rR   g{®Gáz„?)rX   rT   )rX   g      ä?)rX   gš™™™™™é?)rX   rQ   )rX   g      ò?)rX   g      ø?)rX   é   )rR   g«ªªªªªê?)rR   g333333ó?)ú%zxx-smallzx-smallÚsmallr5   Úlargezx-largezxx-largeÚsmallerÚlargerr^   r3   )rP   r   )rZ   é   )rZ   r_   )rZ   rQ   )r3   Úthickr5   Úthin)r3   ÚhiddenÚdottedÚdashedÚsolidÚdoubleÚgrooveÚridgeÚinsetÚoutsetÚmediumdashdotÚ
dashdotdotÚhairÚmediumdashdotdotÚdashdotÚslantdashdotÚmediumdashed)r   r   r   r   )r   rQ   r   rQ   )r   rQ   r_   rQ   )r   rQ   r_   r0   )rQ   r_   r0   re   )ÚtopÚrightÚbottomÚleft)r-   rx   ry   rz   r{   úborder-r1   )Ú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 | 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 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   € ô^ �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)rA   ÚcopyÚget)r   r‹   rŠ   r   ÚvalÚ	new_propss         r"   r†   zCSSResolver._update_initial7  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_sizeM  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_size[  s.   € Ø�9‰9�[Ô!Ø$ [Ñ1ÐØ×4Ñ4Ð5EÓFÐFØr+   c                ó\   — |j                  d«      sJ ‚t        |j                  d«      «      S )NrP   )rI   ÚfloatÚrstrip)r   r�   s     r"   rœ   z(CSSResolver._get_float_font_size_from_pta  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 )Nr|   r4   )Úem_ptr—   zmargin-zpadding-)r™   r   r˜   r?   ÚMARGIN_RATIOS)r   r‹   Ú	font_sizerC   r   s        r"   rˆ   zCSSResolver._update_other_unitse  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                ó¸  ‡ ‡‡— dˆˆˆ 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                 óx   •— t        j                  d‰›�t        t        «       ¬«       ‰j	                  d‰ ¬«      S )NzUnhandled size: r   z
1!!defaultr–   )r   r   r   r   r˜   )r—   Úin_valr   s   €€€r"   Ú_errorz&CSSResolver.size_to_pt.<locals>._error�  s7   ø€ Ü�M‰MØ" 6 *Ð-ÜÜ+Ó-õð
 —?‘? <¸[�?ÓIÐIr+   z^(\S*?)([a-zA-Z%!].*)r-   rQ   rP   rR   rX   é   ÚdÚf)r'   r&   )rG   ÚmatchÚgroupsrŸ   Ú
ValueErrorr   ÚroundÚint)
r   r§   r¢   r—   r¨   r¬   r’   ÚunitÚmulÚsize_fmts
   `` `      r"   r˜   zCSSResolver.size_to_pt{  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$   ÁB0 Á*C Â0CÃCÃCÃCc              #  óÆ   K  — |D ]V  \  }}|j                  «       }t        |«      }|| j                  v r"| j                  |   } || ||«      E d {  –—†  ŒQ||f–— ŒX y 7 Œ­wr7   )r8   rN   ÚCSS_EXPANSIONS)r   r‰   r   r   r#   s        r"   r@   zCSSResolver.atomize­  so   è ø€ ð (ò 	"‰KˆD�%Ø—:‘:“<ˆDÜ)¨%Ó0ˆEØ�t×*Ñ*Ñ*Ø×,Ñ,¨TÑ2�Ù! $¨¨eÓ4×4Ñ4à˜E�kÓ!ñ	"ð
 5ús   ‚AA!ÁAÁA!c              #  óR  K  — |j                  d«      D ]�  }|j                  «       sŒ|j                  d«      \  }}}|j                  «       j                  «       }t	        |j                  «       «      }|r||f–— Œit        j                  d|›�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Ú	partitionr8   rN   r   r   r   r   )r   Údeclarations_strÚdeclr   Úsepr’   s         r"   r„   zCSSResolver.parse¹  s‘   è ø€ ð %×*Ñ*¨3Ó/ò 	ˆDØ—:‘:”<ØØ!Ÿ^™^¨CÓ0‰NˆD�#�sØ—:‘:“<×%Ñ%Ó'ˆDÜ'¨¯	©	«Ó4ˆCÙØ˜C�i“ä—‘ØCÀDÀ8ÐLÜÜ/Ó1öñ	ùs   ‚B%B'r7   )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'   úfloat | None)r�   r&   r'   rŸ   )r‹   r¾   r'   r¾   )r§   r&   r¢   r¿   r—   zdict[str, tuple[str, float]]r'   r&   )r‰   zIterable[tuple[str, str]]r'   r(   )r»   r&   r'   zIterator[tuple[str, str]])Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚUNIT_RATIOSr�   rš   Úupdater£   r?   r=   r   r   rD   r*   rµ   rŒ   r†   r‡   r™   rœ   rˆ   r˜   r@   r„   )r9   r   rD   r*   s   0000r"   r%   r%   ¡   sK  „ ñð
 ØØØàØØØØØØñ€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ð7/à5ð7/ð )ð7/ð 
ó	7/ðràðð "ðð 
ó	ð,àðð "ðð 
ó	óó4óð2 #Ø4?ð	0àð0ð ð0ð 2ð	0ð
 
ó0ðd
"Ø5ð
"à	#ó
"ôùôO
ùô
s   Â'E
ÃE	
r%   )r!   r&   r'   ú=Callable[[CSSResolver, str, str], Generator[tuple[str, str]]])r-   )rC   r&   r'   rÆ   )r   r&   r'   r&   )rÃ   Ú
__future__r   rG   Útypingr   r   Úpandas.errorsr   Úpandas.util._exceptionsr   Úcollections.abcr   r   r	   r
   r*   rD   rN   r%   r)   r+   r"   ú<module>rÌ      sm   ðñõ #ã 	Ý  Û å $Ý 4á÷ó ð+Øð+àBó+ð^ ð;Ø
ð;àBó;ó|÷<oò or+   