
    h/                     p   d dl Z d dlZd dlZd dlmZmZmZ  ej                  d       d?dZ	d Z
d@dZd@dZej                  d        Zej                  d	        Zej                  d
        Zej"                  j%                  dd e
        ed       ed      gfd ed       edd       e
       gfd ed       ed       ed      gfd edd       edd       edd      gfd ed       e
        edd      gfd ed       e
        edd      gfej&                   ed       e
        edd      gfg      d        Zej"                  j%                  dd ed       ed       e
       gfd e
        edd       ed      gfd edd       edd       ed      gfd edd       edd       ed      gfd edd       e
        ed      gfd edd       e
        ed      gfej&                   edd       e
        ed      gfg      d        Zej"                  j%                  dd e
        ed       ed      gfd ed       edd       e
       gfd ed       edd       edd      gfd ed       edd       edd      gfd ed       edd       edd      gfd ed       edd       edd      gfej,                   ed       e
        edd       gfg      ej"                  j%                  d!d"d#g      d$               Zej"                  j%                  dd e
        e
       g ed       ed      gg e
        ed      g e
        ed      gg e
        ed      g ed       ed      ggd%fd ed       ed      g ed       ed      gg ed       ed      g ed&       ed      gg ed'       ed      g ed&       ed      ggd%fd edd       edd&      g edd       edd      gg edd&       edd      g edd(       edd      gg edd        edd&      g edd(       edd      ggd%fd) ed       e
       g edd       edd      gg ed       e
       g edd&       edd      gg ed'd       e
       g edd&       edd      ggd%fg      ej"                  j%                  d*g d%      d+               Zej"                  j%                  d,g d-      ej"                  j%                  d.g d/      ej"                  j%                  d0g d1      d2                      Zej"                  j%                  d,g d3      ej"                  j%                  d.g d/      ej"                  j%                  d0g d1      d4                      Zd5 Zej"                  j%                  dd e
        edd6      gfd edd7       e
       gfd ed'd7       ed'dd6      gfd eddd7       eddd6      gfg      d8        Zd9 Zd: Zd; Zd< Z d= Z!d> Z"y)A    N)NA	DataFrameread_csvjinja2c           	          dg}t        d | |||fD              r|S |dddj                  | |||fD cg c]  }|s|	 c}       dfgz   S c c}w )z@Used in multiple tests to simplify formatting of expected resultwidth10emc              3   $   K   | ]  }|d u  
 y wN ).0xs     KD:\jyotish\venv\Lib\site-packages\pandas/tests/io/formats/style/test_bar.py	<genexpr>zbar_grad.<locals>.<genexpr>   s     
+l19ls   
backgroundzlinear-gradient(90deg,,))alljoin)abcdretr   s         r   bar_gradr      st    
C

+q!Ql
++
$SXX1aA,.L,Q!q,.L%M$NaP	
   /Ms
   AAc                      t               S r   r   r       r   no_barr       s
    :r   c                 4    t        d| d| ddd| dd      S )N .1f% transparent r   )r   colors     r   bar_tor'       s+    awa#wa(M!C*BCCr   c           	      R    t        d| ddd| d| ddd| d|ddd|dd      S )Nr%   r#   r$   r"   r   )r   yr&   s      r   bar_from_tor*   $   sS    
#wa 
E7!Ac7!
E7!Ac7!
#wa 	 r   c                  $    t        dgdgdgg      S )N         r   r   r   r   df_posr0   -   s    qcA3_%%r   c                  $    t        dgdgdgg      S )Nr/   r   r   r   df_negr5   2   s    rdRD2$'((r   c                  $    t        dgdgdgg      S )Nr4   r,   r-   r/   r   r   r   df_mixr7   7   s    rdQC!%&&r   z
align, expleft2   d   rightmidg
ףp=@@g
ףp=P@zerog̬P@g33333T@meang       @c                     | j                   j                  |      j                         j                  }|d   |d   |d   d}||k(  sJ y Nalignr   r,   r-   r   r   r,   r   )r-   r   stylebar_computectx)r0   rB   expresultexpecteds        r   test_align_positive_casesrN   <   P     \\E*33599FAAA?HXr   g)\0@g       c                     | j                   j                  |      j                         j                  }|d   |d   |d   d}||k(  sJ y r@   rF   )r5   rB   rK   rL   rM   s        r   test_align_negative_casesrQ   O   rO   r   P   <   gQT@g       g     @O@nansTFc                    |d   |d   |d   d}|r<t         j                  | j                  dd d f<   |j                  dt	               i       | j
                  j                  |      j                         j                  }||k(  sJ y )Nr   r,   r-   rC   r.   )r.   r   rA   )	npnanlocupdater    rG   rH   rI   rJ   )r7   rB   rK   rT   rM   rL   s         r   test_align_mixed_casesrZ   b   s|      AAA?H66

