U
    +if{                     @   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ddddd d!d"d#gd$d% Zd&d' Zd(d) Zejdddddd d!d"d#gd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Z d@dA Z!dBdC Z"dDdE Z#dFdG Z$dHdI Z%dJdK Z&dLdM Z'dNdO Z(dPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.d\d] Z/d^d_ Z0e1j2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=dvdw Z>dxdy Z?dzd{ Z@d|d} ZAd~d ZBdd ZCdd ZDdd ZEdd 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 | | ddddddddg| _d	d
 | jD }dd
 |D | _dd
 |D | _dddddddddg	}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*   Z/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/plotting/test_datetimelike.py
<listcomp>5   s     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   s     c                 S   s.   g | ]&}t tjt|d |dddgdqS    r    BCindexcolumnsr   r.   r/   r0   r1   r'   r*   r*   r+   r,   7   s   zQ-DECZ1B30Minc                 S   s   g | ]}t d |ddqS r!   )r   r'   r*   r*   r+   r,   =   s     c                 S   s"   g | ]}t tjt||qS r*   r-   r'   r*   r*   r+   r,   >   s     c                 S   s.   g | ]&}t tjt|d |dddgdqS r2   r9   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)r?   r@   r*   r*   r+   teardown_methodD   s    zTestTSPlot.teardown_methodc              	   C   s   |}t ddd|d}tddg|d}td d t|j | }t| d  }|d j	|d j
fd	ksrt|d
 j	|d
 j
fdkstW 5 Q R X d S )N1/1/2011   r   )r&   r%   tzg     g@g     t@r7   r   r   r   )   r   )r   r   rC   assert_produces_warning_check_plot_worksplotlist	get_lines	get_xdatahourminuteAssertionError)r?   Ztz_aware_fixturerH   r7   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sFtqFd S )N
   	   rI   rG   ZfontsizerW   )r   r.   r/   r0   rangepltsubplotsrO   get_xticklabelsZget_yticklabelsZget_fontsizerU   )r?   dffigrW   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%   r3   rI   r   (   -   c   z2008-1-1 00:15:00Z15TrZ   )r   r   valuesr   r.   r/   r0   r1   rN   rO   union)r?   rA   ra   df2r*   r*   r+   test_frame_inferred\   s    

zTestTSPlot.test_frame_inferredc                 C   s<   t dddg}t||d}t|j|d t|j|d d S )NrL   rG   r3   rI   )Zxerr)Zyerr)r.   arrayr   rN   rO   )r?   iar*   r*   r+   test_is_error_nozeroindexo   s    z$TestTSPlot.test_is_error_nozeroindexc              	   C   s   t dddd}tdddgdd	dgd
|}| j \}}|j|d t| dksXt| j| d}t	j
t|d |d   W 5 Q R X d S )Nre   r    r3   r$   r)   yzrL   rG   )r    r4   rW   zno numeric data to plotmatch)r   r   r^   r_   rO   r1   rQ   rU   rD   pytestraises	TypeError)r?   rA   ra   rb   rW   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st
d S )Nrt   kstylerW   )        r   r   rL   r   )r^   r_   rC   makeTimeSeriesr;   rN   rO   r=   rQ   	get_colorrU   )r?   _rW   rV   scolorr*   r*   r+   test_tsplot   s    

