
    Ohu                       U d 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m	Z	m
Z
mZmZmZmZ ddlmZ ddlmZmZmZmZmZ ddlmZ ddlmZ  ej8                  d      Z ej8                  d	      Zd
 Z eej@                         ed      k  rddiddigZ!de"d<   nddiddigZ! ejF                  e!      d        Z$ G d d      Z% G d d      Z&y)z  Test cases for .boxplot method     )annotationsN)	DataFrame
MultiIndexSeries
date_rangeplottingtimedelta_range)_check_axes_shape_check_box_return_type_check_plot_works_check_ticks_props_check_visible)Version)pprint_thing
matplotlibzmatplotlib.pyplotc                ~    |j                         \  }}|| j                         k  sJ || j                         k\  sJ y N)get_ylimminmax)colaxy_miny_maxs       q/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/pandas/tests/plotting/test_boxplot_method.py_check_ax_limitsr   #   s9    ;;=LE5CGGICGGI    3.10vertFTzlist[dict[str, bool | str]]vertsorientation
horizontalvertical)paramsc                    | j                   S r   )param)requests    r   r   r   /   s    ==r   c                  N   e Zd Zd Zej
                  j                  ej
                  j                  dddidgdddgidgddgd	d
egdgd	dgd
dgdd	iegdd	dgiegddidgd	ddegg      d               Z	d Z
d Zd Zd Zd Zd 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ej
                  j                  d!d"d#d$d%d&d"d#d$d%d&fd'd"id'd"ifd"d"d"d"d"d&fg      d(        Zej
                  j                  d)d*d+d+d,d+d&fd-d.d.d/d.d&fg      d0        Zej
                  j                  d1d"d"d2d3fg      d4        Zej
                  j                  d5g d6      d7        Zej
                  j;                  d8      d9        Zej
                  j;                  d8      d:        Zej
                  j;                  d8      d;        Z ej
                  j;                  d8      d<        Z!ej
                  j;                  d8      d=        Z"y)>TestDataFramePlotsc                r   dd l m} d}t        t        j                  j                  d      j                  g d|      t        j                  j                  d      j                  g d|      t        j                  j                  d      j                  g d|      dt        j                  d|            }|j                  dd	      }|j                         D cg c]  }t        |j                                c}|j                  j                         k(  sJ |j                  t        j                  ddd
             |j                          |j                         D cg c]  }t        |j                                c}t!        t        j                  ddd
            k(  sJ y c c}w c c}w )Nr   P      )r      r,      )Clinical	Confirmed	DiscardedindexbarT)kindstacked
   )matplotlib.pyplotpyplotr   nprandomdefault_rngchoicearangeplotget_xticklabelsintget_textr3   to_list
set_xticksdrawlist)selfpltndfr   xs         r   test_stacked_boxplot_set_axisz0TestDataFramePlots.test_stacked_boxplot_set_axis5   sJ   'II11!4;;L!LYY2215<<\1MYY2215<<\1M
 ))Aq/
 WW%W.+-+=+=+?@aAJJL!@BHHDTDTDVVVV
bii2r*+
+-+=+=+?@aAJJL!@DIIaR E
 
 	
 
 A As     F/( F4zkwargs, warnreturn_typedictNcolumnonetwoindic)rO   byindic2rS   notchr-   )rS   rU   c                \   t        t        j                  j                  d      j	                  d      t        t        j                  d d       g d      }ddgdz  |d	<   g d
dz  |d<   t        j                  |d      5  t        |j                  fi | d d d        y # 1 sw Y   y xY w)Nr,         rX   rP   rQ   threefourr3   columnsfoor4   r.   rR   )r_   r4   r_   rT   Fcheck_stacklevel)r   r:   r;   r<   standard_normalrF   stringascii_letterstmassert_produces_warningr   boxplot)rG   kwargswarnrJ   s       r   test_boxplot_legacy1z'TestDataFramePlots.test_boxplot_legacy1J   s     II!!!$44V<v++BQ/03

 enq(7,q08 ''uE 	4bjj3F3	4 	4 	4s   B""B+c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  |d       y )Nr,   rX   rN   )datarM   )	r   r:   r;   r<   rb   r   r   _corerg   )rG   sers     r   test_boxplot_legacy1_seriesz.TestDataFramePlots.test_boxplot_legacy1_seriese   s<    RYY**1-==a@A(..00sOr   c                L   t        t        j                  j                  d      j                  d      ddg      }t	        g d      |d<   t	        dgd	z        |d
