a
    <b{                     @   s   d Z ddlmZmZmZmZ ddlZddlZddlZddl	m
Z
mZ ddlm  mZ ddlmZ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 ddlm Z m!Z!m"Z" ddl#m$Z$ dd	l%m&Z& dd
l'm(Z( ej)j*Z+ej,G dd de&Z-dddZ.dS )z< Test cases for time series specific (freq conversion, etc)     )datedatetimetime	timedeltaN)
BaseOffset	to_offset)	DataFrameIndexNaTSeriesconcatisnato_datetime)DatetimeIndexbdate_range
date_range)PeriodPeriodIndexperiod_range)timedelta_range)TestPlotBase)WeekOfMonthc                   @   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dd Zdd Zdd Zdd Zejdg ddd Zdd  Zd!d" Zejdg dd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Z d9d: Z!d;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dMdN Z+dOdP Z,dQdR Z-dSdT Z.dUdV Z/dWdX Z0e1j2dYdZ Z3d[d\ Z4d]d^ Z5d_d` Z6dadb Z7dcdd Z8dedf Z9dgdh Z:didj Z;dkdl Z<dmdn Z=dodp Z>dqdr Z?dsdt Z@dudv ZAdwdx ZBdydz ZCd{d| ZDd}d~ ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXejjYdddd ZZdd Z[dd Z\dS )
TestTSPlotc                 C   s   t | | g d| _dd | jD }dd |D | _dd |D | _g d}dd |D }dd |D | _d	d |D | _d S )
N)STHDWMQAc                 S   s   g | ]}t d |ddqS 
12/31/1999d   freqperiods)r   .0x r*   w/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/pandas/tests/plotting/test_datetimelike.py
<listcomp>5       z+TestTSPlot.setup_method.<locals>.<listcomp>c                 S   s"   g | ]}t tjt||qS r*   r   nprandomrandnlenr'   r*   r*   r+   r,   6   r-   c                 S   s,   g | ]$}t tjt|d |g ddqS    r    BCindexcolumnsr   r/   r0   r1   r2   r'   r*   r*   r+   r,   7   s   )	r   r   r   r   r   r   zQ-DECr    Z1B30Minc                 S   s   g | ]}t d |ddqS r!   )r   r'   r*   r*   r+   r,   =   r-   c                 S   s"   g | ]}t tjt||qS r*   r.   r'   r*   r*   r+   r,   >   r-   c                 S   s,   g | ]$}t tjt|d |g ddqS r3   r;   r'   r*   r*   r+   r,   ?   s   )r   setup_methodr%   
period_ser	period_dfdatetime_serdatetime_df)selfmethodidxr%   r*   r*   r+   r<   1   s    
zTestTSPlot.setup_methodc                 C   s   t   d S N)tmclose)rA   rB   r*   r*   r+   teardown_methodD   s    zTestTSPlot.teardown_methodc                 C   s   |}t ddd|d}tddg|d}td n t|j | }t| d  }|d j	|d j
fd	ksrJ |d
 j	|d
 j
fdksJ W d    n1 s0    Y  d S )N1/1/2011   r   )r&   r%   tzg     g@g     t@r9   r   r   r   )   r   )r   r   rE   assert_produces_warning_check_plot_worksplotlist	get_lines	get_xdatahourminute)rA   Ztz_aware_fixturerJ   r9   tsaxxdatar*   r*   r+   test_ts_plot_with_tzG   s    
zTestTSPlot.test_ts_plot_with_tzc                 C   s`   t tjddtdd}| j \}}|jd|d | |	  D ]}|
 dksFJ qFd S )N
   	   rK   rI   ZfontsizerX   )r   r/   r0   r1   rangepltsubplotsrQ   get_xticklabelsZget_yticklabelsZget_fontsize)rA   dffigrX   labelr*   r*   r+   test_fontsize_set_correctlyT   s
    z&TestTSPlot.test_fontsize_set_correctlyc                 C   s   t dddd}t|jd d}ttjt|d|d}t|j	 |dd	 
|d
d }ttjt|d|d}t|j	 t dddd}t|jd d}ttjt|d|d}t|j	 d S )N1/1/1987ZMSr#   r$   r%   r4   rK   r   (   -   c   z2008-1-1 00:15:00Z15Tr[   )r   r   valuesr   r/   r0   r1   r2   rP   rQ   union)rA   rC   rb   df2r*   r*   r+   test_frame_inferred\   s    

zTestTSPlot.test_frame_inferredc                 C   s:   t g d}t||d}t|j|d t|j|d d S )NrN   rI   r4   rK   )Zxerr)Zyerr)r/   arrayr   rP   rQ   )rA   iar*   r*   r+   test_is_error_nozeroindexo   s    z$TestTSPlot.test_is_error_nozeroindexc                 C   s   t dddd}tg dg dd|}| j \}}|j|d t| d	ksTJ | j| d
}tj	t
|d |d   W d    n1 s0    Y  d S )Nrf   r    r4   r$   )r)   yzro   )r    r6   rX   rN   zno numeric data to plotmatch)r   r   r_   r`   rQ   r2   rS   rF   pytestraises	TypeError)rA   rC   rb   rc   rX   msgr*   r*   r+   test_nonnumeric_excludev   s    z"TestTSPlot.test_nonnumeric_excludec                 C   s   | j  \}}t }| jD ]}t|j|d q| jD ]}t|j|d q6| j  \}}|jd|d d}|| d 	 ksJ d S )Nrv   kstylerX   )        r   r   rN   r   )
r_   r`   rE   makeTimeSeriesr=   rP   rQ   r?   rS   	get_color)rA   _rX   rW   scolorr*   r*   r+   test_tsplot   s    

zTestTSPlot.test_tsplotc                 C   s   t  }d}tjt|d |jddd W d    n1 s>0    Y  |jdd}tjt|d |jddd W d    n1 s0    Y  d S )NzCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolrw   zb-z#000099)r   r   T)Zdrop)rE   r   ry   rz   
ValueErrorrQ   Zreset_index)rA   rW   r|   r   r*   r*   r+   test_both_style_and_color   s    ,z$TestTSPlot.test_both_style_and_colorc                 C   sV   ddg}|D ]D}| j  \}}tdd|d}ttjt||}t|j	|d qd S )Nmsus1/1/2012r#   r&   r%   rv   )
r_   r`   r   r   r/   r0   r1   r2   rP   rQ   )rA   Zfreaksr%   r   rX   rngserr*   r*   r+   test_high_freq   s    zTestTSPlot.test_high_freqc                 C   sn   ddl m} |d dd u sJ |dddks0J |tdddtddjksPJ |ddtd	djksjJ d S )
Nr   )get_datevaluer     r    r   z1987-12rf   z1987-1-1)%pandas.plotting._matplotlib.converterr   r   ordinal)rA   r   r*   r*   r+   test_get_datevalue   s
     zTestTSPlot.test_get_datevaluec                 C   sz   dd }t dtddddd}| j \}}|j|d	 ||d
 t dtddddd}|j|d	 ||d t  d S )Nc                 S   s>   |   d }| d j}| d }|| ||ks:J d S )Nr   )rS   rT   r   	get_ydataZformat_coord)rX   Zexpected_string
