+
    NV-j[2  ã                  ó¢   € R t ^ RIHt ^ RIt^ RIHt ^ RIt^ RIHt ^ RI	H
t
 ]'       d   ^ RIHtHtHtHt R R ltRR	 R
 llt ! R R4      tR# )zN
Utilities for interpreting CSS from Stylers for formatting non-HTML outputs.
)ÚannotationsN)ÚTYPE_CHECKING)Ú
CSSWarning)Úfind_stack_level)ÚCallableÚ	GeneratorÚIterableÚIteratorc               ó    € V ^8„  d   QhRRRR/# )é   Úprop_fmtÚstrÚreturnr   © )Úformats   "Úf/Volumes/fast/ai/experiments/ui-tars-smoke/.venv/lib/python3.14/site-packages/pandas/io/formats/css.pyÚ__annotate__r      s   € ÷ (ñ (˜Sð ( Xñ (ó    c                ó   a € R V 3R llpV# )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               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   ÚselfÚCSSResolverÚpropr   Úvaluer   úGenerator[tuple[str, str]]r   )r   s   "r   r   Ú$_side_expander.<locals>.__annotate__%   s)   € ÷ 4ñ 4�[ð 4¨ð 4°Cð 4Ð<Vñ 4r   c              3  ó^  <"  € VP                  4       p V P                  \        V4      ,          p\        T P                  TRR7       F   w  rVSP                  T4      Y6,          3x € K"  	  R#   \         d1    \        P
                  ! RT RT R2\        \        4       R7        R# i ; i5i)zô
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ÚSIDESr   )r   r   r   ÚtokensÚmappingÚkeyÚidxr   s   &&&    €r   ÚexpandÚ_side_expander.<locals>.expand%   s™   øé € ð —‘“ˆð	Ø×*Ñ*¬3¨v«;Õ7ˆGô ˜DŸJ™J¨¸×=‰HˆCØ—/‘/ #Ó&¨­Ð3Ô3ó >øô ô 	Ü�MŠMØ$ T F¨"¨U¨G°1Ð5ÜÜ+Ó-õò
 ð	üs'   ƒB-•A/ ±>B-Á/7B*Â&B-Â)B*Â*B-r   )r   r.   s   f r   Ú_side_expanderr0      s   ø€ ÷4ð 4ð4 €Mr   c               ó    € V ^8„  d   QhRRRR/# )r   Úsider   r   r   r   )r   s   "r   r   r   B   s   € ÷ 9ñ 9˜3ð 9¨ñ 9r   c                ó2   a € S R8w  d   RS  2o R V 3R llpV# )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               ó(   € V ^8„  d   QhRRRRRRRR/# r   r   )r   s   "r   r   Ú&_border_expander.<locals>.__annotate__R   s)   € ÷ '=ñ '=�[ð '=¨ð '=°Cð '=Ð<Vñ '=r   c              3  ót  <a"  € VP                  4       p\        V4      ^ 8X  g   \        V4      ^8”  d*   \        P                  ! RV R2\        \        4       R7       RS R2RRS R2RRS R	2R
