a
    nÝEbU  ã                   @   s²   d Z ddlZddlZddlZddlZddlm  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mZ ddlmZ ejjZe	jG dd„ deƒƒZe	jG dd„ deƒƒZdS )	z  Test cases for .boxplot method é    N)Ú	DataFrameÚ
MultiIndexÚSeriesÚ
date_rangeÚtimedelta_range)ÚTestPlotBaseÚ_check_plot_worksc                   @   s  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Ze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d„ ƒZej dddddddœfd d!d!d"d!dœfg¡d#d$„ ƒZej d%ddd&œd'fg¡d(d)„ ƒZej d*g d+¢¡d,d-„ ƒZd.S )/ÚTestDataFramePlotsc                 C   sš  t tj dd¡ttjd d… ƒg d¢d�}ddgd |d< g d	¢d
 |d< t|jdd� t|jddgdd� t	 
t¡�$ t|jddgdd� W d   ƒ n1 s 0    Y  t|jdddgd� t	 
t¡� t|jdd� W d   ƒ n1 sì0    Y  t	 
t¡�" t|jddgd� W d   ƒ n1 �s*0    Y  ttjj|d dd� t|jddd� t	 
t¡�  t|jddd� W d   ƒ n1 �sŒ0    Y  d S )Né   é   ©ÚoneÚtwoÚthreeÚfour©ÚindexÚcolumnsÚfooÚbaré   Zindic)r   r   r   é   Zindic2Údict©Úreturn_typer   r   ©Úcolumnr   )r   Úby©r   )Údatar   é   )Únotchr   )r   r!   )r   ÚnpÚrandomÚrandnÚlistÚstringÚascii_lettersr   ÚboxplotÚtmÚassert_produces_warningÚUserWarningÚplottingZ_core©ÚselfÚdf© r0   úi/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/plotting/test_boxplot_method.pyÚtest_boxplot_legacy1   s(    ý2,2z'TestDataFramePlots.test_boxplot_legacy1c                 C   s�  t tj dd¡ddgd�}tg d¢ƒ|d< tdgd ƒ|d	< t t¡� t|j	dd
� W d   ƒ n1 sj0    Y  | j
 ¡ \}}|j	dd|d�}|j}||u s¤J ‚| j
 ¡ \}}| d	¡j	|dd�}|j}||d u sÜJ ‚| j
 ¡ \}}t t¡�& |j	ddgd|dd�}W d   ƒ n1 �s"0    Y  |d  ¡ |u �sBJ ‚| j
 ¡ \}}|j	|dd�}ttj | ¡ ¡ƒ}t| ¡ ƒt|ƒk�sŒJ ‚d S )Né
   r   ZCol1ZCol2©r   )
ÚAr5   r5   r5   r5   ÚBr6   r6   r6   r6   ÚXr5   ÚYr   )r   ÚaxÚaxes)r9   r   )r   r   r9   r   r   )r   r"   r#   Úrandr   r)   r*   r+   r   r(   ÚpltÚsubplotsr:   ÚgroupbyZ
get_figurer%   Ú	itertoolsÚchainÚfrom_iterableÚvaluesÚlenÚ	get_lines)r.   r/   Úfigr9   r:   Zax_axesÚdÚlinesr0   r0   r1   Útest_boxplot_legacy27   s.    ,ÿ&z'TestDataFramePlots.test_boxplot_legacy2c                 C   s    | j  ¡ }t|| jjƒsJ ‚d S ©N)Úhist_dfr(   Ú
isinstancer<   ZAxes)r.   Úresultr0   r0   r1   Útest_boxplot_return_type_noneY   s    
z0TestDataFramePlots.test_boxplot_return_type_nonec                 C   sH  t tj dd¡ttjd d… ƒg d¢d�}d}tjt	|d�� |j
dd� W d   ƒ n1 s^0    Y  | 
¡ }|  |d	¡ t d
¡� |j
dd�}W d   ƒ n1 s¨0    Y  |  |d¡ t d
¡� |j
d	d�}W d   ƒ n1 sê0    Y  |  |d	¡ t d
¡� |j
dd�}W d   ƒ n1 �s.0    Y  |  |d¡ d S )Nr
   r   r   r   z,return_type must be {'axes', 'dict', 'both'}©ÚmatchZ
