Ë
    úmxië$  ã                  ó  — d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ erd dlmZ d dlmZ d d	lmZ d d
lmZ dd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Z e	deeef   ¬«      Zdd„Z	 d	 	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z y)é    )Úannotations)Údefaultdict)ÚMapping)ÚTYPE_CHECKINGÚAnyÚTypeVar)Údataframe_util)ÚStreamlitAPIException)Ú	DataFrame)ÚStyler)ÚArrow)ÚEnumc           	     óð  — ddl }|j                  }|j                  t        |j                  j
                  j                  j                  «      kD  rQt        d|j                  › d|j                  j
                  j                  j                  › d|j                  › d�«      ‚t        | ||«       |j                  «        |j                  dd«      }t        | |«       t        | ||«       t        | ||«       y)ao  Marshall pandas.Styler into an Arrow proto.

    Parameters
    ----------
    proto : proto.Arrow
        Output. The protobuf for Streamlit Arrow proto.

    styler : pandas.Styler
        Helps style a DataFrame or Series according to the data with HTML and CSS.

    default_uuid : str
        If pandas.Styler uuid is not provided, this value will be used.

    r   NzThe dataframe has `zc` cells, but the maximum number of cells allowed to be rendered by Pandas Styler is configured to `z™`. To allow more cells to be styled, you can change the `"styler.render.max_elements"` config. For example: `pd.set_option("styler.render.max_elements", z)`F)ÚpandasÚdataÚsizeÚintÚoptionsÚstylerÚrenderÚmax_elementsr
   Ú_marshall_uuidÚ_computeÚ
_translateÚ_marshall_captionÚ_marshall_stylesÚ_marshall_display_values)Úprotor   Údefault_uuidÚpdÚstyler_data_dfÚpandas_styless         úa/home/htdocs/ttos/venv/lib/python3.12/site-packages/streamlit/elements/lib/pandas_styler_utils.pyÚmarshall_stylerr$   !   sÝ   € ó à#)§;¡;€NØ×ÑœS §¡×!2Ñ!2×!9Ñ!9×!FÑ!FÓGÒGÜ#Ø! .×"5Ñ"5Ð!6ð 7à—
‘
×!Ñ!×(Ñ(×5Ñ5Ð6ð 7<à<J×<OÑ<OÐ;PÐPRð	Tó
ð 	
ô �5˜& ,Ô/ð ‡O�OÔà×%Ñ% e¨UÓ3€Mä�e˜VÔ$Ü�U˜F MÔ2Ü˜U N°MÕBó    c                ó†   — |j                   €|j                  |«       t        |j                   «      | j                  _         y)at  Marshall pandas.Styler uuid into an Arrow proto.

    Parameters
    ----------
    proto : proto.Arrow
        Output. The protobuf for Streamlit Arrow proto.

    styler : pandas.Styler
        Helps style a DataFrame or Series according to the data with HTML and CSS.

    default_uuid : str
        If pandas.Styler uuid is not provided, this value will be used.

    N)ÚuuidÚset_uuidÚstrr   )r   r   r   s      r#   r   r   J   s/   € ð ‡{�{ÐØ�‰˜Ô%ä˜FŸK™KÓ(€E‡L�LÕr%   c                óT   — |j                   �|j                   | j                  _         yy)a  Marshall pandas.Styler caption into an Arrow proto.

    Parameters
    ----------
    proto : proto.Arrow
        Output. The protobuf for Streamlit Arrow proto.

    styler : pandas.Styler
        Helps style a DataFrame or Series according to the data with HTML and CSS.

    N)Úcaptionr   )r   r   s     r#   r   r   _   s#   € ð ‡~�~Ð!Ø%Ÿ~™~ˆ�‰Õð "r%   c                óz  — g }d|v rA|d   }t        |«      }|D ],  }t        d||j                  d¬«      }|j                  |«       Œ. d|v rA|d   }t        |«      }|D ],  }t        d||j                  d¬«      }|j                  |«       Œ. t	        |«      dkD  r!dj                  |«      | j                  _        y	y	)