/pV F•  oSP                  4       V P                  9   d   SVRS R2&   K-  \        ;QJ d)    V3R lV P                   4       F  '       g   K   RM	  RM! V3R lV P                   4       4      '       d   SVRS R	2&   KŒ  SVRS R2&   K—  	  V P                  VP                  4       4       Rj  x€L
  R#  L5i)zþ
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
zToo many tokens provided to "z" (expected 1-3)r   Úborderz-colorÚblackz-styleÚnoneú-widthÚmediumc              3  óH   <"  € T F  qSP                  4       9   x € K  	  R # 5i©N)Úlower)Ú.0ÚratioÚtokens   & €r   Ú	<genexpr>Ú3_border_expander.<locals>.expand.<locals>.<genexpr>r   s   øé € ÐRÑ9Q°˜eŸk™k›mÖ+Ó9Qùs   ƒ"TFN)r"   r$   r&   r'   r   r   r@   ÚBORDER_STYLESÚanyÚBORDER_WIDTH_RATIOSÚatomizeÚitems)r   r   r   r*   Úborder_declarationsrC   r2   s   &&&  @€r   r.   Ú _border_expander.<locals>.expandR   s&  ùé € ð —‘“ˆÜˆv‹;˜!Ôœs 6›{¨QœÜ�MŠMØ/°¨vÐ5EÐFÜÜ+Ó-õð �T�F˜&Ð! 7Ø�T�F˜&Ð! 6Ø�T�F˜&Ð! 8ð
Ðó
 ˆEØ�{‰{‹} × 2Ñ 2Ô2Ø=BÐ# f¨T¨F°&Ð$9Ó:ß“ÔR¸×9QÒ9QÓR——’ÔR¸×9QÒ9QÓR×RÒRØ=BÐ# f¨T¨F°&Ð$9Ó:à=BÐ# f¨T¨F°&Ð$9Ó:ñ ð —<‘<Ð 3× 9Ñ 9Ó ;Ó<×<Ô<ùs$   „B'D8Â,D8Ã'D8Ã5:D8Ä/D6Ä0D8r   )r2   r.   s   f r   Ú_border_expanderrM   B   s)   ø€ ð ˆr„zØ�4�&ˆzˆ÷'=ð '=ðR €Mr   c                  óÊ  € ] tR t^~tRtRR5RR6RR7RR8RR9RR7RR:R	R;R
R<RR=RR>/t]P                  4       t]P                  RR?RR@RRARRBRRCRRDRRERRFRRGRRHRR6/4       ]P                  4       t	]	P                  RRI/4       ]P                  4       t
]
P                  RRIRRJRRKRRL/4       . RMOt^. RNO^. ROO^. RPO^. RQO/tRRt/ RS U u/ uF  p V '       d   RV  2MR\        V 4      bK  	  up CRT U u/ uF  p RV  2\        RV  24      bK  	  up CR]! R4      R]! R 4      /CtRUR" R# lltR$ R% ltR& R' ltR( R) ltR* R+ ltR, R- ltR!]3R. R/ lltR0 R1 ltR2 R3 ltR4tR!# u up i u up i )Vr   z@
A callable for parsing and resolving CSS to atomic properties.
ÚptÚemÚremÚexÚpxÚpcÚinÚcmÚmmÚqz	!!defaultÚ%zxx-smallzx-smallÚsmallr=   Úlargezx-largezxx-largeÚsmallerÚlargerr;   ÚthickÚthinúborder-r9   zborder-{:s}-Úmarginzmargin-{:s}Úpaddingzpadding-{:s}Nc               ó$   € V ^8„  d   QhRRRRRR/# )r   Údeclarationszstr | Iterable[tuple[str, str]]Ú	inheritedzdict[str, str] | Noner   údict[str, str]r   )r   s   "r   r   ÚCSSResolver.__annotate__Û   s(   € ÷ 7/ñ 7/à5ð7/ð )ð7/ð 
ñ	7/r   c                óö   € \        V\        4      '       d   V P                  V4      p\        V P	                  V4      4      pVf   / pV P                  W24      pV P                  W24      pV P                  V4      # )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ÚdictrI   Ú_update_initialÚ_update_font_sizeÚ_update_other_units)r   rd   re   Úpropss   &&& r   Ú__call__ÚCSSResolver.__call__Û   so   € ô^ �l¤C×(Ò(ØŸ:™: lÓ3ˆLÜ�T—\‘\ ,Ó/Ó0ˆØÒØˆIà×$Ñ$ UÓ6ˆØ×&Ñ& uÓ8ˆØ×'Ñ'¨Ó.Ð.r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   ro   rf   re   r   r   )r   s   "r   r   rg     s(   € ÷ ñ àðð "ðð 
ñ	r   c                	óò   € VP                  4        F  w  r4W19  g   K  WAV&   K  	  VP                  4       pVP                  4        F-  w  r4VR 8X  d   VP                  VR4      pVR9   d   WS K)  WEV&   K/  	  V# )ÚinheritÚinitial)rv   N)rJ   ÚcopyÚget)r   ro   re   r   ÚvalÚ	new_propss   &&&   r   rl   ÚCSSResolver._update_initial  sx   € ð #Ÿ™Ö*‰IˆDØÖ Ø!�d“ñ +ð —J‘J“Lˆ	ØŸ™ž‰IˆDØ�iÔØ—m‘m D¨)Ó4�àÐ'Ô'à’Oà"%˜$“ñ 'ð Ðr   c               ó$   € V ^8„  d   QhRRRRRR/# rs   r   )r   s   "r   r   rg   *  s(   € ÷ ñ àðð "ðð 
ñ	r   c                	ó¢   € VP                  R 4      '       d8   V P                  VR ,          V P                  V4      V P                  R7      VR &   V# )ú	font-size©Úconversions)rx   Ú
size_to_ptÚ_get_font_sizeÚFONT_SIZE_RATIOS)r   ro   re   s   &&&r   rm   ÚCSSResolver._update_font_size*  sQ   € ð �9‰9�[×!Ò!Ø!%§¡Ø�kÕ"Ø×#Ñ# IÓ.Ø ×1Ñ1ð "1ó "ˆE�+Ñð
 ˆr   c               ó    € V ^8„  d   QhRRRR/# )r   ro   rf   r   úfloat | Noner   )r   s   "r   r   rg   8  s   € ÷ ñ  Nð °|ñ r   c                	óh   € VP                  R 4      '       d   VR ,          pV P                  V4      # R# )r~   N)rx   Ú_get_float_font_size_from_pt)r   ro   Úfont_size_strings   && r   r‚   ÚCSSResolver._get_font_size8  s1   € Ø�9‰9�[×!Ò!Ø$ [Õ1ÐØ×4Ñ4Ð5EÓFÐFÙr   c               ó    € V ^8„  d   QhRRRR/# )r   r‰   r   r   Úfloatr   )r   s   "r   r   rg   >  s   € ÷ 4ñ 4¸Sð 4ÀUñ 4r   c                	óh   € VP                  R 4      '       g   Q h\        VP                  R 4      4      # )rO   )ÚendswithrŒ   Úrstrip)r   r‰   s   &&r   rˆ   Ú(CSSResolver._get_float_font_size_from_pt>  s0   € Ø×(Ñ(¨×.Ò.Ð.Ð.ÜÐ%×,Ñ,¨TÓ2Ó3Ð3r   c               ó    € V ^8„  d   QhRRRR/# )r   ro   rf   r   r   )r   s   "r   r   rg   B  s   € ÷ ñ ¨ð ¸Nñ r   c                	ó0  € V P                  V4      pV P                   Ft  pR V R2pWA9   d'   V P                  W,          VV P                  R7      W&   RV 2RV 23 F1  pWA9   g   K  V P                  W,          VV P                  R7      W&   K3  	  Kv  	  V# )r`   r<   )Úem_ptr€   zmargin-zpadding-)r‚   r)   r�   rH   ÚMARGIN_RATIOS)r   ro   Ú	font_sizer2   r   s   &&   r   rn   ÚCSSResolver._update_other_unitsB  sª   € Ø×'Ñ'¨Ó.ˆ	à—J”JˆDØ˜T˜F &Ð)ˆDØŒ}Ø"Ÿo™oØ•KØ#Ø $× 8Ñ 8ð .ó �‘ð # 4 &Ð)¨X°d°VÐ+<Ó=�Ø–=à"&§/¡/Ø�Ø'Ø$(×$6Ñ$6ð #2ó #�E“Kó >ñ ð" ˆr   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úin_valr   r“   r†   r€   rk   r   r   )r   s   "r   r   rg   X  s,   € ÷ -ñ -Øð-Ø".ð-ØDHð-à	ñ-r   c                	óê  a aa€ R  VVV 3R llp\         P                  ! RS4      pVf   V! 4       # VP                  4       w  rgVR8X  d   ^pM \        V4      pVR8w  d1   VR8X  d   Vf   RpM
Wb,          pRpK!   SV,          w  rxYh,          pK7  \        V^4      p\        V4      V8X  d   \        V4      R R2p	V	# VR R2p	V	#   \         d    T! 4       u # i ; i  \
         d    T! 4       u # i ; i)	c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   Ú,CSSResolver.size_to_pt.<locals>.__annotate__[  s   € ÷ 	Jñ 	J˜ñ 	Jr   c                 ó|   <€ \         P                  ! R S: 2\        \        4       R7       SP	                  RS R7      # )zUnhandled size: r   z
1!!defaultr   )r&   r'   r   r   r�   )r€   r˜   r   s   €€€r   Ú_errorÚ&CSSResolver.size_to_pt.<locals>._error[  s7   ø€ Ü�MŠMØ" 6¡*Ð-ÜÜ+Ó-õð
 —?‘? <¸[�?ÓIÐIr   z^(\S*?)([a-zA-Z%!].*)r4   rO   rP   rQ   ÚdÚf)ÚreÚmatchÚgroupsrŒ   Ú
