
    h+                        d dl m Z  d dlmZ d dlZd dlZd dlZd dlZd dlZd dl	Z
d dl	mZmZmZmZmZ d dlmZ d dlmc mc mZ dZd Z ej2                  ddg	      d
        Z ej2                  ej6                  	      d        Zej:                  j=                  dddg      d        Zd Z d Z!d Z"ej:                  j=                  d ed ejF                  d      i      df eddgi      dfg      d        Z$d Z%d Z&ej:                  j=                  di ddfdd id!d"fg      d#        Z'ej:                  j=                  d$d%d g      d&        Z(ej:                  j=                  d'g d(      d)        Z)ej:                  j=                  d*d+d,g      d-        Z*ej:                  j=                  d. ed d/gd0d1gd2d3gd4d5gg ed6dge+7       ejF                  d2      8      d9d: id;f ed< e d=d/d/       e d=d0d0      gi      d<d> id?f ed@ e
jX                  dAdBgdCD      i      d@dE idFf e e
jZ                  d/d0gdG7       e
jZ                  d/d0gdH7       e
jZ                  d/d0gdI7       e
jZ                  d/d0gdJ7       e
jZ                  d%d gdK7       e
jZ                  dLdMg e
j\                  dLdMg      7       e
jZ                  d/dNge+7      dO      dP gd5z  dQfg      dR        Z/dS Z0dT Z1ej:                  j=                  dUd/d3g      dV        Z2dW Z3ej:                  j=                  dXdYdZg      d[        Z4ej:                  j=                  d\dd] d^fdd_ dNfd0d` dNfd0da dNfg      db        Z5ej:                  j=                  dcdgd%d      de        Z6ej:                  j=                  dcdgd%d      df        Z7dg Z8dh Z9di Z:ej:                  j=                  dj ejv                   ejF                  d0      jy                  d0       ejz                   e>d2      d0      gdkdlgm      dndof ejv                   ejF                  d2       ejz                   e>d2      d0      g      dpdqfg      dr        Z?ds Z@ej:                  j=                  dtg du      dv        ZA G dw dx      ZBej:                  j=                  dydzd{d|gg      d}        ZCd~ ZDd ZEd ZFej:                  j=                  dd%d g      ej:                  j=                  dd%d g      ej:                  j=                  dd%d g      ej:                  j=                  d ed d/g      df ed d/gd      df ej                  dLgdMdgg      df ej                  dLgdMdggddgm      dfg      ej:                  j=                  d ed d/g      df ed d/gd      df ej                  dLgdMdgg      df ej                  dLgdMdggddgm      dfg      d                                    ZHej:                  j=                  dd%d g      ej:                  j=                  dd%d g      ej:                  j=                  dd%d g      ej:                  j=                  d e ejF                  d            df e ejF                  d      d      df ej                  dLdMgddgddgg      df ej                  dLdMgddgddggg dm      dfg      ej:                  j=                  d e ejF                  d            df e ejF                  d      d      df ej                  dLdMgddgddgg      df ej                  dLdMgddgddggg dm      dfg      d                                    ZIej:                  j=                  dd d g      d        ZJej:                  j=                  dd d g      ej:                  j=                  dddg      d               ZKej:                  j=                  dd%d g      d        ZLd ZMd ZNej:                  j=                  dddg      d        ZOej:                  j=                  dddg      d        ZPej:                  j=                  ddd fdd fg      ej:                  j=                  dg d      d               ZQej:                  j=                  dyd%d g      d        ZRd ZSej:                  j=                  dg d      d        ZT G d d      ZUd ZVej:                  j=                  dddg      d        ZWd ZXd ZYd ZZd Z[d Z\dÄ Z]y)    )datetime)StringION)	DataFrameIndex
MultiIndex
get_optionoption_contexta  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.c                     dj                  |dg      } | dddd|      }t        |d      5 }|j                         }ddd       |j                         S # 1 sw Y   j                         S xY w)	a.  
    Read HTML file from formats data directory.

    Parameters
    ----------
    datapath : pytest fixture
        The datapath fixture injected into a test by pytest.
    name : str
        The name of the HTML file without the suffix.

    Returns
    -------
    str : contents of HTML file.
    .htmlioformatsdatazutf-8encodingN)joinopenreadrstrip)datapathnamefilenamefilepathfr   s         ID:\jyotish\venv\Lib\site-packages\pandas/tests/io/formats/test_to_html.pyexpected_htmlr   !   sb     xxv'HiBH	h	)Qvvx 
*;;= 
*;;=s   AA.mixedempty)paramsc           
         | j                   dk(  rt        t        j                  j	                  d      j                  d      t        t        d      D cg c]  }| d	 c}      dt        j                  d            }t        j                  |j                  ddd	f<   t        j                  |j                  ddd
f<   |S | j                   dk(  r!t        t        j                  d            }|S yc c}w )z8Fixture for a big mixed Dataframe and an empty Dataframer         z?!ABindexN   r$   r%   r   )paramr   nprandomdefault_rngstandard_normalr   rangearangenanloc)requestidfs      r   biggie_df_fixturer5   7   s     }}YY**1-==cBeCj9jqcHj9: ))C.
 66ssCx66ssCx		'	!RYYs^,	 
" :s   C7c                     | j                   S N)r)   )r2   s    r   justifyr8   J   s    ==    	col_space   2   c                 d   t        t        j                  j                  d      j                  d            }|j	                  |       }|j                  d      D cg c]  }t        j                  d|      s| }}t        |      dkD  sJ |D ]  }d|v sJ t        |       |v rJ  y c c}w )	Nr!         sizer:   z\n<th[>\s]r   z	min-width)
r   r*   r+   r,   to_htmlsplitresearchlenstr)r:   r4   resultxhdrshs         r   test_to_html_with_col_spacerO   O   s    	299((+222?	@B ZZ)Z,F||E*H*!biiQ.GA*DHt9q==a9~"""  Is   B-:B-c                      t        t        j                  j                  d      j                  d      g d      } d}t	        j
                  t        |      5  | j                  dd	g
       d d d        t	        j
                  t        |      5  | j                  g d
       d d d        d}t	        j
                  t        |      5  | j                  dddd
       d d d        y # 1 sw Y   ~xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr!   r@   r@   rA   abccolumnszGCol_space length\(\d+\) should match DataFrame number of columns\(\d+\)matchr;   (   rC   )r;   rZ   r<   <   zunknown columnfoo   "   )rS   rT   d)r   r*   r+   r,   pytestraises
ValueErrorrE   r4   msgs     r   2test_to_html_with_column_specific_col_space_raisesre   \   s    	
		a ''V'4o
B
	0  
z	-


b"X
& 
. 
z	-


-
. 
. C	z	-


5r;
< 
.	- 
.	- 
.	- 
.	-s$   C,C8D,C58DDc                  "   t        t        j                  j                  d      j                  d      g d      } | j	                  ddd	      }|j                  d
      D cg c]  }t        j                  d|      s| }}d|d   v sJ d|d   v sJ d|d   v sJ | j	                  g d	      }|j                  d
      D cg c]  }t        j                  d|      s| }}d|d   v sJ d|d   v sJ d|d   v sJ y c c}w c c}w )Nr!   rQ   rA   rR   rV   2emr]   rS   rT   rC   
rD   zmin-width: 2em;">a</th>r?   zmin-width: 23px;">b</th>z
<th>c</th>r@   )1emr!   r@   zmin-width: 1em;">a</th>zmin-width: 2px;">b</th>zmin-width: 3px;">c</th>)r   r*   r+   r,   rE   rF   rG   rH   )r4   rK   rL   rM   s       r   +test_to_html_with_column_specific_col_spacerk   p   s%   	
		a ''V'4o
B ZZB"7Z8F||D)G)!RYY{A-FA)DG$Q///%a00047"""ZZ-Z0F||D)G)!RYY{A-FA)DG$Q///$Q///$Q/// H Hs   %DD	D%Dc                      ddgddgddgd} t        |       j                  ddg      }|j                         }d	|vsJ y )
NrS   rT    r?   r!   )c1c2r   rn   ro   rowspan)r   	set_indexrE   )r   r4   rK   s      r   $test_to_html_with_empty_string_labelrr      sK    *S"I1v>D	4	"	"D$<	0BZZ\FF"""r9   zdf,expectedu   σg      $@	unicode_1r$   	unicode_2c                 J    t        ||      }| j                         }||k(  sJ y r7   r   rE   )r4   expectedr   rK   s       r   test_to_html_unicoderx      s)     Xx0HZZ\FXr9   c                     |dz  }| j                  |d       t        t        |      d      5 }| j                         |j                         k(  sJ 	 d d d        y # 1 sw Y   y xY w)N	test.htmlgbkr   )rE   r   rJ   r   )float_frametmp_pathpathr   s       r   test_to_html_encodingr      sX    k!Du-	c$i%	(A""$000 
)	(	(s   $AA&c                 l    t        dg di      }|j                  d      }t        | d      }||k(  sJ y )Nr$   )g      @g@g@,)decimalgh12031_expected_outputr   rE   r   r   r4   rK   rw   s       r   test_to_html_decimalr      s<    	C)	*BZZZ$FX'@AHXr9   zkwargs,string,expectedz<type 'str'>escapedescapeFz<b>bold</b>escape_disabledc                     d}d}||||i||||id} t        |      j                  di | }t        ||      }||k(  sJ y )Nzstr<ing1 &amp;zstri>ng2 &amp;)zco<l1zco>l2 r   )kwargsstringrw   r   rS   rT   	test_dictrK   s           r   test_to_html_escapedr      s^     	AAfa0Avq&;QRI)Yy!))3F3FXx0HXr9   index_is_namedTc           	      L   t        t        d      t        dd      t        dd      t        dd      d      }t        j                  ddgdd	gg      |_        | r&t        |j                  j                  d
      |_        |j                  d      }t        |d      }||k(  sJ y )Nr!   r@         rS   rT   rU   r_   rS   rT   rU   r_   idxr   Fr&   gh8452_expected_output)
r   r.   r   from_productrW   r   r'   valuesrE   r   )r   r   r4   rK   rw   s        r   #test_to_html_multiindex_index_falser      s     
AhU1a[uQ{q!M
B ((3*sCj)ABBJu5ZZeZ$FX'?@HXr9   zmulti_sparse,expected))F(multiindex_sparsify_false_multi_sparse_1)F(multiindex_sparsify_false_multi_sparse_2)Tmultiindex_sparsify_1)Tmultiindex_sparsify_2c                 8   t        j                  g dg dgdd g      }t        ddgddgd	d
gddgg|      }|j                  d      r|d d d   |_        t        d|       5  |j                         }d d d        t        ||      }|k(  sJ y # 1 sw Y   xY w)N)r   r   r?   r?   )r   r?   r   r?   r\   namesr   r?   r!   r@      r      r   r&   2zdisplay.multi_sparse)r   from_arraysr   endswithrW   r	   rE   r   )multi_sparserw   r   r'   r4   rK   s         r    test_to_html_multiindex_sparsifyr      s     ""L,#?t}UE	QFQFQFQF35	AB3Q3Z
	.	= 
>Xx0HX 
>	=s   #BBzmax_rows,expected)r[   gh14882_expected_output_1)8   gh14882_expected_output_2c                     t        j                  g dg dg dgg d      }t        dt        t	        |            i|      }|j                  |       }t        ||      }||k(  sJ y )	N)d   r"   i,  )
   r(   r;   )r?   r!   r@   r   r   r   r   rR   r   nr&   )max_rows)r   r   r   r.   rI   rE   r   )r   rw   r   r'   r4   rK   s         r   )test_to_html_multiindex_odd_even_truncater      sg     ##	,(=>oE 
Cs5z*+5	9BZZZ*FXx0HXr9   zdf,formatters,expectedr?   r!   r@   r   r   r   r   r\   dtyperW   r'   	__index__c                     d|    S )Nabcdr   rL   s    r   <lambda>r      s    F1Ir9   index_formattermonthsi  c                 $    | j                  d      S )Nz%Y-%mstrftimer   s    r   r   r      s    G!4r9   datetime64_monthformatterhodz10:10:10.100z12:12:12.120z%H:%M:%S.%f)formatc                 $    | j                  d      S )Nz%H:%Mr   r   s    r   r   r     s    ajj1r9   datetime64_hourformatterint64float64Int64r   booleanrS   rT   r   )r3   r   IsrT   rU   oc                      y)N	formattedr   r   s    r   r   r     s    {r9   various_dtypes_formattedc                 N    t        ||      }| j                  |      }||k(  sJ y )N
formattersrv   )r4   r   rw   r   rK   s        r   test_to_html_formattersr      s/    \ Xx0HZZ:Z.FXr9   c                  "   t        g dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      } | j                  dgdg      j                          y )	N)rS   rS   rT   rT   rS   )1er   2èmer   r   r   r!   r   )   clé1   clé2u	   données1u	   données2r   r   r'   rW   )r   r*   r+   r,   r-   pivot_table_repr_html_r4   s    r   test_to_html_regression_GH6098r      sp    	.<..q1AA!D..q1AA!D		

B NN'WIN6BBDr9   c                     t        j                  ddd      }t        |t        d            }|j	                  dd      }t        | d	      }||k(  sJ y )
N20010101Dr(   )startfreqperiodsr      r   )r   max_colstruncate)pd
date_ranger   r.   rE   r   )r   r'   r4   rK   rw   s        r   test_to_html_truncater   .  sP    MM
bAE	b		2BZZQZ/FXz2HXr9   rB   c                    t        g d      }d}t        j                  t        t	        j
                  |j                  |                   5  |j                  dj                  g| z         d d d        y # 1 sw Y   y xY w)NrR   rV   zAFormatters length({}) should match DataFrame number of columns(3)rX   z{}r   )r   r`   ra   rb   rG   r   r   rE   )rB   r4   rd   s      r   'test_html_invalid_formatters_arg_raisesr   6  sY     
