
    h              
       V   d dl Z d dlZd dlZd dlm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  ej"                  d      Zd dlmZ d dlmZmZmZmZ ej4                  d        Zej4                  d        Zej4                  d	        Zej4                  d
        Zej4                  d        Zej4                  d        Z ejB                  jE                  ddddddddddgfdddddddddgfg      d        Z#ejB                  jE                  ddddddddddgfdddddddddgfg      d        Z$d Z%ejB                  jE                  dg d      d        Z&ejB                  jE                  dddg      d         Z'ejB                  jE                  ddd!g      d"        Z(d# Z)d$ Z*ejB                  jE                  d%ddg      ejB                  jE                  d&ddg      ejB                  jE                  d'ddg      d(                      Z+ejB                  jE                  d'ddg      d)        Z,d* Z-d+ Z.d, Z/ejB                  jE                  d-d.d/d.gd/gg      d0        Z0ejB                  jE                  d-d.d/d.gd/gg      ejB                  jE                  d1ddg      d2               Z1ejB                  jE                  d3d4d5g      ejB                  jE                  d6d7d8g      d9               Z2ejB                  jE                  d3d5d4g      ejB                  jE                  d6d7d8g      d:               Z3d; Z4 G d< d=      Z5d> Z6d? Z7ejB                  jE                  d@g dA      dB        Z8dC Z9dD Z:dE Z;dF Z<dG Z=dH Z>dI Z?ejB                  jE                  dJg dK      dL        Z@y)M    N)dedent)	DataFrame
IndexSlice
MultiIndexSeriesoption_contextjinja2Styler)_get_level_lengths_get_trimming_maximumsmaybe_convert_css_to_tuplesnon_reducing_slicec            	          t        ddgddggt        j                  dgddgg      t        j                  dgd	d
gg      t              S )N            i0i1_ai1_bc0c1_ac1_b)indexcolumnsdtype)r   r   from_productint     MD:\jyotish\venv\Lib\site-packages\pandas/tests/io/formats/style/test_style.pymi_dfr#      sV    
Q!Q%%v/?&@A''$&&1A(BC	 r!   c                     t        | d      S )Nr   uuid_lenr
   )r#   s    r"   	mi_stylerr'   (   s    %!$$r!   c                    | j                  d      } i | j                  ddd| _        d| _        d| _        | j	                  d       | j                  d	d
dg       | j                  d       | j                  dgdd       | j                  d       | j                  dgdd       | j                  d       | j                  j                  dg      }t        j                  dg|j                  g      |_        | j                  |j                         | j                  dd       | j!                  dd       | j!                  dd       | j#                  d        | j%                  d d       | j%                  d d       | j'                  t)        d	dgd	d gg| j                  | j*                  !             | j-                  t)        d"d#gd"d$gg| j                  | j*                  !             | S )%NT)deepcopyROWCOL)rowcol   abcdecaptaa:v;selectorpropsr   axis)r   r   r7   namesr   )r   r   zclass="box"mean MISSINGr   )na_rep	precisionr   r   )r>   r7   r   r   c                      y)Nzcolor: white;r    xs    r"   <lambda>z mi_styler_comp.<locals>.<lambda>B       /r!   c                      y)Nzcolor: black;r    r@   s    r"   rB   z mi_styler_comp.<locals>.<lambda>C   rC   r!   bcr   r   a2b2c2)_copycssr&   uuidset_captionset_table_styleshideset_table_attributesdataaggr   r   r   concatstyleformatformat_indexhighlight_max	map_indexset_td_classesr   r   set_tooltips)r'   others     r"   mi_styler_compr]   -   s    .IAy}}AU5AIMIIN&!S6 BCDNN	N"NNN#)4N@NNN NNN#'N>""=1NNx(E))B4*=>EKU[[!I3QQ/QQ/&1:1:3Z#s$IOOYEVEV	

 D\D$<(//%%	
 r!   c                       y)N&nbsp;r    r    r!   r"   blank_valuer`   S   s    r!   c                  ~    t        ddgt        j                  j                  d      j	                  d      d      } | S Nr   r   r   AB)r   nprandomdefault_rngstandard_normaldfs    r"   rk   rk   X   s4    	!Qbii&;&;A&>&N&Nq&QR	SBIr!   c                     t        ddgt        j                  j                  d      j	                  d      d      } t        |       S rb   )r   rf   rg   rh   ri   r   rj   s    r"   stylerrm   ^   s9    	!Qbii&;&;A&>&N&Nq&QR	SB":r!   zsparse_columns, exp_colsTzcolspan="2"r   )
is_visible
attributesvalueFr;   c                    dddd}dddd}| j                  d|      }|d   j                         |d   d   d   j                         k  sJ |d	   j                         |d   d   d
   j                         k  sJ |j                         |d   d	   d   j                         k  sJ |j                         |d   d	   d
   j                         k  sJ y )NTr;   r   rn   ro   display_valuer   r   headr   r   r   
_translateitems)r'   sparse_columnsexp_cols	exp_l1_c0	exp_l1_c1ctxs         r"   test_mi_styler_sparsify_columnsr}   d   s    (  $2OI#2OI


t^
4CA;#f+a."3"9"9";;;;A;#f+a."3"9"9";;;;??FAq 1 7 7 9999??FAq 1 7 7 9999r!   zsparse_index, exp_rowsrowspan="2"r   c                    dddd}dddd}| j                  |d      }|d   j                         |d   d   d   j                         k  sJ |d   j                         |d   d   d   j                         k  sJ |j                         |d   d   d   j                         k  sJ |j                         |d   d   d   j                         k  sJ y )	NTr;   r   rr   r   r   bodyr   ru   )r'   sparse_indexexp_rows	exp_l1_r0	exp_l1_r1r|   s         r"   test_mi_styler_sparsify_indexr      s    (  $2OI#2OI


|T
2CA;#f+a."3"9"9";;;;A;#f+a."3"9"9";;;;??FAq 1 7 7 9999??FAq 1 7 7 9999r!   c                    t        dd      5  | j                         }d d d        t        dd      5  | j                         }d d d        k7  sJ t        dd      5  | j                         }d d d        t        dd      5  | j                         }d d d        ||k7  sJ y # 1 sw Y   xY w# 1 sw Y   nxY w# 1 sw Y   NxY w# 1 sw Y   5xY w)Nzstyler.sparse.indexFTzstyler.sparse.columns)r   to_html)r'   html1html2s      r"   test_mi_styler_sparsify_optionsr      s    	-u	5!!# 
6	-t	4!!# 
5 E>>	/	7!!# 
8	/	6!!# 
7 E>> 
6	5	4	4
 
8	7	6	6s.   B$B0B<C$B-0B9<CCz3rn, cn, max_els, max_rows, max_cols, exp_rn, exp_cn))d   r   r   NN      )  r     NN   r   )r   r     NNr   }   )r   r   r   
   Nr   r   )r   r   r   Nr.   r   r.   )r   r   i  2   r      r   c                 B    t        | ||||d      \  } }| |f||fk(  sJ y )Ng      ?)scaling_factor)r   )rncnmax_elsmax_rowsmax_colsexp_rnexp_cns          r"   test_trimming_maximumr      s8     $