zTestTSPlot.test_tsplotc              	   C   sl   t  }d}tjt|d |jddd W 5 Q R X |jdd}tjt|d |jddd W 5 Q R X 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 symbolru   zb-z#000099)r~   r   T)Zdrop)rC   r   rw   rx   
ValueErrorrO   Zreset_index)r?   rV   rz   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%   rt   )
r^   r_   r   r   r.   r/   r0   r1   rN   rO   )r?   Zfreaksr%   r   rW   rngserr*   r*   r+   test_high_freq   s    zTestTSPlot.test_high_freqc                 C   sn   ddl m} |d dd kst|dddks0t|tdddtddjksPt|ddtd	djksjtd S )
Nr   )get_datevaluer     r    r   z1987-12re   z1987-1-1)%pandas.plotting._matplotlib.converterr   rU   r   ordinal)r?   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:td S )Nr   )rQ   rR   r   	get_ydataZformat_coordrU   )rW   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_pointrL   z
2014-01-01r3   zA-DECr   rI   rt   zt = 2014  y = 1.000000r   zt = 2014-01-01  y = 1.000000)r   r   r^   r_   rO   rC   rD   )r?   r   Zannualr   rW   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 rB   )r;   rN   rO   r7   r%   r?   r   r*   r*   r+   test_line_plot_period_series   s    
z'TestTSPlot.test_line_plot_period_seriesfrqncyZ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.   r/   r0   r1   rN   rO   r7   r%   	rule_code)r?   r   rA   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 rB   )r=   rN   rO   r7   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 rB   )r<   rN   rO   r7   r%   )r?   ra   r*   r*   r+   test_line_plot_period_frame   s    
z&TestTSPlot.test_line_plot_period_framec                 C   sT   t d|dd}ttjt|d|dddgd}|j|jjj	j}t
|j| d S )	Nr"   r#   r$   r3   r    r4   r5   r6   )r   r   r.   r/   r0   r1   r7   asfreqr%   r   rN   rO   )r?   r   rA   ra   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 rB   )r>   r7   	to_periodr%   r   rN   rO   )r?   ra   r%   r*   r*   r+   test_line_plot_datetime_frame   s    
z(TestTSPlot.test_line_plot_datetime_framec                 C   sR   | j D ]F}t|jtt|j}t|j|jj	 |ddddg }t|j qd S )Nr   r3         )
r=   r   rj   r	   r.   Zasarrayr7   rN   rO   Zinferred_freq)r?   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rbt	d S )Nz2001-1-1z	2001-1-10rI   r3   r   rt   r%   )
r^   r_   r   r   r]   r1   r   rO   hasattrrU   )r?   r   rW   r   rV   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BQSrZ   r$   rI   )rC   r   rN   rO   r   r7   r   r.   r/   r0   r1   )r?   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  rL   r      rI   )	r	   r   r   r.   r/   r0   r1   rN   rO   )r?   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|tq|d S )
Nr   z2012-6-22 21:59:51.960928L  r$   rG   rI   rt   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r   r.   r/   r0   r1   r^   r_   rO   	get_xaxisZget_ticklocsget_ticklabelszipZ_from_ordinalstrftimestrget_textrU   )r?   convrA   ra   r   rW   ZaxisZtlocsZtlabelslocrc   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ddd	d
g }| j \}}|j	|d t
| d  d d df  }d}t|dd  ||d |g dk  st| j \}}| }|jt|_|j	|d t
| d  d d df  }t|dd  | dk  s td S )Nz2012-6-22 21:59:51r   r#   r$   rG   rI   r   rL   r3      rt   g)QΠE>g:0yE>)r   r   r.   r/   r0   r1   ilocr^   r_   rO   r   rQ   
get_xydatadifffabsallrU   copyr7   astypeobject)	r?   rA   ra   irregr   rW   Zdiffssecrl   r*   r*   r+   test_irreg_hf  s    $,$zTestTSPlot.test_irreg_hfc                 C   sp   t  }|ddddg }| j \}}|j|d}|d k	s>tt| d  |j	D ]\}}||ksVtqVd S )Nr   rL   rG      rt   )
rC   r   r^   r_   rO   rU   r   rQ   rR   r7   )r?   r   r   rW   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sFt	| d 
 }t|djdksjt	d S )Nrt   r   rJ   datar4   )rC   ZmakePeriodSeriesr^   r_   rO   rQ   r   r7   r   rU   rR   r   freqstrr?   btsr   rW   rA   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sXt| d  }t|djdks|td S )Ni,  ZBMr   rt   r   rJ   r   )rC   r   r   r   r^   r_   rO   rQ   r   r7   r   rU   rR   r   r   )r?   r   rV   r   rW   rA   r*   r*   r+   test_business_freq_convertB  s    