?	+B
MC	z3::d3C)D	E


t{{md2
3 
F	E	Es   !A88Bc                     ddddddddd	dd
dddddddddg}t        |      }d }||d d g}|j                  |d      }t        | d      }||k(  sJ y )Nr?   r!   r@   r   )r$   r%   Cr   r   r   r   r   	   r                     c                     t        |       dz   S )N_mod)rJ   r   s    r   r   z1test_to_html_truncate_formatter.<locals>.<lambda>I  s    CFVOr9   )r   r   truncate_formatterr   )r   r   r4   fmtr   rK   rw   s          r   test_to_html_truncate_formatterr   ?  s     aaa(aaa(br+r,	D 
4B
#CsD$'JZZ:Z:FX';<HXr9   zsparsify,expected)Ttruncate_multi_index)Ftruncate_multi_index_sparse_offc                 |    g dg dg}t        ||      }|j                  dd|       }t        ||      }||k(  sJ y )N)barr   bazr   r\   r\   quxr   )onetwor   r   r   r   r   r   r   r   )r   r   sparsifyr   )r   rw   r   arraysr4   rK   s         r   !test_to_html_truncate_multi_indexr  P  sN     	A@F 
	0BZZQZBFXx0HXr9   zoption,result,expectedc                 "    | j                         S r7   rE   r   s    r   r   r   b  s
    "**,r9   1c                 &    | j                  d      S )Nr!   )borderr  r   s    r   r   r   c  s    "**A*.r9   c                 "    | j                         S r7   r  r   s    r   r   r   d  s
    rzz|r9   c                 "    | j                         S r7   )r   r   s    r   r   r   e  s    r~~'r9   c                     t        dddgi      }| 	 ||      }nt        d|       5   ||      }d d d        d| d}||v sJ y # 1 sw Y   xY w)Nr$   r?   r!   zdisplay.html.borderzborder="")r   r	   )optionrK   rw   r4   s       r   test_to_html_borderr  _  sb     
C!Q=	!B~16:BZF ;(1%Hv ;:s   	AAr5   )indirectc                 v   | }|j                         }t               }|j                  |      }|J |j                         |k(  sJ t        |t              sJ |j                  ddgd       |j                  ddgdd i       |j                  ddgt               |j                  ddgd	t        
       y )N)bufr%   r$      )rW   r:   c                 
    | dS )Nz.1fr   r   s    r   r   ztest_to_html.<locals>.<lambda>  s
    3jr9   )rW   r   )rW   float_formatr   )rW   r:   r  )rE   r   getvalue