aR  Marshall pandas.Styler styles into an Arrow proto.

    Parameters
    ----------
    proto : proto.Arrow
        Output. The protobuf for Streamlit Arrow proto.

    styler : pandas.Styler
        Helps style a DataFrame or Series according to the data with HTML and CSS.

    styles : dict
        pandas.Styler translated styles.

    Útable_stylesú )Ú	separatorÚ	cellstyleÚ
cell_styleÚ_r   ú
N)Ú_trim_pandas_stylesÚ_pandas_style_to_cssr'   ÚappendÚlenÚjoinr   Ústyles)r   r   r9   Ú	css_rulesr-   ÚstyleÚruler0   s           r#   r   r   o   sß   € ð" €Ià˜ÑØ˜nÑ-ˆÜ*¨<Ó8ˆØ!ò 		#ˆEô (ØØØ—‘Øô	ˆDð ×Ñ˜TÕ"ð		#ð �fÑØ˜;Ñ'ˆ	Ü'¨	Ó2ˆ	Øò 	#ˆEÜ'ØØØ—‘Øô	ˆDð ×Ñ˜TÕ"ð	#ô ˆ9ƒ~˜ÒØ"Ÿi™i¨	Ó2ˆ�‰Õð r%   ÚM)Úboundc                óX   — | D �cg c]  }t        d„ |d   D «       «      sŒ|‘Œ c}S c c}w )zÍFilter out empty styles.

    Every cell will have a class, but the list of props
    may just be [['', '']].

    Parameters
    ----------
    styles : list
        pandas.Styler translated styles.

    c              3  ó2   K  — | ]  }t        |«      –— Œ y ­w)N©Úany)Ú.0Úys     r#   ú	<genexpr>z&_trim_pandas_styles.<locals>.<genexpr>¯   s   è ø€ Ò$@°¤S¨§VÑ$@ùs   ‚ÚpropsrA   )r9   Úxs     r#   r4   r4   £   s)   € ð ÖA�!¤Ñ$@°Q°w±ZÔ$@Õ!@ŠAÒAÐAùÒAs   …' 'c                óf  — g }|d   D ]L  \  }}t        |«      j                  «       dz   t        |«      j                  «       z   }|j                  |«       ŒN d|› �}| dk(  r|d   gn|d   }	|	D �
cg c]
  }
||z   |
z   ‘Œ }}
dj                  |«      }dj                  |«      }|d	z   |z   d
z   S c c}
w )aT  Convert pandas.Styler translated style to CSS.

    Parameters
    ----------
    style_type : str
        Either "table_styles" or "cell_style".

    style : dict
        pandas.Styler translated style.

    uuid : str
        pandas.Styler uuid.

    separator : str
        A string separator used between table and cell selectors.

    rF   z: z#T_r-   ÚselectorÚ	selectorsz, z; z { z })r)   Ústripr6   r8   )Ú