$z%TestTSPlot.test_business_freq_convertc              	   C   sl   t  }td|}| j \}}|j|d | d  }d}t	j
t|d t|d W 5 Q R X d S )Nr   rt   r   z)freq not specified and cannot be inferredru   r   )r   rC   r   r   r^   r_   rO   rQ   rR   rw   rx   r   r   )r?   r%   r   r   rW   rA   rz   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rbtd S )
Nz
2012-12-20   r   r      minutesrI   rt   r   )r   r   r   r.   aranger^   r_   rO   rQ   rR   r	   is_normalizedrU   )r?   rA   ra   r   rW   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 )Nrp   rt   r   )r   rC   r   r^   r_   rO   rQ   rR   assert_index_equalr7   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sDt|d |d d ks\ttd| jtd| jf}| dd |   }t|d |d jkstt|d |d jksttd| jtd| jf}| tdddtddd |   }t|d |d jkstt|d |d jks0t|  } j	
| d S )	Nr   r   rL   rZ   1/1/2000z4/1/2000r   r   )get_xlimset_xlimrU   r   r%   intr   r   
get_figurer^   rD   )rW   Zxlimresultexpectedrb   r?   r*   r+   _testh  s"    z*TestTSPlot.test_axis_limits.<locals>._testrt   rL   rp   bT)r_   )rC   r   r^   r_   rO   r   )r?   r   r   r   rW   ra   axesr*   r   r+   test_axis_limitsg  s    zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jks0t|td|jksHt|td|jks`t|td|j	ksxt|td|j
kst|td|jkstd S )Nr   r4   r   r   r   r    r   )r   r   r   r   Z
get_finderr   Z_daily_finderrU   Z_monthly_finderZ_quarterly_finderZ_annual_finder)r?   r   r*   r*   r+   test_get_finder  s    zTestTSPlot.test_get_finderc                 C   s   dddddddg}t dd	d
jgt|  }}g }g }|D ]}td|d}ttjt||}| j	 \}	}
|j
|
d |
 }|| d  |
 \}}|
|d | || d  | j|
  q:||kst||kstd S )NrZ   rg      i  i  i
  '  z1999-1-1r4   rf   r&   rt   r   ?)r   r   r1   r   r   r.   r/   r0   r^   r_   rO   r   appendget_majorticklocsr   r   rD   r   rU   )r?   Zday_lstxpl1xpl2rs1rs2nr   r   r   rW   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st||kstd S )Ng      @r   1988Q11987Q2r   r   r   rt   r   r   r   r   r1   r   r   r   r.   r/   r0   r^   r_   rO   r   r   r   r   r   rD   r   rU   r?   Zyrsr   r   r   r   r   r   r   r   rW   r   r   r   r*   r*   r+   test_finder_quarterly  s"    z TestTSPlot.test_finder_quarterlyc                 C   s   dd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	|
  q0||kst||kstd S )Ngffffff?g      @r   r   zJan 1988r      r   r   rt   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sjtd S )Nr   i   r   r   rt   r   Z1989Q1)r   r   r.   r/   r0   r1   r^   r_   rO   r   r   r   r   rU   )r?   r   r   r   rW   r   r   r   r*   r*   r+   test_finder_monthly_long  s    z#TestTSPlot.test_finder_monthly_longc           	      C   s   ddddddddg}dd	 |D }g }d
D ]l}t d|dd}ttjt||}| j \}}|j|d |	 }|
| d  | j|  q*||kstd S )Nr   i  i    i  i  iz  c                 S   s   g | ]}t |d djqS )r    rf   )r   r   r'   r*   r*   r+   r,     s     z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   rZ      1   ri      iW  i  Z1987r    r   rt   r   )r   r   r.   r/   r0   r1   r^   r_   rO   r   r   r   rD   r   rU   )	r?   r   r   Znyearsr   r   r   rW   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sptd S )Ni@ 1/1/1999ZMinr$   rt   r   rf   r   r   r.   r/   r0   r1   r^   r_   rO   r   r   r   r   rU   )	r?   Znminutesr   r   r   rW   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sptd S )N   r  r   r$   rt   r   rf   r	  )	r?   Znhoursr   r   r   rW   r   r   r   r*   r*   r+   test_finder_hourly   s    zTestTSPlot.test_finder_hourlyc           
   
   C   s  t  }tj|dd< | j \}}|j|d | }t|dksHt	|d }|
 }| jsd| js|tjj|t|tjd}t|tjjjst	|j}|dddf  st	| j|  t  }|dddddd	d