first_lineZfirst_xZfirst_yr*   r*   r+   check_format_of_first_point   s    zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointrN   z
2014-01-01r4   zA-DECr   rK   rv   zt = 2014  y = 1.000000r   zt = 2014-01-01  y = 1.000000)r   r   r_   r`   rQ   rE   rF   )rA   r   Zannualr   rX   Zdailyr*   r*   r+   test_ts_plot_format_coord   s    

z$TestTSPlot.test_ts_plot_format_coordc                 C   s    | j D ]}t|j|jj qd S rD   )r=   rP   rQ   r9   r%   rA   r   r*   r*   r+   test_line_plot_period_series   s    
z'TestTSPlot.test_line_plot_period_seriesfrqncy)Z1SZ3SZ5TZ7HZ4DZ8WZ11MZ3Ac                 C   s:   t d|dd}ttjt||}t|j|jj	j
 d S )Nr"   r#   r$   )r   r   r/   r0   r1   r2   rP   rQ   r9   r%   	rule_code)rA   r   rC   r   r*   r*   r+    test_line_plot_period_mlt_series   s    z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   s"   | j D ]}t|j|jjj qd S rD   )r?   rP   rQ   r9   r%   r   r   r*   r*   r+   test_line_plot_datetime_series   s    
z)TestTSPlot.test_line_plot_datetime_seriesc                 C   s    | j D ]}t|j|jj qd S rD   )r>   rP   rQ   r9   r%   )rA   rb   r*   r*   r+   test_line_plot_period_frame   s    
z&TestTSPlot.test_line_plot_period_framec                 C   sR   t d|dd}ttjt|d|g dd}|j|jjj	j}t
|j| d S )Nr"   r#   r$   r4   r5   r8   )r   r   r/   r0   r1   r2   r9   asfreqr%   r   rP   rQ   )rA   r   rC   rb   r%   r*   r*   r+   test_line_plot_period_mlt_frame   s     z*TestTSPlot.test_line_plot_period_mlt_framec                 C   s0   | j D ]$}|j|jjjj}t|j| qd S rD   )r@   r9   	to_periodr%   r   rP   rQ   )rA   rb   r%   r*   r*   r+   test_line_plot_datetime_frame   s    
z(TestTSPlot.test_line_plot_datetime_framec                 C   sN   | j D ]B}t|jtt|j}t|j|jj	 |g d }t|j qd S )N)r   r4         )
r?   r   rk   r	   r/   Zasarrayr9   rP   rQ   Zinferred_freq)rA   r   r*   r*   r+   test_line_plot_inferred_freq   s
    
z'TestTSPlot.test_line_plot_inferred_freqc                 C   sf   | j  \}}tdd}ttt||d}t|d d |dd  g}|j|d t|drbJ d S )Nz2001-1-1z	2001-1-10rK   r4   r   rv   r%   )	r_   r`   r   r   r^   r2   r   rQ   hasattr)rA   r   rX   r   rW   r*   r*   r+   test_fake_inferred_business   s    
z&TestTSPlot.test_fake_inferred_businessc                 C   sL   t  }t|j t|jd ddd}ttj	t
||d}t|j d S )Nr   ZBQSr[   r$   rK   )rE   r   rP   rQ   r   r9   r   r/   r0   r1   r2   )rA   r   drr*   r*   r+   test_plot_offset_freq   s
    
z TestTSPlot.test_plot_offset_freqc                 C   sL   t tdddtdddtdddg}ttjt||d}t|j d S )N  rN   r      rK   )	r	   r   r   r/   r0   r1   r2   rP   rQ   )rA   r   r   r*   r*   r+    test_plot_multiple_inferred_freq  s    &z+TestTSPlot.test_plot_multiple_inferred_freqc                 C   s   dd l m  m  m} tdddd}ttjt	|d|d}| j
 \}}|j|d | }| }| }t||D ]8\}	}
||	d	}t|
 }t	|r|||ks|J q|d S )