B8CFB 8''''r!   zoption, val)styler.render.max_elementsr   )styler.render.max_rowsr   c                 X   t        t        j                  d      j                  dd            }t	        | |      5  |j
                  j                  dd      }d d d        t        d   d         dk(  sJ t        |d         d	k(  sJ t        |d   d         dk(  sJ y # 1 sw Y   IxY w)
Nx   <   r   Trt   r   r   r   r   r   rf   arangereshaper   rU   rv   lenoptionvalrk   r|   s       r"   test_render_trimming_rowsr      s     
299S>))"a0	1B		$hh!!$- 
%s6{1~!###s6{q   s6{1~!###	 
%	$   B  B))styler.render.max_columnsr   c                 X   t        t        j                  d      j                  dd            }t	        | |      5  |j
                  j                  dd      }d d d        t        d   d         dk(  sJ t        |d         dk(  sJ t        |d   d         dk(  sJ y # 1 sw Y   IxY w)	N   r   r   Trt   r   r   r   r   r   s       r"   test_render_trimming_colsr      s     
299R=((B/	0B		$hh!!$- 
%s6{1~!###s6{q   s6{1~!###	 
%	$r   c                  |   t        j                  ddgg dg      } t        t        j                  d      j                  dd      | |       }t        dd      5  |j                  j                  d	d	      }d d d        t        d
   d         dk(  sJ ddij                         |d
   d   d   j                         k  sJ ddij                         |d
   d   d   j                         k  sJ ddij                         |d
   d   d   j                         k  sJ t        |d
         dk(  sJ y # 1 sw Y   xY w)Nr   r   r   r   r   $   r   r   r   r   r   Tr   r   r.   ro   r~   classzdata row0 col_trimzdata row_trim col_trimr   )r   r   r   rf   r   r   r   rU   rv   r   rw   midxrk   r|   s      r"   test_render_trimming_mir      s9   ""QFI#67D	299R=((A.D	IB	4a	8hh!!$- 
9 s6{1~!###-(..0CKN14E4K4K4MMMM)*002c&k!nQ6G6M6M6OOOO-.446#f+a.:K:Q:Q:SSSSs6{q    
9	8s   D22D;c                      t        t        j                  dgddggd dg            } t        d      }|| j                  j                         v sJ y )Nrd   r   r   oner9   r   z    >
      <thead>
        <tr>
          <th class="index_name level0" >&nbsp;</th>
          <th class="index_name level1" >one</th>
        </tr>
      </thead>
    )r   r   r   r   rU   r   )rk   expecteds     r"   test_render_empty_mir      sS    	003%!QuV	WB	
H rxx''))))r!   comprehensiverenderr)   c                 $   | r|n|}d|_         |rt        j                  |      nt        j                  |      }||usJ |r|j                          g d}|s^|j                  D cg c]  }t        |      r||vs| c}D ]/  }	t        t        ||	            t        t        ||	            k(  r/J  y g d}
|
D ]/  }	t        t        ||	            t        t        ||	            k(  r/J  |j                  D cg c]  }t        |      s
||vr||
vr| c}D ]i  }	t        ||	      .t        t        ||	            t        t        ||	            k(  r;J t        t        ||	            t        t        ||	            k7  riJ  y c c}w c c}w )Nr.   )cellstyle_mapcellstyle_map_columnscellstyle_map_indextemplate_latextemplate_htmltemplate_html_styletemplate_html_table)rR   r   r   r&   rM   captioncell_idshide_index_hide_columns_hide_index_nameshide_column_namestable_attributes)r&   copyr)   r   __dict__callableidgetattr)r   r   r)   r'   r]   rm   s2exclr1   attrshallows              r"   	test_copyr     s     -^)FFO"*v			&0ABVD  &W1QUQWDgb$'(Bwvt/D,EEEE X
 Dgb$'(Bwvt/D,EEEE 
 __
$QKATMaw6F $
D
 r4 ('"d+,7643H0IIII'"d+,7643H0IIII
) X(
s   &F7F<F<Fc                      G d dt               } || j                        }|rt        j                  |      nt        j                  |      }t	        ||      sJ y )Nc                       e Zd Zy))test_inherited_copy.<locals>.CustomStylerN)__name__
__module____qualname__r    r!   r"   CustomStylerr   >  s    r!   r   )r   rR   r   r)   
isinstance)r'   r)   r   custom_stylercustom_styler_copys        r"   test_inherited_copyr   :  sO    v  !0M(0m$dii6N  (,777r!   c                    | }|j                          t        |j                  |j                        }g d}|j                  D cg c]  }t        |      r||v r| c}D ]b  }t        ||      t        ||      k(  }t        |d      rt        |      dkD  rt        |      sBJ t        |d      rt        |      dk(  r_|sbJ  |j                          |j                  D cg c]  }t        |      r| c}D ]9  }t        ||      t        ||      k(  }t        |d      rt        |      r4J |r9J  y c c}w c c}w )NrM   )rR   r   r   rM   r&   r   r   r   r   r   r   r   r   __iter__r   )_computer   rR   rM   r   r   r   hasattrr   allclear)r]   rm   
clean_copyr   r1   r   ress          r"   
test_clearr   H  s!    F
OO&++6JD  #OONOqHQK19ONfd#wz4'@@3
#C13x<S*%#c(a-N7 O LLN"OO?Oq8A;O?fd#wz4'@@"3
3s3x<<<< @ O @s   D;D;D;&E 7E c                    g d}|D ]G  }t        ||      t        | |      k(  }t        |d      rt        |      dkD  rt        |      sBJ |sGJ  | j	                         }|j                  |      }|D ]G  }t        ||      t        | |      k(  }t        |d      rt        |      dkD  rt        |      rBJ |rGJ  |j                          y )N)_todor   r   r   r   r   table_stylesrL   r   r   )r   r   r   r   exportuser   )r]   r'   	exp_attrsr   checkr   useds          r"   test_exportr   q  s    	I 	4(GND,II"5*5#e*q.CJ	
 
OT	
 
  ""$F== Dd#w~t'DD%eZ8SZ!^s5zWWRWWW  	LLNr!   c                     d}t        j                  t        |      5  | j                  ddd       d d d        d}t        j                  t        |      5  | j                  ddd	d
       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)Nz4`subset` and `level` cannot be passed simultaneouslymatchr   	somethingzsomething else)r7   subsetlevelz4`level` must be of type `int`, `str` or list of suchr   r   )badtyper7   r   )pytestraises
ValueErrorrP   )r'   msgs     r"   test_hide_raisesr    sr    
@C	z	-GK?OP 
. AC	z	-G1a+@A 
.	-	 
.	- 
.	-s   A8B8BBr   r   r   c                    ddgddgc| j                   _        | j                  _        | j                  d|      j	                  dd      }t        |d   d         d	k(  sJ t        |d   d
         d	k(  sJ t        |d   d         dk(  sJ |d   d   d   d   sJ |d   d   d
   d   rJ |d   d   d   d   sJ |d   d   d
   d   rJ |d   d
   d   d   sJ |d   d
   d
   d   rJ y )Nzeror   r   r  FTrt   r   r   r   r   r   rn   r   )r   r9   r   rP   rv   r   )r'   r   r|   s      r"   test_hide_index_levelr	    s;   6<e_vuo2IOO9,,2
..gU.
3
>
>ud
KCs6{1~!###s6{1~!###s6{1~!###v;q>!\***6{1~a ...v;q>!\***6{1~a ...v;q>!\***6{1~a ....r!   r9   c                     ddg| j                   _        |rddg| j                  _        | j                  d|      j	                  dd      }t        |d         |rdnd	k(  sJ y )
Nr  r   r   r  TFrt   r   r   )r   r9   r   rP   rv   r   )r'   r   r9   r|   s       r"   test_hide_columns_levelr    sc      &uoI!'	
..iu.
5
@
@u
MCs6{U222r!   methodmapapplyr7   r   r   c                 F   t        ddgddgdddg      }d d d	} t        |j                  |  d
      ||    |      }t        |j                        dk(  sJ t        t        |d|             dk(  sJ |j                          ddgi}t        |d|       |k(  sJ y )Nr   r   rc   CDr   c                 @    | D cg c]  }d|v sd|v rdnd c}S c c}w Nrd   r  	attr: valr;   r    svs     r"   rB   z'test_apply_map_header.<locals>.<lambda>  s*    STUSTaC1HqKrISTUUs   c                     d| v sd| v rdS dS r  r    r  s    r"   rB   z'test_apply_map_header.<locals>.<lambda>  s    SAXFBFr!   r  r  _indexr6   ctx_r   r   r   r   )r   r   rU   r   r   r   )r  r7   rk   funcresultr   s         r"   test_apply_map_headerr!    s     
!Qq!f-c3Z	@BUFD 2WRXX&01$v,TJFv||!!!wvdV}-.!333 OO!H 6T$=)X555r!   c                     d d d} t        | | d      ||   |      j                         }ddgi}t        |d|       |k(  sJ y )	Nc                 8    | D cg c]
  }d|v rdnd c}S c c}w )NrE   
attr: val;r;   r    r  s     r"   rB   z*test_apply_map_header_mi.<locals>.<lambda>  s!    aHaC1HL"<aHHs   c                     d| v rdS dS )NrE   r  r;   r    r  s    r"   rB   z*test_apply_map_header_mi.<locals>.<lambda>  s    q8b8r!   r  r  r6   r   r   r  r  )r   r   )r'   r  r7   r  r   r   s         r"   test_apply_map_header_mir'    se    
 I8D 3WY6(& 124<dKTTVF)*H6T$=)X555r!   c                     t        j                  t        d      5  | j                  d d      j	                          d d d        y # 1 sw Y   y xY w)Nz+No axis named bad for object type DataFramer   c                      y)Nr$  r    r  s    r"   rB   z.test_apply_map_header_raises.<locals>.<lambda>  s    lr!   r   r6   )r  r  r  rY   r   r'   s    r"   test_apply_map_header_raisesr+    s;    	z)V	W2?HHJ 
X	W	Ws   #AAc                   <
   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zej(                  j+                  dddg      d        Zej(                  j+                  dddg      ej(                  j+                  dddg      d               Zej(                  j+                  dedd edddgf   edgddf   edgdgf   eddddgf   g      ej(                  j+                  dddg      d               Zej(                  j+                  dedd edddgf   edgddf   edgdgf   eddddgf   g      d         Zej(                  j+                  dedded!   f   eddedddf   f   eddedddd"gf   f   eed#   ddf   eedddf   ddf   eedddd$gf   ddf   eddd!f   ed#ddf   g      d%        Zd& Zej(                  j+                  d'g d(      d)        Zd* Zd+ Zd, Z d- Z!d. Z"d/ Z#d0 Z$d1 Z%d2 Z&d3 Z'd4 Z(d5 Z)d6 Z*d7 Z+d8 Z,d9 Z-d: Z.ej(                  j+                  dddg      d;        Z/d< Z0d= Z1d> Z2d? Z3d@ Z4dA Z5dB Z6dC Z7dD Z8dE Z9dF Z:ej(                  j+                  dG e;dHdIge<jz                  dggddgdJdKgL       e;dIggdgdJgL       e;dIdMggdd"gdJgL      g      dN        Z>dO Z?dP Z@dQ ZAej(                  j+                  dRg dS      dT        ZBej(                  j+                  dRg dU      dV        ZCej(                  j+                  dWeddddf   edddf   edddf   edgdgf   eddgf   edgdf   ed   edX    eDddd      ddg e<j                  ddg       eFddg      g      dY        ZGej(                  j+                  dZeHeFe<j                  g      d[        ZId\ ZJej(                  j+                  deddddf   eddedJg   f   eddedJgd]gf   f   eddedJd]ddf   f   eddedJddd^f   f   eddeddd]d^f   f   eddedJd]d_gddf   f   eddedJg d`ddf   f   eddedJg d`d^f   f   eedag   ddf   eedagdbgf   ddf   eedadbddf   ddf   eedadddcf   ddf   eedddbdcf   ddf   eedddbdcddgf   ddf   eedddbg def   ddf   eedadbg def   ddf   eedddbdcf   edJd]ddf   f   g      df        ZKy)g
TestStylerc                     d}t        j                  t        |      5  t        g d       d d d        y # 1 sw Y   y xY w)Nz&``data`` must be a Series or DataFramer   r   )r  r  	TypeErrorr   selfr  s     r"   test_init_non_pandaszTestStyler.test_init_non_pandas  s)    6]]9C09 100s   5>c                 f    t        t        ddg            }|j                  j                  dk(  sJ y )Nr   r   )r   r   rR   ndim)r1  r   s     r"   test_init_serieszTestStyler.test_init_series  s,    1v'{{1$$$r!   c                 $    |j                          y N)_repr_html_r1  rm   s     r"   test_repr_html_okzTestStyler.test_repr_html_ok  s    r!   c                     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)Ntex2jax_ignorezstyler.html.mathjaxF)r8  r   r9  s     r"   test_repr_html_mathjaxz!TestStyler.test_repr_html_mathjax  sG    v'9'9';;;;159#v'9'9';;;; :99s   A  A	c                 p    |j                  t        dddgi             dgdgd}|j                  |k(  sJ y )Nrd   
color: redcolor: bluecolorredrB  bluer  r   r   )_update_ctxr   r|   )r1  rm   r   s      r"   test_update_ctxzTestStyler.test_update_ctx  sB    9cL-+H%IJK-.9J8KLzzX%%%r!   c                 x    t        dddgi      }|j                  |       ddgddgd}|j                  |k(  sJ y )	Nrd   zcolor: red; foo: barzcolor:blue ; foo: baz;rA  foobarrD  )rL  bazrF  )r   rH  r|   )r1  rm   attrsr   s       r"   /test_update_ctx_flatten_multi_and_trailing_semiz:TestStyler.test_update_ctx_flatten_multi_and_trailing_semi  sQ    3!79Q RST5!%~6&7
 zzX%%%r!   c                     t        dddgi      }d }t        |d      j                  |      }|j                          y )Nrd   r   r   c                 4    t        ddg| j                        S )Nr?  r@  namer   rT  r@   s    r"   rB   z(TestStyler.test_render.<locals>.<lambda>  s    &,!>QVVLr!   ABr   r   r   r  r   r1  rk   rU   r  s       r"   test_renderzTestStyler.test_render  s9    aV}%L2D!''.			r!   c                     t        |d      j                  d dg      }|j                          d|j                         v sJ y )Nr   r%   c                      yNcolor: red;r    r@   s    r"   rB   z1TestStyler.test_multiple_render.<locals>.<lambda>  s    r!   rd   r   zO<style type="text/css">
#T__row0_col0, #T__row1_col0 {
  color: red;
}
</style>)r   r  r   r1  rk   r  s      r"   test_multiple_renderzTestStyler.test_multiple_render  sG    2"&&'>u&M			),-IIK8	
8r!   c                     t               }t        |      }|j                          t        dg      j                  j                          t        dg      j                  j                          y )Nr1   r   r   )r   r   r   rU   )r1  empty_dfess      r"   test_render_empty_dfsz TestStyler.test_render_empty_dfs  sN    ;H


3% &&..0$$,,.r!   c                     t        dddgi      }d }t        |d      j                  |      }|j                          y )Nrd   r   r   c                 4    t        ddg| j                        S )Nzcolor: red; border: 1pxzcolor: blue; border: 2pxrS  rU  r@   s    r"   rB   z/TestStyler.test_render_double.<locals>.<lambda>  s    &&(BC!&&
r!   rV  r   rW  rX  s       r"   test_render_doublezTestStyler.test_render_double  s=    aV}%
 2D!''.			r!   c                 v   t        dddgi      }|j                  j                  dd      j                         j                  }ddg}||d	}|j                         |j                         k(  sJ t        |j                         |j                               D ]  \  }}t        |      t        |      k(  rJ  y )
Nrd   r   r   white10px)rB  sizerB  rj  )rl  rk  rF  )	r   rU   set_propertiesr   r|   keyszipvaluessorted)r1  rk   r   r  r   v1v2s          r"   test_set_propertieszTestStyler.test_set_properties  s    aV}%((wV(DMMOSS!12q){{}///&--/8??+<=FB":+++ >r!   c                     t        dddgi      }|j                  j                  t        d   d      j	                         j
                  }ddgi}||k(  sJ y )	Nrd   r   r   )r   rd   rj  )r   rB  r  rm  )r   rU   rn  r   r   r|   r1  rk   r   r   s       r"   test_set_properties_subsetz%TestStyler.test_set_properties_subset(  s_    aV}%HH##:f+=W#MXZS 	
 /01!!!r!   c                     t        ddgddgddgd      }|j                  j                  dd      }t        |d	         dk(  sJ d
d|d|d}|j	                         |d	   d   d   j	                         k  sJ y )Nr   r   r   r   r.   r   rd   re   r  Trt   zblank level0thr   r   rp   rn   rs   r   )r   rU   rv   r   rw   )r1  r`   rk   r   r   s        r"   $test_empty_index_name_doesnt_displayz/TestStyler.test_empty_index_name_doesnt_display2  s    aV1a&1v>?$$T406&>"a'''# (
 ~~6&>!#4Q#7#=#=#????r!   c                     t        ddgddgddgd      }|j                  d      j                  j                  d	d	      }d
