gL ie^dZddlmZddlmZddlmZmZmZm Z ddl m Z ddl m Z ddlmZmZddlmZdd lmZmZdd lmZer dd lmZmZmZGd d ZGddeZy)z, Module for formatting output data in HTML. ) annotations)dedent) TYPE_CHECKINGAnyFinalcast) get_option)lib) MultiIndexoption_context)is_url)DataFrameFormatterget_level_lengths) pprint_thing)HashableIterableMappingceZdZUdZdZded< d ddZddZd dZe d!d Z e d!d Z e d!d Z e d"d Z d#d Ze d!dZe d"dZd$d%dZ d& d'dZd(d)dZ d* d+dZ d, d-dZd$d.dZd.dZd.dZd.dZd/dZd.dZ d0dZ d0dZy)1 HTMLFormatterac 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||_||_|jj|_|jjj|_g|_|jj |_|jj|_|jj|_||durtttd}n|sd}||_ ||_ ||_i|_t!|jt"}|jjj%D]^\}}t!|tr|dn|} | |j|<|s/t!|t&s@|D]} | |jt)| <`y)NTzdisplay.html.borderpx)fmtclassesframetr_framecolumnselements bold_rowsescapeshow_dimensionsrintr bordertable_id render_links col_space isinstancer itemstuplestr) self formatterrr$r%r&is_multi_indexcolumnvaluecol_space_value column_indexs \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/io/formats/html.py__init__zHTMLFormatter.__init__2sA XX^^ xx((00 #% ++hhoo #xx77 >Vt^#z*?@AFF   (#DLL*=!XX//557 HMFE.8.Drl%O%4DNN6 "*VU";$*HL8GDNN3|#45H  Hc|j}td|Dr|Dcgc] }t|}}dj|Scc}w)Nc3<K|]}t|tywN)r(r+).0xs r3 z*HTMLFormatter.to_string..Ys1az!S!1s )renderanyr+join)r,linesr:s r3 to_stringzHTMLFormatter.to_stringWsF  151 1%*+SV+E+yy,sA c |j|jrVtd}|jdt |j d|dt |j j d|jS)Nz