ddg	 }tj|dd< | j \}}|j|d}| }t|dks"t	|d }|
 }| jsB| jsZtjj|t|tjd}t|tjjjspt	|j}|dddf  st	| j|  dddddd	d
ddg	}ttjt||}	tj|	dd< | j \}}|	j|d | }t|dkst	|d }|
 }| js.| jsFtjj|t|tjd}t|tjjjs\t	|j}|dddf  s|t	d S )Nr      rt   rL   r   maskZ
fill_valuerG   r   r[   r         )rC   r   r.   nanr^   r_   rO   rQ   r1   rU   r   mpl_ge_3_0_0mpl_ge_2_2_3maMaskedArrayr   
isinstancecorer  r   rD   r   r   r/   r0   )
r?   rV   r   rW   linesliner   r  rA   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stt|j d
kst|d }| }| js| jstjj|t|tjd}t|tjjjst|j}	|	ddd
f  std S )Nr   r  rt   r   rK   Z12hrf   Tsecondary_yrL   r  )rC   r   r.   r  r^   r_   rO   r   r7   r   r/   r0   r1   rQ   rU   right_axr   r  r  r  r  r   r  r  r  r   )
r?   lowr   rW   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sHtt|drVt|	 }|
 d }t | | }t|| |  dkst|d   rt| j| | j \}}	|j|	d |	  | jkst| j|	  | }|jdd}	|  s"tt|dr2tt|dsBtt|	dsRtt|	drbtd S )	NrZ   Tr  left_axr  r   rightrt   )r   r.   r/   r0   r^   r_   rO   r   rU   get_axesrQ   r   rR   rC   assert_series_equal	get_yaxisget_ticks_positionget_visiblerD   default_tick_positionr   )
r?   r   ser2rb   r   rW   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sXt	t|drft	|
 }| d }t| |  }	t||	 |  d	kst	|d   rt	| j| | j \}}
|j|
d
 |
  | jkst	| j|
  | }|jdd}
|  s8t	d S )Nr   rZ   r   Tr  r"  r  r   r#  rt   )r   r   r.   r/   r0   r^   r_   rO   r   rU   r$  rQ   r   rR   Zto_timestamprC   r%  r&  r'  r(  rD   r)  r   )r?   rA   r   r*  rb   r   rW   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<tt|drJt|	 }|d 
  dksjtd S )	NrZ   TZdensityr  kindrW   r"  r  rL   r#  )r   r.   r/   r0   r^   r_   rO   r   rU   r$  r&  r'  r?   r   rb   rW   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sNt
d S )NrZ   Tbarr.  rL   r#  )r   r.   r/   r0   r^   r_   rO   r$  r&  r'  rU   r0  r*   r*   r+   test_secondary_bar  s
    zTestTSPlot.test_secondary_barc                 C   s|   t tjdddddgd}|jddgdd}|d	   d