<   t        j                  t        d      5  t        |j                  d       d d d        y # 1 sw Y   y xY w)Nr,   r7   r,   Col1Col2r^   
Arv   rv   rv   rv   Brw   rw   rw   rw   Xrv   r7   YFr`   rS   )
r   r:   r;   r<   r   re   rf   UserWarningr   rg   rG   rJ   s     r   test_boxplot_legacy2z'TestDataFramePlots.test_boxplot_legacy2i   s    II!!!$++G4vv>N
 KL3#$3''eL 	2bjjS1	2 	2 	2s   9BB#c                L   t        t        j                  j                  d      j                  d      ddg      }t	        g d      |d<   t	        dgd	z        |d
<   t
        j                  j                         \  }}|j                  dd|      }|j                  }||u sJ y )Nr,   rq   rr   rs   rt   ru   rx   rv   r7   ry   )rS   r   )
r   r:   r;   r<   r   mplr9   subplotsrg   axes)rG   rJ   _r   r   ax_axess         r   test_boxplot_legacy2_with_axz/TestDataFramePlots.test_boxplot_legacy2_with_axr   s    II!!!$++G4vv>N
 KL3#$3 

##%2zz&SRz0''$r   c                n   t        t        j                  j                  d      j                  d      ddg      }t	        g d      |d<   t	        dgd	z        |d
<   t
        j                  j                         \  }}|j                  d
      j                  |d      }|j                  }||d   u sJ y )Nr,   rq   rr   rs   rt   ru   rx   rv   r7   ry   r   r   rM   )r   r:   r;   r<   r   r   r9   r   groupbyrg   r   )rG   rJ   figr   r   r   s         r   (test_boxplot_legacy2_with_ax_return_typez;TestDataFramePlots.test_boxplot_legacy2_with_ax_return_type   s    II!!!$++G4vv>N
 KL3#$3**%%'Rzz#&&"&&A''$s)###r   c                   t        t        j                  j                  d      j                  d      ddg      }t	        g d      |d<   t	        dgd	z        |d
<   t
        j                  j                         \  }}t        j                  t              5  |j                  ddgd|d      }d d d        d   j                         |u sJ y # 1 sw Y   !xY w)Nr,   rq   rr   rs   rt   ru   rx   rv   r7   ry   r   )rO   rS   r   rM   )r   r:   r;   r<   r   r   r9   r   re   rf   r{   rg   
get_figure)rG   rJ   r   r   r   s        r   #test_boxplot_legacy2_with_multi_colz6TestDataFramePlots.test_boxplot_legacy2_with_multi_col   s    II!!!$++G4vv>N
 KL3#$3**%%'R''4 	::'CBF  D	 F|&&(C///		 	s   CCc                   t        t        j                  j                  d      j                  d      ddg      }t	        g d      |d<   t	        dgd	z        |d
<   t
        j                  j                         \  }}|j                  |d      }t        t        j                  j                  |j                                     }t        |j                               t        |      k(  sJ y )Nr,   rq   rr   rs   rt   ru   rx   rv   r7   ry   rN   r   )r   r:   r;   r<   r   r   r9   r   rg   rF   	itertoolschainfrom_iterablevalueslen	get_lines)rG   rJ   r   r   dliness         r   test_boxplot_legacy2_by_nonez/TestDataFramePlots.test_boxplot_legacy2_by_none   s    II!!!$++G4vv>N
 KL3#$3 

##%2JJ"&J1Y__22188:>?2<<>"c%j000r   c                p    |j                         }t        |t        j                  j                        sJ y r   )rg   
isinstancer   r9   Axes)rG   hist_dfresults      r   test_boxplot_return_type_nonez0TestDataFramePlots.test_boxplot_return_type_none   s&    "&#**//222r   c                p   t        t        j                  j                  d      j	                  d      t        t        j                  d d       g d      }d}t        j                  t        |      5  |j                  d	       d d d        |j                         }t        |d
       y # 1 sw Y   &xY w)Nr,   rW   rX   rZ   r]   z,return_type must be {'axes', 'dict', 'both'}match
NOT_A_TYPErM   r   )r   r:   r;   r<   rb   rF   rc   rd   pytestraises
ValueErrorrg   r   )rG   rJ   msgr   s       r   test_boxplot_return_type_legacyz2TestDataFramePlots.test_boxplot_return_type_legacy   s     II!!!$44V<v++BQ/03

 =]]:S1 	1JJ<J0	1 vv.		1 	1s   4B,,B5rN   r   bothc                @   t        t        j                  j                  d      j	                  d      t        t        j                  d d       g d      }t        j                  d      5  |j                  |      }d d d        t        |       y # 1 sw Y   xY w)Nr,   rW   rX   rZ   r]   Fr   )r   r:   r;   r<   rb   rF   rc   rd   re   rf   rg   r   )rG   rM   rJ   r   s       r   +test_boxplot_return_type_legacy_return_typez>TestDataFramePlots.test_boxplot_return_type_legacy_return_type   s     II!!!$44V<v++BQ/03

 ''. 	9ZZKZ8F	9v{3	9 	9s   ,BBc                2   |j                         }t        j                  j                  d      j	                  dd|j
                  d         |d<   |j                  ddgd	      \  }}t        |d   |       t        |d   |       |j                  |k(  sJ y )
Nr,   r-      r   ageheightweightcategoryrz   	copyr:   r;   r<   integersshaperg   r   _sharey)rG   r   rJ   	height_ax	weight_axs        r   test_boxplot_axis_limitsz+TestDataFramePlots.test_boxplot_axis_limits   s    \\^II))!,55aRXXa[I5	!zz8X*>:zN	9Hy1Hy1  I---r   c                   |j                         }t        j                  j                  d      j	                  dd|j
                  d         |d<   |j                  g dd      }|d	   |d
   |d   }}}|d   }t        |d   |       t        |d   |       t        |d   |       |j                  |k(  sJ |j                  |k(  sJ |j                  J y )Nr,   r-   r   r   r   )r   r   r   r   rz   )r   r   )r   r-   )r-   r   r-   r-   r   r   r   )rG   r   rJ   pr   r   age_axdummy_axs           r   !test_boxplot_axis_limits_two_rowsz4TestDataFramePlots.test_boxplot_axis_limits_two_rows   s    \\^II))!,55aRXXa[I5	JJ2zJB'(w$4f9	T7Hy1Hy1EF+  I---~~***'''r   c                    t        t        j                  j                  d      j	                  d            }t        j
                  |j                  d d df<   t        |j                  d       y )Nr,   )r   rY   r   r   r   )	r   r:   r;   r<   rb   nanlocr   rg   r|   s     r   test_boxplot_empty_columnz,TestDataFramePlots.test_boxplot_empty_column   sI    ryy,,Q/??HIvvq!t"**&9r   c                4   t        t        j                  j                  d      j                  d      g d      }|j	                  dd      }|j
                  j                  j                  dk(  sJ |j
                  j                  j                  d	k(  sJ y )
Nr,   )r7      )rv   rw   CDErt   r   )      )rM   figsizer   r   )	r   r:   r;   r<   rg   figurebbox_incheswidthr   )rG   rJ   r   s      r   test_figsizezTestDataFramePlots.test_figsize   s|    II!!!$++G4>W
 @}}((.."444}}((//1444r   c                `    t        dg di      }t        |j                  dd      dd       y )Nar-   r,   r.   rY   r   rX      )fontsize
