U
    ÎZj}V  ã                   @   s°   d 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dd„ ƒZdd„ ZejG d	d
„ d
eƒƒZejG dd„ deƒƒZdS )z$ Test cases for misc plot functions é    N)Ú	DataFrameÚIndexÚSeriesÚ	TimestampÚinterval_range)ÚTestPlotBaseÚ_check_plot_worksc               	   C   s6   t dddgiƒ} tjtdd�� |  ¡  W 5 Q R X d S )NÚAé   é   z#matplotlib is required for plotting©Úmatch)r   ÚpytestÚraisesÚImportErrorÚplot)Údf© r   úb/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/plotting/test_misc.pyÚtest_import_error_message   s    r   c               	   C   s"  t jjj} d}tjt|d�� | dg g i d� W 5 Q R X d}tjt|d��  | dttd�dd gi d� W 5 Q R X | dt	ƒ dgd	d
ddœd�\}}}}|dks t
‚|d	ks¬t
‚|d
ks¸t
‚|ddiksÈt
‚| dttd�g i d�\}}}}|d ksòt
‚|d ksþt
‚|dk�st
‚t|ƒdk�st
‚d S )Nz@Called plot accessor for type list, expected Series or DataFramer   Ú )Úbackend_nameÚdataÚargsÚkwargsz.should not be called with positional arguments)ZdtypeÚlineÚxÚyÚbarF)r   ÚkindÚgridr    zpandas.plotting._matplotlibé   )ÚplottingZ_coreZPlotAccessorZ_get_call_argsr   r   Ú	TypeErrorr   Úobjectr   ÚAssertionErrorÚlen)ÚfuncÚmsgr   r   r   r   r   r   r   Útest_get_accessor_args!   s6    
$
üür)   c                   @   s:   e Zd Zdd„ Zej di ddig¡dd„ ƒZdd	„ Zd
S )ÚTestSeriesPlotsc              	   C   sh   ddl m} tjdd�}t d ¡�, t||d� t||jd� ||dd�}W 5 Q R X | j|dgd� d S )	Nr   )Úautocorrelation_plotÚts©Úname)ÚseriesZTest)Úlabel)Úlabels)Úpandas.plottingr+   ÚtmÚmakeTimeSeriesÚassert_produces_warningr   ÚvaluesZ_check_legend_labels)Úselfr+   ÚserÚaxr   r   r   Útest_autocorrelation_plotE   s    z)TestSeriesPlots.test_autocorrelation_plotr   Zlagé   c                 C   s0   ddl m} tjdd�}t|fd|i|—Ž d S )Nr   )Úlag_plotr,   r-   r/   )r2   r<   r3   r4   r   )r7   r   r<   r8   r   r   r   Útest_lag_plotQ   s    zTestSeriesPlots.test_lag_plotc                 C   s*   ddl m} tjdd�}t||dd� d S )Nr   )Úbootstrap_plotr,   r-   é
   )r/   Úsize)r2   r>   r3   r4   r   )r7   r>   r8   r   r   r   Útest_bootstrap_plotX   s    z#TestSeriesPlots.test_bootstrap_plotN)	Ú__name__Ú
__module__Ú__qualname__r:   r   ÚmarkÚparametrizer=   rA   r   r   r   r   r*   C   s   
r*   c                   @   sØ   e Zd Zejej dddg¡dd„ ƒƒZejj	dd„ ƒZ
ejj	dd	„ ƒZej d
¡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dd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+S ),ÚTestDataFramePlotsÚ	pass_axisFTc           	   	   C   s0  t j}d }|r | j dd¡\}}t d¡� ttj 	dd¡ƒ}W 5 Q R X tj
tdd�� t|d|d|d�}W 5 Q R X |d	 d	 j ¡ }d
ddg}|  ||¡ | j|dddd	d� |d	 d d |d	< tj
tdd�� t|d|d|d�}W 5 Q R X |d	 d	 j ¡ }dddg}|  ||¡ | j|dddd	d� d S )Né   é*   éd   F)Zcheck_stacklevelÚalwaysgš™™™™™¹?)ÚfilterwarningsÚframeZrange_paddingr9   r   z-2Ú0Ú2é   éZ   )Z
xlabelsizeZxrotZ
ylabelsizeZyrotr   z-1.0z-0.5z0.0)r"   Úscatter_matrixÚpltÚsubplotsr3   Z
RNGContextr   ÚnpÚrandomÚrandnr5   ÚUserWarningr   ZyaxisZget_majorticklabelsZ_check_text_labelsZ_check_ticks_props)	r7   rH   rS   r9   Ú_r   ZaxesZaxes0_labelsÚexpectedr   r   r   Útest_scatter_matrix_axisa   s>    û
û
z+TestDataFramePlots.test_scatter_matrix_axisc              	      s”  ddl m‰  ddlm} |}t d ¡� t||dd� W 5 Q R X d}t||d|d�}| j| ¡ d d… ||d d d… d	� d
ddg}t||d|d�}| j| ¡ d d… ||d d d… d	� t||dˆ j	d�}‡ fdd„t
 dd|d  ¡ ¡D ƒ}| j| ¡ d d… ||d d d… d	� d}tt