Nr   z2012-6-22 21:59:51.960928L  r$   rI   rK   rv   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r   r/   r0   r1   r2   r_   r`   rQ   	get_xaxisZget_ticklocsget_ticklabelszipZ_from_ordinalstrftimestrget_text)rA   convrC   rb   r   rX   ZaxisZtlocsZtlabelslocrd   xprsr*   r*   r+   test_uhf	  s    zTestTSPlot.test_uhfc           	      C   s   t dddd}ttjt|d|d}|jg d }| j \}}|j	|d t
| d	  d d d	f  }d
}t|dd  ||d |g dk  sJ | j \}}| }|jt|_|j	|d t
| d	  d d d	f  }t|dd  | dk  sJ d S )Nz2012-6-22 21:59:51r   r#   r$   rI   rK   )r   rN   r4      rv   r   g)QΠE>rN   g:0yE>)r   r   r/   r0   r1   r2   ilocr_   r`   rQ   r   rS   
get_xydatadifffabsallcopyr9   astypeobject)	rA   rC   rb   irregr   rX   Zdiffssecrm   r*   r*   r+   test_irreg_hf  s    $,$zTestTSPlot.test_irreg_hfc                 C   sl   t  }|g d }| j \}}|j|d}|d us:J t| d  |jD ]\}}||ksRJ qRd S )N)r   rN   rI      rv   r   )	rE   r   r_   r`   rQ   r   rS   rT   r9   )rA   r   r   rX   retr   r   r*   r*   r+   "test_irregular_datetime64_repr_bug.  s     z-TestTSPlot.test_irregular_datetime64_repr_bugc                 C   sn   t  }| j \}}|j|d | d  d |jd jksFJ | d 	 }t
|djdksjJ d S )Nrv   r   rL   datar6   )rE   ZmakePeriodSeriesr_   r`   rQ   rS   r   r9   r   rT   r   freqstrrA   btsr   rX   rC   r*   r*   r+   test_business_freq:  s    $zTestTSPlot.test_business_freqc                 C   s   t dd}|d}| j \}}|j|d | d  d |j	d j
ksXJ | d  }t|djdks|J d S )Ni,  ZBMr   rv   r   rL   r   )rE   r   r   r   r_   r`   rQ   rS   r   r9   r   rT   r   r   )rA   r   rW   r   rX   rC   r*   r*   r+   test_business_freq_convertB  s    
$z%TestTSPlot.test_business_freq_convertc                 C   s   t  }td|}| j \}}|j|d | d  }d}t	j
t|d t|d W d    n1 sr0    Y  d S )Nr   rv   r   z)freq not specified and cannot be inferredrw   r   )r   rE   r   r   r_   r`   rQ   rS   rT   ry   rz   r   r   )rA   r%   r   r   rX   rC   r|   r*   r*   r+   test_freq_with_no_period_aliasK  s    z)TestTSPlot.test_freq_with_no_period_aliasc                 C   sf   t ddddtdd }ttd|d}| j \}}|j|d | d	 	 }t
|jrbJ d S )
Nz
2012-12-20   r   r      minutesrK   rv   r   )r   r   r   r/   aranger_   r`   rQ   rS   rT   r	   is_normalized)rA   rC   rb   r   rX   r   r*   r*   r+   test_nonzero_baseW  s    zTestTSPlot.test_nonzero_basec                 C   sT   t dt i}| j \}}|j|d | d  }t|j	
 t| d S )Nrr   rv   r   )r   rE   r   r_   r`   rQ   rS   rT   assert_index_equalr9   r   r   r   r*   r*   r+   test_dataframe`  s
    zTestTSPlot.test_dataframec                    s    fdd}t  } j \}}|j|d ||  j \}}t||d d}|j|d || t||d d}|jdd}|D ]}|| qd S )Nc                    sH  |   }| |d d |d d  |   }|d |d d ksDJ |d |d d ks\J td| jtd| jf}| dd |   }t|d |d jksJ t|d |d jksJ td| jtd| jf}| tdddtddd |   }t|d |d jksJ t|d |d jks0J |  } j	| d S )	Nr   r   rN   r[   1/1/2000z4/1/2000r   r   )
get_xlimset_xlimr   r%   intr   r   
get_figurer_   rF   )rX   Zxlimresultexpectedrc   rA   r*   r+   _testh  s"    z*TestTSPlot.test_axis_limits.<locals>._testrv   rN   rr   bT)r`   )rE   r   r_   r`   rQ   r   )rA   r   r   r   rX   rb   axesr*   r   r+   test_axis_limitsg  s    zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jks0J |td|jksHJ |td|jks`J |td|jksxJ |td|j	ksJ |td|jksJ d S )Nr   r6   r   r   r   r    r   )
r   r   r   r   Z
get_finderr   Z_daily_finderZ_monthly_finderZ_quarterly_finderZ_annual_finder)rA   r   r*   r*   r+   test_get_finder  s    zTestTSPlot.test_get_finderc                 C   s   g d}t dddjgt|  }}g }g }|D ]}td|d}ttjt||}| j	 \}	}
|j
|
d |
 }|| d  |
 \}}|
|d | || d  | j|
  q0||ksJ ||ksJ d S )	N)r[   rh      i  i  i
  '  z1999-1-1r6   rg   r&   rv   r   ?)r   r   r2   r   r   r/   r0   r1   r_   r`   rQ   r   appendget_majorticklocsr   r   rF   r   )rA   Zday_lstxpl1xpl2rs1rs2nr   r   r   rX   xaxisvminvmaxr*   r*   r+   test_finder_daily  s"    zTestTSPlot.test_finder_dailyc                 C   s   ddg}t djgt|  }}g }g }|D ]}tdt|d dd}ttjt||}| j	
 \}	}
|j|
d |
 }|| d	  |
 \}}|
|d
 | || d	  | j	|
  q,||ksJ ||ksJ d S )Ng      @r   1988Q11987Q2r   r   r   rv   r   r   r   r   r2   r   r   r   r/   r0   r1   r_   r`   rQ   r   r   r   r   r   rF   r   rA   Zyrsr   r   r   r   r   r   r   r   rX   r   r   r   r*   r*   r+   test_finder_quarterly  s"    z TestTSPlot.test_finder_quarterlyc                 C   s   g d}t djgt|  }}g }g }|D ]}tdt|d dd}ttjt||}| j	
 \}	}
|j|
d |
 }|| d  |
 \}}|
|d	 | || d  | j	|
  q,||ksJ ||ksJ d S )
N)gffffff?g      @r   r   zJan 1988r      r   r   rv   r   r   r   r   r*   r*   r+   test_finder_monthly  s"    zTestTSPlot.test_finder_monthlyc                 C   sn   t dddd}ttjt||}| j \}}|j|d |	 }|
 d }tddj}||ksjJ d S )Nr   i   r   r   rv   r   Z1989Q1)r   r   r/   r0   r1   r2   r_   r`   rQ   r   r   r   r   )rA   r   r   r   rX   r   r   r   r*   r*   r+   test_finder_monthly_long  s    z#TestTSPlot.test_finder_monthly_longc           	      C   s   g d}dd |D }g }dD ]l}t d|dd}ttjt||}| j \}}|j|d |	 }|