isinstancerJ   )r5   r4   r   r  retvals        r   test_to_htmlr  s  s     
B


A
*CZZCZ F>><<>QaJJSzRJ0JJSzs4H.IJJJJSzJ4JJSzRcJBr9   c                 (    | }|j                          y r7   r  )r5   r4   s     r   test_to_html_empty_dataframer    s    	BJJLr9   c                     | }|j                         }|j                  d      }|j                  |       |j                         }||k(  sJ y )Nrz   )rE   r   r   )r5   tmpdirr4   rw   r~   rK   s         r   test_to_html_filenamer    sE    	Bzz|H;;{#DJJtYY[FXr9   c                      t        dt        j                  j                  d      j	                  d      i      } | j                  d      }||j                  d         }d|vsJ y )NrL   r!   r   F)	bold_rowsz</thead>z<strong)r   r*   r+   r,   r-   rE   find)r4   r   rK   s      r   test_to_html_with_no_boldr     s\    	C..q1AA!DE	FB:::&D$))J'(FF"""r9   c                 6    | j                  dg      }d|vsJ y )Nr$   rV   z
<th>B</th>r  )r|   rK   s     r   test_to_html_columns_argr"    s%      # /Fv%%%r9   zcolumns,justify,expectedCL0CL1r   leftmultiindex_1rightmultiindex_2c                     t        t        d      t        d      g|       }|j                  |      }t        ||      }||k(  sJ y )Nr   efghrV   r8   )r   listrE   r   )rW   r8   rw   r   r4   rK   s         r   test_to_html_multiindexr-    sG    & 
DL$v,/	ABZZZ(FXx0HXr9   c                     t        g dg dg ddg d      }|j                  |       }t        |d      j                  |       }||k(  sJ y )N)r   i0u  r!   )r?   r!   ip )ih r   r?   r$   r%   r   rV   r+  r8   )r   rE   r   r   )r8   r   r4   rK   rw   s        r   test_to_html_justifyr0    sS    	-nE
B ZZZ(FXy1888IHXr9   r8   )zsuper-rightz
small-left	noinherittinypandasc                     t               }d}t        j                  t        |      5  |j	                  |        d d d        y # 1 sw Y   y xY w)Nz#Invalid value for justify parameterrX   r+  )r   r`   ra   rb   rE   )r8   r4   rd   s      r   test_to_html_invalid_justifyr5    s8    
 