xlabelsize
ylabelsizer   r   rg   r|   s     r   test_fontsizez TestDataFramePlots.test_fontsize   s,    /012::cB:7BSUVr   c                   t        t        dd      t        j                  j	                  d      j                  d      t        j                  j	                  d      j                  d      dz   t        dd      j                  t              t        ddd      t        dd      d      }|j                  d	
      }|j                         D cg c]  }|j                          c}ddgk(  sJ y c c}w )Nz
2012-01-01d   )periodsr,   UTC)r   tzz1 days)r   bcr   efbox)r5   r   r   )r   r   r:   r;   r<   rb   astypestrr	   r?   r@   rB   )rG   rJ   r   rK   s       r   test_boxplot_numeric_dataz,TestDataFramePlots.test_boxplot_numeric_data   s    c:YY**1-==cBYY**1-==cBQFc:AA#FceD$Xs;	
 WW%W &(&8&8&:;

;SzIII;s   C4zcolors_kwd, expectedrr   gr   )boxeswhiskersmedianscapsr   c                    t        t        j                  j                  d      j                  d            }|j	                  |d      }|j                         D ]   \  }}||   d   j                         |k(  r J  y )Nr,   rq   rN   colorrM   r   )r   r:   r;   r<   rg   items	get_color)rG   
colors_kwdexpectedrJ   r   kvs          r   test_color_kwdz!TestDataFramePlots.test_color_kwd   ss     ryy,,Q/66w?@*&ANN$ 	1DAq!9Q<))+q000	1r   zscheme,expecteddark_backgroundz#8dd3c7z#bfbbd9defaultz#1f77b4z#2ca02cc                R   t        t        j                  j                  d      j                  d            }dd lm} |j                  j                  |       |j                  j                  d      }|j                         D ]   \  }}||   d   j                         |k(  r J  y )Nr,   rq   r   rN   r   )r   r:   r;   r<   r8   r9   styleuser?   r   r   r   )rG   schemer   rJ   rH   r   r   r   s           r   test_colors_in_themez'TestDataFramePlots.test_colors_in_theme  s    2 ryy,,Q/66w?@'		f0NN$ 	1DAq!9Q<))+q000	1r   zdict_colors, msg)r   invalid_keyzinvalid key 'invalid_key'c                    t        t        j                  j                  d      j                  d            }t	        j
                  t        |      5  |j                  |d       d d d        y # 1 sw Y   y xY w)Nr,   rq   r   rN   r   )r   r:   r;   r<   r   r   r   rg   )rG   dict_colorsr   rJ   s       r   test_color_kwd_errorsz(TestDataFramePlots.test_color_kwd_errors1  s[     ryy,,Q/66w?@]]:S1 	>JJ[fJ=	> 	> 	>s   A00A9zprops, expected))boxpropsr   )whiskerpropsr   )cappropsr   )medianpropsr   c           	        t        dD ci c]1  }|t        j                  j                  d      j                  d      3 c}      }|ddii} |j                  d	ddi|}||   d   j                         dk(  sJ y c c}w )