j |¡t
j |¡t
j |¡dg| dœƒ}t||dd� d}t||d|d�}| j| ¡ d d… ||d d d… d	� d
ddg}t||d|d�}| j| ¡ d d… ||d d d… d	� t||dˆ j	d�}‡ fdd„t
 dd|d  ¡ ¡D ƒ}| j| ¡ d d… ||d d d… d	� dddg}	tdddgdddgdddg|	dœƒ}||d|	d�}| ¡ \}
}| j|
|	d� d S )Nr   ©Úcm)Úandrews_curvesÚName©rN   Úclass_column©z#556270z#4ECDC4z#C7F464©rN   rb   Úcolorr?   ©Ú
linecolorsÚmappingÚ
dodgerblueÚ
aquamarineÚseagreen©rN   rb   Zcolormapc                    s   g | ]}ˆ   |¡‘qS r   ©Újet©Ú.0Únr]   r   r   Ú
<listcomp>«   s     z:TestDataFramePlots.test_andrews_curves.<locals>.<listcomp>r
   r	   ©r	   ÚBÚCr`   c                    s   g | ]}ˆ   |¡‘qS r   rm   ro   r]   r   r   rr   Ï   s     ÚbÚgÚrr   rI   ©re   ©rg   )Ú
matplotlibr^   r2   r_   r3   r5   r   Ú_check_colorsÚ	get_linesrn   rV   ÚlinspaceÚnuniquer   rW   ÚrandÚget_legend_handles_labels)r7   Úirisr_   r   Úrgbar9   ÚcnamesÚcmapsÚlengthÚcolorsÚhandlesr1   r   r]   r   Útest_andrews_curves�   s¶       ÿ  ÿ
   ÿ  ÿ   ÿ$  ÿ


üÿ	   ÿ  ÿ
   ÿ  ÿ   ÿ$  ÿ
$z&TestDataFramePlots.test_andrews_curvesc                    s¤  ddl m‰  ddlm} |}t||dd�}t| ¡ ƒ}t|j ¡ ƒ}d}t||d|d�}| j	| ¡ d d… ||d d d… d	� d
ddg}t||d|d�}| j	| ¡ d d… ||d d d… d	� t||dˆ j
d�}‡ fdd„t dd|d  ¡ ¡D ƒ}	| j	| ¡ d d… |	|d d d… d	� t||ddd�}t| ¡ ƒ|| k�sJt‚dddg}
tdddgdddgdddg|
dœƒ}||d|
d�}| ¡ \}}| j	||
d� d S )Nr   r]   ©Úparallel_coordinatesr`   ra   rc   rd   r?   rf   ri   rj   rk   rl   c                    s   g | ]}ˆ   |¡‘qS r   rm   ro   r]   r   r   rr   ù   s     z@TestDataFramePlots.test_parallel_coordinates.<locals>.<listcomp>r
   F)rN   rb   Zaxvlinesrv   rw   rx   r   rI   rs   ry   rz   )r{   r^   r2   r‹   r   r&   r}   ÚxaxisZget_ticklabelsr|   rn   rV   r~   r   r%   r   r�   )r7   r‚   r‹   r   r9   ÚnlinesZnxticksrƒ   r„   r…   r‡   rˆ   r1   r   r]   r   Útest_parallel_coordinatesÚ   sl       ÿ  ÿ
   ÿ  ÿ   ÿ$  ÿ   ÿ