B
/C	z	-


7
# 
.	-	-   AAc                   l    e Zd Zej                  d        Zej                  d        Zd Zd Zd Z	d Z
y)TestHTMLIndexc                 `    g d}t        g dg dddt        j                  gdg d|      }|S )Nr\   r   r   r?   r!   r@   )g333333?g333333@gffffff@r   r   r/  r   )r   r*   r0   )selfr'   r4   s      r   r4   zTestHTMLIndex.df  s3    %/rvv8NO#

 	r9   c                     t        |d      S )Nindex_2)r   )r<  r   s     r   expected_without_indexz$TestHTMLIndex.expected_without_index  s    Xy11r9   c                     t        |d      }|j                         |k(  sJ |j                  d      }|j                  D ]  }||vrJ  ||k(  sJ y )Nindex_1Fr&   )r   rE   r'   )r<  r   r4   r?  expected_with_indexrK   r3   s          r   $test_to_html_flat_index_without_namez2TestHTMLIndex.test_to_html_flat_index_without_name  s_     ,Hi@zz|2222%(AF?"? ////r9   c                     t        g dd      |_        t        |d      }|j                         |k(  sJ |j                  d      |k(  sJ y )Nr:  r   r   index_3Fr&   )r   r'   r   rE   )r<  r   r4   r?  rB  s        r   !test_to_html_flat_index_with_namez/TestHTMLIndex.test_to_html_flat_index_with_name  sM    .U;+Hi@zz|2222zzz&*@@@@r9   c                     g d}t        j                  |      |_        t        |d      }|j	                         |k(  sJ |j	                  d      }dD ]  }||vrJ  ||k(  sJ y )N)r\   car)r\   bike)r   rI  index_4Fr&   )r\   r   rI  rJ  r   from_tuplesr'   r   rE   )r<  r   r4   r?  tuplesrB  rK   r3   s           r   %test_to_html_multiindex_without_namesz3TestHTMLIndex.test_to_html_multiindex_without_names  su     C))&1+Hi@zz|2222%(.AF?"? / ////r9   c                     g d}t        j                  |ddg      |_        t        |d      }|j	                         |k(  sJ |j	                  d      |k(  sJ y )NrH  idx1idx2r   index_5Fr&   rL  )r<  r   r4   r?  rN  rB  s         r   "test_to_html_multiindex_with_namesz0TestHTMLIndex.test_to_html_multiindex_with_names   s\    B))&8HI+Hi@zz|2222zzz&*@@@@r9   N)__name__
__module____qualname__r`   fixturer4   r?  rC  rF  rO  rT  r   r9   r   r8  r8    sF    ^^  ^^2 2	0A0Ar9   r8  classeszsortable draggablesortable	draggablec                 b    t               }t        |d      }|j                  |       }||k(  sJ y )Nwith_classesrY  r   r   rE   )rY  r   r4   rw   rK   s        r   test_to_html_with_classesr`    s3    	BX~6HZZZ(FXr9   c                 n    t        dg di      }|j                  dd      }t        | d      }||k(  sJ y )Nr$   )r?   r!   r@   r   Fr?   )r'   r   gh14998_expected_outputr   r   s       r   test_to_html_no_index_max_rowsrc    s>    	C&	'BZZeaZ0FX'@AHXr9   c                    t        g dg dgg dg dgddg      }t        dgg dgg d	g dgd d
g      }t        j                  dt        j                  t        j                  gt        j                  dt        j                  gt        j                  t        j                  dgg      }t	        |||      }|j                  d      }t        | d      }||k(  sJ y )N)babbbc)cacbcc)r   r?   r!   rT   rU   )levelscodesr   r_   )aaabac)r   r   r   rS   g      ?g       @g      @r!   )r   gh6131_expected_output)r   r*   arrayr0   r   rE   r   )r   r'   rW   r   r4   rK   rw   s          r    test_to_html_multiindex_max_colsrr    s    "$67)$CjE
 )*)$SkG
 88
rvvrvv	bff 57LMD 
4	(BZZZ#FX'?@HXr9   c           	      <   t        t        d      t        dd      t        dd      t        dd      d      }t        j                  ddgddgg      |_        t        j                  ddgg dg      |_        |j                  d	
      }t        | d      }||k(  sJ y )Nr   r(   r   rS   rT   rU   r_   )rU   r_   er   gFr&   gh22579_expected_output)r   r.   r   r   rW   r'   rE   r   r   s       r   &test_to_html_multi_indexes_index_falserw  -  s    	BieBm%B-eBPRmT
B ((3*sCj)ABBJ&&c
4M'NOBHZZeZ$FX'@AHXr9   index_namesheaderr'   zcolumn_index, column_typeunnamed_standardcolumns.namer   named_standardrU   unnamed_multizcolumns.name.0zcolumns.name.1named_multizrow_index, row_typez
index.namezindex.name.0zindex.name.1c                 *   t        t        j                  dt              ||      }|j	                  |||      }	|sd}n|s|j                  d      rd|z   }|sd}n|s|j                  d      rd|z   }d|z   d	z   |z   }
t        | |
      }|	|k(  sJ y )
N)r!   r!   r   r   )r'   ry  rx  nonenamedunindex_	_columns_)r   r*   zerosintrE   
startswithr   r   	row_indexrow_typecolumn_indexcolumn_typer'   ry  rx  r4   rK   r   rw   s               r   test_to_html_basic_alignmentr  9  s    F 
288F#.i	VBZZeFZLFX009(?[33G<[(("[0;>HXx0HXr9   r   r_   rt  r   )r\   Nr   c                 B   t        t        j                  d      j                  dd      ||      }|j	                  dd|||      }	|sd}n|s|j                  d      rd|z   }|sd}n|s|j                  d      rd|z   }d	|z   d
z   |z   }
t        | |
      }|	|k(  sJ y )N@   r   r   r   )r   r   r'   ry  rx  r  r  r  trunc_df_index_r  )r   r*   r/   reshaperE   r  r   r  s               r   &test_to_html_alignment_with_truncationr  n  s    R 
299R=((A.i	VBZZQeF  F X009(?[33G<[( 8+k9KGHXx0HXr9   c                     ddgddgddgddgd	d
gg}t        |      }|j                  d|      }t        | d      }||k(  sJ y )N"9?~,?AGZQ?&OY@u!V?5#E8N
g?a_ÿ4iSulL1AG?r   )r   r'   gh15019_expected_outputr   )r   r'   r   r4   rK   rw   s         r   ,test_to_html_truncation_index_false_max_rowsr    sk     
8	8	9	9	HD 
4BZZ%Z0FX'@AHXr9   z col_index_named, expected_output)Fgh22783_expected_output)Tgh22783_named_columns_indexc                     g dg dg}t        |      }|r|j                  j                  dd       |j                  d|      }t	        | |      }||k(  sJ y )N)r  r  r  r  r  )r  r  r  r  r  r{  T)inplacer   )r   r'   )r   rW   renamerE   r   )r   r'   col_index_namedexpected_outputr   r4   rK   rw   s           r   ,test_to_html_truncation_index_false_max_colsr    sb     	;=D 
4B


.$7ZZ%Z0FX7HXr9   notebookc                     t        dg di      }|j                  |       }| rd|v sJ d|v sJ d|v sJ y d|vsJ d|vsJ d|vsJ y )Nr$   r;  r  ztbody tr th:only-of-typezvertical-align: middle;zthead thr   rE   )r  r4   rK   s      r   test_to_html_notebook_has_styler    sx    	C#	$BZZZ*F)V333(F222V###)777(666'''r9   c                  p    t        dddgit        ddgd            } | j                  d	
      }d|vsJ y )Nr$   r?   r!   rS   rT   myindexnamer   r&   F)rx  r   r   rE   r4   rK   s     r   #test_to_html_with_index_names_falser    s?    	C!Q=sCj}(M	NBZZEZ*F&&&r9   c                  r    t        dddgit        ddgd            } | j                  d	d
      }d|v sJ y )Nr$   r?   r!   rS   rT   r  r   r&   FTEST_ID)rx  table_idz id="TEST_ID"r  r  s     r   test_to_html_with_idr    sA    	C!Q=sCj}(M	NBZZEIZ>Ff$$$r9   zvalue,float_format,expected)gvöE?z%.3fgh21625_expected_output)g      Y@z%.0fgh22270_expected_outputc                 j    t        d| gi      }t        ||      }|j                  |      }||k(  sJ y )NrL   r  r_  )valuer  rw   r   r4   rK   s         r   (test_to_html_float_format_no_fixed_widthr    s>     
C%>	"BXx0HZZ\Z2FXr9   zrender_links,expected)Trender_links_true)Frender_links_falsec                     g dg dg}t        |t        g dt                    }|j                  |       }t	        ||      }||k(  sJ y )N)r   z$https://pandas.pydata.org/?q1=a&q2=b
pydata.org)r   zwww.pydata.orgr  )r\   r   Nr   rV   )render_links)r   r   objectrE   r   )r  rw   r   r   r4   rK   s         r   test_to_html_render_linksr    sR     	B+D 
4';6!J	KBZZ\Z2FXx0HXr9   zmethod,expectedrE   c                     t         S r7   lorem_ipsumr   s    r   r   r     s    kr9   r   c                      t         d | dz
   dz   S )Nr   ...r  r   s    r   r   r     s    +gA"6">r9   max_colwidth)r   r(   r<   r   c                     t        t        g      }t        d|      5   t        ||              }d d d         ||      }|v sJ y # 1 sw Y   xY w)Nzdisplay.max_colwidth)r   r  r	   getattr)methodrw   r  r4   rK   s        r    test_ignore_display_max_colwidthr    sR     
K=	!B	.	=$V$& 
>%Hv 
>	=s   AAc                     t               }d}t        j                  t        |      5  |j	                  |        d d d        y # 1 sw Y   y xY w)Nz(classes must be a string, list, or tuplerX   r^  )r   r`   ra   	TypeErrorrE   )rY  r4   rd   s      r   !test_to_html_invalid_classes_typer    s8     
B
4C	y	,