NABCr,   r7   r   C1rM   rN   r    )r   r:   r;   r<   rg   r   )rG   propsr   r   rJ   kwdr   s          r   test_specified_props_kwdz+TestDataFramePlots.test_specified_props_kwd;  s     N1299003::2>>NOwo&66#6h",,.$666	 Os   6A=z!ignore:set_ticklabels:UserWarningc                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j                  ddgd      d      }d\  }} |j                  d	d||d|}|j                         |k(  sJ |j                         |k(  sJ y )
Nr,   r7   group1group2r   r   grouprK   yr   )r5   xlabelylabelr  )	r   r:   r;   r<   rb   r=   r?   
get_xlabel
get_ylabelrG   r   rJ   r  r  r   s         r   test_plot_xlabel_ylabelz*TestDataFramePlots.test_plot_xlabel_ylabelL  s    YY**1-==bAYY**1-==bA..q188(H9MrR
 "RWWF%vFF}}&(((}}&(((r   c                L   t         j                  j                  d      }t        |j	                  ddd      t        d            }t        |j	                  ddd      t        d            }d\  }}t        j                  dd	d
      \  }} |j                  j                  d|d   ||d|  |j                  j                  d|d   ||d| |D ],  }	|	j                         |k(  sJ |	j                         |k(  r,J  t        j                  j                          y )Nr,   r   r   )r   rY   sizeABCDrt   r  )r7      T)ncolsr   sharey)r   r  r  r-   r  )r:   r;   r<   r   r   rF   rH   r   r?   r   r  r  r   r9   close)
rG   r   rngdf1df2r  r  r   axsr   s
             r   test_plot_boxz TestDataFramePlots.test_plot_boxZ  s    ii##A&Q(;T&\RQ(;T&\R!AwtD3EAvfEEEAvfEE 	-B==?f,,,==?f,,,	- 	

r   c                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j                  ddgd      d      }d\  }} |j                  d||d|}|j                         |k(  sJ |j                         |k(  sJ y )	Nr,   r7   r  r  r  r  )r  r  r  )	r   r:   r;   r<   rb   r=   rg   r  r  r  s         r   test_boxplot_xlabel_ylabelz-TestDataFramePlots.test_boxplot_xlabel_ylabelj  s    YY**1-==bAYY**1-==bA..q188(H9MrR
 "RZZ=vf==}}&(((}}&(((r   c                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      t        j                  j                  d      j                  ddgd      d      }d\  }} |j                  d	d||d|}|D ],  }|j                         |k(  sJ |j                         |k(  r,J  t        j                  j                          y )
Nr,   r7   r  r  r  r  r  )rS   r  r  r  )r   r:   r;   r<   rb   r=   rg   r  r  r   r9   r   )rG   r   rJ   r  r  r   subplots          r    test_boxplot_group_xlabel_ylabelz3TestDataFramePlots.test_boxplot_group_xlabel_ylabelx  s    YY**1-==bAYY**1-==bA..q188(H9MrR
 "RZZI76&IDI 	2G%%'6111%%'6111	2 	

r   c                   t        t        j                        t        d      k\  r9|ddik(  r2|j                  t        j
                  j                  | d             t        t        j                  j                  d      j                  d      t        j                  j                  d      j                  d      t        j                  j                  d      j                  dd	gd      d
      } |j                  dddi|}|D ]A  }|ddik(  s|ddik(  r|j                         n|j                         }|t!        dg      k(  rAJ  t        j"                  j%                          y )Nr   r!   r"   z$ fails starting with matplotlib 3.10)reasonr,   r7   r  r  r  rS   r  r   Tr#   r  )r   r   __version__applymarkerr   markxfailr   r:   r;   r<   rb   r=   rg   r  r  r   r9   r   )rG   r   r'   rJ   r   r)  target_labels          r   #test_boxplot_group_no_xlabel_ylabelz6TestDataFramePlots.test_boxplot_group_no_xlabel_ylabel  sS   3??#wv64<D
 <
 !!D61U)V!W YY**1-==bAYY**1-==bA..q188(H9MrR
 RZZ+7+d+ 	;G FD>)M:66 ""$ '')	   <	#::::	; 	