| d	  | j|  q||ksJ d S )
N)r   i    r    i  i  iz  c                 S   s   g | ]}t |d djqS )r    rg   )r   r   r'   r*   r*   r+   r,     r-   z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r[      1   rj      iW  i  Z1987r    r   rv   r   )r   r   r/   r0   r1   r2   r_   r`   rQ   r   r   r   rF   r   )	rA   r   r   Znyearsr   r   r   rX   r   r*   r*   r+   test_finder_annual  s    zTestTSPlot.test_finder_annualc           	      C   st   d}t dd|d}ttjt||}| j \}}|j|d |	 }|
 d }tdddj}||kspJ d S )Ni@ 1/1/1999ZMinr$   rv   r   rg   r   r   r/   r0   r1   r2   r_   r`   rQ   r   r   r   r   )	rA   Znminutesr   r   r   rX   r   r   r   r*   r*   r+   test_finder_minutely  s    zTestTSPlot.test_finder_minutelyc           	      C   st   d}t dd|d}ttjt||}| j \}}|j|d |	 }|
 d }tdddj}||kspJ d S )N   r  r   r$   rv   r   rg   r  )	rA   Znhoursr   r   r   rX   r   r   r   r*   r*   r+   test_finder_hourly   s    zTestTSPlot.test_finder_hourlyc           
      C   sd  t  }tj|dd< | j \}}|j|d | }t|dksHJ |d }|	 }| j
sd| js|tjj|t|tjd}t|tjjjsJ |j}|dddf  sJ | j|  t  }|g d }tj|dd< | j \}}|j|d}| }t|dksJ |d }|	 }| j
s4| jsLtjj|t|tjd}t|tjjjsbJ |j}|dddf  sJ | j|  g d}ttjt||}	tj|	dd< | j \}}|	j|d | }t|dksJ |d }|	 }| j
s| js*tjj|t|tjd}t|tjjjs@J |j}|dddf  s`J d S )	Nr      rv   rN   r   maskZ
fill_value)	r   rN   rI   r   r   r\   r        rI   )rE   r   r/   nanr_   r`   rQ   rS   r2   r   mpl_ge_3_0_0mpl_ge_2_2_3maMaskedArrayr   
isinstancecorer  r   rF   r   r   r0   r1   )
rA   rW   r   rX   linesliner   r  rC   r   r*   r*   r+   	test_gaps  sV    zTestTSPlot.test_gapsc           
      C   s  t  }tj|dd< | j \}}|j|d t|jd |jd dd}t	tj
t||}|jdd	 | }t|d
ksJ t|j d
ksJ |d }| }| js| jstjj|t|tjd}t|tjjjsJ |j}	|	ddd
f  sJ d S )Nr   r  rv   r   rM   Z12hrg   Tsecondary_yrN   r  )rE   r   r/   r  r_   r`   rQ   r   r9   r   r0   r1   r2   rS   right_axr   r  r  r  r  r   r  r  r  r   )
rA   lowr   rX   idxhr   r  r  r   r  r*   r*   r+   test_gap_upsampleB  s"    zTestTSPlot.test_gap_upsamplec           
      C   sf  t tjd}t tjd}| j \}}|jdd}t|dsHJ t|drVJ | }|	 d }t |
 | }t|| |  dksJ |d   rJ | j| | j \}}	|j|	d |	  | jksJ | j|	  | }|jdd}	|  s"J t|dr2J t|dsBJ t|	dsRJ t|	drbJ d S )	Nr[   Tr  left_axr!  r   rightrv   )r   r/   r0   r1   r_   r`   rQ   r   get_axesrS   r   rT   rE   assert_series_equal	get_yaxisget_ticks_positionget_visiblerF   default_tick_positionr   )
rA   r   ser2rc   r   rX   r   r  r   ax2r*   r*   r+   test_secondary_yX  s0    zTestTSPlot.test_secondary_yc                 C   s<  t ddd}ttjd|}ttjd|}| j \}}|jdd}t|dsXJ t|drfJ |	 }|
 d }t| |  }	t||	 |  d	ksJ |d   rJ | j| | j \}}
|j|
d
 |
  | jksJ | j|
  | }|jdd}
|  s8J d S )Nr   r[   r   Tr  r%  r!  r   r&  rv   )r   r   r/   r0   r1   r_   r`   rQ   r   r'  rS   r   rT   Zto_timestamprE   r(  r)  r*  r+  rF   r,  r   )rA   rC   r   r-  rc   r   rX   r   r  r   r.  r*   r*   r+   test_secondary_y_tst  s*    zTestTSPlot.test_secondary_y_tsc                 C   sn   t tjd}| j \}}|jdd|d}t|ds<J t|drJJ | }|d 	 
 dksjJ d S )	Nr[   TZdensityr   kindrX   r%  r!  rN   r&  )r   r/   r0   r1   r_   r`   rQ   r   r'  r)  r*  rA   r   rc   rX   r   r*   r*   r+   test_secondary_kde  s    zTestTSPlot.test_secondary_kdec                 C   sR   t tjd}| j \}}|jdd|d | }|d  	 dksNJ d S )Nr[   Tbarr1  rN   r&  )