$z,TestDataFramePlots.test_parallel_coordinatesz$ignore:Attempting to set:UserWarningc                 C   sê   ddl m} tttdƒƒdd„ tdƒD ƒdd„ tdƒD ƒ dd„ tdƒD ƒ d	œƒ}||d
dd�}| ¡ \}}tdd„ |D ƒ|ƒ}t|dd„ d�}tt|dd… ƒt|dd… ƒƒ}|D ],\}	}
|	d |
d k rà|	d |
d k s¸t‚q¸dS )z
For #15908r   rŠ   é   c                 S   s   g | ]}d ‘qS )r   r   ©rp   rZ   r   r   r   rr     s     zSTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<listcomp>r?   c                 S   s   g | ]}d ‘qS )rI   r   r�   r   r   r   rr     s     c                 S   s   g | ]}d ‘qS )r
   r   r�   r   r   r   rr     s     )ZfeatÚclassr‘   T)Zsort_labelsc                 S   s   g | ]}|  ¡ ‘qS r   ©Ú	get_color)rp   Zpolyliner   r   r   rr     s     c                 S   s   | d S )Nr
   r   )r   r   r   r   Ú<lambda>  ó    zQTestDataFramePlots.test_parallel_coordinates_with_sorted_labels.<locals>.<lambda>)Úkeyéÿÿÿÿr
   N)	r2   r‹   r   ÚlistÚranger�   ÚzipÚsortedr%   )r7   r‹   r   r9   Z	polylinesr1   Zcolor_label_tuplesZordered_color_label_tuplesZprev_next_tupelsÚprevZnxtr   r   r   Ú,test_parallel_coordinates_with_sorted_labels
  s.    
ÿþþÿ ÿ ÿz?TestDataFramePlots.test_parallel_coordinates_with_sorted_labelsc              	      sÀ  ddl m‰  ddlm} |}t d ¡� t||dd� W 5 Q R X d}t||d|d�}dd	„ |jd d
… D ƒ}| j|d d… ||d d d… d� dddg}t||d|d� dd	„ |jd d
… D ƒ}| j|||d d d… d� t||dˆ j	d� ‡ fdd	„t
 dd|d  ¡ ¡D ƒ}dd	„ |jd d
… D ƒ}| j|||d d d… d� ddddgddddgddddgg}	tdddgdddgdddgdddgdœƒ}||d|	d�}| ¡ \}
}| j|
|	d� d S ) Nr   r]   )Úradvizr`   ra   rc   rd   c                 S   s   g | ]}|  ¡ d kr|‘qS ©r   ©Ú	get_label©rp   Úpr   r   r   rr   1  s      z2TestDataFramePlots.test_radviz.<locals>.<listcomp>é   r?   )Ú
facecolorsrh   ri   rj   rk   c                 S   s   g | ]}|  ¡ d kr|‘qS rŸ   r    r¢   r   r   r   rr   6  s      rl   c                    s   g | ]}ˆ   |¡‘qS r   rm   ro   r]   r   r   rr   :  s     r
   c                 S   s   g | ]}|  ¡ d kr|‘qS rŸ   r    r¢   r   r   r   rr   ;  s      g        ç      ð?ç      à?r   rI   rv   rw   rx   rs   ry   )r¥   )r{   r^   r2   rž   r3   r5   r   Úpatchesr|   rn   rV   r~   r   r   r�   )r7   r‚   rž   r   rƒ   r9   r¨   r„   r…   r‡   rˆ   r1   r   r]   r   Útest_radviz$  s0    $
$"$ÿzTestDataFramePlots.test_radvizc              	   C   s  |j ddd� ¡ }t|jƒ}|jd|d�}dd„ |D ƒ|ks@t‚d}tjt|d	�� |jd|d
g d� W 5 Q R X tjt|d	�� |jd|d d… d� W 5 Q R X d}tjt|d	�� |jd|d� W 5 Q R X |j ddd�jdd|d d… d�}dd„ |D ƒ}||d d… dg k�st‚d S )Nr`   r
   )ZaxisT)rU   Útitlec                 S   s   g | ]}|  ¡ ‘qS r   ©Z	get_titler¢   r   r   r   rr   M  s     z:TestDataFramePlots.test_subplot_titles.<locals>.<listcomp>zjThe length of `title` must equal the number of columns if using `title` of type `list` and `subplots=True`r   zkittens > puppiesr   zNUsing `title` of type `list` is not supported unless `subplots=True` is passedFZ