r   )#__name__
__module____qualname__rL   r   r/  slowparametrizer{   rj   ro   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  filterwarningsr  r%  r'  r*  r2  r  r   r   r)   r)   4   s   
* [[[[V$d+'.g6D':;TBG_k*Wh'(+6q\4 a(+6		
4 4P2	$013
/ [[],DE
4 F
4.(:
5WJ [[ 33L33L s^gs^,CSS#NO	

1
1 [[ "& )(%	 & )(%		
.1/.1 [[
,.I	JK>	> [[	
77 [[ CD) E) [[ CD E [[ CD) E) [[ CD E [[ CD Er   r)   c            
         e Zd Zd Zd Zej                  j                  d        Zej                  j                  d        Z	ej                  j                  ddeddgg d	g      d
        Zd Zd Zej                  j                  d        Zej                  j                  d        Zej                  j                  ej                  j                  dg d      d               Zej                  j                  ej                  j                  dg d      d               Zej                  j                  d        Zej                  j                  d        Zej                  j                  d        Zej                  j                  ej                  j                  dg dg dg dg      d               Zej                  j                  ej                  j                  dddgddgddgg      d                Zej                  j                  d!        Zej                  j                  ej                  j                  d"d#d$g      d%               Zej                  j                  ej                  j                  d&d'd'gd$dgg      d(               Zej                  j                  ej                  j                  d)d'd'gd$dgg      d*               Zej                  j                  d+        Zej                  j                  d,        Zej                  j                  d-        Zd. Zej                  j                  d/d0g d1fd0gg d1fd2g d3fd0d2gg d4fd5g d4fg      d6        Z d7 Z!d8 Z"y5)9TestDataFrameGroupByPlotsc                    |j                  d      }t        j                  t        d      5  t	        |j
                  d      }d d d        t        t        j                        dd	       y # 1 sw Y   +xY w)
Ngenderrz   Fr`   r   r   r,   )r-   r,   axes_numlayout)	r   re   rf   r{   r   rg   r
   rF   r   rG   r   groupedr   s       r   rj   z.TestDataFrameGroupByPlots.test_boxplot_legacy1  s`    //X/.''eL 	J$W__&ID	J$t{{+aG	J 	Js   A00A9c                t    |j                  d      }t        |j                  dd      }t        |dd       y )	Nr<  rz   Fr   r   rM   r-   r   r=  )r   r   rg   r
   r@  s       r    test_boxplot_legacy1_return_typez:TestDataFrameGroupByPlots.test_boxplot_legacy1_return_type  s0    //X/. 5fU$6:r   c                   t        t        j                  d d t        d            }t	        t
        j                  j                  d      j                  d      t        j                  |            }|j                  d      }t        j                  t        d      5  t        |j                  d	
      }d d d        t!        t#        j$                        dd       y # 1 sw Y   +xY w)Nr7   r,   r7   r.   r2   r-   levelFr`   r   r   )rY   r.   r=  )ziprc   rd   ranger   r:   r;   r<   r   from_tuplesr   re   rf   r{   r   rg   r
   rF   r   rG   tuplesrJ   rA  r   s        r   r}   z.TestDataFrameGroupByPlots.test_boxplot_legacy2  s    V))#2.b	:II!!!$++G4((0
 **1*%''eL 	J$W__&ID	J$t{{+bH	J 	Js    C""C+c                X   t        t        j                  d d t        d            }t	        t
        j                  j                  d      j                  d      t        j                  |            }|j                  d      }t        |j                  dd	      }t        |dd
       y )Nr7   r,   rF  r2   r-   rG  Fr   rC  r   r=  )rI  rc   rd   rJ  r   r:   r;   r<   r   rK  r   r   rg   r
   rL  s        r    test_boxplot_legacy2_return_typez:TestDataFrameGroupByPlots.test_boxplot_legacy2_return_type  s    V))#2.b	:II!!!$++G4((0
 **1*% 5fU$6:r   z subplots, warn, axes_num, layoutTr.   r,   r,   )FNr-   r   c                6   t        t        j                  d d t        d            }t	        t
        j                  j                  d      j                  d      t        j                  |            }d}t        j                  t        |      5  |j                  d      j                  d	d
      }d d d        t        j                  |d      5  t        j                   |d      }	d d d        t#        	||       y # 1 sw Y   PxY w# 1 sw Y   $xY w)Nr7   r,   rF  r2   z+DataFrame.groupby with axis=1 is deprecatedr   r-   rG  r   )rH  axisFr`   r   rC  r=  )rI  rc   rd   rJ  r   r:   r;   r<   r   rK  re   rf   FutureWarningunstackr   r   rg   r
   )
