§
    ¨Mºfè  ã                   óJ   — d dl mZ d dlmZ d dlmZ d dlmZ 	 	 	 	 	 	 d	d„ZdS )
é    )Úreduce©Úgroupby)Úadd)ÚhtmlNTFc           
      ó†  ‡‡‡‡‡‡— ddl }	ddl}
|�‰j        dd…|f         Š‰�?‰                     dg¦  «        j        D ]#}‰|                              ˆfd„¦  «        ‰|<   Œ$‰�?‰                     dg¦  «        j        D ]#}‰|                              ˆfd„¦  «        ‰|<   Œ$|r.‰                     ¦   «         Š|�‰                     d|i¬¦  «        Š|�rt          |t          t          |	j        |
j        f¦  «        r&	 |‰_        nH# t          $ r t          d	¦  «        ‚w xY wt          |t          ¦  «        r‰                     |¬¦  «        Š‰j        j        }ˆfd
„t!          |¦  «        D ¦   «         Šd„ ‰D ¦   «         Šd„ ‰D ¦   «         Šˆfd„t!          d|dz   ¦  «        D ¦   «         Šd„ ‰D ¦   «         Št#          j        ˆˆˆfd„t!          |¦  «        D ¦   «         ¦  «        g}ng }|                     t#          j        ˆfd„t!          t+          ‰¦  «        ¦  «        D ¦   «         ¦  «        ¦  «          | |fi |¤ŽS )a›  
    Generate a Table component from a dataframe.

    Parameters
    ----------
    df : pandas.DataFrame
        DataFrame to render as a table.
    float_format : str, optional
        Format to use for floating point numbers.
    columns : sequence, optional
        Columns to render.
    header : boolean or list(str) or dict(str: str), optional
        Write out the column names. If a list of strings is given it is assumed
        to be aliases for the columns names (and hence must be the same length
        as df.columns). A dict can be passed to rename some columns, the format
        is {'<current_name>': '<new_name>'}. The dictionary need not have an
        entry for every column.
    index : boolean, optional
        Render the row names (index).
    index_label : str, optional
        Column label for index column if desired. If None is passed, but both
        header and index are True, then the index name is used.
    date_format : str, optional
        Format string for datetime objects.
    **table_kwargs : Keyword arguments
        Additional arguments to pass to the table component. See
        dash_bootstrap_components.Table for details.
    r   NÚfloatc                 ó0   •— d                      ‰| ¦  «        S )Nz{1:{0}})Úformat)ÚxÚfloat_formats    €ú_/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/dash_bootstrap_components/_table.pyú<lambda>z)_generate_table_from_df.<locals>.<lambda>7   s   ø€ ¨	×(8Ò(8¸ÀqÑ(IÔ(I€ ó    Údatetimec                 ó.   •— |                       ‰¦  «        S ©N)Ústrftime)r   Údate_formats    €r   r   z)_generate_table_from_df.<locals>.<lambda>;   s   ø€ ¨¯
ª
°;Ñ(?Ô(?€ r   Úindex)ÚcolumnsziIf specifying column names with a sequence, the number of names must exactly match the number of columns.c                 ó^   •— g | ])}t          ‰j                             |¦  «        ¦  «        ‘Œ*S © )Úlistr   Úget_level_values)Ú.0ÚlevelÚdfs     €r   ú
<listcomp>z+_generate_table_from_df.<locals>.<listcomp>P   sA   ø€ ð 
ð 
ð 
àõ �”×,Ò,¨UÑ3Ô3Ñ4Ô4ð
ð 
ð 
r   c                 ó@   — g | ]}d „ t          |¦  «        D ¦   «         ‘ŒS )c                 óL   — g | ]!\  }}t          t          |¦  «        ¦  «        ‘Œ"S r   )Úlenr   )r   Ú_Úgroups      r   r   z6_generate_table_from_df.<locals>.<listcomp>.<listcomp>W   s*   € ÐDÐDÐD¡( ! U�S•�e‘”ÑÔÐDÐDÐDr   r   )r   Úlevel_valuess     r   r   z+_generate_table_from_df.<locals>.<listcomp>V   s?   € ð 
ð 
ð 
àð EÐD­g°lÑ.CÔ.CÐDÑDÔDð
ð 
ð 
r   c           	      óh   ‡— g | ].Šˆfd „t          dt          ‰¦  «        dz   ¦  «        D ¦   «         ‘Œ/S )c                 ó>   •— g | ]}t          ‰d |…         ¦  «        ‘ŒS r   )Úsum)r   ÚiÚlevel_spanss     €r   r   z6_generate_table_from_df.<locals>.<listcomp>.<listcomp>]   s)   ø€ ÐJÐJÐJ a�S�˜R˜a˜R”Ñ!Ô!ÐJÐJÐJr   é   )Úranger"   )r   r*   s    @r   r   z+_generate_table_from_df.<locals>.<listcomp>\   sU   ø€ ð 
ð 
ð 
àð KÐJÐJÐJ­5°µC¸Ñ4DÔ4DÀqÑ4HÑ+IÔ+IÐJÑJÔJð
ð 
ð 
r   c                 ó¦   •— g | ]M}t          t          t          t          ‰d |…         ¦  «        ¦  «                             dh¦  «        ¦  «        ‘ŒNS )Nr   )ÚsortedÚsetr   r   Úunion)r   r   Úheader_breakss     €r   r   z+_generate_table_from_df.<locals>.<listcomp>b   s\   ø€ ð 
ð 
ð 
àõ •3•v�c =°°%°Ô#8Ñ9Ô9Ñ:Ô:×@Ò@À!ÀÑEÔEÑFÔFð
ð 
ð 
r   r+   c           
      ó„   ‡— g | ]<Št          ˆfd „t          t          ‰¦  «        dz
  dd¦  «        D ¦   «         ¦  «        ‘Œ=S )c                 ó8   •— g | ]}‰|         ‰|d z
           z
  ‘ŒS )r+   r   )r   r)   Úlevel_breakss     €r   r   z6_generate_table_from_df.<locals>.<listcomp>.<listcomp>j   s;   ø€ ð ð ð àð ! ”O l°1°q±5Ô&9Ñ9ðð ð r   r+   r   éÿÿÿÿ)Úreversedr,   r"   )r   r4   s    @r   r   z+_generate_table_from_df.<locals>.<listcomp>h   st   ø€ ð 