z rows  z columns

) _write_tableshould_show_dimensionschrwritelenrrr)r,bys r3r=zHTMLFormatter.render]si   & &SB JJc$**o&fRD#djj6H6H2I1J,W }}r5c.|jjSr8)rrFr,s r3rFz$HTMLFormatter.should_show_dimensionshsxx...r5c.|jjSr8)rshow_row_idx_namesrLs r3rNz HTMLFormatter.show_row_idx_nameslxx***r5c.|jjSr8)rshow_col_idx_namesrLs r3rQz HTMLFormatter.show_col_idx_namesprOr5c|jjr |jjjS|jryy)Nr)rindexrnlevelsrQrLs r3 row_levelszHTMLFormatter.row_levelsts4 88>>::##++ +  $ $ r5c|jSr8)rrLs r3_get_columns_formatted_valuesz+HTMLFormatter._get_columns_formatted_valuess ||r5c.|jjSr8)r is_truncatedrLs r3rZzHTMLFormatter.is_truncatedsxx$$$r5cTt|jjjSr8)rIrrrrLs r3ncolszHTMLFormatter.ncolss488$$,,--r5c\t|}|jjd|z|zy)NrD)rrappend)r,sindentrss r3rHzHTMLFormatter.writes& !_ S6\B./r5c|jj|d}|r||xsd}|d|dz }|j|d||y)a Method for writing a formatted 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 is for use inside . 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 cell. Nzstyle="min-width: z;"thkindr`tags)r'get _write_cell)r,r_headerr`rgr's r3write_thzHTMLFormatter.write_thsV2NN&&q$/ i+:2D ( 26 6D f4@r5c.|j|d||y)Ntdre)ri)r,r_r`rgs r3write_tdzHTMLFormatter.write_tds f4@r5c@| d|d|d}nd|d}|jrdddd}ni}t||j}|jr2t |r't|ij}|d |d z }d } nd } |j ||| d |d|y)Nz&z<z>)&rprq) escape_charsz zrczr5c^|i}||jd|n|jd|d|||z }t|D]T\}} |j|d} |s|jr||kr|j | ||| A|j | || V||z}|jd|y)Nzz)r`rjrg)rgz)rH enumeraterhr rkrn) r,liner`rrjalignrg nindex_levelsir_val_tags r3write_trzHTMLFormatter.write_trs <D = JJvv & JJ0s;V D,dO 7DAqhhq$'G$..Q-> avG L ag 6  7 , 7F#r5c :dg}td}|s|jd|jt|jtr|jj |_t|jt tfs!tdt|j|j|j|jd}nd|jd}|jd}nd|jd}|jd |d d j|d|d ||jj s |j"r|j%||j&z|j)||j&z|jd |y)N dataframezdisplay.html.use_mathjaxtex2jax_ignorez.classes must be a string, list, or tuple, not rcz id=""z border="zydg|j dz z}|jj"s |j$rQ|jj&r*|j+|jj4xsdn|j+d|j7|j9|jj:}|r5|j |jjz} |j=| d|j1|||j2d | y) Nz colspan="{span:d}" halign="left"Fsparsify include_namesrS)...rrcspanT)rgrj)rjr|)ris_truncated_horizontallyr(rr rr no_default _format_multirrIrzzip tr_col_numrr)rVrTrQshow_index_namesnamesr^rformatrrnamerrXjustifyinsert)r,r`rtemplatesentinellevels level_lengths inner_lvllnumrecordsvaluesins_colrecs_newtagrrowrrgjr~vr|s r3_write_col_headerzHTMLFormatter._write_col_headers$(HH$F$F! dllJ /9Hxx  >> \\//QV/WF-fh?MM*Q.I+4S5O+PL V''w,"hh11Gxx((#%)-gmmo)>XIC"g~48q 1!$tg!504q #'9#4(.x(88(CfWXFV(V%+ )/x(8+1'A++>*@)A*0*:);%+ 15  #TzW445 1)/)9H)DvghGW)W-X.#+$' $6$: 9,/0GG,#%)-gmmo)>5IC"g~48q 104 5 -.)"*!'!1UG!;fWX>N!Nddoo1288>>T%<%<xx00#||11$7 < #;< 2H%f-"DAqG|"1:>&.oo71:o&FDG FAJJqM" c64+<+<4PT UYL Vh$$//A-.Cxx~~!8!8 88,,JJt||006B7JJrN JJt99; <HH$$E(//DHH,?,?? 7E* MM#vt'8'8UM Sr5c |jj}|jjjDcgc]}||nd c}dg|j |rdndzzz}|j |||jdycc}w)NrcrSrT)rj)rrrrTrr\rr)r,r`rr:rs r3_write_row_headerzHTMLFormatter._write_row_headers}$(HH$F$F!37::3C3C3I3IJaAMqr)JbT JJ8!a @N   c64#4#4T BKs Bc|jd||jjr|j||jz|j r|j ||jz|jd|y)Nzz)rHrrjrrrNr)r,r`s r3rzHTMLFormatter._write_headersd 9f% 88??  " "6D,=,=#= >  " "  " "6D,=,=#= > :v&r5ctdd5t|jDcic]}||jj | }}ddd|Scc}w#1swYSxYw)Nzdisplay.max_colwidth)r ranger\r format_col)r,r~ fmt_valuess r3_get_formatted_valuesz#HTMLFormatter._get_formatted_valuessb 2D 9 P=B4::=NO!TXX0033OJO PP PsA#AAAA#c^|jd||j}|jjrDt |j jt r |j|||jzn|j|||jz|jd|y)Nzz) rHrrrTr(rr _write_hierarchical_rowsr_write_regular_rows)r,r`rs r3rzHTMLFormatter._write_bodys 9f%//1  88>>j)9)9:F  ) )*ft?P?P6P Q  $ $Z$:K:K1K L :v&r5cF |jj}|jj}t|jj}|jj r}|jj d}|0|jjj j|}n0|jjj jd}g}t|D]0 |rR |jjk(r9dgt|z} |j| ||jd|jg}|jj r|j n|jr|jd|j! fdt|j"D|r5|jj$|jz} |j'| d|j|||jd|j3y)N __index__F include_namerrgr}rcc3.K|] }|ywr8r9rrr~s r3r;z4HTMLFormatter._write_regular_rows..sCAz!}Q'C)rris_truncated_verticallyrIrrT_get_formattermap _format_flatr tr_row_numrrrVr^rQrr\rr) r,rr`rrnrowsr index_valuesr str_sep_row dot_col_ixr~s ` @r3rz!HTMLFormatter._write_regular_rowss%)HH$F$F!"&(("B"BDHH%%& 88>>(())+6C#xx0066::3?  $xx0066CCQVCW u A&11D1D+E$gC0  %%"&// Cxx~~ <?+ (( 2 JJCtzz1BC C(!XX004??B  :u- MMVT..T  3 r5c T d}|jj}|jj}|jj}t |}t |j tsJ|j jdd}tt|}|jjrtj} |j j| d} t| | } t | dz } |r_|jj} d}t!| D]\}}i}t|j#D]\}}|| k\r |||dz<np||z| kDrc|dz||<|s4t|| dz }d|d<|j%| t'|d}n*t|| }d|| |z <t'||| <n|||<||z| k(sd|| <|dk(r)|j%| t'dgt | z|st|| }d|| |z <t'||| <|| |<d| | | <D]}|j%| d|dz }t)|D]g}i}d}d}t| |D]F\}}|vr!|dkDr|j+| ||<n|dz }1|dz }|j-|H|j/fd t)|j0D|r6|j%|j2|z |jj4zd|j7|||j8|t | |z yg}t)t |D]0|rR|jjk(r9dgt |z}|j7|||j8d|j2 tt|j jdd}g}|j/||j/fd t)|j0D|r3|j%|j2|jj4zd|j7|||j8d|j j: 3y) Nzrowspan="{span}" valign="top"FrrSrTrrc3.K|] }|ywr8rrs r3r;z9HTMLFormatter._write_hierarchical_rows..-G:a=+Grrc3.K|] }|ywr8rrs r3r;z9HTMLFormatter._write_hierarchical_rows..Krr)rrrrrIr(rTr rrrrr rrrrzr)rr*rrr^rr\rVrrrrU)r,rr`rrrrr idx_valuesrrrrins_rowinsertedrrrec_newrrdot_rowix_colrrg sparse_offsetrrrr~s ` @r3rz&HTMLFormatter._write_hierarchical_rowss3$(HH$F$F!"&(("B"B!!E %++z222[[..U.S #z*+ 88  ~~H[[..PU.VF-fh?MM*Q.I&((-- %.}%="2MD' G%)'--/%:E T'>/3GC!G, 4Z'1+/!8GCL$,*.z'A+/F*G.3 * 1 1'5> J+/*.z'/B*CFv&--gu=> 5\  ! "%mZ]"C "JGQG|"1:>&.oo71:o&FDG%*  FAJJqM " GU4::5FGG,JJ-7$((:M:MMu %%"%f+ "= - <C3u:& *qTXX5H5H/I#('CH"4KMM#))!&*oo ""22EQV2WX  :a=) GU4::5FGG,JJt1D1DDeL %%"'++"5"5 ' r5)NNNF) r-rrz(str | list[str] | tuple[str, ...] | Noner$zint | bool | Noner% str | Noner&boolreturnNone)rr+rz list[str])rr)rr#)rr)r)r_rr`r#rr)FrN) r_rrjrr`r#rgrrr)rN)r_rr`r#rgrrr)rmrN) r_rrfr+r`r#rgrrr)rrFNNr)r{rr`r#rr#rjrr|rrgzdict[int, str] | Noner}r#rr)r`r#rrrzdict[int, list[str]])rzMapping[int, list[str]]r`r#rr)__name__ __module__ __qualname____doc__r__annotations__r4rAr=propertyrFrNrQrVrXrZr\rHrkrnrirrErrrrrrrrr5r3rr&s3L% =A$(#" #H%#H:#H" #H  #H  #H #HJ //++++  %%..0 QUAA"A47ACMA ABAMQ???03??I? ?8 &*$$$ $  $  $$$$ $:#'JuTnC ' ',1,;>, ,\{1{;>{ {r5rc<eZdZdZddZddZddZdfd ZxZS) NotebookFormatterz 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) ct|jDcic]}||jj| c}Scc}wr8)rr\rr)r,r~s r3rz'NotebookFormatter._get_formatted_values^s3383DEa488&&q))EEEs#>c:|jjdS)NFr)rrrLs r3rXz/NotebookFormatter._get_columns_formatted_valuesas||((e(<z zM .dataframe %s { %s: %s; })ztbody tr th:only-of-typevertical-alignmiddle)z tbody tr thrtop)z thead tr th text-alignleft)zthead tr:last-of-type thrright)zthead thrrz c3(K|] }|z ywr8r)r9ttemplate_selects r3r;z0NotebookFormatter.write_style..}s"N1?Q#6"Nsr<)r(rr r^rNr?rrH)r,template_first template_last element_props template_midrrs @r3 write_stylezNotebookFormatter.write_stylees  E 4  dllJ /  !F G&&$$G  !D E{{"N "NN ^,B|nB}oNO 8r5c|jd|jt| |jd|jS)Nz
z
)rHrsuperr=r)r, __class__s r3r=zNotebookFormatter.renders; 7   8}}r5rr)rr) rrrrrrXrr= __classcell__)rs@r3rrWs" F=8r5rN)r __future__rtextwraprtypingrrrrpandas._configr pandas._libsr pandasr r pandas.io.commonr pandas.io.formats.formatrrpandas.io.formats.printingrcollections.abcrrrrrrr5r3rs^#& $4nnb/ /r5