NOT_A_TYPEr   r:   Fr   Úboth)r   r"   r#   r$   r%   r&   r'   ÚpytestÚraisesÚ
ValueErrorr(   Ú_check_box_return_typer)   r*   )r.   r/   ÚmsgrL   r0   r0   r1   Útest_boxplot_return_type_legacy^   s&    ý***,z2TestDataFramePlots.test_boxplot_return_type_legacyc                 C   sú   dd„ }| j  ¡ }tj dd|jd ¡|d< |jddgd	d
�\}}||d |ƒ ||d |ƒ |j|kslJ ‚|jg d¢d	d
�}|d |d |d   }}}|d }||d |ƒ ||d |ƒ ||d |ƒ |j|ksÚJ ‚|j|ksèJ ‚|jd u söJ ‚d S )Nc                 S   s0   |  ¡ \}}||  ¡ ksJ ‚||  ¡ ks,J ‚d S rI   )Zget_ylimÚminÚmax)Úcolr9   Zy_minZy_maxr0   r0   r1   Ú_check_ax_limitsz   s    zETestDataFramePlots.test_boxplot_axis_limits.<locals>._check_ax_limitsr    é   r   ÚageÚheightÚweightÚcategoryr   )r]   r^   r\   )r   r   )r   r    )r    r   ©r    r    )rJ   Úcopyr"   r#   ÚrandintÚshaper(   Z_sharey)r.   rZ   r/   Z	height_axZ	weight_axÚpZage_axZdummy_axr0   r0   r1   Útest_boxplot_axis_limitsy   s     
z+TestDataFramePlots.test_boxplot_axis_limitsc                 C   s8   t tj dd¡ƒ}tj|jd d …df< t|jdd� d S )Nr[   r   r   r:   r   )r   r"   r#   r$   ÚnanÚlocr   r(   r-   r0   r0   r1   Útest_boxplot_empty_column“   s    z,TestDataFramePlots.test_boxplot_empty_columnc                 C   sP   t tj dd¡g d¢d�}|jddd�}|jjjdks:J ‚|jjjd	ksLJ ‚d S )
Nr3   é   )r5   r6   ÚCÚDÚEr4   r:   )é   é   )r   Zfigsizerm   rn   )	r   r"   r#   r;   r(   ÚfigureZbbox_inchesÚwidthr]   )r.   r/   rL   r0   r0   r1   Útest_figsize˜   s    zTestDataFramePlots.test_figsizec                 C   s.   t dg d¢iƒ}| j|jddd�ddd� d S )NÚa©r    r   r   r   ri   r
   é   )Úfontsize©Z
xlabelsizeZ
ylabelsize©r   Z_check_ticks_propsr(   r-   r0   r0   r1   Útest_fontsizež   s    ÿz TestDataFramePlots.test_fontsizec              
   C   s€   t tddd�tj d¡tj d¡d tddd� t¡tdddd�tddd�dœƒ}|jd	d
�}dd„ | 	¡ D ƒddgks|J ‚d S )Nz
2012-01-01éd   )Úperiodsr   ÚUTC)rz   Útzz1 days)rr   ÚbÚcrF   ÚeÚfÚbox)Úkindc                 S   s   g | ]}|  ¡ ‘qS r0   ©Zget_text©Ú.0Úxr0   r0   r1   Ú
<listcomp>±   ó    z@TestDataFramePlots.test_boxplot_numeric_data.<locals>.<listcomp>r}   r~   )
r   r   r"   r#   r$   ÚastypeÚstrr   ÚplotÚget_xticklabels)r.   r/   r9   r0   r0   r1   Útest_boxplot_numeric_data¤   s    