1a4*+\\E*33599FXr   )indexcolumnsnoneK      g     U@r-   axisc                    t        ddgddgg      }|j                  j                  | |dk(  rd n|      j                         j                  }||   d   d   ||   d   d   ||   d   d   ||   d   d   d}||k(  sJ y )	Nr,   r-   r.      r]   rB   r`   r   )rD   r   r,   rE   r,   r,   r   rG   rH   rI   rJ   )rB   rK   r`   datarL   rM   s         r   test_align_axisrh   z   s    t q!fq!f%&D

UTJ		  D	!QD	!QD	!QD	!Q	H Xr   zvalues, vmin, vmax))positive      ?g      @)negative      g      )mixedrl   rj   nullify)NvminvmaxrB   )r8   r;   r=   r<   c                    |dk(  r|dk(  rd}n|dk(  rd}| ||d|   }|dk(  rd n|}|dk(  rd n|}|j                  ||r|nd	k  |
      }	|	j                  |	|r|ndk\  |
      }	|j                  j                  |||ddg      j                         j                  }
|	j                  j                  |ddg      j                         j                  }|
|k(  sJ y )Nr<   ri   r8   rk   r;   ri   rk   rm   ro   rp   i  )otheriredgreenrB   ro   rp   r&   rB   r&   )whererG   rH   rI   rJ   )r0   r5   r7   valuesro   rp   rn   rB   dfclip_dfrL   rM   s               r   test_vmin_vmax_clippingr|      s     ~ZEz!E&6	B6	JBf$4$Df$4$Dhhrdd4DhAGmmG$?tmLG 	5t$ug>NO		 
 }}  uUG4D ENNPTTHXr   ))ri   g      ?      @)rk         g      )rm   r~   r}   c                    |dk(  r|dk(  rd}n|dk(  rd}| ||d|   }|dk(  rd n|}|dk(  rd n|}|j                         }	||c|	j                  d	d d f<   |	j                  d
d d f<   |j                  j                  |||ddg      j	                         j
                  }
|	j                  j                  |ddg      j	                         j
                  }|
j                         |j                         k  sJ y )Nr<   ri   r8   rk   r;   rr   ro   rp   r.   rb   rt   ru   rv   rw   )copyrX   rG   rH   rI   rJ   items)r0   r5   r7   ry   ro   rp   rn   rB   rz   	expand_dfrL   rM   s               r   test_vmin_vmax_wideningr      s     ~ZEz!E&6	B6	JBf$4$Df$4$D	I/3T,IMM!Q$q!t, 	5t$ug>NO		 
 ""ug6F"GPPRVVH<<>X^^----r   c                      t        ddgddgg      } | j                  j                         j                         j                  }d|vsJ d|vsJ y )Nr,   r   r-   r   rd   re   rf   )rg   rL   s     r   test_numericsr     sT    q#hC)*DZZ^^&&(,,Fr   ru   rt   c                     t        dgdgg      }|j                  j                  | ddg      j                         j                  }||d   |d   dk(  sJ y )	Nr2   r.   rt   ru   rw   r   r,   rD   rE   rf   )rB   rK   rg   rL   s       r   test_colors_mixedr     s[     rdQC[!DZZ^^%w/?^@IIKOOFc!fc!f5555r   c                      t        dgdgg      } | j                  j                  dd      j                         j                  }d}dgdd|fd	gd
}||k(  sJ y )Nr,   r-   r8   r9   )rB   heightzKlinear-gradient(90deg, #d65f5f 100.0%, transparent 100.0%) no-repeat centerr   r   )zbackground-sizez
100% 50.0%r   rf   )rg   rL   bg_srM   s       r   test_bar_align_heightr     sn    qcA3Z DZZ^^&^4==?CCFXD"#4 -
H Xr   c                  P   t        dg di      } d}t        j                  t        |      5  | j                  j                  dddg      j                          d d d        d	}t        j                  t        |      5  | j                  j                  d
      j                          d d d        d}t        j                  t        |      5  | j                  j                  d
      j                          d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)NA)iiiiz@`align` should be in {'left', 'right', 'mid', 'mean', 'zero'} ormatchpoorly#d65f5f#5fba7drw   z%`width` must be a value in \[0, 100\]   )r	   z&`height` must be a value in \[0, 100\])r   r   pytestraises