r   r/   r0   r1   r_   r`   rQ   r'  r)  r*  r3  r*   r*   r+   test_secondary_bar  s
    zTestTSPlot.test_secondary_barc                 C   sz   t tjddg dd}|jddgdd}|d	   d
ksDJ |d   | jks^J |d   d
ksvJ d S )Nr   r4   rr   r   cr:   rr   r8  T)r   r`   r   r&  rN   rI   r   r/   r0   r1   rQ   r)  r*  r,  rA   rb   r   r*   r*   r+   test_secondary_frame  s
    zTestTSPlot.test_secondary_framec                 C   s|   t tjddg dd}|jdddgdd	}|d
   dksFJ |d   | jks`J |d   dksxJ d S )Nr   r4   r7  r9  r5  rr   r8  T)r2  r   r`   r   r&  rN   rI   r:  r;  r*   r*   r+   test_secondary_bar_frame  s
    z#TestTSPlot.test_secondary_bar_framec                 C   s   t  }|g d }| j \}}|j|d |jd|d}| }t|d  }t|d  }t ||j	
d t ||j	
d | \}	}
|j	
 }|	|d jksJ |
|d jksJ d S 	Nr   r   r[   r   r        r  rv   gr   r   rN   r6   rM   )rE   r   r_   r`   rQ   rS   r   rT   r   r9   r   r   r   rA   s1s2r   rX   r.  r  idx1idx2leftr&  Zpidxr*   r*   r+   test_mixed_freq_regular_first  s    
z(TestTSPlot.test_mixed_freq_regular_firstc                 C   s   t  }|g d }| j \}}|jd|d |j|d t|drJJ | }|d  }t ||j	
tj |d  }t ||j	
tj d S Nr?  rB  r   rv   r%   r   rN   )rE   r   r_   r`   rQ   r   rS   rT   assert_numpy_array_equalr9   r   r   rk   rA   rD  rE  r   rX   r  x1Zx2r*   r*   r+   test_mixed_freq_irregular_first  s    z*TestTSPlot.test_mixed_freq_irregular_firstc                 C   s   t   }|jg dd d f }| j \}}|j|d |jd|d}| }t|d 	 }t|d 	 }|
|jdsJ |
|jdsJ | \}	}
|j }|	|d jksJ |
|d jksJ d S r>  )rE   r   to_framer   r_   r`   rQ   rS   r   rT   equalsr9   r   r   r   rC  r*   r*   r+    test_mixed_freq_regular_first_df  s    
z+TestTSPlot.test_mixed_freq_regular_first_dfc                 C   s   t   }|jg dd d f }| j \}}|jd|d |j|d t|drXJ | }|d 	 }t 
||jtj |d 	 }t 
||jtj d S rJ  )rE   r   rO  r   r_   r`   rQ   r   rS   rT   rK  r9   r   r   rk   rL  r*   r*   r+   "test_mixed_freq_irregular_first_df  s    z-TestTSPlot.test_mixed_freq_irregular_first_dfc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 D ]}t
| djdksvJ qvd S )	Nr  m  r   r   r  r   rv   r   r   r   r/   r0   r1   r2   r_   r`   rQ   rS   r   rT   r%   rA   r#  idxlhighr"  r   rX   r  r*   r*   r+   test_mixed_freq_hf_first  s    z#TestTSPlot.test_mixed_freq_hf_firstc                 C   s   t dddd}tjd}t||d}|d }| j \}}|j	|d}|j	d	|d
 |j
d  d |j
d  d ksJ d S )Nz2012-01-01 13:00
2012-01-02r   rg   r  rK   r   rv   rr   r   rN   )r   r/   r0   r1   r   r   Zinterpolater_   r`   rQ   r  rT   )rA   Zts_indZts_datarW   Zts2r   rX   r*   r*   r+   test_mixed_freq_alignment  s    z$TestTSPlot.test_mixed_freq_alignmentc           	      C   s^  t dddd}t dddd}ttjt||}ttjt||}| j \}}|jd|d |jd|d |	 D ]}t
| d	jdkszJ qz| }t|jd
ksJ | j|  t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 D ] }t
| d	jdks8J q8d S )Nr  rS  r   r   r  r   T)ZlegendrX   r   rI      r   r   r   rv   )r   r   r/   r0   r1   r2   r_   r`   rQ   rS   r   rT   r%   
get_legendZtextsrF   r   )	rA   r#  rV  rW  r"  r   rX   r  legr*   r*   r+   test_mixed_freq_lf_first  s*    z#TestTSPlot.test_mixed_freq_lf_firstc                 C   sb   t  }|g d }tdddd}ttjt||}| j	 \}}|j
|d |j
|d d S )N)r   rN   rI   r4   r   r   r   r      r\   r[   r              z1/3/2000r   r6   r   rv   )rE   r   r   r   r/   r0   r1   r2   r_   r`   rQ   )rA   rW   r   r   Zpsr   rX   r*   r*   r+   test_mixed_freq_irreg_period   s    z'TestTSPlot.test_mixed_freq_irreg_periodc                 C   s  t dddd}|d d |dd  }ttt||}ttt||}| jjddd\}\}}|j|d	 |j|d	 |jdksJ |jdksJ |j	d
 
 d |j	d
 
 d ksJ | j \}}| }|j|d	 |j|d	 |j	d
 
 d |j	d
 
 d ksJ d S )N
2015-01-01r4   r   r   rN   rI   T)Znrowssharexrv   r   rL   )r   rl   r   r^   r2   r_   r`   rQ   r%   r  r   Ztwinx)rA   rF  rG  rD  rE  rc   Zax1r.  r*   r*   r+   test_mixed_freq_shared_ax)  s    (z$TestTSPlot.test_mixed_freq_shared_axc                 C   s   | j  \}}tdtdg}ttt||}|j|d | d 	 }|j
 t| ksdJ t| |j
 ks~J d S )Nrf  z
2015-01-03rv   r   )r_   r`   r   r
   r   r^   r2   rQ   rS   rT   r9   minmax)rA   r   rX   Zdtir   rY   r*   r*   r+   test_nat_handlingJ  s    zTestTSPlot.test_nat_handlingc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 D ]}t
