
    Mhe^                        S r SSKJr  SSKJr  SSKJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJrJr  SSKJr  SS	KJrJr  SS
KJr  \(       a
  SSKJrJrJr   " S S5      r " S S\5      rg)z,
Module for formatting output data in HTML.
    )annotations)dedent)TYPE_CHECKINGAnyFinalcast)
get_option)lib)
MultiIndexoption_context)is_url)DataFrameFormatterget_level_lengths)pprint_thing)HashableIterableMappingc                     \ rS rSr% SrSrS\S'       S           S S jjrS!S jrS"S	 jr	\
S#S
 j5       r\
S#S j5       r\
S#S j5       r\
S$S j5       rS%S jr\
S#S j5       r\
S$S j5       rS&S'S jjr S(         S)S jjrS*S+S jjr S,         S-S jjr      S.               S/S jjrS&S0S jjrS0S jrS0S jrS0S jrS1S jrS0S jr      S2S jr      S2S jrSrg)3HTMLFormatter&   aG  
Internal class for formatting output data in html.
This class is intended for shared functionality between
DataFrame.to_html() and DataFrame._repr_html_().
Any logic in common with other output formatting methods
should ideally be inherited from classes in format.py
and this class responsible for only producing html markup.
   r   indent_deltaNc                6   Xl         X l        U R                   R                  U l        U R                   R                  R                  U l        / U l        U R                   R                  U l        U R                   R                  U l        U R                   R                  U l        Ub  USL a  [        [        [        S5      5      nO	U(       d  S nX0l        X@l        XPl        0 U l        [!        U R                  ["        5      nU R                   R                  R%                  5        Ho  u  px[!        U[        5      (       a  U S3OUn	XR                  U'   U(       d  M8  [!        U[&        5      (       d  MO  U H  n
XR                  [)        U
5      '   M     Mq     g )NTzdisplay.html.borderpx)fmtclassesframetr_framecolumnselements	bold_rowsescapeshow_dimensionsr   intr	   bordertable_idrender_links	col_space
isinstancer   itemstuplestr)self	formatterr   r%   r&   r'   is_multi_indexcolumnvaluecol_space_valuecolumn_indexs              H/var/www/html/env/lib/python3.13/site-packages/pandas/io/formats/html.py__init__HTMLFormatter.__init__2   s+    XX^^
xx((00#%++hhoo#xx77>Vt^#z*?@AFF (#DLL*=!XX//557MF.8.D.Drl%O%4NN6" ~*VU";";$*L8GNN3|#45 %+ 8    c                    U R                  5       n[        S U 5       5      (       a  U Vs/ s H  n[        U5      PM     nnSR                  U5      $ s  snf )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fN)r)   r,   ).0xs     r4   	<genexpr>*HTMLFormatter.to_string.<locals>.<genexpr>Y   s     15az!S!!5s   
)renderanyr,   join)r-   linesr<   s      r4   	to_stringHTMLFormatter.to_stringW   sJ    15111%*+USVUE+yy ,s   Ac           
        U R                  5         U R                  (       aV  [        S5      nU R                  S[	        U R
                  5       SU S[	        U R
                  R                  5       S35        U R                  $ )N   z<p>z rows  z columns</p>)_write_tableshould_show_dimensionschrwritelenr   r   r    )r-   bys     r4   r@   HTMLFormatter.render]   si    &&SBJJc$**o&fRD#djj6H6H2I1J,W }}r7   c                .    U R                   R                  $ r:   )r   rJ   r-   s    r4   rJ   $HTMLFormatter.should_show_dimensionsh   s    xx...r7   c                .    U R                   R                  $ r:   )r   show_row_idx_namesrQ   s    r4   rT    HTMLFormatter.show_row_idx_namesl       xx***r7   c                .    U R                   R                  $ r:   )r   show_col_idx_namesrQ   s    r4   rX    HTMLFormatter.show_col_idx_namesp   rV   r7   c                    U R                   R                  (       a   U R                  R                  R                  $ U R                  (       a  gg)N   r   )r   indexr   nlevelsrX   rQ   s    r4   
row_levelsHTMLFormatter.row_levelst   s4    88>>::##+++$$ r7   c                    U R                   $ r:   )r   rQ   s    r4   _get_columns_formatted_values+HTMLFormatter._get_columns_formatted_values   s    ||r7   c                .    U R                   R                  $ r:   )r   is_truncatedrQ   s    r4   rd   HTMLFormatter.is_truncated   s    xx$$$r7   c                T    [        U R                  R                  R                  5      $ r:   )rM   r   r   r   rQ   s    r4   ncolsHTMLFormatter.ncols   s    488$$,,--r7   c                \    [        U5      nU R                  R                  SU-  U-   5        g )NrH   )r   r    append)r-   sindentrss       r4   rL   HTMLFormatter.write   s&    !_S6\B./r7   c                    U R                   R                  US5      nU(       a  Ub  U=(       d    SnUSU S3-  nU R                  USX4S9  g)a  
Method for writing a formatted <th> cell.

If col_space is set on the formatter then that is used for
the value of min-width.

Parameters
----------
s : object
    The data to be written inside the cell.
header : bool, default False
    Set to True if the <th> is for use inside <thead>.  This will
    cause min-width to be set if there is one.
indent : int, default 0
    The indentation level of the cell.
tags : str, default None
    Tags to include in the cell.

Returns
-------
A written <th> cell.
N zstyle="min-width: z;"thkindrl   tags)r(   get_write_cell)r-   rk   headerrl   rt   r(   s         r4   write_thHTMLFormatter.write_th   sT    2 NN&&q$/	i+:2D(266Df@r7   c                &    U R                  USX#S9  g )Ntdrr   )rv   )r-   rk   rl   rt   s       r4   write_tdHTMLFormatter.write_td   s    f@r7   c                R   Ub
  SU SU S3nOSU S3nU R                   (       a  SSSS.nO0 n[        XS9R                  5       nU R                  (       a4  [	        U5      (       a$  [        U0 S9R                  5       nUS	U S
3-  nSn	OSn	U R                  U U U	 SU S3U5        g )N<rH   >z&amp;z&lt;z&gt;)&r   r   )escape_charsz	<a href="z" target="_blank">z</a>rp   z</)r"   r   stripr'   r   rL   )
r-   rk   rs   rl   rt   	start_tagescrm   rs_unescapedend_as
             r4   rv   HTMLFormatter._write_cell   s     D64&*ID6I;; wW=CC!.446';AACL9\N2DEEIEE

i[UG2dV15v>r7   c                d   Uc  0 nUc  U R                  SU5        OU R                  SU S3U5        X#-  n[        U5       HV  u  pUR                  US 5      n
U(       d  U R                  (       a  X:  a  U R	                  XXJS9  MF  U R                  XU
S9  MX     X#-  nU R                  SU5        g )Nz<tr>z<tr style="text-align: z;">)rl   rw   rt   )rt   z</tr>)rL   	enumerateru   r!   rx   r|   )r-   linerl   r   rw   alignrt   nindex_levelsirk   val_tags              r4   write_trHTMLFormatter.write_tr   s     <D=JJvv&JJ0s;VDdODAhhq$'G$..Q->avLag6 $ 	

7F#r7   c           	     n   S/n[        S5      nU(       d  UR                  S5        U R                  b  [        U R                  [        5      (       a  U R                  R                  5       U l        [        U R                  [        [        45      (       d!  [        S[        U R                  5       35      eUR                  U R                  5        U R                  c  SnOSU R                   S3nU R                  c  SnOSU R                   S3nU R                  S	U S
SR                  U5       SU S3U5        U R                  R                   (       d  U R"                  (       a  U R%                  XR&                  -   5        U R)                  XR&                  -   5        U R                  SU5        g )N	dataframezdisplay.html.use_mathjaxtex2jax_ignorez.classes must be a string, list, or tuple, not rp   z id=""z	 border="z<tablez class="rH   r   z</table>)r	   rj   r   r)   r,   splitlistr+   	TypeErrortypeextendr&   r%   rL   rB   r   rw   rT   _write_headerr   _write_body)r-   rl   _classesuse_mathjax
id_sectionborder_attrs         r4   rI   HTMLFormatter._write_table   sd   = !;<OO,-<<#$,,,,#||113dllT5M::%%)$,,%7$8:  OODLL)== J q1J;;K%dkk]!4K

[M#((8*<)=Qzl!L	

 88??d55v(9(99:"3"334

:v&r7   c           	     V   U R                   R                  n[        U R                  [        5      (       Ga  SnU R                   R
                  (       a  [        R                  nOSnU R                  R                  USS9n[        XT5      n[        U5      S-
  n[        [        Xe5      5       GHO  u  nu  pU(       Ga  U R                   R                  nU R                   R
                  (       a  0 n[        U	R                  5       5       Hg  u  pX:  a  XUS-   '   O:X-   U:  a.  US-   X'   X:X  a  U
S U S-   XS  -   n
OU
S U XS-
     4-   XS  -   n
OXU'   X-   U:X  d  MV  SX'   U
S U S-   XS  -   n
Mi     Un	[        U5      S-
  nX:X  a  SX'   OJ0 n[        U	R                  5       5       H  u  pX:  a	  XUS-   '   M  XU'   M     SX'   Un	U
S U S/-   XS  -   n
S/U R                   S-
  -  nU R                   R"                  (       d  U R$                  (       ai  U R                   R&                  (       a=  U R                  R(                  U   nUR+                  [-        U=(       d    S5      5        OUR+                  S5        0 n[        U5      n[        U
5       HC  u  nnUU	;   a  U	U   S:  a  UR/                  U	U   S9UU'   OM-  US-  nUR+                  U5        ME     U R1                  XU R2                  US	S
9  GMR     g S/U R                   S-
  -  nU R                   R"                  (       d  U R$                  (       a[  U R                   R&                  (       a/  UR+                  U R                  R4                  =(       d    S5        OUR+                  S5        UR7                  U R9                  5       5        U R                   R:                  nU(       a5  U R                   U R                   R                  -   nUR=                  US5        U R1                  XU R2                  S	US9  g )Nz colspan="{span:d}" halign="left"Fsparsifyinclude_namesr[   )...r   rp   spanT)rt   rw   )rw   r   )r   is_truncated_horizontallyr)   r   r   r   r
   
no_default_format_multir   rM   r   zip
tr_col_numr   r*   r^   r\   rX   show_index_namesnamesrj   r   formatr   r   namer   ra   justifyinsert)r-   rl   r   templatesentinellevelslevel_lengths	inner_lvllnumrecordsvaluesins_colrecs_newtagr   rowr   rt   jr   vr   s                         r4   _write_col_headerHTMLFormatter._write_col_header  s   $(HH$F$F!dllJ//9H xx  >> \\//QV/WF-f?MM*Q.I+4S5O+P''w,"hh11Gxx((#%)-gmmo)>IC"~48q 1!$g!504q#'#4(.x(88(CfXFV(V %+ )/x(8+1A++>*@)A*0*:); %+ 15  #zW445 1)/)9H)DvhGW)W- *?. #+$'$6$:	,/0G,#%)-gmmo)>IC"~48q 104	 *?
 -.)"*!'!1UG!;fX>N!N ddoo1288>>T%<%< xx00#||11$7

<
#;<

2H%f-DAqG|"1:>&.oo71:o&FDG FAJJqM . c4+<+<4PTUY ,Qh $$//A-.Cxx~~!8!8 88,,JJt||006B7JJrNJJt99;<HH$$E(//DHH,?,??

7E*MM#t'8'8UMSr7   c                   U R                   R                  nU R                  R                  R                   Vs/ s H	  o3b  UOSPM     snS/U R
                  U(       a  SOS-   -  -   nU R                  XAU R                  SS9  g s  snf )Nrp   r[   r   T)rw   )r   r   r   r\   r   rg   r   r   )r-   rl   r   r<   r   s        r4   _write_row_headerHTMLFormatter._write_row_header  s    $(HH$F$F!37::3C3C3I3IJ3IaMqr)3IJbTJJ8!a@N
 
 	c4#4#4TB Ks   Bc                   U R                  SU5        U R                  R                  (       a  U R                  XR                  -   5        U R
                  (       a  U R                  XR                  -   5        U R                  SU5        g )Nz<thead>z</thead>)rL   r   rw   r   r   rT   r   )r-   rl   s     r4   r   HTMLFormatter._write_header  s`    

9f%88??""6,=,=#=>""""6,=,=#=>

:v&r7   c                    [        SS 5         [        U R                  5       Vs0 s H  oU R                  R	                  U5      _M      nnS S S 5        U$ s  snf ! , (       d  f       W$ = f)Nzdisplay.max_colwidth)r   rangerg   r   
format_col)r-   r   
fmt_valuess      r4   _get_formatted_values#HTMLFormatter._get_formatted_values  s^    2D9=B4::=NO=NTXX0033=NJO : P :9s   A%A
AA
A*c                n   U R                  SU5        U R                  5       nU R                  R                  (       aH  [	        U R
                  R                  [        5      (       a  U R                  X!U R                  -   5        OU R                  X!U R                  -   5        U R                  SU5        g )Nz<tbody>z</tbody>)
rL   r   r   r\   r)   r   r   _write_hierarchical_rowsr   _write_regular_rows)r-   rl   r   s      r4   r   HTMLFormatter._write_body  s    

9f%//1
 88>>j)9)9:FF))*t?P?P6PQ$$Z$:K:K1KL

:v&r7   c           	     n  ^^ U R                   R                  nU R                   R                  n[        U R                   R                  5      nU R                   R
                  (       a{  U R                   R                  S5      nUb0  U R                   R                  R
                  R                  U5      nO-U R                   R                  R
                  R                  SS9n/ n[        U5       GH@  mU(       aP  TU R                   R                  :X  a6  S/[        U5      -  n	U R                  U	UU R                  S U R                  S9  / nU R                   R
                  (       a  UR                  WT   5        O"U R                  (       a  UR                  S5        UR!                  UU4S j[        U R"                  5       5       5        U(       a5  U R                   R$                  U R                  -   n
UR'                  U
S5        U R                  XU R                  S U R                  S9  GMC     g )N	__index__Finclude_namer   rt   r   rp   c              3  4   >#    U  H  nTU   T   v   M     g 7fr:    r;   r   r   r   s     r4   r=   4HTMLFormatter._write_regular_rows.<locals>.<genexpr>  s     C1BAz!}Q'1B   )r   r   is_truncated_verticallyrM   r   r\   _get_formattermap_format_flatr   
tr_row_numr   r   r^   rj   rX   r   rg   r   r   )r-   r   rl   r   r   nrowsr   index_valuesr   str_sep_row
dot_col_ixr   s    `         @r4   r   !HTMLFormatter._write_regular_rows  s    %)HH$F$F!"&(("B"BDHH%%&88>>(())+6C#xx0066::3?  $xx0066CCQVCWuA&11D1D+E$gC0%%"&//   Cxx~~

<?+
 ((

2JJCtzz1BCC(!XX004??B


:u-MMT..T  3 r7   c                	  ^^ SnU R                   R                  nU R                   R                  nU R                   R                  n[	        U5      n[        UR                  [        5      (       d   eUR                  R                  SSS9n[        [        U6 5      nU R                   R                  (       Ga  [        R                  n	UR                  R                  U	SS9n
[        X5      n[	        U5      S-
  nU(       Gam  U R                   R                  nSn[!        U5       GH  u  nn0 n[        UR#                  5       5       H  u  nnUU:  a	  UUUS-   '   OrUU-   U:  ad  US-   UU'   U(       d3  [        XS-
     5      nSUS'   UR%                  U['        U5      5        SnO'[        X   5      nSUX-
  '   ['        U5      X'   OUUU'   UU-   U:X  d  M  SUU'   US:X  a*  UR%                  U['        S/[	        U5      -  5      5        M  U(       d  M  [        X   5      nSUX-
  '   ['        U5      X'   M     UX'   GM     SX   U'   T H  nTU   R%                  US5        M     US-  n[)        U5       H  m/ n0 nSnSn[        XT   5       HH  u  nnTU;   a  UT   S:  a  UR+                  UT   S	9UU'   OUS-  nM2  US-  nUR-                  U5        MJ     UR/                  UU4S
 j[)        U R0                  5       5       5        U(       a6  UR%                  U R2                  U-
  U R                   R4                  -   S5        U R7                  UUU R8                  U[	        U
5      U-
  S9  M     g / n[)        [	        U5      5       GH4  mU(       aP  TU R                   R                  :X  a6  S/[	        U5      -  nU R7                  UUU R8                  S U R2                  S9  [        [        UR                  R                  SSS96 5      n/ nUR/                  UT   5        UR/                  UU4S j[)        U R0                  5       5       5        U(       a3  UR%                  U R2                  U R                   R4                  -   S5        U R7                  UUU R8                  S UR                  R:                  S9  GM7     g )Nzrowspan="{span}" valign="top"Fr   r[   r   Tr   r   c              3  4   >#    U  H  nTU   T   v   M     g 7fr:   r   r   s     r4   r=   9HTMLFormatter._write_hierarchical_rows.<locals>.<genexpr>-       G5F:a=+5Fr   r   c              3  4   >#    U  H  nTU   T   v   M     g 7fr:   r   r   s     r4   r=   r   K  r   r   )r   r   r   r   rM   r)   r\   r   r   r   r   r   r
   r   r   r   r   r*   r   r+   r   r   rj   r   rg   r^   r   r   r   r]   )r-   r   rl   r   r   r   r   r   
idx_valuesr   r   r   r   ins_rowinsertedr   r   rec_newr   r   dot_rowix_colr   rt   sparse_offsetr   r   r   r   s    `                          @r4   r   &HTMLFormatter._write_hierarchical_rows  sw    3$(HH$F$F!"&(("B"B!!E
%++z2222[[..U.S
#z*+
88~~H[[..PU.VF-f?MM*Q.I& ((-- %.}%=MD' G%)'--/%:	T'>/3GC!G, 4Z'1+/!8GCL $,*.zA+/F*G.3 * 1 1'5> J+/*.z/B*C<A	(8 96;Gn
 3+/GCL :0/0GG,#qy * 1 1$+UE7S=O3O-P!"
 "**.z/B*C<A	(8 96;Gn
 3? &;@ +2M'E &>H 56(1(Fv&--gu= )
5\ !"%m]"CJGQG|"1:>&.oo71:o&FDG%* FAJJqM #D 

GU4::5FGG,JJ-7$((:M:MMu %%"%f+"=  - "< C3u:&*qTXX5H5H/I#('CH"4KMM#))!&*oo "  "22EQV2WX
 

:a=)

GU4::5FGG,JJt1D1DDeL%%"'++"5"5  ' 'r7   )r!   r%   r   r(   r   r    r"   r   r   r'   r#   r&   )NNNF)r.   r   r   z(str | list[str] | tuple[str, ...] | Noner%   zint | bool | Noner&   
str | Noner'   boolreturnNone)r   r,   r   z	list[str])r   r   )r   r$   )r   r   )r   )rk   r   rl   r$   r   r   )Fr   N)
rk   r   rw   r   rl   r$   rt   r   r   r   )r   N)rk   r   rl   r$   rt   r   r   r   )r{   r   N)
rk   r   rs   r,   rl   r$   rt   r   r   r   )r   r   FNNr   )r   r   rl   r$   r   r$   rw   r   r   r   rt   zdict[int, str] | Noner   r$   r   r   )rl   r$   r   r   r   zdict[int, list[str]])r   zMapping[int, list[str]]rl   r$   r   r   ) __name__
__module____qualname____firstlineno____doc__r   __annotations__r5   rD   r@   propertyrJ   rT   rX   r^   ra   rd   rg   rL   rx   r|   rv   r   rI   r   r   r   r   r   r   r   __static_attributes__r   r7   r4   r   r   &   s3    L%
 =A$(#"#H%#H :#H "	#H
 #H #H 
#HJ 	 / / + + + +   % % . .0
 QUAA"A47ACMA	ABA MQ???03??I?	?8  &*$$ $ 	$
 $ $ $$ $ 
$:#'JuTnC	'

',1,;>,	,\{1{;>{	{r7   r   c                  N   ^  \ rS rSrSrSS jrS	S jrS
S jrS	U 4S jjrSr	U =r
$ )NotebookFormatteriW  z
Internal class for formatting output data in html for display in Jupyter
Notebooks. This class is intended for functionality specific to
DataFrame._repr_html_() and DataFrame.to_html(notebook=True)
c                    [        U R                  5       Vs0 s H  oU R                  R                  U5      _M      sn$ s  snf r:   )r   rg   r   r   )r-   r   s     r4   r   'NotebookFormatter._get_formatted_values^  s7    383DE3Da488&&q))3DEEEs   %A c                4    U R                   R                  SS9$ )NFr   )r   r   rQ   s    r4   ra   /NotebookFormatter._get_columns_formatted_valuesa  s    ||((e(<<r7   c                `  ^ SnSnSmSS/n[        U R                  [        5      (       a4  UR                  S5        U R                  (       a  UR                  S5        OUR                  S5        S	R                  U4S
 jU 5       5      n[        U SU SU 35      nU R                  U5        g )Nz            <style scoped>z            </style>zM                .dataframe %s {
                    %s: %s;
                })ztbody tr th:only-of-typevertical-alignmiddle)ztbody tr thr
  top)zthead tr th
text-alignleft)zthead tr:last-of-type thr  right)zthead thr  r  z

c              3  .   >#    U  H
  nTU-  v   M     g 7fr:   r   )r;   ttemplate_selects     r4   r=   0NotebookFormatter.write_style.<locals>.<genexpr>}  s     "N1?Q#6s   r?   )r)   r   r   rj   rT   rB   r   rL   )r-   template_firsttemplate_lastelement_propstemplate_midr   r  s         @r4   write_styleNotebookFormatter.write_stylee  s    
 E4
 dllJ//  !FG&&$$G   !DE{{"N"NN^,B|nB}oNO

8r7   c                   > U R                  S5        U R                  5         [        TU ]  5         U R                  S5        U R                  $ )Nz<div>z</div>)rL   r  superr@   r    )r-   	__class__s    r4   r@   NotebookFormatter.render  s;    

7

8}}r7   r   r   r   )r   r   )r   r   r   r   r   r   ra   r  r@   r  __classcell__)r  s   @r4   r  r  W  s"    F=8 r7   r  N)r   
__future__r   textwrapr   typingr   r   r   r   pandas._configr	   pandas._libsr
   pandasr   r   pandas.io.commonr   pandas.io.formats.formatr   r   pandas.io.formats.printingr   collections.abcr   r   r   r   r  r   r7   r4   <module>r)     s^    #   & 
 $ 4 n nb/ /r7   