ValueErrorrG   rH   to_htmlrz   msgs     r   test_bar_value_error_raisesr   ,  s    	C./	0B
LC	z	-
8Iy+ABJJL 
. 3C	z	-
3'') 
. 4C	z	-
C ((* 
.	- 
.	- 
.	- 
.	-s#   .D +D+DDDD%c                      t        dg di      } d}t        j                  t        |      5  | j                  j                  dd      j                          d d d        y # 1 sw Y   y xY w)Nr   r,   r-   r.   rb   z'`color` and `cmap` cannot both be givenr   r   viridis)r&   cmapr   r   s     r   $test_bar_color_and_cmap_error_raisesr   <  sM    	C&	'B
3C	z	-
995==? 
.	-	-s   ,A""A+c                     t        dg di      } d}t        j                  t        |      5  | j                  j                  d      j                          d d d        t        j                  t        |      5  | j                  j                  g d      j                          d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)Nr   r   z[`color` must be string or list or tuple of 2 strings,\(eg: color=\['#d65f5f', '#5fba7d'\]\)r   {   )r&   )r   r   z#abcdefr   r   s     r   (test_bar_invalid_color_type_error_raisesr   D  s    	C&	'B	2 
 
z	-
3'') 
. 
z	-
<=EEG 
.	-	 
.	- 
.	-s   +B1;-B=1B:=Cc                  6   t        dddt        dgi      } t        t        t        gt        t        gg      }d}| j                  j                  d      j	                         }|j                  j                  dd       j	                         }||v sJ ||v sJ y )	Nr   r,   r-   rb   style type=subsetr8   rc   )r   r   rG   rH   r   )df1df2expected_substringhtml_output1html_output2s        r   test_styler_bar_with_NA_valuesr   S  s    
S1aQ-(
)C
b"XBx(
)C&99===,446L99==vD=9AACL------r   c                      t        j                  d       d} t        t        j                  |       d      }d}|j
                  j                  d      j                         }||v sJ y )Npyarrowzname,age,test1,test2,teacher
        Adam,15,95.0,80,Ashby
        Bob,16,81.0,82,Ashby
        Dave,16,89.0,84,Jones
        Fred,15,,88,Jones)dtype_backendr   test1r   )r   importorskipr   ioStringIOrG   rH   r   )rg   rz   r   html_outputs       r   %test_style_bar_with_pyarrow_NA_valuesr   ]  s_    
	"D
 
"++d#9	=B&((,,g,.668K,,,r   )NNNN)r   )#r   numpyrV   r   pandasr   r   r   r   r   r    r'   r*   fixturer0   r5   r7   markparametrizemedianrN   rQ   	nanmedianrZ   rh   r|   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s~   	      H 
D & & ) ) ' ' 	&(F2Js45	6#;B 4fh?@	uvc{;<	+b$'R)>BPS@TUV	&*fhB(<=>	vbz68[S%9:;	VBZ;r3+?@A 	&+vbz6845	68[S16#;?@	UC(+eS*A6#;OP	+eR(+eR*@&*MN	+b#&&*=>	B$fhr
;<	[S)68VBZ@A 	&(F2Js45	6#;B 4fh?@	[R0+b#2FGH	&*k"e4k"e6LMN	&*k"e4k"e6LMN	r
KE2KE4JKL	r
FHk"d.CDE $/ 0  !8VX.fSk0JK#Xvc{3fhs5LM (F5M2VE]F3K4PQ	
 !%=&*5sVC[7QR#BZ5r
F3K7PQ *fRj1F2Js3LM	
  !U+[R-@A S);r3+?@
 !R(+b#*>? T*KC,@A
 !T*KB,?@ T*KC,@A	
$  BZ* S);r3+?@
 BZ* R(+b#*>?
 !R(&(3 R(+b#*>?	
E36n !=> ?o6p"  $:;"BC D <.  $:;"BC. D <..  	&(F3012	6#u%vx01	E"KC$ABC	+eR/Rg1NOP	66 + @H.
-r   