| dj|jksvJ qvd S )	Nr  4   r   r   r  r   rv   r   rT  rU  r*   r*   r+   test_to_weekly_resamplingV  s    z$TestTSPlot.test_to_weekly_resamplingc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 j
tj}tjg dtjd	}| D ]P}	t|	 d
j|jksJ |	jdd}
t|
dkrt|
| qt|
| qt  d S )Nr  rl  r   r   r  r   rv   i  i  i  i  i  i   i  i  i  i  i  i  Zdtyper   Forig)r   r   r/   r0   r1   r2   r_   r`   rQ   r   asi8r   float64rp   rS   r   rT   r%   rE   rK  rF   )rA   r#  rV  rW  r"  r   rX   Z
expected_hZ
expected_lr  rY   r*   r*   r+   test_from_weekly_resamplinga  s&    z&TestTSPlot.test_from_weekly_resamplingc                 C   s,  t dddd}t dddd}ttjt|d|g dd	}ttjt|d|g dd	}d
D ]Z\}}| j \}}|j|d|d |j|d|d tj	g dtj
d}	tjt|	tj
d}
tdD ]\}|j| }t| j|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 q| jtj
}	tjt|	tj
d}
tdD ]f}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qTq`d
D ]b\}}| j \}}|j|d|d |j|d|d | jtj
}	tjt|	tj
d}
tdD ]b}|j| }t| dj|jksRJ t|jdd|	 |
|| j7 }
t|jdd|
 q(tj	g dtj
d}	tjt|	tj
d}
tdD ]f}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qqd S )Nr  rl  r   r   r  r   r4   )r   rN   rI   r8   ))r  area)ru  r  T)r2  ZstackedrX   rn  ro  Frp  r   )r   r   r/   r0   randr2   r_   r`   rQ   rp   rs  Zzerosr^   r  r   rT   r%   rE   rK  rk   r   r   rr  r   )rA   r#  rV  rW  r"  Zkind1Zkind2r   rX   Z
expected_xZ
expected_yrq   r  r  r*   r*   r+   $test_from_resampling_area_line_mixedx  sd      

z/TestTSPlot.test_from_resampling_area_line_mixedc                 C   s  t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d t|	 dksJ |	 D ]}t
| d	jd
ksJ qt  | j \}}|j|d |j|d t|	 dksJ |	 D ]}t
| d	jd
ksJ qd S )Nz2014-07-01 09:00r   2   r$   Z100Lr   rv   rI   r   r   )r   r   r/   r0   r1   r2   r_   r`   rQ   rS   r   rT   r%   rE   rF   rU  r*   r*   r+   "test_mixed_freq_second_millisecond  s"    z-TestTSPlot.test_mixed_freq_second_millisecondc                 C   s   t dddt dddt dddg}ttjt|dt|td}t|j	 t
ddd	}|g d
 t}ttjt|d|}| j \}}t|j	|d d S )Nr   rN   r   r  r4   ro  r   r[   r   )r   rI   r   r\   rv   )r   r   r/   r0   r1   r2   r	   r   rP   rQ   r   r   r_   r`   )rA   rC   rb   r   rX   r*   r*   r+   test_irreg_dtypes  s    " 
zTestTSPlot.test_irreg_dtypesc                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| j	
 \}}|j|d
 | }| }t||D ]v\ }tt d\}	}
t|	d\}}	| }t|dkr|
dkrt||	|
d}nt||	|
d}||ksJ qd S )NrN   r4   r   r   r  c                    s"   g | ]} t t|d   qS r   r   r   r   r'   tr*   r+   r,     r-   z(TestTSPlot.test_time.<locals>.<listcomp>r   rK   rv   <   %H:%M:%S%H:%M)r   r/   r0   randintcumsumrp   r   r1   r2   r_   r`   rQ   
get_xticksra   r   divmodr   r   r   r   rA   deltasrW   rb   rc   rX   tickslabelslmr   hr   r   r*   r}  r+   	test_time  s&    "zTestTSPlot.test_timec                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| j	
 \}}|j|d
 | }| }t||D ]v\ }tt d\}	}
t|	d\}}	| }t|dkr|
dkrt||	|
d}nt||	|
d}||ksJ q|dd | }| }t||D ]~\ }tt d\}	}
t|	d\}}	| }t|dkr:|
dkrt||	|
d}nt||	|
d}||ks:J q:d S )NrN   r4   r   r   r  c                    s"   g | ]} t t|d   qS r{  r|  r'   r}  r*   r+   r,     r-   z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r   rK   rv   r  r  r  z1:30z5:00)r   r/   r0   r  r  rp   r   r1   r2   r_   r`   rQ   r  ra   r   r  r   r   r   r   r   r  r*   r}  r+   test_time_change_xlim  s>    "
z TestTSPlot.test_time_change_xlimc                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| j	
 \}}|j|d
}| }| }t||D ]\ }tt d\}	}
t t  d }t|	d\}}	| }t|dkr|d dkrt||	|
|d}n`|d dkr<t||	|
|dd d }n4|
dkr\t||	|
|d}nt||	|
|d}||ksJ qd S )NrN   r4   r   r   r  c                    s"   g | ]} t t|d   qS ))microsecondsr|  r'   r}  r*   r+   r,   ;  r-   z.TestTSPlot.test_time_musec.<locals>.<listcomp>r   rK   rv   r  g    .Ai  r   r  r  )r   r/   r0   r  r  rp   r   r1   r2   r_   r`   rQ   r  ra   r   r  r   roundr   r   r   )rA   r  rW   rb   rc   rX   r  r  r  r  r   r   r  r   r   r*   r}  r+   test_time_musec8  s0    "
zTestTSPlot.test_time_musecc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |jd|d	}|	 D ]}t
| jdksxJ qxt|d
sJ t|drJ |j	 D ]}t
| jdksJ qd S )Nr  rS  r   r   r  r   rv   Tr   rX   r%  r!  )r   r   r/   r0   r1   r2   r_   r`   rQ   rS   r   rT   r%   r   r%  rU  r*   r*   r+   test_secondary_upsampleW  s    z"TestTSPlot.test_secondary_upsamplec                 C   sZ  | j  }|d}t }|jddg|d | }t| dksJJ |	 d 
 dksbJ |	 d 
 d	kszJ |	 d
 
 dksJ |	 d 
 dksJ |j d u sJ t }| D ]}||  qt|dksJ | j | | j  }|d}|jddgd|d | }t| dks@J |	 d 
 dksZJ |	 d 
 dkstJ |	 d
 
 dksJ |	 d 
 dksJ | j | | j  \}}|jddg|d | }|	 d 
 dksJ |	 d 
 dksJ | j | | j  \}}|jddgd|d | }|	 d 
 dks`J |	 d 
 dkszJ | j | | j  }|d}t }|jddg|d}| }t| dksJ |j d u sJ t }| D ]}||  qt|dksJ | j | t }| j  }|d}|jddg|d}| }t| dkstJ |j d u sJ t }| D ]}||  qt|dksJ | j   | j  }|d}|jddg|d}| }t| dksJ |j d u s J t }| D ]}||  q.t|dksVJ d S )N   r    r6   r  r   r   z	A (right)rN   z	B (right)rI   r7   r4   r   F)r   