ksFt|d   | jks`t|d   d
ksxtd S )Nr   r3   rp   r   cr8   T)r  r_   r   r#  rL   rG   	r   r.   r/   r0   rO   r&  r'  rU   r)  r?   ra   r   r*   r*   r+   test_secondary_frame  s
    zTestTSPlot.test_secondary_framec                 C   s~   t tjdddddgd}|jdddgdd	}|d
   dksHt|d   | jksbt|d   dksztd S )Nr   r3   rp   r   r4  r5  r2  T)r/  r  r_   r   r#  rL   rG   r6  r7  r*   r*   r+   test_secondary_bar_frame  s
    z#TestTSPlot.test_secondary_bar_framec              	   C   s   t  }|ddddddddg }| j \}}|j|d	 |jd
|d}| }t|d  }t|d  }t ||j	
d t ||j	
d | \}	}
|j	
 }|	|d jkst|
|d jkstd S Nr   r   rZ   r   r         r  rt   gr}   rL   r4   rK   )rC   r   r^   r_   rO   rQ   r   rR   r   r7   r   r   r   rU   r?   s1s2r   rW   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  }|ddddddddg }| j \}}|jd	|d
 |j|d t|drVt| }|d  }t 	||j
tj |d  }t 	||j
tj d S Nr   r   rZ   r   r   r;  r<  r  r=  r}   rt   r%   rL   )rC   r   r^   r_   rO   r   rU   rQ   rR   assert_numpy_array_equalr7   r   r   rj   r?   r?  r@  r   rW   r  x1Zx2r*   r*   r+   test_mixed_freq_irregular_first  s    z*TestTSPlot.test_mixed_freq_irregular_firstc              	   C   s   t   }|jddddddddgd d f }| j \}}|j|d	 |jd
|d}| }t|d 	 }t|d 	 }|
|jdst|
|jdst| \}	}
|j }|	|d jkst|
|d jkstd S r:  )rC   r   to_framer   r^   r_   rO   rQ   r   rR   equalsr7   r   rU   r   r   r>  r*   r*   r+    test_mixed_freq_regular_first_df  s    "
z+TestTSPlot.test_mixed_freq_regular_first_dfc              	   C   s   t   }|jddddddddgd d f }| j \}}|jd	|d
 |j|d t|drdt|	 }|d 
 }t ||jtj |d 
 }t ||jtj d S rE  )rC   r   rJ  r   r^   r_   rO   r   rU   rQ   rR   rF  r7   r   r   rj   rG  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svtqvd S )	Nr  m  r   r   r   r   rt   r   r   r   r.   r/   r0   r1   r^   r_   rO   rQ   r   rR   r%   rU   r?   r   idxlhighr  r   rW   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std S )Nz2012-01-01 13:00
2012-01-02r   rf   r   rI   r   rt   rr}   r   rL   )r   r.   r/   r0   r   r   Zinterpolater^   r_   rO   r  rR   rU   )r?   Zts_indZts_datarV   Zts2r   rW   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sztqz| }t|jd
kst| 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s8tq8d S )Nr  rN  r   r   r   r   T)ZlegendrW   r   rG      r   r   r   rt   )r   r   r.   r/   r0   r1   r^   r_   rO   rQ   r   rR   r%   rU   
get_legendZtextsrD   r   )	r?   r   rQ  rR  r  r   rW   r  legr*   r*   r+   test_mixed_freq_lf_first  s*    z#TestTSPlot.test_mixed_freq_lf_firstc                 C   s~   t  }|ddddddddd	d
ddddddg }tdddd}ttjt||}| j	 \}}|j
|d |j
|d d S )Nr   rL   rG   r3   r   r   r   r      r[   rZ   r              z1/3/2000r   r4   r   rt   )rC   r   r   r   r.   r/   r0   r1   r^   r_   rO   )r?   rV   r   r   Zpsr   rW   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st	|jdkst	|j
d
  d |j
d
  d kst	| j \}}| }|j|d	 |j|d	 |j
d
  d |j
d
  d kst	d S )N
2015-01-01r3   r   r   rL   rG   T)Znrowssharexrt   r   rJ   )r   rk   r   r]   r1   r^   r_   rO   r%   rU   r  r   Ztwinx)r?   rA  rB  r?  r@  rb   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sdtt| |j
 ks~td S )Nra  z
2015-01-03rt   r   )r^   r_   r   r
   r   r]   r1   rO   rQ   rR   r7   minrU   max)r?   r   rW   Zdtir   rX   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svtqvd S )	Nr  4   r   r   r   r   rt   r   rO  rP  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dd	d
dddddddddgtjd}| D ]P}	t|	 dj|jkst|	jdd}
t|
dkrt|
| qt|
| qt  d S )Nr  rg  r   r   r   r   rt                            Zdtyper   Forig)r   r   r.   r/   r0   r1   r^   r_   rO   r   asi8r   float64rn   rQ   r   rR   r%   rU   rC   rF  rD   )r?   r   rQ  rR  r  r   rW   Z
expected_hZ
expected_lr  rX   r*   r*   r+   test_from_weekly_resamplinga  s&    z&TestTSPlot.test_from_weekly_resamplingc                 C   sZ  t dddd}t dddd}ttjt|d|dd	d
gd}ttjt|d|dd	d
gd}dD ]p\}}| j \}}|j|d|d |j|d|d tj	ddddddddddddgtj
d}	tjt|	tj
d}
tdD ]^}|j| }t| j|jkst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stt|jdd|	 |
|| j7 }
t|jdd|
 qnqddD ]v\}}| 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sltt|jdd|	 |
|| j7 }
t|jdd|
 qBtj	ddddddddddddgtj
d}	tjt|	tj
d}
tdD ]f}|jd|  }t| dj|jkstt|jdd|	 |
|| j7 }
t|jdd|
 qqd S )Nr  rg  r   r   r   r   r3   r   rL   rG   r6   ))r  area)r{  r  T)r/  ZstackedrW   ri  rj  rk  rl  rm  rn  ro  rp  rq  rr  rs  rt  ru  Frv  r   )r   r   r.   r/   randr1   r^   r_   rO   rn   ry  Zzerosr]   r  r   rR   r%   rU   rC   rF  rj   r   r   rx  r   )r?   r   rQ  rR  r  Zkind1Zkind2r   rW   Z
expected_xZ
expected_yro   r  r  r*   r*   r+   $test_from_resampling_area_line_mixedx  s    ""

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st
|	 D ]}t| d	jd
kst
qt  | j \}}|j|d |j|d t|	 dkst
|	 D ]}t| d	jd
kst
qd S )Nz2014-07-01 09:00r   2   r$   Z100Lr   rt   rG   r   r   )r   r   r.   r/   r0   r1   r^   r_   rO   rQ   rU   r   rR   r%   rC   rD   rP  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	}|d
dddg t}ttjt|d|}| j \}}t|j	|d d S )Nr   rL   r   r  r3   ru  r   rZ   r   r   rG   r[   rt   )r   r   r.   r/   r0   r1   r	   r   rN   rO   r   r   r^   r_   )r?   rA   ra   r   rW   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stqd S )NrL   r3   r   r   r  c                    s"   g | ]} t t|d   qS r   r   r   r   r'   tr*   r+   r,     s     z(TestTSPlot.test_time.<locals>.<listcomp>r   rI   rt   <   %H:%M:%S%H:%M)r   r.   r/   randintcumsumrn   r   r0   r1   r^   r_   rO   
get_xticksr`   r   divmodr   r   r   r   rU   r?   deltasrV   ra   rb   rW   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stq|dd | }| }t||D ]~\ }tt d\}	}
t|	d\}}	| }t|dkr:|
dkrt||	|
d}nt||	|
d}||ks:tq:d S )NrL   r3   r   r   r  c                    s"   g | ]} t t|d   qS r  r  r'   r  r*   r+   r,     s     z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r   rI   rt   r  r  r  z1:30z5:00)r   r.   r/   r  r  rn   r   r0   r1   r^   r_   rO   r  r`   r   r  r   r   r   r   rU   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stqd S )NrL   r3   r   r   r  c                    s"   g | ]} t t|d   qS ))microsecondsr  r'   r  r*   r+   r,   ;  s     z.TestTSPlot.test_time_musec.<locals>.<listcomp>r   rI   rt   r  g    .Ai  r   r  r  )r   r.   r/   r  r  rn   r   r0   r1   r^   r_   rO   r  r`   r   r  r   roundr   r   r   rU   )r?   r  rV   ra   rb   rW   r  r  r  r  r   r   r  r   r   r*   r  r+   test_time_musec8  s2      
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sxtqxt|d
stt|drt|j	 D ]}t
| jdkstqd S )Nr  rN  r   r   r   r   rt   Tr  rW   r"  r  )r   r   r.   r/   r0   r1   r^   r_   rO   rQ   r   rR   r%   rU   r   r"  rP  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sJt	|
 d  dksbt	|
 d  d	kszt	|
 d
  dkst	|
 d  dkst	|j d kst	t }| D ]}||  qt|dkst	| j | | j  }|d}|jddgd|d | }t| dks@t	|
 d  dksZt	|
 d  dkstt	|
 d
  dkst	|
 d  dkst	| j | | j  \}}|jddg|d | }|
 d  dkst	|
 d  dkst	| j | | j  \}}|jddgd|d | }|
 d  dks`t	|
 d  dkszt	| j | | j  }|d}t }|jddg|d}| }t| dkst	|j d kst	t }| D ]}||  qt|dkst	| j | t }| j  }|d}|jddg|d}| }t| dkstt	|j d kst	t }| D ]}||  qt|dkst	| j   | j  }|d}|jddg|d}| }t| dkst	|j d ks t	t }| D ]}||  q.t|dksVt	d S )N   r    r4   r  r   r   z	A (right)rL   z	B (right)rG   r5   r3   r   F)r  
mark_rightrW   r2  )r/  r  rW   )r/  r  r  rW   )r^   Zfigureadd_subplotrC   ZmakeTimeDataFramerO   rX  r1   rQ   rU   Z	get_textsr   r  setaddr   rD   r_   ZmakeDataFrame)r?   rb   rW   ra   rY  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sPtqPd S )	Nr   r   r   r   r3   rt   r   r   )r   r   r.   r/   r0   r1   r^   r_   rO   r   r   r   Zget_rotationrU   )r?   r   ra   r   rW   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 )NrT  rZ   r   startr&   r%   Y)rc   r   )r   rP   r]   r1   r^   r_   rO   rC   r   r   rR   )r?   r)   rr   r   rW   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| |jdd |D |f| | \}}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  rL   g      $@g      &@g      ?g      (@-r   )fmtZlwc                 S   s   g | ]}|  qS r*   	toordinalr'   r*   r*   r+   r,     s     z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     s     c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     s     ru  r   c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,     s     )r   r.   r   r^   r_   Z	plot_daterQ   rn   ry  rC   rF  r   )
r?   datesZvalues1Zvalues2kwr   rW   line1line2expr*   r*   r+   test_mpl_nopandas  s    
zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} t d d }|dddddd	d
ddddddg }| j \}}|d d j|d |dd  j|d | \}}|||j	
 d|kst|||j	 d|kstd S )Nr   DatetimeConverterr  rL   r   r   r   r[  r[   rZ   r   r;  r<  r  r]  r^  rt    r   r  rC   r   r^   r_   rO   r   convertr7   rd  rU   re  r?   r  rV   Zts_irregularr   rW   rC  r#  r*   r*   r+    test_irregular_ts_shared_ax_xlim  s    "z+TestTSPlot.test_irregular_ts_shared_ax_xlimc                 C   s   ddddg}ddddg}t d|d	}t d|d	}| j \}}|j|d
 | \}}|jd|d | \}	}
||	ks|t||
k std S )NrL   rG   r3   r   r   r   r   r[  rI   rt   Tr  )r   r^   r_   rO   r   rU   r?   Zindex_1Zindex_2r?  r@  r   rW   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st||
k std S )N
2000-01-01r   r   r  z
2000-01-05rL   rI   rG   rt   Tr  )r   r   r^   r_   rO   r   rU   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spt||ks|td S )Nr  r   rd  r   rL   rI   rt   r   Tr  )	r   r   r^   r_   rO   r   ZresampleZmeanrU   )	r?   r   rV   r   rW   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 }|dddddd	d
ddddddg }| j \}}|d d j|d |dd  jd|d |d d j|d | \}}|||j	
 d|kst|||j	 d|kstd S )Nr   r  r  rL   r   r   r   r[  r[   rZ   r   r;  r<  r  r]  r^  rt   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  rL   rG   r   )r   r^   r_   rO   r   )r?   rj   r   rW   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st||kstd S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr*   )r(   ro   r*   r*   r+   r,   A  s     zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>rZ   0nsr   r3   rG   r\   c                 S   s   g | ]}|  qS r*   r   r'   r*   r*   r+   r,   J  s     )r.   r   r   r   r/   r0   r1   r^   r_   rO   drawr`   rU   r?   Zexpected_labelsr   ra   rb   rW   r  Zresult_labelsr*   r*   r+   "test_format_timedelta_ticks_narrow?  s    