ValueErrorr%   ÚroundÚint)
r   r˜   r“   r€   r�   r¢   ry   ÚunitÚmulÚsize_fmts
   ff&f      r   r�   ÚCSSResolver.size_to_ptX  s
  ú€ ÷	Jò 	Jô —’Ð1°6Ó:ˆØŠ=Ù“8ˆOà—L‘L“N‰	ˆØ�"Œ9à‰Cð Ü˜C“j�ð �dŒlØ�tŒ|Ø’=Ø ‘Dà•L�CØ�DÙð Ø'¨Õ-‘	�ð �JŠCä�C˜‹mˆÜˆs‹8�sŒ?Ü˜c›( 1˜ RÐ(ˆHð ˆð ˜a˜ �|ˆHØˆøô/ ô  Ù“x’ð ûô ô  Ù“x’ð ús$   ÁC Á;C ÃCÃCÃC2Ã1C2c               ó    € V ^8„  d   QhRRRR/# )r   rd   r   r   r   r   )r   s   "r   r   rg   ‡  s   € ÷ "ñ " Hð "Ð1Kñ "r   c              #  	óÞ   "  € V F`  w  r#VP                  4       pVP                  4       pW P                  9   d'   V P                  V,          pV! WV4       R j  x€L
  K[  W#3x € Kb  	  R #  L5ir?   )r@   ÚCSS_EXPANSIONS)r   rd   r   r   r.   s   &&   r   rI   ÚCSSResolver.atomize‡  s`   é € Û'‰KˆDØ—:‘:“<ˆDØ—K‘K“MˆEØ×*Ñ*Ô*Ø×,Ñ,¨TÕ2�Ù! $¨eÓ4×4Ò4à�kÔ!ó (ñ
 5ùs   ‚AA-ÁA+ÁA-c               ó    € V ^8„  d   QhRRRR/# )r   Údeclarations_strr   r   zIterator[tuple[str, str]]r   )r   s   "r   r   rg   ‘  s   € ÷ ñ  cð Ð.Gñ r   c              #  ó~  "  € VP                  R4       F£  pVP                  4       '       g   K  VP                  R4      w  r4pVP                  4       P                  4       pVP                  4       P                  4       pV'       d   W53x € Kz  \        P
                  ! RV: 2\        \        4       R7       K¥  	  R# 5i)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Ú	partitionr@   r&   r'   r   r   )r   r°   Údeclr   Úsepry   s   &&    r   rj   ÚCSSResolver.parse‘  s�   é € ð %×*Ñ*¨3Ö/ˆDØ—:‘:—<’<ÙØ!Ÿ^™^¨CÓ0‰NˆD�sØ—:‘:“<×%Ñ%Ó'ˆDà—)‘)“+×#Ñ#Ó%ˆCßØ�i”ä—’ØCÀDÁ8ÐLÜÜ/Ó1÷ó 0ùs   ‚B;B=r   )rO   é   )rP   r¹   )rO   é   )rP   ç      à?)rO   g      è?)rO   éH   )rU   gL&“Éd2Ù?)rU   g
…B¡P(¤?)rW   g      Ð?)rP   é    )rP   g{®Gáz„?)rQ   r»   )rQ   g      ä?)rQ   gš™™™™™é?)rQ   r¹   )rQ   g      ò?)rQ   g      ø?)rQ   r   )rP   g«ªªªªªê?)rP   g333333ó?)rO   r½   )rS   é   )rS   r   )rS   r¹   )r;   ÚhiddenÚdottedÚdashedÚsolidÚdoubleÚgrooveÚridgeÚinsetÚoutsetÚmediumdashdotÚ
dashdotdotÚhairÚmediumdashdotdotÚdashdotÚslantdashdotÚmediumdashed)r½   r½   r½   r½   )r½   r¹   r½   r¹   )r½   r¹   r   r¹   )r½   r¹   r   é   )ÚtopÚrightÚbottomÚleft)r4   rÐ   rÑ   rÒ   rÓ   )ÚcolorÚstyleÚwidthr?   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚUNIT_RATIOSrw   rƒ   Úupdater”   rH   rF   r#   r)   rM   r0   r­   rp   rl   rm   r‚   rˆ   rn   r�   rI   rj   Ú__static_attributes__)r   s   0r   r   r   ~   s  † ñð
 	ˆiØˆiØˆzØˆkàˆlØˆjØˆjØÐØÐØˆ\Ø�Yð€Kð #×'Ñ'Ó)ÐØ×Ñà�Ø˜Ø�~Ø�\Ø�jØ�^Ø�|Ø˜
Ø�Ø�kØ˜ð	
ôð   ×$Ñ$Ó&€MØ×Ñ˜& )Ð,Ô-à%×*Ñ*Ó,ÐØ×Ñà�IØ�YØ�iØ�Ið		
ôò€Mð* 	
Š<Ø	Š<Ø	Š<Ø	Š<ð	€Oð /€Eðñ ?ó
á>�÷ "&ˆw�t�fÑ¨8Ô6FÀtÓ6LÒLÙ>ñ
ðñ 4ó
á3�ð �d�VÐœn¨~¸d¸VÐ-DÓEÒEÙ3ñ
ðð 	‘. Ó/Ø‘> .Ó1ñ€N÷7/õrõ,õõ4õð. 26È;÷-õ^"÷ñ ùòE
ùò
s   ÃEÃEÃ*E r   )r4   )rÛ   Ú
__future__r   r¡   Útypingr   r&   Úpandas.errorsr   Úpandas.util._exceptionsr   Úcollections.abcr   r   r   r	   r0   rM   r   r   r   r   Ú<module>rä      sC   ðñõ #ã 	Ý  Û å $Ý 4ç÷ó õ(÷V9÷xkó kr   