ddd	dd}|j	                         |d   d   d   j	                         k  sJ y )Nr   r   r   r   r.   r   rz  rd   Tindex_name level0r{  r|  rt   r   )r   	set_indexrU   rv   rw   rw  s       r"   test_index_namezTestStyler.test_index_name@  s    aV1a&1v>?c"((33D$?( 
 ~~6&>!#4Q#7#=#=#????r!   c                 Z    t        dg di      }|j                  j                  dd       y )Nr   r   T)r   rU   rv   )r1  rk   s     r"   test_numeric_columnszTestStyler.test_numeric_columnsM  s&     9~&
D$'r!   c                 2   t        ddgddgd      }d }|j                  j                  |d      }t        |j                        dk(  sJ t        |j
                        dk(  sJ |j                          dgdgdgdgd}|j
                  |k(  sJ |j                  j                  |d      }dgdgdgdgd}|j                          |j
                  |k(  sJ |j                  j                  |      }|j                          |j
                  |k(  sJ y )	Nr   r   rc   c                 N    | D cg c]  }d| j                           c}S c c}w )Nzval: )max)rA   r  s     r"   rB   z,TestStyler.test_apply_axis.<locals>.<lambda>U  s#    !4!Qquuwi(!44s   "r6   )r   1)r  r   r   rG  r&  )r   0)r   rU   r  r   r   r|   r   )r1  rk   fr   r   s        r"   test_apply_axiszTestStyler.test_apply_axisS  s   aV1a&124*6<< A%%%6::!###!N!N!N!N	
 zzX%%%*!N!N!N!N	
 	zzX%%%"zzX%%%r!   r7   r   r   c                    t        ddgddggddgddg      }d }|j                  j                  ||	      j                         j                  }|d
   dgk(  sJ |d|z
  |f   dgk(  sJ d }|j                  j                  ||	      j                         j                  }|d   dgk(  sJ |d
   dgk(  sJ |d|z
  |f   dgk(  sJ ||d|z
  f   dgk(  sJ y )Nr   r   r   r   XYrG   c                      t        dgdg      S )Nr]  r  r   r   r  s    r"   rB   z5TestStyler.test_apply_series_return.<locals>.<lambda>u  s    u=r!   r6   r&  rA  c                 $    t        ddgddg      S )Nr]  zcolor: blue;r  r  r   r  r  s    r"   rB   z5TestStyler.test_apply_series_return.<locals>.<lambda>{  s     ?SzRr!   r  rD  r   rU   r  r   r|   )r1  r7   rk   r  r   s        r"   test_apply_series_returnz#TestStyler.test_apply_series_returno  s"    AA'SzC:N >4099;??f~"2!3333q4x&',<+==== S4099;??f~"3!4444f~"2!3333q4x&',<+====tQX&',=+>>>>r!   r   FTr   c                 R   t        ddgddggddgddg      }|rddgndg}|rddgndg}t        d||      |j                  j                  fd	d 
      j                         j                  }|d   dgk(  sJ |d   dgk(  |u sJ |d   dgk(  |u sJ |d   dgk(  |xr |u sJ y )Nr   r   r   r   r  r  rG   r]  c                     S r7  r    )rA   	df_styless    r"   rB   z8TestStyler.test_apply_dataframe_return.<locals>.<lambda>  s    )r!   r6   r&  rA  r  rG  r  r  )r1  r   r   rk   idxscolsr   r  s          @r"   test_apply_dataframe_returnz&TestStyler.test_apply_dataframe_return  s     AA'SzC:N"Sz$Sz3%m4F	 3$?HHJNNf~"2!3333v#3"44>>>v#3"44@@@v#3"44%:KGLLLr!   slice_Nrd   r   re   c           
         dd}|j                   j                  |||d      j                         j                  }t	        |j
                        D 	ci c]^  \  }}t	        |j                        D ]A  \  }}	||j                  |   j
                  v r!|	|j                  |   j                  v r||fdgC ` }
}}}}	||
k(  sJ y c c}	}}}w )Nc                 L    t        d| | j                  | j                        S )Ncolor: )r   rT  )r   r   rT  )rA   rB  s     r"   hz'TestStyler.test_apply_subset.<locals>.h  s     GE7+177HHr!   rN  )r7   r   rB  rB  rN  )rM  )rU   r  r   r|   	enumerater   r   loc)r1  r  r7   rk   r  r   rr,   rF   r-   r   s              r"   test_apply_subsetzTestStyler.test_apply_subset  s    	I V5IRRTXX $BHH-
-3#BJJ/3bffVn***sbffVn6L6L/L F%&&/ - 	 
 !!!
s   A#C
c           
         |j                   j                  d |      j                         j                  }t	        |j
                        D ci c]^  \  }}t	        |j                        D ]A  \  }}||j                  |   j
                  v r!||j                  |   j                  v r||fdgC ` }}}}}||k(  sJ y c c}}}}w )Nc                      y)Nz