rG   r   ri   r>  r?  rM  rJ   r   rA  r   s
             r   test_boxplot_legacy3z.TestDataFrameGroupByPlots.test_boxplot_legacy3  s    
 V))#2.b	:II!!!$++G4((0
 <''SA 	Cjjqj)111BG	C''uE 	$(D	 	$&A	C 	C	 	s   $DDDDc                   d}t        t        j                  j                  d      j	                  dd|            }t        t        j                  j                  d      j	                  dd|            }t        j                  j                  d      j                  ddg|      }t        |||d	      }|j                  d
      }|j                         }t        t        j                  j                               dk(  sJ t        |      dk(  sJ t        j                  d       |j                  d      }t        t        j                  j                               dk(  sJ t        |      dk(  sJ y )Nr7   r,      r   r  <   malefemaler   r   r<  r<  allr   r   r-   )r   r:   r;   r<   normalr=   r   r   r?   r   r   r9   get_fignumsrH   r   rg   )rG   rI   r   r   r<  rJ   gbress           r   test_grouped_plot_fignumsz3TestDataFrameGroupByPlots.test_grouped_plot_fignums  s,   		--a077Ra7HI		--a077BQ7GH&&q)00&(1C!0L&FfMNZZ!ggi3::))+,1113x1}}		%jjVj,3::))+,1113x1}}r   c                   d}t        t        j                  j                  d      j	                  dd|            }t        t        j                  j                  d      j	                  dd|            }t        j                  j                  d      j                  ddg|      }t        |||d	      }|j                  d
      j                          y )Nr7   r,   rW  r   r  rX  rY  rZ  r[  r<  )	r   r:   r;   r<   r]  r=   r   r   hist)rG   rI   r   r   r<  rJ   s         r   &test_grouped_plot_fignums_excluded_colz@TestDataFrameGroupByPlots.test_grouped_plot_fignums_excluded_col  s    		--a077Ra7HI		--a077BQ7GH&&q)00&(1C!0L&FfMN


8!!#r   c                    |}|j                  d      }t        |t        j                        sJ t	        |d g d       y )Nr<  rz   r   r   r   expected_keys)rg   r   r:   ndarrayr   rG   r   rJ   r   s       r   test_grouped_box_return_typez6TestDataFrameGroupByPlots.test_grouped_box_return_type  s=     x(&"**---D(H	
r   c                j    |}|j                  d      j                  d      }t        |dddg       y )Nr<  rN   r   MaleFemalerg  r   rg   r   rj  s       r   $test_grouped_box_return_type_groupbyz>TestDataFrameGroupByPlots.test_grouped_box_return_type_groupby  s4    H%--&-Avvfh=OPr   rM   r   c                    |}|j                  d      j                  |      }t        ||g d       |j                  d|      }t        ||g d       y )N	classroomr   rv   rw   r   rg  rS   rM   rf  ro  )rG   r   rM   rJ   returneds        r    test_grouped_box_return_type_argz:TestDataFrameGroupByPlots.test_grouped_box_return_type_arg  sS     ::k*22{2KxOT::+:Fk1Q	
r   c                f   dj                         }t        t        j                  j	                  d      j                  d      |      }dj                         }|dz  |d<   |j                  d      j                  |      }t        |||	       |j                  d|
      }t        |||	       y )Nz	X B C D Ar,   )rX   r   rt   zA Br.   r   r   rg  rt  )	splitr   r:   r;   r<   rb   r   rg   r   )rG   rM   columns2r#  categories2ru  s         r   .test_grouped_box_return_type_arg_duplcate_catszHTestDataFrameGroupByPlots.test_grouped_box_return_type_arg_duplcate_cats  s     $$&II!!!$44V<h
 kkm%/J;;z*22{2KxKP;;*+;FxHMr   c                    |}d}t        j                  t        |      5  |j                  ddg|j                  d       d d d        y # 1 sw Y   y xY w)Nz1Layout of 1x1 must be larger than required size 2r   r   r   r   rO   rS   r?  r   r   r   rg   r<  rG   r   rJ   r   s       r   !test_grouped_box_layout_too_smallz;TestDataFrameGroupByPlots.test_grouped_box_layout_too_small"  sN    A]]:S1 	QJJx2ryyJP	Q 	Q 	Q   !A

Ac                    |}d}t        j                  t        |      5  |j                  g ddd       d d d        y # 1 sw Y   y xY w)Nz7The 'layout' keyword is not supported when 'by' is Noner   rf  )r,   r-   rN   rO   r?  rM   )r   r   r   rg   r  s       r    test_grouped_box_layout_needs_byz:TestDataFrameGroupByPlots.test_grouped_box_layout_needs_by*  sI    G]]:S1 	JJ7"  	 	 	s   A  A	c                    |}d}t        j                  t        |      5  |j                  ddg|j                  d       d d d        y # 1 sw Y   y xY w)Nz1At least one dimension of layout must be positiver   r   r   )r  r}  r~  r  s       r   'test_grouped_box_layout_positive_layoutzATestDataFrameGroupByPlots.test_grouped_box_layout_positive_layout5  sN    A]]:S1 	SJJx2ryyJR	S 	S 	Sr  zgb_key, axes_num, rows)r<  r,   r-   )r   rY   r,   )rr  r.   r,   c                "   |}t        j                  t        d      5  t        |j	                  |      j
                  dd       d d d        t        t        j                  j                         j                  ||df       y # 1 sw Y   @xY w)NFr`   r   rN   rO   rM   r,   r=  re   rf   r{   r   r   rg   r
   r   r9   gcfr   )rG   r   gb_keyr>  rowsrJ   s         r   ,test_grouped_box_layout_positive_layout_axeszFTestDataFrameGroupByPlots.test_grouped_box_layout_positive_layout_axes<  sp     ''eL 	