z-TestTSPlot.test_format_timedelta_ticks_narrowc              	   C   s   ddddddddd	g	}t d
ddd}ttjt|d|}| j \}}|jd|d}| j	  |
 }dd |D }t|t|kst||kstd S )Nz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  rZ   1 dr   r3   rG   r\   c                 S   s   g | ]}|  qS r*   r  r'   r*   r*   r+   r,   b  s     z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r   r.   r/   r0   r1   r^   r_   rO   r  r`   rU   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   rt   z1 day 2 hr 30 min 10 srZ   r  r   z1 ns)r   r]   r   r^   r_   rN   rO   r.   r/   r0   r1   )r?   r   r   rW   r7   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 )
NrF   rZ   r   r   r   rL   g?rK   )weights)r   r.   r   r^   r_   hist)r?   r   r)   Zw1Zw2r   rW   r*   r*   r+   	test_histx  s    zTestTSPlot.test_histc                 C   s   t dddgtdddtdddtdddgd	}t dddgtd
ddtdddtdddgd	}| j \}}|j|d |j|d |j|d d S )NrL   rG   r3   r  r   r  r   i  rI   i  i  r  rt   )r   r   r^   r_   rO   )r?   r?  r@  r   rW   r*   r*   r+   test_overlapping_datetime  s$    





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converter)reasonc              	   C   sp   t tjdtdddd}| }tt |j|j	|j
dd W 5 Q R X |j\}}t| |  d S )NrZ   z
1970-01-02r   rI   r=  )r   )r   r.   r/   r0   r   rO   rC   rM   DeprecationWarningr7   rj   r  rF  r   )r?   r   rW   l1l2r*   r*   r+   test_add_matplotlib_datetime64  s    
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std S )Nr   rZ   rG   r)   rr   r5  z
2018-01-01r   r   r   )r)   rr   r   z
2017-12-08z
2017-12-12)r   r.   r/   ZRandomStater|  r   r^   r_   Zscatterr  r`   Zmpl_ge_3_2_0r  r   rU   )r?   ra   rb   rW   rc   r   r*   r*   r+   "test_matplotlib_scatter_datetime64  s     
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   s  t dddg}t|dddgd}|jdd	d}| j|d
d t dddg}t|dddg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 )Nz
2020-05-01z
2020-05-02z
2020-05-03rL   rG   r3   )r)   rr   r)   rr   r   )Zxrotz
2020-05-04r   T)rr   Z	use_indexF)r)   rr   r_   rb  )r   r   rO   Z_check_ticks_propsZ	set_index)r?   r)   ra   r   r*   r*   r+   test_check_xticks_rot  s     z TestTSPlot.test_check_xticks_rotN)]__name__
__module____qualname__r:   rE   rY   rd   rm   rq   r{   r   r   r   r   r   r   rw   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,  r-  tdZskip_if_no_scipyr1  r3  r8  r9  rD  rI  rL  rM  rS  rV  rZ  r`  rc  rf  rh  rz  r}  r  r  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   sB  dd l m} | }z|  |d}|d| }t|dd }	| ||}
|
d k	s\t	|d| }|d k	r|j
j}t|tr|j}|	d kr|j|kst	|d k	r|	d kr|j|kst	|d}||d< | ||}
|
d k	st	tjdd}|| W 5 Q R X tjdd}t|| W 5 Q R X W 5 || X d S )Nr   r  rW   r%      T)Zreturn_filelike)Zmatplotlib.pyplotZpyplotZgcfrD   Zclfr  popZgcagetattrrU   r7   r%   r  r   r   rC   Zensure_cleanZsavefigpickledump)fr%   Zseriesargskwargsr^   rb   rW   Zorig_axZorig_axfreqr   Zdfreqpathr*   r*   r+   rN     s6    




rN   )NN)/__doc__r   r   r   r   r  numpyr.   rw   Zpandas._libs.tslibsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   Zpandas._testingZ_testingrC   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   rN   r*   r*   r*   r+   <module>   s8   $	           .