color:baz;r    r@   s    r"   rB   z,TestStyler.test_map_subset.<locals>.<lambda>  s    r!   r^  r  )rU   r  r   r|   r  r   r   r  )	r1  r  rk   r   r  r,   rF   r-   r   s	            r"   test_map_subsetzTestStyler.test_map_subset  s     4VDMMOSS $BHH-
-3#BJJ/3bffVn***sbffVn6L6L/L F%&&/ - 	 
 !!!
s   A#C
)rA   rd   r  )r1   r   r   c                    t        |d   t              r<t        |d   d   t              r&d|d   d   v rt        j                  t
        d      }nct        |d   t              r<t        |d   d   t              r&d|d   d   v rt        j                  t
        d      }nt        j                         }t        j                  dd	gdd
gg      }t        j                  ddgddgg      }t        t        j                  j                  d
      j                  d      ||      }|5  |j                  j                  d |      j!                          d d d        y # 1 sw Y   y xY w)Nr  r   r   r   r   3r1   rE   r   rA   yrd   re   )r   r   r   c                      yr\  r    r@   s    r"   rB   z7TestStyler.test_map_subset_multiindex.<locals>.<lambda>  s    =r!   r^  )r   tuplelistr  r  KeyError
contextlibnullcontextr   r   r   rf   rg   rh   rU   r  r   )r1  r  r|   idxr-   rk   s         r"   test_map_subset_multiindexz%TestStyler.test_map_subset_multiindex  s    " vbz5)6":b>40vbz"~%--4Cvay%(6!9Q<.VAYq\!--4C((*C%%SzAq6&:;%%SzC:&>?ryy,,Q/66v>SVWHHLL0L@HHJ SSs   %-EE$c                 $   t        j                  g dg dg      }t        ddgddgg|ddg      }t        g d	g d
gddg|      }t        d d t        d d ddf   f   }d }|j
                  |    |j                  j                  ||       y )N)r   r   r   r   r   r   r   r   r1   rE   %#r;   )levelscodesr9   )r   r  r   r   )r  r   r   r   helloworldrG   c                     | dk  rdnd}d| S )Nr   rC  blackr  r    )r   rB  s     r"   color_negative_redzFTestStyler.test_map_subset_multiindex_code.<locals>.color_negative_red  s     1WE'EUG$$r!   r^  )rf   arrayr   r   r   r  rU   r  )r1  r  r   rk   
pct_subsetr  s         r"   test_map_subset_multiindex_codez*TestStyler.test_map_subset_multiindex_code  s     ,56#Jc
+5R
 M*7G2Dg
  :aSj#9 9:
	% 	z
'
;r!   	stylefunc)background_gradientrM  text_gradientc                     t        ddgddggddg      } t        |j                  |             }|j                          t	        |j
                        h dk(  sJ y )	Nr   r   r   r   FTrb  >   r  r  r&  rG  )r   r   rU   r   setr|   )r1  r  rk   styleds       r"   test_subset_for_boolean_colsz'TestStyler.test_subset_for_boolean_cols  sb    
 AA DM
 .9-/6::"BBBBr!   c                     t        dddgi      }|j                  }dgdgd|_        |j                  dd      d   }dgd	gd
dgdgd
g}||k(  sJ y )Nrd   r   r   rA  )r;   r;   rF  T	cellstyle	row0_col0r5   	selectors	row1_col0r   rU   r|   rv   r1  rk   r  r   r   s        r"   
test_emptyzTestStyler.test_empty  ss    aV}%HH*+hZ@dD)+6'(}Ej}=
 !!!r!   c                     t        dddgi      }|j                  }dgdgd|_        |j                  dd      d   }dgdd	gd
g}||k(  sJ y )Nrd   r   r   rA  rF  Tr  r  r  r  r  r  s        r"   test_duplicatezTestStyler.test_duplicate  sl    aV}%HH*+6F5GHdD)+6'([7QR
 !!!r!   c                     t        d d gddggddg      }t        |d      j                  dd      }|d	   d
   d   d   dk(  sJ |d	   d
   d   d   dk(  sJ y )Ng?g333333?rd   re   rb  NA)r=   Tr   r   r   rs   r   )r   r   rv   r1  rk   r|   s      r"   test_init_with_na_repz TestStyler.test_init_with_na_rep  sx    tsCj1C:FR%00t<6{1~a 1T9996{1~a 1T999r!   c                     t        |d      }|j                         }t        d|v d|v g      sJ |j                  }|j	                  d      }||u sJ |j
                  dk(  sJ y )NrL  )r   r   rN  )r   r   r   rU   rN   r   r1  rk   rm   r   s       r"   test_captionzTestStyler.test_caption%  so    E*!I'&9:::##E*~~&&&r!   c                     t        |d      }|j                         }d|v sJ |j                  }|j                  d      }||u sJ |j                  dk(  sJ y )Nabc123r   aaa)r   r   rU   set_uuidrM   r  s       r"   	test_uuidzTestStyler.test_uuid/  s_    *!6!!!'{{e###r!   c                     t        g dg dd      }|j                  j                  d      }d|v sJ t        j                  d|      }t        j                  |      j                  t        |      k(  sJ y )N)r   r   r.   r   )r   r   r      r1   rE   testr   z