mark_rightrX   r5  )r2  r   rX   )r2  r   r  rX   )r_   figureadd_subplotrE   ZmakeTimeDataFramerQ   r]  r2   rS   Z	get_textsr   r!  setaddr   rF   r`   ZmakeDataFrame)rA   rc   rX   rb   r^  colorsr  r*   r*   r+   test_secondary_legendf  s    










z TestTSPlot.test_secondary_legendc                 C   sz   t dddd}ttjt|d|}| j \}}|j|d}|	 }|
 D ]$}t| dkrP| dksPJ qPd S )	Nr   r  r   r   r4   rv   r   r   )r   r   r/   r0   r1   r2   r_   r`   rQ   r   r   r   Zget_rotation)rA   r   rb   r   rX   r   r  r*   r*   r+   test_format_date_axis  s    z TestTSPlot.test_format_date_axisc                 C   sX   t dddd}ttt|}| j \}}|j||dd}tt	|d 
 | d S )NrY  r[   r   startr&   r%   Y)rd   r   )r   rR   r^   r2   r_   r`   rQ   rE   r   r   rT   )rA   r)   rt   r   rX   r  r*   r*   r+   test_ax_plot  s
    zTestTSPlot.test_ax_plotc           
      C   s  t dddt dddg}tddd}tdd	d}d
dd}| j \}}|jdd |D |fi | |jdd |D |fi | | \}}tjdd |D tjd}	t	
| d d df |	 tjdd |D tjd}	t	
| d d df |	 d S )N  r     i  rN   g      $@g      &@g      ?g      (@-r   )fmtZlwc                 S   s   g | ]}|  qS r*   	toordinalr'   r*   r*   r+   r,     r-   z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     r-   c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     r-   ro  r   c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     r-   )r   r/   r   r_   r`   Z	plot_daterS   rp   rs  rE   rK  r   )
rA   datesZvalues1Zvalues2kwr   rX   Zline1Zline2expr*   r*   r+   test_mpl_nopandas  s    
zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} t d d }|g d }| j \}}|d d j|d |dd  j|d | \}}|||j	
 d|ksJ |||j	 d|ksJ d S )Nr   DatetimeConverterr  rN   r   r   r   r`  r\   r[   r  r@  rA  r  rb  rc  r   rv    r   r  rE   r   r_   r`   rQ   r   convertr9   ri  rj  rA   r  rW   Zts_irregularr   rX   rH  r&  r*   r*   r+    test_irregular_ts_shared_ax_xlim  s    z+TestTSPlot.test_irregular_ts_shared_ax_xlimc                 C   s   g d}g d}t d|d}t d|d}| j \}}|j|d | \}}|jd|d | \}	}
||	kstJ ||
k sJ d S )	N)rN   rI   r4   r   )r   r   r   r`  rN   rK   rI   rv   Tr  )r   r_   r`   rQ   r   rA   Zindex_1Zindex_2rD  rE  r   rX   left_beforeright_before
left_afterright_afterr*   r*   r+   test_secondary_y_non_ts_xlim  s    z'TestTSPlot.test_secondary_y_non_ts_xlimc                 C   s   t dddd}t dddd}td|d}td|d}| j \}}|j|d	 | \}}|jd
|d | \}	}
||	ksJ ||
k sJ d S )N
2000-01-01r   r   r  z
2000-01-05rN   rK   rI   rv   Tr  )r   r   r_   r`   rQ   r   r  r*   r*   r+    test_secondary_y_regular_ts_xlim  s    z+TestTSPlot.test_secondary_y_regular_ts_xlimc           	      C   s   t dddd}td|d}| j \}}|j|d | \}}|d jd	|d
 | \}}||kspJ ||ks|J d S )Nr  r   ri  r   rN   rK   rv   r   Tr  )r   r   r_   r`   rQ   r   Zresamplemean)	rA   r   rW   r   rX   r  r  r  r  r*   r*   r+   #test_secondary_y_mixed_freq_ts_xlim  s    z.TestTSPlot.test_secondary_y_mixed_freq_ts_xlimc                 C   s   ddl m} t d d }|g d }| j \}}|d d j|d |dd  jd|d |d d j|d | \}}|||j	
 d	|ksJ |||j	 d	|ksJ d S )
Nr   r  r  r  r   rv   Tr  r  r  r  r*   r*   r+   "test_secondary_y_irregular_ts_xlim$  s    z-TestTSPlot.test_secondary_y_irregular_ts_xlimc                 C   sZ   t dddt dddg}| j \}}|| tddddtddddg}|| d S )Ni  rN   rI   r  )r   r_   r`   rQ   r   )rA   rk   r   rX   r*   r*   r+   test_plot_outofbounds_datetime6  s
    
z)TestTSPlot.test_plot_outofbounds_datetimec                 C   s   dd t dD }tdddd}tt jt|d|}| j \}}|j	d|d	 | j
  | }d