úÿ
z,TestDataFramePlots.test_boxplot_numeric_datazcolors_kwd, expectedÚrr}   Úgr~   )ÚboxesÚwhiskersÚmediansÚcapsr�   c                 C   sN   t tj dd¡ƒ}|j|dd�}| ¡ D ] \}}|| d  ¡ |ks(J ‚q(d S )Nr3   r   r   ©Úcolorr   r   )r   r"   r#   r;   r(   ÚitemsÚ	get_color)r.   Z
colors_kwdÚexpectedr/   rL   ÚkÚvr0   r0   r1   Útest_color_kwd³   s    z!TestDataFramePlots.test_color_kwdzscheme,expectedZdark_backgroundz#8dd3c7z#bfbbd9Údefaultz#1f77b4z#2ca02cc                 C   sf   t tj dd¡ƒ}dd lm} |j |¡ |jj	dd�}| 
¡ D ] \}}|| d  ¡ |ks@J ‚q@d S )Nr3   r   r   r   r   )r   r"   r#   r;   Zmatplotlib.pyplotZpyplotÚstyleZuser‹   r�   r–   r—   )r.   Úschemer˜   r/   r<   rL   r™   rš   r0   r0   r1   Útest_colors_in_themeÅ   s    z'TestDataFramePlots.test_colors_in_themezdict_colors, msg)r�   Zinvalid_keyzinvalid key 'invalid_key'c                 C   sR   t tj dd¡ƒ}tjt|d�� |j|dd� W d   ƒ n1 sD0    Y  d S )Nr3   r   rN   r   r”   )r   r"   r#   r;   rQ   rR   rS   r(   )r.   Zdict_colorsrU   r/   r0   r0   r1   Útest_color_kwd_errorsæ   s    z(TestDataFramePlots.test_color_kwd_errorszprops, expected))Zboxpropsr�   )Zwhiskerpropsr‘   )Zcappropsr“   )Zmedianpropsr’   c                 C   sN   t dd„ dD ƒƒ}|ddii}|jf ddi|¤Ž}|| d  ¡ dksJJ ‚d S )	Nc                 S   s   i | ]}|t j d ¡“qS )ry   )r"   r#   )r…   r™   r0   r0   r1   Ú
<dictcomp>û   rˆ   z?TestDataFramePlots.test_specified_props_kwd.<locals>.<dictcomp>ÚABCr•   ZC1r   r   r   )r   r(   r—   )r.   Úpropsr˜   r/   ZkwdrL   r0   r0   r1   Útest_specified_props_kwdð   s    z+TestDataFramePlots.test_specified_props_kwdN)Ú__name__Ú
__module__Ú__qualname__r2   rH   rM   rV   re   rh   rq   rx   r�   rQ   ÚmarkÚparametrizer›   rŸ   r    r¤   r0   r0   r0   r1   r	      s`   "þúþ
üþ
üþöþ

þ
þ	r	   c                
   @   sª   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
ej ddg d¢fdgg d¢fdg d¢fddgg d¢fdg d¢fg¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestDataFrameGroupByPlotsc                 C   s€   | j jdd�}t t¡� t|jdd�}W d   ƒ n1 s<0    Y  | jt|j	ƒddd� t|jddd	�}| j|d
dd� d S )NÚgenderr   r:   r   r   ©r    r   ©Zaxes_numÚlayoutF©r=   r   r    r`   )
rJ   r>   r)   r*   r+   r   r(   Ú_check_axes_shaper%   rB   )r.   Úgroupedr:   r0   r0   r1   r2     s    ,z.TestDataFrameGroupByPlots.test_boxplot_legacy1c                 C   s²   t tjd d… tdƒƒ}ttj dd¡t 	|¡d�}|j
dd�}t t¡� t|jdd�}W d   ƒ n1 sn0    Y  | jt|jƒddd	� t|jd
dd�}| j|ddd	� d S )Nr3   r   ©r   r    ©Úlevelr:   r   )r   r   r­   Fr¯   r`   )Úzipr&   r'   Úranger   r"   r#   r;   r   Úfrom_tuplesr>   r)   r*   r+   r   r(   r°   r%   rB   ©r.   Útuplesr/   r±   r:   r0   r0   r1   rH     s    ,z.TestDataFrameGroupByPlots.test_boxplot_legacy2c                 C   s¼   t tjd d… tdƒƒ}ttj dd¡t 	|¡d�}|j
dd�jddd�}t t¡� t|jdd	�}W d   ƒ n1 sx0    Y  | jt|jƒdd
d� t|jddd�}| j|ddd� d S )Nr3   r   r²   r    r³   r   )r´   Zaxisr:   r   ©r   r   r­   Fr¯   r`   )rµ   r&   r'   r¶   r   r"   r#   r;   r   r·   Zunstackr>   r)   r*   r+   r   r(   r°   r%   rB   r¸   r0   r0   r1   Útest_boxplot_legacy3  s    ,z.TestDataFrameGroupByPlots.test_boxplot_legacy3c                 C   s  d}t tjjdd|d�ƒ}t tjjdd|d�ƒ}t d¡�$ tjjddg|d�}W d   ƒ n1 sd0    Y  t|||d	œƒ}| d
¡}| 	¡ }t
| j ¡ ƒdks¦J ‚t
|ƒdks¶J ‚t ¡  |jdd�}t
| j ¡ ƒdksàJ ‚t
|ƒdksðJ ‚t ¡  | d
¡ ¡ }t ¡  d S )Nr3   é¦   r[   )Úsizeé<   é*   ZmaleZfemale)r]   r^   r«   r«   r   r:   r   r    )r   r"   r#   Únormalr)   Z
RNGContextÚchoicer   r>   r‹   rC   r<   Zget_fignumsÚcloser(   Úhist)r.   Únr^   r]   r«   r/   ÚgbÚresr0   r0   r1   Útest_grouped_plot_fignums!  s"    2
z3TestDataFrameGroupByPlots.test_grouped_plot_fignumsc                 C   s$  | j }|jdd�}t|tjƒs"J ‚| j|d g d¢d� | d¡jdd�}| j|dddgd� d	 ¡ }ttj	 
d
d¡|d�}d ¡ }|d |d< dD ]Œ}| d¡j|d�}| j||g d¢d� |jd|d�}| j||g d¢d� | d¡j|d�}| j|||d� |jd|d�}| j|||d� q’d S )Nr«   r   ©r]   r^   r_   )Zexpected_keysr   r   ZMaleZFemalezX B C D A G Y N Q Oé2   r3   r4   zA B C D E F G H I Jri   r_   )r   r:   rP   Ú	classroom©r5   r6   rj   )r   r   )rJ   r(   rK   r"   ZndarrayrT   r>   Úsplitr   r#   r$   )r.   r/   rL   Zcolumns2Zdf2Zcategories2ÚtÚreturnedr0   r0   r1   Útest_grouped_box_return_type8  s.    
ÿ
ÿz6TestDataFrameGroupByPlots.test_grouped_box_return_typec                 C   s0  | j }d}tjt|d��& |jddg|jdd� W d   ƒ n1 sD0    Y  d}tjt|d��$ |jg d¢d	d
d� W d   ƒ n1 sŠ0    Y  d}tjt|d��& |jddg|jdd� W d   ƒ n1 sÒ0    Y  t t¡�& t	| 
d¡jdd
d�}W d   ƒ n1 �s0    Y  | j| j ¡ jddd� t t¡�& t	| 
d¡jdd
d�}W d   ƒ n1 �sn0    Y  | j| j ¡ jddd� t t¡�& t	| 
d¡jdd
d�}W d   ƒ n1 �sÈ0    Y  | j| j ¡ jddd� |jg d¢ddd�}| j| j ¡ jddd� |d fD ].}| j| ¡ dd� | j|j ¡ gdd� �q |d |d fD ]&}|  | ¡ ¡ |  |j ¡ g¡ �q`| 
d¡jg d¢d
d�}| j| j ¡ jddd� t t¡�( t	| 
d¡jddd
d�}W d   ƒ n1 �sò0    Y  | j| j ¡ jddd� t t¡�( t	| 
d¡jddd
d�}W d   ƒ n1 �sN0    Y  | j| j ¡ jddd� |jg d¢ddd�}| j| j ¡ jddd� |jg d¢ddd�}| j| j ¡ jdd d� | 
d¡jg d¢d!d
d�}| j| j ¡ jdd!d� | 
d¡jg d¢d"d
d�}| j| j ¡ jdd#d� d S )$Nz1Layout of 1x1 must be larger than required size 2rN   r^   r]   r`   )r   r   r®   z7The 'layout' keyword is not supported when 'by' is NonerÈ   )r   r    r   )r   r®   r   z1At least one dimension of layout must be positive)éÿÿÿÿrÐ   r«   r   r   r¬   r­   r_   r   rº   rÊ   r   r:   )r   r   r   F)Úvisible)r   r   )r   rÐ   )r   r    )rÐ   r    )r   r    )r    r   )r    rÐ   ©r    r   )rJ   rQ   rR   rS   r(   r«   r)   r*   r+   r   r>   r°   r<   Úgcfr:   Z_check_visiblerŒ   ZxaxisZ	get_label)r.   r/   rU   r�   r:   r9   r0   r0   r1   Útest_grouped_box_layoutZ  s–    4ý$4ÿ&ÿ&ÿ&
ÿ
ÿ
ü&
ü&
ÿ
ÿ