style_typer;   r'   r/   ÚdeclarationsÚcss_propertyÚ	css_valueÚdeclarationÚtable_selectorÚcell_selectorsÚcell_selectorrJ   rI   Údeclaration_blocks                 r#   r5   r5   ²   sè   € ð. €LØ#(¨¡>ò )Ñˆ�iÜ˜,Ó'×-Ñ-Ó/°$Ñ6¼¸Y»×9MÑ9MÓ9OÑOˆØ×Ñ˜KÕ(ð)ð ˜4˜&�\€Nð  *¨^Ò;ˆˆzÑ	ÑÀÀ{ÑASð ð
 IWöØ7Dˆ˜Ñ" ]Ó2ð€Ið ð �y‰y˜Ó#€HàŸ	™	 ,Ó/ÐØ�eÑÐ/Ñ/°$Ñ6Ð6ùòs   Á0B.c                ód   — t        ||«      }t        j                  |«      | j                  _        y)a0  Marshall pandas.Styler display values into an Arrow proto.

    Parameters
    ----------
    proto : proto.Arrow
        Output. The protobuf for Streamlit Arrow proto.

    df : pandas.DataFrame
        A dataframe with original values.

    styles : dict
        pandas.Styler translated styles.

    N)Ú_use_display_valuesr	   Ú convert_pandas_df_to_arrow_bytesr   Údisplay_values)r   Údfr9   Únew_dfs       r#   r   r   æ   s*   € ô" !  VÓ,€FÜ"0×"QÑ"QØó#€E‡L�LÕr%   c                óŽ  — ddl }| j                  t        «      }|j                  d«      }t	        t
        «      }|j                  dg «      D ]›  }|D ]”  }|j                  d«      }|sŒ|j                  |«      }	|	sŒ+t        t        |	j                  «       «      \  }
}|j                  d«      }t        |t        «      rt        |j                  «      n
t        |«      }|||   |
<   Œ– Œ� |j                  «       D ]H  \  }}t        |j!                  «       «      }t        |j#                  «       «      }||j$                  ||f<   ŒJ |S )zúCreate a new pandas.DataFrame where display values are used instead of original ones.

    Parameters
    ----------
    df : pandas.DataFrame
        A dataframe with original values.

    styles : dict
        pandas.Styler translated styles.

    r   Nzrow(\d+)_col(\d+)ÚbodyÚidÚdisplay_value)ÚreÚastyper)   Úcompiler   ÚdictÚgetÚmatchÚmapr   ÚgroupsÚ
isinstancer   ÚvalueÚitemsÚlistÚkeysÚvaluesÚiloc)rY   r9   r_   rZ   Úcell_selector_regexÚupdates_by_colÚrowÚcellÚcell_idrd   Úrow_idxÚcol_idxr^   Ú	str_valueÚvalues_by_rowÚrow_indicesrl   s                    r#   rV   rV   ý   sB  € ó ð �Y‰Y”s‹^€FØŸ*™*Ð%9Ó:Ðä7BÄ4Ó7H€NØ�z‰z˜& "Ó%ò 9ˆØò 	9ˆDØ—h‘h˜t“nˆGÙØØ'×-Ñ-¨gÓ6ˆEÙØÜ"¤3¨¯©«Ó7ÑˆG�WØ ŸH™H _Ó5ˆMô ˜m¬TÔ2ô	 �M×'Ñ'Ô(ô
 ˜Ó'ð ð 09ˆN˜7Ñ# GÒ,ñ%	9ð9ð* #1×"6Ñ"6Ó"8ò 3Ñˆ�Ü˜=×-Ñ-Ó/Ó0ˆÜ�m×*Ñ*Ó,Ó-ˆà,2ˆ�‰�K Ð(Ò)ð	3ð €Mr%   N)r   Ú
ArrowProtor   r   r   r)   ÚreturnÚNone)r   rx   r   r   ry   rz   )r   rx   r   r   r9   úMapping[str, Any]ry   rz   )r9   úlist[M]ry   r|   )r2   )
rL   r)   r;   r{   r'   r)   r/   r)   ry   r)   )r   rx   rY   r   r9   r{   ry   rz   )rY   r   r9   r{   ry   r   )!Ú
__future__r   Úcollectionsr   Úcollections.abcr   Útypingr   r   r   Ú	streamlitr	   Ústreamlit.errorsr
   r   r   Úpandas.io.formats.styler   Ústreamlit.proto.Arrow_pb2r   rx   Úenumr   r$   r   r   r   r)   r=   r4   r5   r   rV   © r%   r#   ú<module>r‡      sâ   ðõ #å #Ý #ß .Ñ .å $Ý 2áÝ Ý.å=å ó&CóR)ó*.ð .3Øð.3Ø%ð.3Ø/@ð.3à	ó.3ñb ˆC�w˜s C˜xÑ(Ô)€óBð& ð	17Øð17àð17ð ð17ð ð	17ð
 	ó17ðhØðØ$ðØ.?ðà	óô.1r%   