id="(.*?)")	r   rU   r   refindallrf   uniquerl  r   )r1  rk   r   idss       r"   test_unique_idzTestStyler.test_unique_id9  sf    \?@!!v!.jjv.yy~""c#h...r!   c                    ddgdg}t        ||      }dj                  |j                         j                               }d|v sJ |j                  }|j                  |      }||u sJ |j                  |k(  sJ dddg}|j                  j                  |      }dj                  |j                         j                               }d|v sJ y )Nr{  rK  r3   )r    zth { foo: bar; }zfoo:bar;)r   joinr   splitrU   rO   r   )r1  rk   rU   rm   r   s        r"   test_table_styleszTestStyler.test_table_stylesA  s    "n-=>?/&..*0023!V+++((/""e+++ #Z89**51&..*0023!V+++r!   c                     |j                   j                  ddddddg      j                  dd      d   }|dd	gdd
d	gdddgdgk(  sJ y )Nth,tdz
color:red;r3   trzcolor:green;Tr   r{  rA  td)rB  greenrU   rO   rv   r  s      r"   test_table_styles_multiplez%TestStyler.test_table_styles_multipleR  s}    hh''$|<!N;

 *T4
 1 )9(:;)9(:;);(<=
 
 	
 
r!   c                     |j                   j                  dddgdgi      j                  dd      d   }ddgdddgdg}||k(  sJ y )	Nre   r  )zborder-leftz2px solid blackr3   Tr   zth.col1ztd.col1r  rw  s       r"   )test_table_styles_dict_multiple_selectorsz4TestStyler.test_table_styles_dict_multiple_selectors_  su    **!(4V3WX
 *T4
 1 #.P-QR".P-QR

 !!!r!   c                 p    ddg}t        d      |k(  sJ t        d      |k(  sJ g }t        d      |k(  sJ y )Nr  )rF   zd ez
a:b;c:d e;za: b ;c:  d e  r;   )r   )r1  r   s     r"    test_maybe_convert_css_to_tuplesz+TestStyler.test_maybe_convert_css_to_tuplesp  sK    -*<8HDDD*+<=III*2.(:::r!   c                 ~    d}t        j                  t        |      5  t        d       d d d        y # 1 sw Y   y xY w)Nz6Styles supplied as string must follow CSS rule formatsr   err)r  r  r  r   r0  s     r"   $test_maybe_convert_css_to_tuples_errz/TestStyler.test_maybe_convert_css_to_tuples_errw  s)    F]]:S1'. 211s   3<c                     d}t        ||      }|j                         }d|v sJ |j                  j                  |      j                         }d|v sJ y )Nzclass="foo" data-bar)r   )r   r   rU   rQ   )r1  rk   ro   rm   r   s        r"   test_table_attributesz TestStyler.test_table_attributes|  sX    +
Z8!%///..z:BBD%///r!   c                     d }t        ddgddgg      j                  j                  |d       j                         j                  }|d   dgk(  sJ y )	Nc                     t        t        j                  | | j                         k(  dd      | j                  | j
                        S )Nr?  r;   rG   )r   rf   wherer  r   r   r@   s    r"   r  z%TestStyler.test_apply_none.<locals>.f  s7    aeeg|R8gg		 r!   r   r   r   r   r6   r&  rA  r  )r1  r  r   s      r"   test_apply_nonezTestStyler.test_apply_none  s[    	 QFQF+,22888FOOQUUf~"2!3333r!   c                    |j                   j                         }|j                  d      dk(  sJ |j                   j                         j                         }|j                  d      t	        |j
                        k(  sJ y )Nr  r   )rU   r   countrX   r   r   )r1  rk   r   s      r"   	test_trimzTestStyler.test_trim  se    !!#||C A%%%'')113||C C

O333r!   c                 @   d }d }|}|j                  |      j                  |d      j                         j                          |j                         }|j                  }|j                  |       |j                  |j                  k(  sJ |j                          y )Nc                     | dkD  rdS dS )Nr   r?  r@  r    r@   s    r"   rB   z(TestStyler.test_export.<locals>.<lambda>  s    a!el>>r!   c                      | dkD  rd| S d| S )Nr   r  r    )rA   zs     r"   rB   z(TestStyler.test_export.<locals>.<lambda>  s    !a%71#Bwqc]Br!   rE   )r  )r  rX   r   r   rU   r   r   r   )r1  rk   rm   r  gstyle1r   style2s           r"   r   zTestStyler.test_export  s~    >B

1!s#113<<>

6||v||+++r!   c                    t        ddgddggddgddg	      }d
}t        j                  t        |      5  |j                  j                  d        d d d        d}t        j                  t        |j                  d            5  |j                  j                  d        d d d        t        j                  t        |j                  d            5  |j                  j                  d        d d d        t        j                  t        |j                  d            5  |j                  j                  d d       d d d        t        j                  t        |j                  d            5  |j                  j                  d d       d d d        t        j                  t        |j                  d            5  |j                  j                  d d       d d d        d}t        j                  t        |      5  |j                  j                  d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r   rd   re   r  r  rG   z4resulted in the apply method collapsing to a Series.r   c                      y)NrA   r    r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  s    cr!   zcreated invalid {} labelsr   c                     dgS Nr;   r    r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  s    rdr!   c                 
    g dS )N)r;   r;   r;   r;   r    r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  s    &6r!   c                 $    t        ddgddg      S )Nr2   r;   rd   r  r   r  r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>      ffb\#s&Lr!   r   r6   r   c                 
    g dS )N)r;   r;   r;   r    r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  s    lr!   c                 $    t        ddgddg      S )Nr2   r;   r  Zr   r  r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  r  r!   z!returned ndarray with wrong shapec                 4    t        j                  dgdgg      S r  )rf   r  r@   s    r"   rB   z1TestStyler.test_bad_apply_shape.<locals>.<lambda>  s    bhhrd|&<r!   )r   r  r  r  rU   _applyrV   )r1  rk   r  s      r"   test_bad_apply_shapezTestStyler.test_bad_apply_shape  s   AA'SzC:ND]]:S1HHOOM* 2 *]]:SZZ-@AHHOON+ B ]]:SZZ-@AHHOO67 B ]]:SZZ-@AHHOOLSTOU B ]]:SZZ	-BCHHOO2O; D ]]:SZZ	-BCHHOOLSTOU D 2]]:S1HHOO<4OH 21) 21 BA BA BA DC DC 21sS   H3I I%I6I'I3I?3H= I
II$'I03I<?Jc                     d }t        ddgddgg      }d}t        j                  t        |      5  |j                  j                  |d        d d d        y # 1 sw Y   y xY w)	Nc                      yr  r    r@   s    r"   r  z+TestStyler.test_apply_bad_return.<locals>.f  s    r!   r   r   r   r   zOmust return a DataFrame or ndarray when passed to `Styler.apply` with axis=Noner   r6   )r   r  r  r/  rU   r  )r1  r  rk   r  s       r"   test_apply_bad_returnz TestStyler.test_apply_bad_return  sZ    	 AA'( 	 ]]9C0HHOOADO) 100s   AA"c                     fd}t        ddgddgg      }d d}t        j                  t        |      5  |j                  j                  |d 	       d d d        y # 1 sw Y   y xY w)
Nc                 "    t        di ddgiS )Nr   labelsr    )r   )rA   r7   s    r"   r  z+TestStyler.test_apply_bad_labels.<locals>.f  s    9uh&7899r!   r   r   r   r   zcreated invalid z labels.r   r6   )r   r  r  r  rU   r  )r1  r7   r  rk   r  s    `   r"   test_apply_bad_labelsz TestStyler.test_apply_bad_labels  s]    	: AA'( h/]]:S1HHOOADO) 211s   A  A)c                     t        j                  ddgg dg      }ddddddddd}t        |dd	      }t        j                  ||       ddddddddddddd
}t        |dd	      }t        j                  ||       y )Nr1   rE   r   r   r   r   r   )r  r   r   rG  r&  r   r   r   r   r   r   r   r.   Tr   sparsify	max_index)r  r  r   r   r"  r   r   r   r.   rG  r&  r#  r$  r%  r&  F)r   r   r   tmassert_dict_equalr1  r   r   r   s       r"   test_get_level_lengthsz!TestStyler.test_get_level_lengths  s    ''#sY(?@	
 $EDCH
VX. 
 $EESI
VX.r!   c           	          t        j                  g dg dg      }dddddddd}t        |dd      }t        j                  ||       ddddddddd	}t        |d
d      }t        j                  ||       y )N)r   r   r   r   )r1   rE   rE   dr   r   )r  r*  r"  rG  r&  r#  r$  Tr   r'  )r  r  r*  r"  rG  r&  r#  r$  Fr   from_arraysr   r-  r.  r/  s       r"    test_get_level_lengths_un_sortedz+TestStyler.test_get_level_lengths_un_sorted  s    &&6J'KL
 $EDCH
VX. 	
 $EESI
VX.r!   c                 <   t        dddgit        j                  ddgddggddg      	      }|j                  j	                  d
d
      }|d   d   }ddd
dddd
dd|d
dg}t        |      D ]+  \  }}|j                         ||   j                         k  r+J  y )Nrd   r   r   r1   r   idx_level_0idx_level_1r   r   Trt   r  r   rs   rn   zindex_name level1z
blank col0)r   r   r4  rU   rv   r  rw   )r1  r`   rk   r   rt   r   iexpected_dicts           r"   test_mi_sparse_index_namesz%TestStyler.test_mi_sparse_index_names  s    1a&M((saV$]M,J
 $$T40f~a  -!." -!." &!,"