7
# 
-	,	,r6  c                      t        dgdg      } t        dd      5  | j                  d      }| j                  d      }d d d        d	v sJ d
v sJ y # 1 sw Y   xY w)Nr?   g^)?rV   zdisplay.precisionr@   Fr  Tz0.55555z0.556)r   r	   rE   )r4   r   r  s      r   !test_to_html_round_column_headersr  (  si    	A3		*B	+Q	/zz5z)::t:, 
0 h	 
0	/s   %AAunit)100pxz10%5em   c                    t        t        j                  j                  d      j                  d            }|j	                  |       }|j                  d      d   }|j                  d      D cg c]  }t        j                  d|      s| }}t        | t              rt        |       d	z   } |D ]  }d
|  d}||v rJ  y c c}w )Nr!   r>   rA   rC   tbodyr   ri   rD   pxz<th style="min-width: z;">)r   r*   r+   r,   rE   rF   rG   rH   r  r  rJ   )r  r4   rK   rL   rM   rN   rw   s          r   !test_to_html_with_col_space_unitsr  2  s     
299((+222?	@BZZ$Z'F\\'"1%F||D)G)!RYY{A-FA)DG$4y4+D651}}  Hs   2CCc                       e Zd Zd Zej
                  j                  dg d      d        Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zy)TestReprHTMLc                     t        dt        d      i      }|j                         }t        |d      }||k(  sJ t        dt        d      i      }|j                         }t        |d      }||k(  sJ y )NrS   r(   (html_repr_min_rows_default_no_truncation=   $html_repr_min_rows_default_truncated)r   r.   r   r   )r<  r   r4   rK   rw   s        r   test_html_repr_min_rows_defaultz,TestReprHTML.test_html_repr_min_rows_defaultA  sz     U2Y'(! +UV!!! U2Y'(! +QR!!!r9   zmax_rows,min_rows,expected))r   r    html_repr_max_rows_10_min_rows_4)r   N#html_repr_max_rows_12_min_rows_None)r   r   !html_repr_max_rows_10_min_rows_12)Nr   #html_repr_max_rows_None_min_rows_12c                     t        dt        d      i      }t        ||      }t        d|d|      5  |j	                         }d d d        |k(  sJ y # 1 sw Y   xY w)NrS   r  display.max_rowszdisplay.min_rows)r   r.   r   r	   r   )r<  r   r   min_rowsrw   r4   rK   s          r   test_html_repr_min_rowsz$TestReprHTML.test_html_repr_min_rowsP  s]      U2Y'( 84.:LhW^^%F X!!! XWs   AAc                 p    t        j                  d      }|j                  |d      }|j                  rJ y )Nz        from pandas import DataFrame
        df = DataFrame({"A": [1, 2]})
        df._repr_html_()

        cfg = get_ipython().config
        cfg['IPKernelApp']['parent_appname']
        df._repr_html_()
        T)silent)textwrapdedentrun_cellerror_in_exec)r<  ipcoderK   s       r   test_repr_html_ipython_configz*TestReprHTML.test_repr_html_ipython_configf  s;    

 T$/'''''r9   c                    d}d}|dz   |dz
  }}t        t        j                  |      D ci c]  }|t        j                  dd|z          c}      }d|j                         vsJ t	        dd      5  d|j                         v sJ 	 d d d        |dz
  |dz   }}t        t        j                  |      D ci c]  }|t        j                  dd|z          c}      }d|j                         vsJ t	        ddd|      5  d|j                         v sJ 	 d d d        y c c}w # 1 sw Y   xY wc c}w # 1 sw Y   y xY w)	Nr[   r(   r?   z	&lt;classzdisplay.large_reprinfoz<classdisplay.max_columns)r   r*   r/   r   r	   )r<  r   r   rN   wkr4   s          r   test_info_repr_htmlz TestReprHTML.test_info_repr_htmlu  s9   !|X\1		!E1299QA..EF2>>#33330&92>>#3333 : !|X\1		!E1299QA..EFr~~//// &*?
 ".."2222
 
 F99
 F
 
s#   !D 3D%7!D1D6%D.6D?c                     |}d }|j                         }|J t        dddd      5  |j                         }d d d        d|v sJ y # 1 sw Y   xY w)Nc                      ddddiiiS )Nconfig	KernelAppparent_appnamezipython-qtconsoler   r   r9   r   get_ipythonz?TestReprHTML.test_fake_qtconsole_repr_html.<locals>.get_ipython  s    {-=?R,STUUr9   r  r   r  r!   class)r   r	   )r<  r|   r4   r  repstrs        r   test_fake_qtconsole_repr_htmlz*TestReprHTML.test_fake_qtconsole_repr_html  sc    	V !!!!.3H!L^^%F M &    MLs   AAc                    |}|j                          t        dddd      5  |j                          d d d        t        dd      5  |j                          d d d        t        ddgddgg      }t        d	d
      5  d|j                         v sJ 	 d d d        t        d	d      5  d|j                         vsJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   LxY w# 1 sw Y   y xY w)Nr  r?   r  zdisplay.notebook_repr_htmlFr!   r@   r   zdisplay.show_dimensionsTz2 rows)r   r	   r   )r<  r|   r4   s      r   test_repr_htmlzTestReprHTML.test_repr_html  s    
.3H!LNN M 8%@NN A AA'(5t<r~~//// =5u=2>>#3333 >= ML A@ =<==s/   CC<C&C)CCC&)C2c                     t        ddgddgg      }d|j                         vsJ t        dd      5  d|j                         v sJ 	 d d d        y # 1 sw Y   y xY w)Nr?   r!   r@   r   tex2jax_ignorezdisplay.html.use_mathjaxF)r   r   r	   )r<  r4   s     r   test_repr_html_mathjaxz#TestReprHTML.test_repr_html_mathjax  sZ    AA'(r~~'77776>#r~~'7777 ?>>s   AAc                 @   d}t        dg|dz
  z  gdz        }t        dddd      5  d|j                         vsJ 	 d d d        t        dg|dz   z  gdz        }t        dddd      5  d|j                         v sJ 	 d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)	Nr(   aaaaaaaaaaaaaaaaaaaaaaaaar?   r   r  r[   r  r  )r   r	   r   )r<  r   r4   wide_dfs       r   test_repr_html_widez TestReprHTML.test_repr_html_wide  s    
hl34r9:.4I2N 0000 O hZ8a<89B>?.4I2NG//1111 ON	 ON ONs   B)BBBc                    d}t        j                  t        j                  |dz        ddggddg      }t	        dgt        |      z  gd	z  |
      }|j                         }d|vsJ t        j                  t        j                  d|dz  z         ddgfddg      }t	        dgt        |      z  gd	z  |
      }t        dddd      5  d|j                         v sJ 	 d d d        y # 1 sw Y   y xY w)Nr(   r!   r\   r   firstsecondr   r  r   rV   r  r?   r  r[   r  )r   r   r*   r/   r   rI   r   r	   )r<  r   mcolsr4   reg_reprs        r   #test_repr_html_wide_multiindex_colsz0TestReprHTML.test_repr_html_wide_multiindex_cols  s    ''YYx1}%u~6w>Q
 
SZ/025uE>>#H$$$''YYqHM*+eU^<WhDW
 
SZ/025uE.4I2NBNN,,,, ONNs   C++C4c           	      ,   t        dd      5  t        d      }|dz
  }t        t        j                  dd|z         t        j                  dd|z         d      }|j                         }d|vsJ t        d|dz  z         |v sJ |dz   }t        t        j                  dd|z         t        j                  dd|z         d      }|j                         }d|v sJ t        d|dz  z         |vsJ | d|v sJ d	|v sJ 	 d d d        y # 1 sw Y   y xY w)
Nr  r[   r?   )   r#   ..r!    rows 	2 columns)r	   r   r   r*   r/   r   rJ   r<  r   rN   r4   r  	long_reprs         r   test_repr_html_longz TestReprHTML.test_repr_html_long  s   .3!"45H1A1a!e!4299Ra;PQRB~~'Hx'''rHM)*h6661A1a!e!4299Ra;PQRB(I9$$$rHM)*);;;S<9,,,)+++ 433s   C3D