ð 
ð 
ð õ ðð ð ð å"¥3 |Ñ#4Ô#4°qÑ#8¸!¸RÑ@Ô@ðñ ô ñô ð
ð 
ð 
r   c           
      óŠ   •‡— g | ]>Št          j        ˆˆfd „t          ‰‰         ‰‰         ¦  «        D ¦   «         ¬¦  «        ‘Œ?S )c                 óZ   •— g | ]'\  }}t          j        ‰‰         |         |¬ ¦  «        ‘Œ(S ))ÚcolSpan)r   ÚTh)r   ÚposÚspanÚheader_valuesr   s      €€r   r   z6_generate_table_from_df.<locals>.<listcomp>.<listcomp>v   sP   ø€ ð "ð "ð "ñ
 !*  Tõ	 !œGØ -¨eÔ 4°SÔ 9Ø(,ðñ ô ð"ð "ð "r   )Úchildren)r   ÚTrÚzip)r   r   r1   Úheader_spansr=   s    @€€€r   r   z+_generate_table_from_df.<locals>.<listcomp>t   sƒ   øø€ ð ð ð ð õ ”Gð"ð "ð "ð "ð "õ
 .1Ø -¨eÔ 4°lÀ5Ô6Iñ.ô .ð"ñ "ô "ð
ñ 
ô 
ðð ð r   c           
      ó’   •‡— g | ]BŠt          j        ˆˆfd „t          t          ‰j        ¦  «        ¦  «        D ¦   «         ¦  «        ‘ŒCS )c                 óR   •— g | ]#}t          j        ‰j        ‰|f         ¦  «        ‘Œ$S r   )r   ÚTdÚiloc)r   Újr   r)   s     €€r   r   z6_generate_table_from_df.<locals>.<listcomp>.<listcomp>Š   s-   ø€ ÐLÐLÐL°•T”W˜RœW Q¨ Tœ]Ñ+Ô+ÐLÐLÐLr   )r   r?   r,   r"   r   )r   r)   r   s    @€r   r   z+_generate_table_from_df.<locals>.<listcomp>ˆ   sb   øø€ ð ð ð ð õ ”ØLÐLÐLÐLÐLµU½3¸r¼z¹?¼?Ñ5KÔ5KÐLÑLÔLñô ðð ð r   )ÚnumpyÚpandasÚlocÚselect_dtypesr   ÚmapÚreset_indexÚrenameÚ
isinstanceÚtupler   ÚndarrayÚIndexÚ
ValueErrorÚdictÚnlevelsr,   r   ÚTheadÚappendÚTbodyr"   )Úclsr   r   r   Úheaderr   Úindex_labelr   Útable_kwargsÚnpÚpdÚcÚn_levelsÚtabler1   rA   r=   s    ``    `      @@@r   Ú_generate_table_from_dfra      s8  øøøøøø€ ðN ÐÐÐØÐÐÐàÐØŒV�A�A�A�w�JÔˆàÐØ×!Ò! 7 )Ñ,Ô,Ô4ð 	Kð 	KˆAØ�q”E—I’IÐIÐIÐIÐIÑJÔJˆBˆq‰EˆEàÐØ×!Ò! : ,Ñ/Ô/Ô7ð 	Að 	AˆAØ�q”E—I’IÐ?Ð?Ð?Ð?Ñ@Ô@ˆBˆq‰EˆEàð ;Ø�^Š^ÑÔˆØÐ"Ø—’ G¨[Ð#9�Ñ:Ô:ˆBàñ CÝ�f�u¥d¨B¬J¸¼ÐAÑBÔBð 		+ðØ#�”
�
øÝð ð ð Ý ðIñô ð ðøøøõ
 ˜¥Ñ%Ô%ð 	+Ø—’ 6�Ñ*Ô*ˆBð ”:Ô%ˆð
ð 
ð 
ð 
å˜x™œð
ñ 
ô 
ˆð
ð 
à -ð
ñ 
ô 
ˆð
ð 
à+ð
ñ 
ô 
ˆð
ð 
ð 
ð 
å˜q (¨Q¡,Ñ/Ô/ð
ñ 
ô 
ˆð
ð 
ð !.ð
ñ 
ô 
ˆõ ŒJðð ð ð ð ð õ "' x¡¤ðñ ô ñô ð
ˆˆð& ˆØ	‡L‚LÝŒ
ðð ð ð õ �s 2™wœw™œð	ñ ô ñ	
ô 	
ñ	ô 	ð 	ð ˆ3ˆuÐ%Ð%˜Ð%Ð%Ð%s   Ä D ÄD")NNTFNN)	Ú	functoolsr   Ú	itertoolsr   Úoperatorr   Údashr   ra   r   r   r   ú<module>rf      s…   ðØ Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð ØØØ
ØØðH&ð H&ð H&ð H&ð H&ð H&r   