d |D }t|t|ksJ ||ksJ d S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr*   )r(   rq   r*   r*   r+   r,   A  r-   zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r[   0nsr   r4   rI   r]   c                 S   s   g | ]}|  qS r*   r   r'   r*   r*   r+   r,   J  r-   )r/   r   r   r   r0   r1   r2   r_   r`   rQ   drawra   rA   Zexpected_labelsr   rb   rc   rX   r  Zresult_labelsr*   r*   r+   "test_format_timedelta_ticks_narrow?  s    
z-TestTSPlot.test_format_timedelta_ticks_narrowc                 C   s   g d}t dddd}ttjt|d|}| j \}}|jd|d}| j	  |
 }d	d
 |D }t|t|ks~J ||ksJ d S )N)	z00:00:00z1 days 03:46:40z2 days 07:33:20z3 days 11:20:00z4 days 15:06:40z5 days 18:53:20z6 days 22:40:00z8 days 02:26:40z9 days 06:13:20r  r[   1 dr   r4   rI   r]   c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,   b  r-   z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r   r/   r0   r1   r2   r_   r`   rQ   r  ra   r  r*   r*   r+    test_format_timedelta_ticks_wideN  s    
z+TestTSPlot.test_format_timedelta_ticks_widec                 C   s   t tdtddd}| j \}}t|j|d tdddd}t tj	t
||}| j \}}t|j|d tddd	d}t tj	t
||}| j \}}t|j|d d S )
Nr   Z1dayr   rv   z1 day 2 hr 30 min 10 sr[   r  r   z1 ns)r   r^   r   r_   r`   rP   rQ   r/   r0   r1   r2   )rA   r   r   rX   r9   r*   r*   r+   test_timedelta_plotf  s    zTestTSPlot.test_timedelta_plotc                 C   s`   t dddd}|}tddd}tdddd d d }| j \}}|j||g||gd	 d S )
NrH   r[   r   r   r   rN   g?rM   )weights)r   r/   r   r_   r`   hist)rA   r   r)   Zw1Zw2r   rX   r*   r*   r+   	test_histx  s    zTestTSPlot.test_histc                 C   s   t g dtdddtdddtdddgd}t g dtdddtd	ddtd
ddgd}| j \}}|j|d |j|d |j|d d S )Nro   r  r  r  r   i  rK   i  i  r  rv   )r   r   r_   r`   rQ   )rA   rD  rE  r   rX   r*   r*   r+   test_overlapping_datetime  s$    





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converter)reasonc                 C   s   t tjdtdddd}| }tt$ |j|j	|j
dd W d    n1 sX0    Y  |j\}}t| |  d S )Nr[   z
1970-01-02r   rK   rB  )r   )r   r/   r0   r1   r   rQ   rE   rO   DeprecationWarningr9   rk   r  rK  r   )rA   r   rX   l1l2r*   r*   r+   test_add_matplotlib_datetime64  s    2
z)TestTSPlot.test_add_matplotlib_datetime64c                 C   s   t tjdddddgd}tdddd	|d
< | j \}}|jd
d|d | j	  |
 d }| jrrd}n| jr~d}nd}| |ksJ d S )Nr   r[   rI   r)   rt   r9  z
2018-01-01r   r   r   )r)   rt   r   z
2017-12-08z
2017-12-12)r   r/   r0   ZRandomStaterv  r   r_   r`   Zscatterr  ra   Zmpl_ge_3_2_0r  r   )rA   rb   rc   rX   rd   r   r*   r*   r+   "test_matplotlib_scatter_datetime64  s     
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   s   t g d}t|g dd}|jddd}| j|dd t g d}t|g dd}|jddd}| j|d	d |djdd
d}| j|d	d |djddd}| j|dd |jddd
d
d}| j|d	d |jddd
dd}| j|dd d S )N)
2020-05-01
2020-05-02z
2020-05-03ro   )r)   rt   r)   rt   r   )Zxrot)r  r  z
2020-05-04r   T)rt   Z	use_indexF)r)   rt   r`   rg  )r   r   rQ   Z_check_ticks_propsZ	set_index)rA   r)   rb   r   r*   r*   r+   test_check_xticks_rot  s     z TestTSPlot.test_check_xticks_rotN)]__name__
__module____qualname__r<   rG   rZ   re   rn   rs   r}   r   r   r   r   r   r   ry   markZparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r$  r/  r0  tdZskip_if_no_scipyr4  r6  r<  r=  rI  rN  rQ  rR  rX  r[  r_  re  rh  rk  rm  rt  rw  ry  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Zxfailr  r  r  r*   r*   r*   r+   r   /   s   

			(

6

	![)[
		
r   c              	   O   s  dd l m} | }zX|  |d}|d| }t|dd }	| |i |}
|
d us`J |d| }|d ur|jj	}t
|tr|j}|	d u r|j	|ksJ |d ur|	d u r|j	|ksJ |d}||d< | |i |}
|
d usJ tjdd}|| W d    n1 s0    Y  tjdd}t|| W d    n1 sX0    Y  W || n|| 0 d S )Nr   r  rX   r%      T)Zreturn_filelike)Zmatplotlib.pyplotZpyplotZgcfZclfr  popZgcagetattrr9   r%   r  r   r   rE   Zensure_cleanZsavefigpickledumprF   )fr%   Zseriesargskwargsr_   rc   rX   Zorig_axZorig_axfreqr   Zdfreqpathr*   r*   r+   rP     s6    


*.rP   )NN)/__doc__r   r   r   r   r  Znumpyr/   ry   Zpandas._libs.tslibsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   Zpandas._testingZ_testingrE   Zpandas.core.indexes.datetimesr   r   r   Zpandas.core.indexes.periodr   r   r   Zpandas.core.indexes.timedeltasr   Zpandas.tests.plotting.commonr   Zpandas.tseries.offsetsr   r  ZslowZ
pytestmarkZskip_if_no_mplr   rP   r*   r*   r*   r+   <module>   s8   $	           .