SepalWidth)r   r   r—   )rU   Zlayoutrª   c                 S   s   g | ]}|D ]}|  ¡ ‘qqS r   r«   )rp   Zsublistr9   r   r   r   rr   g  s       rI   r   )	ZdropÚheadr˜   Úcolumnsr   r%   r   r   Ú
ValueError)r7   r‚   r   rª   r   r(   Z
title_listr   r   r   Útest_subplot_titlesF  s*    
ÿ ÿ  
ÿz&TestDataFramePlots.test_subplot_titlesc                 C   sz   t t d¡ƒ}t |d¡ tj ¡ }t |d¡ tj ¡ }||ksFt‚ddlm} |ddd�}|ddd�}||ksvt‚d S )N)r?   r?   r   ©Úget_standard_colorsr
   rW   ©Ú
color_type)	r   rV   Zzerosr"   r‹   rW   r%   Ú!pandas.plotting._matplotlib.styler±   )r7   r   Zrand1Zrand2r±   Úcolor1Úcolor2r   r   r   Ú$test_get_standard_colors_random_seedj  s    

z7TestDataFramePlots.test_get_standard_colors_random_seedc                 C   sd   ddl m} |ddd�}|ddd�}|ddd�}t|ƒdks@t‚t|ƒdksPt‚t|ƒdks`t‚d S )Nr   r°   r
   Údefaultr²   é	   r¤   )r´   r±   r&   r%   )r7   r±   rµ   r¶   Zcolor3r   r   r   Ú+test_get_standard_colors_default_num_colors|  s    z>TestDataFramePlots.test_get_standard_colors_default_num_colorsc              	      s‚   t dddgdddgddd	gd
ddgdddgdddgdœƒ}|j ¡ j ¡ }dd„ | ¡ dd… D ƒ‰ t‡ fdd„ˆ D ƒƒs~t‚d S )Nz
2017-02-03z
2017-03-03z
2017-01-01zAlice Andersz	Bob BakerzCharlie Chaplingáz®Ga–Àg\�Âõ(Ü$@g     LÝ@iÒ  ix	  éû   i  iõ  iî	  é4   é    )zaccount-startÚclientZbalancezdb-idzproxy-idZrankc                 S   s   g | ]}|  ¡ ‘qS r   ©Úget_facecolor©rp   Úrectr   r   r   rr   ”  s     z=TestDataFramePlots.test_plot_single_color.<locals>.<listcomp>r   rI   c                 3   s   | ]}|ˆ d  kV  qdS )r   Nr   )rp   re   ©r‡   r   r   Ú	<genexpr>•  s     z<TestDataFramePlots.test_plot_single_color.<locals>.<genexpr>)r   r¾   Zvalue_countsr   r   Úget_childrenÚallr%   )r7   r   r9   r   rÃ   r   Útest_plot_single_color‡  s    úÿ
z)TestDataFramePlots.test_plot_single_colorc                 C   sª   ddl m} ddlm} | tdƒ¡}|d|d�}t|ƒt|ƒksFt‚tt	j
 dd¡td	ƒd
�}| t	 ddd¡¡}|jjjd|d�}|jd  ¡ |jd  ¡ ks¦t‚d S )Nr   r]   r°   r;   r
   ry   é0   é   ZABCD©r­   é   )rË   é   )Zfigsizere   é   )r{   r^   r´   r±   Úgnuplotr™   r&   r%   r   rV   rW   rX   r˜   r~   r	   r   r   r¨   rÀ   )r7   r^   r±   Zcolor_beforeZcolor_afterr   Z
color_listr£   r   r   r   Ú%test_get_standard_colors_no_appending—  s    z8TestDataFramePlots.test_get_standard_colors_no_appendingc                    sÂ   ddg}ddg‰ t tj dd¡|d�}dddœ}|jd|d	�}d
d„ | ¡ ddd… D ƒ}t‡ fdd„t|ƒD ƒƒsxt‚|jd|d	�}dd„ | 	¡ dd… D ƒ}t‡ fdd„t|ƒD ƒƒs¾t‚d S )NÚarv   )r§   g¸…ëQ¸Î?g333333ã?)g333333Ó?çffffffæ?rÑ   r   rÊ   )rv   rÐ   r   )r   re   c                 S   s   g | ]}|  ¡ d d… ‘qS )r   r—   r¿   rÁ   r   r   r   rr   ¶  s     z<TestDataFramePlots.test_dictionary_color.<locals>.<listcomp>r   rI   c                 3   s   | ]\}}|ˆ | kV  qd S ©Nr   ©rp   Úindexre   ©r[   r   r   rÄ   ·  s     z;TestDataFramePlots.test_dictionary_color.<locals>.<genexpr>r   c                 S   s   g | ]}|  ¡ ‘qS r   r’   rÁ   r   r   r   rr   »  s     c                 3   s   | ]\}}|ˆ | kV  qd S rÒ   r   rÓ   rÕ   r   r   rÄ   ¼  s     )
r   rV   rW   r€   r   rÅ   rÆ   Ú	enumerater%   r}   )r7   Ú
data_filesZdf1Z	dic_colorr9   r‡   r   rÕ   r   Útest_dictionary_colorª  s    
z(TestDataFramePlots.test_dictionary_colorc                 C   sn   ddl m} |dddƒ|dddƒg}tdddgitddgƒd�}|j ¡ }td	d
„ t| ¡ |ƒD ƒƒsjt	‚d S )Nr   ©ÚTextrO   r
   ZTotalrÐ   r   ©rÔ   c                 s   s"   | ]\}}|  ¡ |  ¡ kV  qd S rÒ   ©Zget_text©rp   rÐ   rv   r   r   r   rÄ   Ì  s   ÿz3TestDataFramePlots.test_bar_plot.<locals>.<genexpr>)
Úmatplotlib.textrÚ   r   r   r   r   rÆ   rš   Úget_xticklabelsr%   )r7   rÚ   r[   r   Zplot_barr   r   r   Útest_bar_plot¾  s     ÿ
ü
þz TestDataFramePlots.test_bar_plotc                 C   sp   ddl m} tdddœdddœgƒ}|jjdd d�}|ddd	ƒ|dddƒg}td
d„ t| ¡ |ƒD ƒƒslt‚d S )Nr   rÙ   r
   )ÚwordÚvalueZknowledgr   rá   )r   ZlegendÚ1c                 s   s"   | ]\}}|  ¡ |  ¡ kV  qd S rÒ   rÜ   )rp   Úactualr[   r   r   r   rÄ   Ù  s   ÿzPTestDataFramePlots.test_barh_plot_labels_mixed_integer_string.<locals>.<genexpr>)	rÞ   rÚ   r   r   ZbarhrÆ   rš   Zget_yticklabelsr%   )r7   rÚ   r   Z	plot_barhZexpected_yticklabelsr   r   r   Ú*test_barh_plot_labels_mixed_integer_stringÑ  s     ÿþz=TestDataFramePlots.test_barh_plot_labels_mixed_integer_stringc                 C   sØ   t jjj}| j ¡ }| dd¡}|jd|d d d�|d d< |jd|d d d�|d d< |d d  ¡  |d d  ¡  ||d d dƒs’t	‚||d d dƒr¨t	‚||d d dƒs¾t	‚||d d	 dƒrÔt	‚d S )
Nr   rÉ   éç   r
   r   ©Zsharexéé   r   rI   )
r"   Ú_matplotlibÚtoolsÚ_has_externally_shared_axisrT   ÚfigurerU   Úadd_subplotÚtwinxr%   ©r7   r'   ÚfigÚplotsr   r   r   Ú&test_has_externally_shared_axis_x_axisà  s    

z9TestDataFramePlots.test_has_externally_shared_axis_x_axisc                 C   sØ   t jjj}| j ¡ }| dd¡}|jd|d d d�|d d< |jd|d d d�|d d< |d d  ¡  |d d  ¡  ||d d dƒs’t	‚||d d dƒr¨t	‚||d d dƒs¾t	‚||d	 d dƒrÔt	‚d S )
NrÉ   r   éA  r   r
   ©ZshareyiE  r   rI   )
r"   ré   rê   rë   rT   rì   rU   rí   Ztwinyr%   rï   r   r   r   Ú&test_has_externally_shared_axis_y_axisù  s    

z9TestDataFramePlots.test_has_externally_shared_axis_y_axisc              	   C   sr   t jjj}| j ¡ }| dd¡}|jd|d d d�|d d< d}tj	t
|d�� ||d d d	ƒ W 5 Q R X d S )
NrÉ   r   ró   r   r
   rô   z&needs 'x' or 'y' as a second parameterr   Úz)r"   ré   rê   rë   rT   rì   rU   rí   r   r   r®   )r7   r'   rð   rñ   r(   r   r   r   Ú4test_has_externally_shared_axis_invalid_compare_axis  s    

zGTestDataFramePlots.test_has_externally_shared_axis_invalid_compare_axisc                 C   s´  t tj d¡tj d¡dœƒ}| j ¡ }| dd¡}|jd|d d d�|d d< |jd	|d d d�|d d< |d d  ¡ }|d d  ¡ }|d
 j	|d d dd� 
d¡ |d
 j	|d d d� |d
 j	|d d dd� 
d¡ |d
 j	|d d d� |d
 j	|d d dd� 
d¡ |d
 j	|d d d� |d j	|dd� |d j	|dd� |d d j ¡  ¡ �rxt‚|d d j ¡  ¡ �s”t‚|d d j ¡  ¡ �r°t‚d S )Niè  )rÐ   rv   r   rI   ræ   r
   r   rç   rè   rÐ   zExternal share only)r9   rª   z"this label should never be visible)r9   zInternal share (twin) onlyz#this label should always be visibleZBothrv   Úgreen)r9   re   Úyellow)r   rV   rW   rX   rT   rì   rU   rí   rî   r   Z
set_xlabelrŒ   r¡   Zget_visibler%   )r7   r   rð   rñ   Ztwin_ax1Ztwin_ax2r   r   r   Útest_externally_shared_axes#  s0    
ÿÿÿz.TestDataFramePlots.test_externally_shared_axesc                 C   s:   t dgtdƒgd�}t|jƒ tddiƒ}t|jjƒ d S )Nr¦   z2022-02-22 22:22:22rÛ   r	   )r   r   r   r   r   r   )r7   r   Úsr   r   r   Ú-test_plot_bar_axis_units_timestamp_conversionN  s    þ
z@TestDataFramePlots.test_plot_bar_axis_units_timestamp_conversionc                 C   sv   ddl m} |dddƒ|dddƒg}tddgtdddd�gd	�}t|jjƒ td
d„ t|j ¡  	¡ |ƒD ƒƒsrt
‚d S )Nr   rÙ   z	([0, 1],)r
   z	([1, 2],)r   Zboth)ÚclosedrÛ   c                 s   s"   | ]\}}|  ¡ |  ¡ kV  qd S rÒ   rÜ   rÝ   r   r   r   rÄ   e  s   ÿzFTestDataFramePlots.test_bar_plt_xaxis_intervalrange.<locals>.<genexpr>)rÞ   rÚ   r   r   r   r   r   rÆ   rš   rß   r%   )r7   rÚ   r[   rû   r   r   r   Ú test_bar_plt_xaxis_intervalrangeZ  s    þþz3TestDataFramePlots.test_bar_plt_xaxis_intervalrangeN)rB   rC   rD   ÚtdZskip_if_no_scipyr   rE   rF   r\   Zslowr‰   rŽ   rM   r�   r©   r¯   r·   rº   rÇ   rÏ   rØ   rà   rå   rò   rõ   r÷   rú   rü   rþ   r   r   r   r   rG   _   s0   *
L
/

"$+rG   )Ú__doc__ÚnumpyrV   r   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrÿ   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr3   Zpandas.tests.plotting.commonr   r   r2   r"   Zskip_if_mplr   r)   Zskip_if_no_mplr*   rG   r   r   r   r   Ú<module>   s   
"