Dc           
         t        dd      5  t        d      }|dz
  }t        t        j                  dd|      t        j
                  dd|z         t        j
                  dd|z         d      j                  d      }|j                         }d	|vsJ d
d|z    d|v sJ |dz   }t        t        j                  dd|      t        j
                  dd|z         t        j
                  dd|z         d      j                  d      }|j                         }d	|v sJ d|vsJ | d|v sJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr  r[   r?   ir   r  )r   r$   r%   r   r  z<td>rZ   z</td>z<td>31</td>r  r  )r	   r   r   r*   linspacer/   rq   r   r  s         r   test_repr_html_floatz!TestReprHTML.test_repr_html_float  s]   .3!"45H1A;;sB21a!e,2rAv. i  ~~'Hx'''"q&'83331A;;sB21a!e,2rAv. i  (I9$$$ 	111S<9,,,)+++5 433s   D&D==Ec                    d}|dz  }t        t        j                  t        j                  |      ddg            }t        j                  |ddg      }t        t        j                  j                  d      j                  |dz  df      |dd	g
      }t        dddd      5  |j                         }d d d        dvsJ t        t        j                  t        j                  |dz         ddg            }t        j                  |ddg      }t        t        j                  j                  d      j                  |dz   dz  df      |dd	g
      }|j                         }d|v sJ y # 1 sw Y   xY w)Nr[   r!   r\   r   r  r  r   r$   r%   r   r  r  r(   r  r?   )r,  	itertoolsproductr*   r/   r   rM  r   r+   r,   r-   r	   r   )r<  r   max_L1rN  r   r4   r  r  s           r   test_repr_html_long_multiindexz+TestReprHTML.test_repr_html_long_multiindex  sZ   Qi''		&(9E5>JK$$VGX3FGII!!!$44fqj!_E#J

 .4I2N~~'H OH$$$i''		&1*(=u~NO$$VGX3FGII!!!$44vzQ6F5JK#J

 NN$		!!! ONs   $E..E7c                 8   d}d}|dz
  |dz
  }}t        t        j                  |      D ci c]  }|t        j                  dd|z          c}      }t        dddd      5  d|j	                         vsJ 	 d d d        |dz   |dz   }}t        t        j                  |      D ci c]  }|t        j                  dd|z          c}      }t        dddd      5  d|j	                         v sJ 	 d d d        y c c}w # 1 sw Y   xY wc c}w # 1 sw Y   y xY w)Nr(   r[   r?   r  r  r  )r   r*   r/   r	   r   )r<  r   r   rN   r  r  r4   s          r   test_repr_html_long_and_widez)TestReprHTML.test_repr_html_long_and_wide  s   !|X\1		!E1299QA..EF.4I2N 0000 O !|X\1		!E1299QA..EF.4I2NBNN,,,, ON FNN FNNs#   !C:!C?%!DD?DDN)rU  rV  rW  r  r`   markparametrizer  r  r  r   r  r  r	  r  r  r  r  r!  r   r9   r   r  r  @  si    " [[$		