ÿ

ÿz1TestDataFrameGroupByPlots.test_grouped_box_layoutc              	   C   s   | j }t t¡�P | j dd¡\}}| d¡jdd|d� | j| j 	¡ j
ddd� W d   ƒ n1 sf0    Y  | j dd	¡\}}t t¡�* |jg d
¢dd|d d�}W d   ƒ n1 s¼0    Y  t t|jƒ¡}| j|d	dd� t ||d ¡ |d j|u �s
J ‚t t¡�. | d¡jg d
¢d|d d�}W d   ƒ n1 �sJ0    Y  t t|jƒ¡}| j|d	dd� t ||d ¡ |d j|u �s˜J ‚d}tjt|d��` | j dd	¡\}}t t¡�" | d¡j|d�}W d   ƒ n1 �sò0    Y  W d   ƒ n1 �s0    Y  d S )Nr   r_   r]   r:   )r   r   r9   r   rº   r­   r   rÈ   r«   r   )r   r   r   r9   rÒ   rÊ   r    z@The number of passed axes must be 3, the same as the output plotrN   )r9   )rJ   r)   r*   r+   r<   r=   r>   r(   r°   rÓ   r:   r"   Úarrayr%   rB   Zassert_numpy_array_equalro   rQ   rR   rS   )r.   r/   rE   r:   rÎ   rU   r0   r0   r1   Útest_grouped_box_multiple_axes·  s<    6ü$
ÿ&z8TestDataFrameGroupByPlots.test_grouped_box_multiple_axesc                 C   s6   t g d¢g d¢dœƒ}| j|jdddd�ddd� d S )	Nrs   )r   r   r   r    r    r    )rr   r}   rr   r}   rt   )r   ru   rv   rw   r-   r0   r0   r1   rx   ã  s    ÿz'TestDataFrameGroupByPlots.test_fontsizez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                 C   sl   t tj tdƒd¡tj d¡tj d¡dœƒ}| d¡}t|jd|dd�}dd	„ | 	¡ D ƒ}||kshJ ‚d S )
NZabcdery   )Úcatrš   rÜ   râ   Fr:   )r=   r   r   c                 S   s   g | ]}|  ¡ ‘qS r0   rƒ   r„   r0   r0   r1   r‡     rˆ   zQTestDataFrameGroupByPlots.test_groupby_boxplot_subplots_false.<locals>.<listcomp>)
r   r"   r#   rÁ   r%   r;   r>   r   r(   rŒ   )r.   rY   Úexpected_xticklabelr/   r±   r:   Úresult_xticklabelr0   r0   r1   Ú#test_groupby_boxplot_subplots_falseé  s    (

ýÿ

ÿz=TestDataFrameGroupByPlots.test_groupby_boxplot_subplots_falsec                 C   sZ   | j  d¡}| d¡}d}tjt|d�� t|jdd� W d   ƒ n1 sL0    Y  d S )NÚobjectr«   z:boxplot method requires numerical columns, nothing to plotrN   F)r=   )rJ   r‰   r>   rQ   rR   rS   r   r(   )r.   r/   r±   rU   r0   r0   r1   Útest_groupby_boxplot_object!  s
    
z5TestDataFrameGroupByPlots.test_groupby_boxplot_objectc           	      C   sŒ   g d¢g d¢g}t t|Ž ƒ}tj|ddgd�}ttj dd¡g d¢|d	�}d
dg}t|j	|dd�}ddg}dd„ | 
¡ D ƒ}||ksˆJ ‚d S )N)r   r   Úbazrè   r   r   Úquxré   )r   r   r   r   r   r   r   r   ÚfirstÚsecond)Únamesr   rn   rË   r   )r   r   )r   r   r:   r   z
(bar, one)z
(bar, two)c                 S   s   g | ]}|  ¡ ‘qS r0   rƒ   r„   r0   r0   r1   r‡   7  rˆ   zLTestDataFrameGroupByPlots.test_boxplot_multiindex_column.<locals>.<listcomp>)r%   rµ   r   r·   r   r"   r#   r$   r   r(   rŒ   )	r.   Zarraysr¹   r   r/   rY   r:   rã   rä   r0   r0   r1   Útest_boxplot_multiindex_column)  s    þz8TestDataFrameGroupByPlots.test_boxplot_multiindex_column)r¥   r¦   r§   r2   rH   r»   rÇ   rÏ   rÔ   rÖ   rx   rQ   r¨   r©   rå   rç   rí   r0   r0   r0   r1   rª     s0   
"],

þþíþ&
rª   )Ú__doc__r?   r&   Únumpyr"   rQ   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsÚtdZpandasr   r   r   r   r   Zpandas._testingZ_testingr)   Zpandas.tests.plotting.commonr   r   Zpandas.plottingr,   r¨   ZslowZ
pytestmarkZskip_if_no_mplr	   rª   r0   r0   r0   r1   Ú<module>   s    e