6"**8	 	#**..*//(DRS9U		 	s   (BBzcol, visibler   Fr   r   c                (   |}|j                  g ddd      }t        t        j                  j	                         j
                  dd       ||   }t        |j                         |       t        |j                  j                         g|       y )	Nrf  r<  r   )rO   rS   rM   r.   rP  r=  )visible)
rg   r
   r   r9   r  r   r   r@   xaxis	get_label)rG   r   r   r  rJ   r   r   s          r   test_grouped_box_layout_visiblez9TestDataFrameGroupByPlots.test_grouped_box_layout_visibleL  sx    
 zz3f  
 	#**..*//!FK#Yr))+W=**,-w?r   c                    |}|j                  d      j                  g dd       t        t        j                  j                         j                  dd       y )Nrr  rf  rN   r  r.   rP  r=  r   rg   r
   r   r9   r  r   )rG   r   rJ   s      r   test_grouped_box_layout_shapez7TestDataFrameGroupByPlots.test_grouped_box_layout_shape[  sG    


;''3 	( 	
 	#**..*//!FKr   colsr,   r  c                $   |}t        j                  t        d      5  t        |j	                  d      j
                  dd|fd       d d d        t        t        j                  j                         j                  dd	
       y # 1 sw Y   >xY w)NFr`   r   r   r.   rN   r  rY   )r.   r,   r=  r  )rG   r   r  rJ   s       r   test_grouped_box_layout_worksz7TestDataFrameGroupByPlots.test_grouped_box_layout_worksc  st     ''eL 	

:&..4y"		 	#**..*//!FK	 	s   +BBz	rows, resrY   c                    |}|j                  g dd|df       t        t        j                  j	                         j
                  d|df       y )Nrf  r<  r-   r}  r.   r=  )rg   r
   r   r9   r  r   )rG   r   r  r`  rJ   s        r   'test_grouped_box_layout_axes_shape_rowszATestDataFrameGroupByPlots.test_grouped_box_layout_axes_shape_rowsp  sI     


3$PQ 	 	
 	#**..*//!S!HMr   z	cols, resc                    |}|j                  d      j                  g dd|fd       t        t        j                  j                         j                  dd|f       y )Nrr  rf  r-   rN   r  r.   r=  r  )rG   r   r  r`  rJ   s        r   /test_grouped_box_layout_axes_shape_cols_groupbyzITestDataFrameGroupByPlots.test_grouped_box_layout_axes_shape_cols_groupbyy  sU     