""(3&!4 82-",",:"2-r9   r  c                 ~    | }d|j                   _        |j                          |j                  j                          y )Nr\   )rW   r   rE   T)/multiindex_year_month_day_dataframe_random_dataymds     r   test_to_html_multilevelr(    s)    
9CCKKKKMEEMMOr9   na_repNaNTedc                     t        ddgdd ggddg      }|j                  | dj                        }t        |d      }|j                  | 	      }||k(  sJ y )
Nr$   g(\?GroupDatarV   z{:.2f})r)  r  gh13828_expected_outputr)  )r   rE   r   r   )r)  r   r4   rK   rw   s        r   $test_to_html_na_rep_and_float_formatr1  &  sn     
&M$K	
 &!
B ZZvHOOZDFX'@AHf-HXr9   c                 p    t        dg ddg      }|j                  d      }t        | d      }||k(  sJ y )Nr?   r;  rh   -r0  gh47103_expected_outputr   r   s       r   #test_to_html_na_rep_non_scalar_datar5  6  s?    	!),-	.BZZsZ#FX'@AHXr9   c                 p    t        dddgi      }|j                  d       }t        | d      }||k(  sJ y )NrL   g     @@test)r   c                 
    | dS )Nz,.0fr   r   s    r   r   z6test_to_html_float_format_object_col.<locals>.<lambda>A  s
    !D{r9   r  gh40024_expected_outputr   r   s       r   $test_to_html_float_format_object_colr:  >  sB    	vv./	0BZZ%:Z;FX'@AHXr9   c                      t        ddgg      } t        j                  ddg      | _        | j	                  d      }d}||k(  sJ y )Nr?   r!   )r?   r?   )r!   r?   r   rC   a  <table border="1" class="dataframe">
  <thead>
    <tr>
      <th style="min-width: 100px;"></th>
      <th style="min-width: 100px;">1</th>
      <th style="min-width: 100px;">2</th>
    </tr>
    <tr>
      <th style="min-width: 100px;"></th>
      <th style="min-width: 100px;">1</th>
      <th style="min-width: 100px;">1</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>2</td>
    </tr>
  </tbody>
</table>)r   r   rM  rW   rE   r4   rK   rw   s      r   )test_to_html_multiindex_col_with_colspacer=  F  sS    	QF8	B''(89BJZZ#Z&F	 . Xr9   c                  Z    t        dgdgd      } | j                  d      }d}||k(  sJ y )Nr?   r!   )rh   rT   r   rC   aP  <table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th style="min-width: 100px;"></th>
      <th style="min-width: 100px;">(a, b)</th>
      <th style="min-width: 100px;">b</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>1</td>
      <td>2</td>
    </tr>
  </tbody>
</table>r  r<  s      r   $test_to_html_tuple_col_with_colspacer?  e  s?    	1#.	/BZZ#Z&F	 $ Xr9   c                  ~    t        dt        j                  g d      i      } | j                  d      }d}||k(  sJ y )NrL   complexr   r   rC   z<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th style="min-width: 100px;"></th>
      <th style="min-width: 100px;">x</th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>)r   r*   rq  rE   r<  s      r    test_to_html_empty_complex_arrayrB  ~  sF    	C"I67	8BZZ#Z&F		  Xr9   c                      t        dg di      } d}t        j                  t        |      5  | j	                  d d        d d d        y # 1 sw Y   y xY w)NrS   r;  zmStarting with pandas version 3.0 all arguments of to_html except for the argument 'buf' will be keyword-only.rX   )r   tmassert_produces_warningFutureWarningrE   rc   s     r   !test_to_html_pos_args_deprecationrG    sG    	C#	$B	0  
	#	#M	=