" !*( 3A} &&(DGMMO;;; !4r!   c           	         t        t        j                  d      j                  dd      t	        j
                  g dg dgddg      t	        j
                  g dg d	gd
dg            }t        |d      j                  dd      }dD ]U  }|d   |   }d|ddd| d| ddg}t        |      D ]+  \  }}|j                         ||   j                         k  r+J  W y )N   r   )r1   r1   rE   r1   )r   r   r   r   r7  r8  r   )C1r?  C2r@  )r   r   r   r   colnam_0colnam_1rG   F)r   Tr  rt   blankr9  zindex_name levelcolnam_)
r   rf   r   r   r   r4  r   rv   r  rw   )	r1  r`   rk   r   r   rt   r   r:  r;  s	            r"   test_mi_sparse_column_namesz&TestStyler.test_mi_sparse_column_names,  s    IIbM!!!Q'((%|4$m4 **)<8Z@X	
 U+66tTBE&>%(D %%0"&  0w7'.ug%6"&H %.h$7 =$**,Q??? %8 r!   c                    |j                  d      j                  dd      }t        |d         dk(  sJ d|j                  _        |j
                  j                  d      j                  dd      }t        |d         dk(  sJ y )Nr   r6   Trt   r   	some_namer   )rP   rv   r   r   rT  rU   )r1  rk   rm   r|   s       r"   test_hide_column_headersz#TestStyler.test_hide_column_headersJ  sy    kkyk)44T4@3v;1$$$#hhmmm+66tTB3v;1$$$r!   c                    |j                   j                  dd      }|d   d   d   d   sJ |d   d   d   d   sJ |j                   j                  d      j                  dd      }|d   d   d   d   rJ |d   d   d   d   rJ |j                  d      j                   j                  dd      }|d   d   d   d   sJ t	        |d         d	k(  sJ |d   d   d   d   sJ |j                  d      j                   j                  d      j                  dd      }|d   d   d   d   rJ t	        |d         d
k(  sJ |d   d   d   d   rJ y )NTr   r   rn   rt   r   r6   rd   r   r   )rU   rv   rP   r  r   )r1  rk   r|   ctx2ctx3ctx4s         r"   test_hide_single_indexz!TestStyler.test_hide_single_indexS  s    hh!!$-6{1~a ...6{1~a ...xx}}'}*55dDA<?1%l333<?1%l333 ||C &&11$=F|Aq!,///4< A%%%F|Aq!,///||C &&+++9DDT4P<?1%l3334< A%%%<?1%l3333r!   c                    t        ddgddgdt        j                  ddgddggddg      	      }|j                  j	                  d
d
      }|d   d   d   d   sJ |d   d   d   d   sJ t        |d   d         dk(  sJ |j                  j                  d      j	                  d
d
      }|d   d   d   d   rJ |d   d   d   d   rJ t        |d   d         dk(  sJ |d   d   d   d   rJ y )Nr   r   rc   r1   r   r7  r8  r   r   Tr   rn   rt   r   r   r6   r   )r   r   r4  rU   rv   r   rP   )r1  rk   ctx1rJ  s       r"   test_hide_multiindexzTestStyler.test_hide_multiindexh  s:   a&1v&((saV$]M,J
 xx""4.F|Aq!,///F|Aq!,///4<?#q(((xx}}'}*55dDA<?1%l333<?1%l3334<?#q(((<?1%l3333r!   c                    |j                   j                  dd      }|d   d   d   d   sJ |d   d   d   d   dk(  sJ |d   d   d   d   sJ |d   d   d   d   d	k(  sJ |d
   d   d   d   sJ |d
   d   d   d   sJ |j                   j                  dd      j                  dd      }|d   d   d   d   rJ |d
   d   d   d   rJ |d
   d   d   d   sJ |j                   j                  dd	gd      j                  dd      }|d   d   d   d   rJ |d   d   d   d   rJ |d
   d   d   d   rJ |d
   d   d   d   rJ y )NTrt   r   r   rn   rs   rd   r   re   r   r   r6   )rU   rv   rP   r  s      r"   test_hide_columns_single_levelz)TestStyler.test_hide_columns_single_level  s    hh!!$-6{1~a ...6{1~a 1S8886{1~a ...6{1~a 1S8886{1~a ...6{1~a ...hhmmCim0;;D$Gv;q>!$\222v;q>!$\2226{1~a ... hhmmS#JYm7BB4Nv;q>!$\222v;q>!$\222v;q>!$\222v;q>!$\2222r!   c                    t        j                  ddgddggddg      }t        j                  ddgddggdd	g      }t        dd
gddgg||      }|j                  j	                  dd      }|d   d   d
   d   sJ |d   d   d
   d   sJ |d   d   d   d   dk(  sJ |d   d   d   d   sJ |d   d   d
   d   sJ |d   d   d
   d   dk(  sJ |d   d   d   d   sJ |d   d   d   d   dk(  sJ |j                  j                  dd      j	                  dd      }|d   d   d
   d   rJ |d   d   d
   d   rJ |d   d   d
   d   rJ |d   d   d   d   sJ |j                  j                  dgd      j	                  dd      }|d   d   d
   d   rJ |d   d   d   d   sJ |d   d   d
   d   rJ |d   d   d
   d   rJ |d   d   d   d   sJ |d   d   d   d   dk(  sJ |j                  j                  dgd      j                  d      j	                  dd      }|d   d   d   d   rJ t        |d   d         dk(  sJ |d   d   d   d   sJ |d   d   d   d   sJ |d   d   d
   d   rJ |d   d   d   d   rJ |d   d   d
   d   sJ |d   d   d
   d   dk(  sJ |j                  j                  dd      j	                  dd      }|d   g k(  sJ |j                  j                  dd      j	                  dd      }dD ]$  }d|d   d   |   d   v sJ |d   d   |   d   r$J  y )Nr1   r   r   r7  r8  r   rE   col_level_0col_level_1r   r   r   rG   Trt   rn   rs   r  r   r  4r   r6   )rE   r   )rE   r   r   )r1   r   )r   r   r   r   row1r   )r   r4  r   rU   rv   rP   r   )r1  i1i2rk   r|   r:  s         r"   #test_hide_columns_index_mult_levelsz.TestStyler.test_hide_columns_index_mult_levels  s    ##3Z!Q (F
 ##3Z!Q (F
 AA'r2>hh!!$-6{1~a ...6{1~a ...6{1~a 1S8886{1~a ...6{1~a ...6{1~a 1S8886{1~a ...6{1~a 1S888 hhmmCim0;;D$Gv;q>!$\222v;q>!$\222v;q>!$\2226{1~a ... hhmmXJYm7BB4Nv;q>!$\2226{1~a ...v;q>!$\222v;q>!$\2226{1~a ...6{1~a 1S888 hhmmXJQm/44!4<GGdSv;q>!$\2223v;q>"a'''6{1~a ...6{1~a ...v;q>!$\222v;q>!$\2226{1~a ...6{1~a 1S888 hhmmCgm.99$E6{b    hhmmH7m3>>tTJAS[^A.w7777v;q>!$\222 r!   c                     d }|j                   j                  |dd      }d|j                         v sJ d }|j                   }|j                  |dfdd	
      }|dd	|fk(  sJ y )Nc                 0    | j                  d| d|       S )NzDataframe with a = z	 and b = )rN   )rm   r1   rE   s      r"   set_caption_from_templatez7TestStyler.test_pipe.<locals>.set_caption_from_template  s!    %%(;A3is&KLLr!   rd   re   )rE   zDataframe with a = A and b = Bc                     | ||fS r7  r    )r1   rE   rm   s      r"   r  zTestStyler.test_pipe.<locals>.f  s    q&>!r!   rm   r   r   r  )rU   piper   )r1  rk   r]  rm   r  r   s         r"   	test_pipezTestStyler.test_pipe  st    	M 8#E/6>>3CCCC	" a]a15!Q'''r!   c                     t        dgg      }t        |dd      }|j                          |j                         }|j                  d      dk7  sJ y )Nr   rR   _F)rM   r   z<td class="data row0 col0" >r  r   r   r   find)r1  rk   rm   r  s       r"   test_no_cell_idszTestStyler.test_no_cell_ids  sN     aSE"u5NNvv45;;;r!   classesr;   z
test-classr1   rE   rR   r   r   unusedc                 @   t        ddgddggddgddg	      }t        |dd
      j                  |      j                         }d|v sJ d|v sJ d|v sJ d|v sJ t        |dd      j                  |      j                         }d|v sJ d|v sJ d|v sJ d|v sJ y )Nr   r   r   r   rd   re   r1   rE   rh  Fr&   r   z"<td class="data row0 col0" >0</td>z-<td class="data row0 col1 test-class" >1</td>z"<td class="data row1 col0" >2</td>z"<td class="data row1 col1" >3</td>Tz4<td id="T__row0_col0" class="data row0 col0" >0</td>z?<td id="T__row0_col1" class="data row0 col1 test-class" >1</td>z4<td id="T__row1_col0" class="data row1 col0" >2</td>z4<td id="T__row1_col1" class="data row1 col1" >3</td>r   r   rZ   r   )r1  rg  rk   r  s       r"   test_set_data_classesz TestStyler.test_set_data_classes  s     aVaV,sCjc
S2E2AA'JRRT3q888>!CCC3q8883q8882D1@@IQQSEJJJPTUUUUEJJJEJJJr!   c                     t        g dg dg dgg dg d      }t        ddgddggd	d
gd	d
g      }t        |d	      j                  |      j                         }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ y )Nr!  )r   r   r.   )r         rh  mimamumor   r   r%   z7<td id="T__row0_col0" class="data row0 col0 mi" >0</td>z7<td id="T__row0_col2" class="data row0 col2 ma" >2</td>z4<td id="T__row1_col1" class="data row1 col1" >4</td>z7<td id="T__row2_col0" class="data row2 col0 mu" >6</td>z7<td id="T__row2_col2" class="data row2 col2 mo" >8</td>rl  )r1  rk   rg  r  s       r"   test_set_data_classes_reindexz(TestStyler.test_set_data_classes_reindex  s    Y	2IY
 ,t-Fa&

 2"11':BBDHAMMMHAMMMEJJJHAMMMHAMMMr!   c                     t        ddgddggddg      }|j                  j                  ddgd	g      j                  d
dgd	gd      }t        |j                        dk(  sJ y )Nr   r   r   rd   re   rR   r   r;   )background-coloryellowr3   z.col0)rx  rE  F)	overwrite)r   rU   rO   r   r   )r1  rk   rm   s      r"   test_chaining_table_stylesz%TestStyler.test_chaining_table_styles  s    aVaV,sCjA**(F'GHI


!-I,JKL  
 	 6&&'1,,,r!   c                     t        ddgddggddg      }t        |d      }|j                  ddd	gd
gi      }d|j                         v sJ |j                  ddd	gd
gid      }d|j                         v sJ y )Nr   r   r   rd   re   rw  r%   r;   rD  r3   z#T_ .col0 {
  color: blue;
}r6   z#T_ .row0 {
  color: blue;
})r   r   rO   r   r_  s      r"   test_column_and_row_stylingz&TestStyler.test_column_and_row_styling!  s    aVaV,sCjA2"2AR@S&T%UVW/199;>>>b,=+>?@A  
 0199;>>>r!   len_)r   r.       !   r   c                     t        dgg      }t        ||d      j                         }|j                  d      }||dz   d  j                  d      }|dkD  r|dk(  sJ y ||k(  sJ y )	Nrd   rb  Frk  zid="T_r   "r  rd  )r1  r~  rk   r  strtends         r"   test_uuid_lenzTestStyler.test_uuid_len,  sp     cUG$2u5==?vvhq
m  %"9"99$;;r!   )r   Nc                     t        dgg      }d}t        j                  t        |      5  t	        ||d      j                          d d d        y # 1 sw Y   y xY w)Nrd   rb  z3``uuid_len`` must be an integer in range \[0, 32\].r   Frk  )r   r  r  r/  r   r   )r1  r~  rk   r  s       r"   test_uuid_len_raiseszTestStyler.test_uuid_len_raises8  sF     cUG$E]]9C02u5==? 100s   AAslcr&  c                 z    t        ddgddgg      }t        |      }t        |j                  |   t               sJ y )Nr   r   r   r   )r   r   r   r  )r1  r  rk   tslice_s       r"   test_non_reducing_slicez"TestStyler.test_non_reducing_slice@  s=    $ AA'($S)"&&/9555r!   boxc                      |dg      }t        ddgddgdddg      }t        d d dgf   }t        |      }t        j                  |j
                  |   |j
                  |          y )	Nrd   r   r   r   r   rc   re   r   )r   r   r   r-  assert_frame_equalr  )r1  r  r   rk   r   r   s         r"   test_list_slicezTestStyler.test_list_sliceW  sg     cUaV1a&1#sDa#h'#F+
bffVnbffX.>?r!   c                     ddgddgddgddgd}t        |ddg      }t        }|d d |d   f   }t        |      }|j                  |   }t        dddgi      }t	        j
                  ||       y )	Nr   r   r   r   ))r1   r2  )r1   rF   )rE   rF   rE   r2  r   r   r  )r   r   r   r  r-  r  )r1  dicrk   r  r  r  r   r   s           r"   %test_non_reducing_slice_on_multiindexz0TestStyler.test_non_reducing_slice_on_multiindexb  s     AAAA	
 s1a&)QH%&$V,j1a&12
fh/r!   rF   er2  )rF   r2  -UWr  r  )r  r  r  c                 R   t        j                  ddgddgddgg      }t        j                  ddgd	d
gddgg      }t        t        j                  d      j                  dd      ||      }dD ]j  }||   }t        |t              s|D ]M  }t        |t              sd|v st        j                  t        d      5  |j                  |    d d d          y  l |j                  |   }|j                  t        |         }	t        j                  |	|       y # 1 sw Y     y xY w)Nr1   rE   rF   r2  r  r  r  Vr  r  r  r  @   rp  r   r  r  r   )r   r   r   rf   r   r   r   r  r  r  r  r  r  r   r-  r  )
r1  r  r  r  rk   lvlkeysubkeyr   r   s
             r"   +test_non_reducing_multi_slice_on_multiindexz6TestStyler.test_non_reducing_multi_slice_on_multiindexs  s   8 &&c
S#Jc
'KL&&c
S#Jc
'KLryy},,Q2DMC+C#u%!F!&$/C6M#]]83?FF6N @ "  66&>*623
fh/ @s   ?DD&)Lr   r   r   r2  r5  r:  r=  rI  rP  rY  r`  re  rh  ru  rx  r}  r  r  r  r  markparametrizer  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r0  r5  r<  rE  rH  rM  rP  rR  rZ  r`  rf  r   rf   nanrm  ru  r{  r}  r  r  slicer  r   r  r  r  r  r  r    r!   r"   r-  r-    s9   
%<&
&
/,"@@(&8 [[VaV,? -?$ [[Wudm4[[Y6M 7 5M [[qMq3%x sAvsSEz"rrC:~&	
	 [[VaV," -	" [[qMq3%x sAvsSEz"rrC:~&	
	"	" [[q*X../q*QV,,-q*Qc
]334z&)1,-z!Q$'*+z!aV),a/0q*}%x{#		
KK2<& [[DCC
"	":'$/,"
"";/
0	44	I6
* [[Vgy%9:* ;*/@/6<<@<%4*4.3.:3x(< [[<(2664.9c
Cj
 \N+cU3%H\845SzRUQVW	
KKN"	-	? [[V%89	 :	 [[V%67@ 8@ [[q!tq!tq!tsQCx q1#vsAvqMt$d#FBHHaVAq6N	
"6#"6 [[UT6288$<=@ >@0" [[q!tq*cU++,q*cUSE\223q*S#q[112q*S!S[112q*QS[112q*S3*a%7889q*S/1%<==>q*S/3%>??@z3%(!+,z3%#,/23z#sA+.12z#q#+.12z!S#+.12z!S3*"45q89z!S/"9:A=>z#sO";<a?@z!S#+.
3Q;0GGH+	
40540r!   r-  c                    ddg| j                   _        | j                  }|j                  dd      }t	        |d         dk(  sJ |j                  dd       |j                  dd      }t	        |d         dk(  sJ t        d	      D ]  }|d
   d   |   d   rJ  |j                  dd       |j                  dd      }t	        |d         dk(  sJ |d
   d   d   d   du sJ |d
   d   d   d   du sJ y )NLev0Lev1Trt   r   r   r8   r   r   r   r   rn   r   r  F)r   r9   rU   rv   r   rP   range)r#   r'   r|   r:  s       r"   test_hidden_index_namesr    s"   (EKKI


tT
*Cs6{q   NNtN,


tT
*Cs6{q   1X6{1~a ...  NNqN)


tT
*Cs6{q   v;q>!\*d222v;q>!\*e333r!   c                    ddg| j                   _        | j                  }|j                  dd      }|d   d   d   d   dk(  sJ |d   d   d   d   dk(  sJ |j	                  dd	       |j                  dd      }|d   d   d   d   d
k(  sJ |d   d   d   d   d
k(  sJ |j	                  dd       |j                  dd      }t        |d         dk(  sJ |d   d   d   d   d
k(  sJ y )Nr  r  Trt   r   r   rs   r   )r9   r7   r_   )r   r7   )r   r9   rU   rv   rP   r   )r#   r'   r|   s      r"   test_hidden_column_namesr    s)   !6*EMMI


tT
*Cv;q>!_-777v;q>!_-777NNIN.


tT
*Cv;q>!_-999v;q>!_-999NNN+


tT
*Cs6{q   v;q>!_-999r!   r   )r   )r1   rE   rF   )r   r  c                     d}t        j                  t        |      5  | j                  |       d d d        y # 1 sw Y   y xY w)Nz8`caption` must be either a string or 2-tuple of strings.r   )r  r  r  rN   )r'   r   r  s      r"   test_caption_raisesr    s/    
DC	z	-g& 
.	-	-s	   9Ac                  Z   t        j                  ddgg dg      } t        d| dg      }|j                  j	                  dd      }t        |d         d	k(  sJ |j                  j                  d
d      j	                  dd      }t        |d         dk(  sJ d|d   d   d   d   v sJ y )Nr   r   r1   r1   rE   	   r   rG   Fr   r   r   r1   r6   r   row2r   )r   r   r   rU   rv   r   rP   r   s      r"   *test_hiding_headers_over_index_no_sparsifyr    s    ""QFO#<=D	1D1#	.B
((

eU
+Cs6{q   
((--q-
)
4
4UE
BCs6{q   S[^A&w////r!   c                  f   t        j                  ddgg dg      } t        d| dg      }|j                  j	                  dd      }dD ]  }|d	   |d      |d      d
   du rJ  |j                  j                  dd      j	                  dd      }dD ]  }|d	   |d      |d      d
   du rJ  y )Nr   r   r  r  r   r   F)r  r*  r&  r#  rt   rn   Tr  r   r6   )r   r   r   rU   rv   rP   )r   rk   r|   ixs       r"   ,test_hiding_headers_over_columns_no_sparsifyr    s    ""QFO#<=D	1d1#	.B
((

eU
+C.6{2a5!"Q%(6$>>> /
((--y-
1
<
<UE
JC.6{2a5!"Q%(6%??? /r!   c            	          t        j                  g dg dg      } ddddddddd}t        | ddg d      }t        j                  ||       y )	N)r   r   r   r   r   r   )r1   r1   rE   r1   r1   rE   r   )r*  r"  r+  r,  r#  r$  r%  r&  Fr   r  )r(  r)  hidden_elementsr3  )r   r   r   s      r"    test_get_level_lengths_mi_hiddenr    sb    ""$68V#WXE	H  $	F *r!   c                  D   t        dgdgdgdgdgg      } t        dd      5  | j                  j                  ddgd	      j	                  d
d
      }d d d        t        d         dk(  sJ t        g d      D ]  \  }}|d   |   d   d   |k(  rJ  y # 1 sw Y   ExY w)Nr   r   r   r   r.   r   r   r   r6   Tr   r  rV  ...rs   r   r   rU   rP   rv   r   r  rk   r|   r  r   s       r"   test_row_trimming_hide_indexr    s    	QC!qcA3,	-B	0!	4hhmmQFm1<<T4H 
5s6{q   -.36{1~a 1S888 / 
5	4s   0BBc                     t        dgdgdgdgdgg      } t        j                  dgg dg      | _        t	        dd      5  | j
                  j                  d	d
gd      j                  dd      }d d d        t        d         dk(  sJ ddddj                         |d   d   d   j                         k  sJ ddddj                         |d   d   d   j                         k  sJ dddj                         |d   d   d   j                         k  sJ t        g d      D ]  \  }}|d   |   d   d   |k(  rJ  t        g d      D ]  \  }}|d   |   d   d   |k(  rJ  y # 1 sw Y   xY w)Nr   r   r   r   r.   r   )r   r   r   r   r   r   r  r  r   r6   Tr   r~   )rp   ro   rn   r;   Fr  )rp   rn   )2r  r  rs   r  )r   r   r   r   r   rU   rP   rv   r   rw   r  r  s       r"   test_row_trimming_hide_index_mir    s   	QC!qcA3,	-B&&_'=>BH	0!	4hhmmVV,7m;FFtTR 
5s6{q    m4HNNPTWUU		
UEG   b>DDF#f+	KK		   $/5573v;q>!;L;R;R;TTTT-.36{1~a 1S888 /-.36{1~a 1S888 / 
5	4s   0E,,E5c                     t        g dg      } t        dd      5  | j                  j                  ddgd      j	                  dd      }d d d        t        d	   d         d
k(  sJ t        g d      D ]7  \  }}|d	   d   |dz      d   |d   k(  sJ |d	   d   |dz      d   |d   k(  r7J  t        |d   d         d
k(  sJ y # 1 sw Y   }xY w)N)r   r   r   r   r.   r   r   r   r   r   r6   Trt   r   ))r   F)r   T)r   T)r  Trp   rn   r   r  )rk   r|   rF   valss       r"   test_col_trimming_hide_columnsr    s    	O$	%B	3Q	7hhmmQFm3>>tTJ 
8 s6{1~!###NO46{1~a!e$W-a8886{1~a!e$\2d1g=== P s6{1~!### 
8	7s   0CCc                 P    | j                  d ddg       | j                          y )Nc                     dgdz  S )Nr2   r   r    r  s    r"   rB   z%test_no_empty_apply.<locals>.<lambda>,  s
    vhlr!   Fr^  )r  r   r*  s    r"   test_no_empty_applyr  *  s#    OO*E5>OBr!   rV   )htmllatexstringc                     t        j                  d|       5 } t        | d|       |       d d d        y # 1 sw Y   y xY w)Nz
delete_me.to_)r-  ensure_cleanr   )r'   rV   r  s      r"   test_output_bufferr  0  s<     
:fX.	/1*	S>*1- 
0	/	/s	   8A)Ar  r   r  textwrapr   numpyrf   r  pandasr   r   r   r   r   pandas._testing_testingr-  importorskipr	   pandas.io.formats.styler   pandas.io.formats.style_renderr   r   r   r   fixturer#   r'   r]   r`   rk   rm   r  r  r}   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r!  r'  r+  r-  r  r  r  r  r  r  r  r  r  r  r  r    r!   r"   <module>r     s     	     			X	&    % % " "J    
  
  #=4P$BF	
 #2E#2E	
&	:'&	:  #=4P$BF	
 #2E#2E	
&	:'&	:  9
(
( )%$$ )($$
!*" 4-8D%=1dE]30J 4 2 90Jf dE]3
8 4
8&=R4B 1eaS5'":;/ </ 1eaS5'":;4-03 1 <3 E7#34'9!566 7 56* GU#34'9!566 7 56KF0 F0R4&:$ $BC' D'0	@+,99.$ #>?. @.r!   