;''3t9 	( 	

 	#**..*//!QHMr   c                X   |}t        j                  t              5  t        j                  j                  dd      \  }}|j                  d      j                  dd|       t        t        j                  j                         j                  dd       d d d        y # 1 sw Y   y xY w)	Nr,   r   r   r   rO   rM   r   rY   rP  r=  )re   rf   r{   r   r9   r   r   rg   r
   r  r   )rG   r   rJ   r   r   s        r   test_grouped_box_multiple_axesz8TestDataFrameGroupByPlots.test_grouped_box_multiple_axes  s      ''4 	Pjj))!Q/GAtJJz"**(SW*Xcjjnn.33aO	P 	P 	Ps   A;B  B)c                   |}t         j                  j                  dd      \  }}t        j                  t
              5  |j                  g ddd|d         }d d d        t        j                  t        j                              }t        |dd	       t        j                  ||d          |d   j                  |u sJ t        j                  t
              5  |j                  d
      j                  g dd|d         }d d d        t        j                  t        |j                              }t        |dd	       t        j                  ||d          |d   j                  |u sJ y # 1 sw Y   xY w# 1 sw Y   yxY w)Nr,   r.   rf  r<  r   r   )rO   rS   rM   r   )r-   r.   r=  rr  r-   r  )r   r9   r   re   rf   r{   rg   r:   arrayrF   r   r
   assert_numpy_array_equalr   r   )rG   r   rJ   r   r   ru  s         r   %test_grouped_box_multiple_axes_on_figz?TestDataFrameGroupByPlots.test_grouped_box_multiple_axes_on_fig  s\    JJ''1-	T''4 	zz7"7	 " H	 88D12(Qv>
##Hd1g6{!!S((( ''4 	zz+.667VPTUVPW 7 H	 88D12(Qv>
##Hd1g6{!!S((()	 		 	s   E1)E>1E;>Fc                P   |}d}t        j                  t        |      5  t        j                  j                  dd      \  }}t        j                  t              5  |j                  d      j                  |      }d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz@The number of passed axes must be 3, the same as the output plotr   r,   r.   rr  )r   )r   r   r   r   r9   r   re   rf   r{   r   rg   )rG   r   rJ   r   r   r   s         r   'test_grouped_box_multiple_axes_ax_errorzATestDataFrameGroupByPlots.test_grouped_box_multiple_axes_ax_error  s     P]]:S1 	@

++Aq1IC++K8 @zz+.66$6?@	@ 	@@ @	@ 	@s#   =B"B?BB	BB%c                h    t        g dg dd      }t        |j                  ddd      dd       y )	Nr   )r   r   r   r-   r-   r-   )r   r   r   r   r   )rS   r   r   r   r|   s     r   r   z'TestDataFrameGroupByPlots.test_fontsize  s1    /6HIJJJssRJ0RB	
r   zcol, expected_xticklabelr   )(a, v)(b, v)(c, v)(d, v)(e, v)v1)(a, v1)(b, v1)(c, v1)(d, v1)(e, v1))
r  r  r  r  r  r  r  r  r  r  Nc                    t        t        j                  j                  d      j	                  t        d      d      t        j                  j                  d      j                  d      t        j                  j                  d      j                  d      d      }|j                  d      }t        |j                  d|d      }|j                         D cg c]  }|j                          }}||k(  sJ y c c}w )	Nr,   abcder   )catr   r  r  Fr   )r   rO   rM   )r   r:   r;   r<   r=   rF   r   r   rg   r@   rB   )rG   r   expected_xticklabelrJ   rA  r   rK   result_xticklabels           r   #test_groupby_boxplot_subplots_falsez=TestDataFrameGroupByPlots.test_groupby_boxplot_subplots_false  s    P yy,,Q/66tG}cJYY**1-44S9ii++A.55c:
 **U# OOeCV
 483G3G3IJaQZZ\JJ"&7777 Ks   C;c                    |j                  d      }|j                  d      }d}t        j                  t        |      5  t        |j                  d       d d d        y # 1 sw Y   y xY w)Nobjectr<  z:boxplot method requires numerical columns, nothing to plotr   F)r   )r   r   r   r   r   r   rg   )rG   r   rJ   rA  r   s        r   test_groupby_boxplot_objectz5TestDataFrameGroupByPlots.test_groupby_boxplot_object  sT    ^^H%**X&J]]:S1 	?goo>	? 	? 	?s    A!!A*c                   g dg dg}t        t        |       }t        j                  |ddg      }t	        t
        j                  j                  d      j                  d      g d|	      }d
dg}t        |j                  |d      }ddg}|j                         D cg c]  }|j                          }	}||	k(  sJ y c c}w )N)r4   r4   bazr  r_   r_   quxr  )rP   rQ   rP   rQ   rP   rQ   rP   rQ   firstsecond)namesr,   )r.   r   rs  r]   )r4   rP   )r4   rQ   r   r  z
(bar, one)z
(bar, two))rF   rI  r   rK  r   r:   r;   r<   rb   r   rg   r@   rB   )
rG   arraysrM  r3   rJ   r   r   r  rK   r  s
             r   test_boxplot_multiindex_columnz8TestDataFrameGroupByPlots.test_boxplot_multiindex_column  s     ED
 c6l#&&vgx5HIII!!!$44V<!
 ~. CVL+\:373G3G3IJaQZZ\JJ"&7777 Ks   !C)#r3  r4  r5  rj   rD  r   r/  r6  r}   rO  r7  r{   rU  ra  rd  rk  rp  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r   r:  r:    s   H;
 [[	I 	I [[; ; [[*
Q	')ABB	B"$ [[
 
 [[Q Q [[[[],DE	
 F 	
 [[[[],DEN F N [[Q Q [[  [[S S [[[[ 	-/BC	V	 
	V [[[[(E*Xt,<z4>PQ	@ 	@ [[L L [[[[VaW-	L . 	L [[[[[Aq6B7*;<N = N [[[[[Aq6B7*;<N = N [[P P [[) )4 [[@ @
 [["DEUFGJKd  '"	
%L8M%L8$?8r   r:  )'__doc__
__future__r   r   rc   numpyr:   r   pandasr   r   r   r   r   r	   pandas._testing_testingre   pandas.tests.plotting.commonr
   r   r   r   r   pandas.util.versionr   pandas.io.formats.printingr   importorskipr   rH   r   r-  r    __annotations__fixturer   r)   r:  r  r   r   <module>r     s    & "        ( 3f,'f-. 3??gfo-+15/FD>)JE&J\*]J,GHE u l l^o8 o8r   