4 
>	=	=s   A		A)^r   r   r   r  rG   r  numpyr*   r`   r3  r   r   r   r   r   r	   pandas._testing_testingrD  pandas.io.formats.formatr   r   r   r  r   rX  r5   VALID_JUSTIFY_PARAMETERSr8   r"  r#  rO   re   rk   rr   r/   rx   r   r   r   r   r   r   r  to_datetimeSeriesCategoricalDtyper   r   r   r   r   r  r  r  r  r  r   r"  r   repeatmodr.   r-  r0  r5  r8  r`  rc  rr  rw  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r1  r5  r:  r=  r?  rB  rG  r   r9   r   <module>rR     so      	       & &+ , )* +$ s334 5 r2h/	# 0	#=(0$# 	Hibiio.	/=	C($	%{31 	^Y'
E	M+<= )D%=9
 :
  ))  Q!Q!Q!Q0udm6:biil
 -.	
 x(4A"6q!8L!MNO45'	
 >2>>'8 12&
	
 "Aq69"Aq6;"Aq69"Aq6:"D%=	B"C:5HR5H5H#s5TU"As86:
 ##a'&	
5),Z[,ZE !Q(4 )4" #%OP	 	&,	.4	
#S)	
'-	 ,wi$GC HC& ,wi$G H
#&
  #J""1$$Q'a!)<=en 	
 #J""IBIIaL&"&&q12E#FG	
$%$ K$$4A 4An %9J;T$UV W*	 u6D%=14-0	1v*+	1vN	+-=>	 	 	 3%#s!4	5G#J##c
#,<>N+O 		
	
 	1v*+	1vL	)+;<	 	 	 3%#s!4	5G#J##c
#NN+K 		
	
 1 2 7>, u6D%=14-0	yryy|	01	yryy|.	13CD#J##c3Z#sc3Z$HI	

 $J##sc3Z#s4<P 		
" 	yryy|	01	yryy|,	/1AB#J##c3Z#sc3Z$HI	

 $J##sc3Z#s4<P 		
"## 1 2 7J0 5!*- . 5!*-&')NO	 .
  dE]3( 4('% !42  "?@
	
 	)*	>? ):; < T1I.$ /$ !=>
 ?
[- [-| E5>2 3>2&r9   