o
    _~#g                    @   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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'dZ(G dd dZ)dddZ*dS )z< Test cases for time series specific (freq conversion, etc)     )datedatetimetime	timedeltaN)
BaseOffset	to_offset)freq_to_period_freqstr)	DataFrameIndexNaTSeriesconcatisnato_datetime)DatetimeIndexbdate_range
date_range)PeriodPeriodIndexperiod_range)timedelta_range)_check_ticks_props)WeekOfMonth
matplotlibc                   @   sH  e Z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ejdg ddd Zejdg ddd Zdd Zdd Zejdddgdd Zdd  Zd!d" Zejdg dd#d$ Zejd%g d&d'd( Zejdg dd)d* Zejdg d+d,d- Zejd%g d&d.d/ Zejd0ejdg dd1d2 Zejdg dd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zejj d=d>d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)ejdQejdRe*e+j,dSe+j-dTe.dUdSdVdWe/e*e+j,dSe+j-dTe.dUdSdVdWe*e+j,dSe+j-dTe.dUdSdVdWdX dYgdZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6ejj7dhdi Z8djdk Z9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOejd0dd ZPdd ZQdd ZRejj dd>dd ZSdd ZTdd ZUdd ZVdd ZWejdddgdd ZXejdddgdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd ZbddÄ Zcddń ZdddǄ ZeddɄ Zfdd˄ Zgdd̈́ Zhejj d=d>ddτ Ziddф Zjddӄ ZkddՄ Zlddׄ Zmddل Znddۄ Zodd݄ Zpdd߄ Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxejj dd>dd Zydd Zzdd Z{dd Z|dd Z}dd Z~dS )
TestTSPlotzignore::UserWarningc                 C   s   |}t ddd|d}tddg|d}t|j | }tt|  }|d j|d j	fd	ks3J |d
 j|d
 j	fdksAJ d S )N1/1/2011   h)periodsfreqtzg     g@g     t@indexr   r   r   )   r   )
r   r   _check_plot_worksplotnextiter	get_lines	get_xdatahourminute)selftz_aware_fixturer    r"   tsaxxdata r3   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/plotting/test_datetimelike.pytest_ts_plot_with_tz0   s   
 zTestTSPlot.test_ts_plot_with_tzc                 C   sd   t tjddtdd}tj \}}|j	d|d |
 |  D ]
}| dks/J q%d S )Nr   )
   	   r6   r!   fontsizer1   )r	   nprandomdefault_rngstandard_normalrangemplpyplotsubplotsr'   get_xticklabelsget_yticklabelsget_fontsize)r.   df_r1   labelr3   r3   r4   test_fontsize_set_correctly=   s   z&TestTSPlot.test_fontsize_set_correctlyc                 C   s   t dddd}t|jd d}ttjdt|df|d}t	|j
 |d	d
 |dd }ttjdt|df|d}t	|j
 d S )N1/1/1987MSd   r   r   r   r      r!   r   (   -   c   )r   r   valuesr	   r:   r;   r<   r=   lenr&   r'   union)r.   idxrE   df2r3   r3   r4   test_frame_inferredG   s   
zTestTSPlot.test_frame_inferredc                 C   sL   t dddd}t|jd d}ttjdt|df|d}t	|j
 d S )	Nz2008-1-1 00:15:0015minr6   rL   rM   r   rN   r!   )r   r   rR   r	   r:   r;   r<   r=   rS   r&   r'   r.   rU   rE   r3   r3   r4   test_frame_inferred_n_gt_1X   s   z%TestTSPlot.test_frame_inferred_n_gt_1c                 C   s:   t g d}t||d}t|j|d t|j|d d S )Nr%   r   rN   r!   )xerr)yerr)r:   arrayr	   r&   r'   )r.   iar3   r3   r4   test_is_error_nozeroindexa   s   z$TestTSPlot.test_is_error_nozeroindexc                 C   sd   t dddd}tg dg dd|}tj \}}|j|d t| d	ks*J tj| d S )
NrI   YErN   rL   xyzr[   ABr1   r%   )	r   r	   r?   r@   rA   r'   rS   r*   close)r.   rU   rE   figr1   r3   r3   r4   test_nonnumeric_excludeh   s   z"TestTSPlot.test_nonnumeric_excludec                 C   sj   t dddd}tg dg dd|}d}tjt|d	 |d
   W d    d S 1 s.w   Y  d S )NrI   rb   rN   rL   rc   r[   rg   zno numeric data to plotmatchrh   )r   r	   pytestraises	TypeErrorr'   )r.   rU   rE   msgr3   r3   r4   test_nonnumeric_exclude_errorq   s   "z(TestTSPlot.test_nonnumeric_exclude_errorr   )sminr   DWMQYc                 C   J   t d|dd}ttjdt||}tj	 \}}t
|j|d d S N
12/31/1999rK   rL   r   rj   )r   r   r:   r;   r<   r=   rS   r?   r@   rA   r&   r'   r.   r   rU   serrF   r1   r3   r3   r4   test_tsplot_periodx      zTestTSPlot.test_tsplot_period)	ru   rv   r   rw   rx   MEzQE-DECrb   1B30Minc                 C   r|   r}   )r   r   r:   r;   r<   r=   rS   r?   r@   rA   r&   r'   r   r3   r3   r4   test_tsplot_datetime   s   zTestTSPlot.test_tsplot_datetimec                 C   s\   t tjdtjdtdddd}tj \}}|jd|d d}||	 d	 
 ks,J d S )
Nr6   dtype
2020-01-01r   r!   kstyler1   )        r   r   r%   r   )r   r:   arangefloat64r   r?   r@   rA   r'   r*   	get_color)r.   r0   rF   r1   colorr3   r3   r4   test_tsplot   s   zTestTSPlot.test_tsplotc                 C   s   t tjdtjdtdddd}d}tjt|d |jdd	d
 W d    n1 s+w   Y  |j	dd}tjt|d |jdd	d
 W d    d S 1 sPw   Y  d S )Nr6   r   r   r   r!   zCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolrn   zb-z#000099)r   r   T)drop)
r   r:   r   r   r   rp   rq   
ValueErrorr'   reset_index)r.   r0   rs   ru   r3   r3   r4   test_both_style_and_color   s   "z$TestTSPlot.test_both_style_and_colormsusc                 C   sJ   t j \}}tdd|d}ttjdt	||}t
|j|d d S )N1/1/2012rK   r   r   r   rj   )r?   r@   rA   r   r   r:   r;   r<   r=   rS   r&   r'   )r.   r   rF   r1   rngr   r3   r3   r4   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sJ |tdddtddjks(J |ddtd	djks5J d S )
Nr   )get_datevaluerw     r{   ry   z1987-12rI   z1987-1-1)%pandas.plotting._matplotlib.converterr   r   ordinal)r.   r   r3   r3   r4   test_get_datevalue   s
    zTestTSPlot.test_get_datevaluec                 C   sr   dd }t dtddddd}tj \}}|j|d	 ||d
 t dtddddd}|j|d	 ||d d S )Nc                 S   s>   |   d }| d j}| d }|| ||ksJ d S )Nr   )r*   r+   r   	get_ydataformat_coord)r1   expected_string
first_linefirst_xfirst_yr3   r3   r4   check_format_of_first_point   s   zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointr%   z
2014-01-01rN   zYE-DECr   r!   rj   zt = 2014  y = 1.000000rw   zt = 2014-01-01  y = 1.000000)r   r   r?   r@   rA   r'   )r.   r   annualrF   r1   dailyr3   r3   r4   test_ts_plot_format_coord   s   
z$TestTSPlot.test_ts_plot_format_coordc                 C   s>   t d|dd}ttjdt||}t|j|j	j
 d S Nr~   rK   rL   r   )r   r   r:   r;   r<   r=   rS   r&   r'   r"   r   r.   r   rU   r   r3   r3   r4   test_line_plot_period_series   s   z'TestTSPlot.test_line_plot_period_seriesfrqncy)1s3s5min7h4D8W11M3Yc                 C   @   t d|dd}ttjdt||}t|j|j	j
j d S r   )r   r   r:   r;   r<   r=   rS   r&   r'   r"   r   	rule_code)r.   r   rU   ru   r3   r3   r4    test_line_plot_period_mlt_series   s   z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   r   r   )r   r   r:   r;   r<   r=   rS   r&   r'   r"   r   r   r   r3   r3   r4   test_line_plot_datetime_series   s   z)TestTSPlot.test_line_plot_datetime_series)ru   rv   r   rw   rx   r   QErb   c                 C   sJ   t d|dd}ttjdt|df|g dd}t|j|j	j
 d S )Nr~   rK   rL   r   rN   rh   ri   Cr"   columns)r   r	   r:   r;   r<   r=   rS   r&   r'   r"   r   r.   r   rU   rE   r3   r3   r4   test_line_plot_period_frame   s   z&TestTSPlot.test_line_plot_period_framec                 C   sd   t d|dd}ttjdt|df|g dd}td|jj	j
}|j|j	}t|j| d S 	Nr~   rK   rL   r   rN   r   r   r%   )r   r	   r:   r;   r<   r=   rS   r   r"   r   r   asfreqr&   r'   )r.   r   rU   rE   r   r3   r3   r4   test_line_plot_period_mlt_frame   s   z*TestTSPlot.test_line_plot_period_mlt_framez3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sd   t d|dd}ttjdt|df|g dd}td|jj	j
}|j|j	}t|j| d S r   )r   r	   r:   r;   r<   r=   rS   r   r"   r   r   	to_periodr&   r'   r   r3   r3   r4   test_line_plot_datetime_frame   s   z(TestTSPlot.test_line_plot_datetime_framec                 C   sn   t d|dd}ttjdt||}t|jtt	|j
}t|j|j
j |jg d }t|j d S )Nr~   rK   rL   r   )r   rN         )r   r   r:   r;   r<   r=   rS   rR   r
   asarrayr"   r&   r'   inferred_freqilocr   r3   r3   r4   test_line_plot_inferred_freq  s   z'TestTSPlot.test_line_plot_inferred_freqc                 C   sf   t j \}}tdd}ttt||d}t|d d |dd  g}|j|d t	|dr1J d S )Nz2001-1-1z	2001-1-10r!   rN   r   rj   r   )
r?   r@   rA   r   r   r>   rS   r   r'   hasattr)r.   rF   r1   r   r0   r3   r3   r4   test_fake_inferred_business  s   
z&TestTSPlot.test_fake_inferred_businessc                 C   s.   t tjdtjdtdddd}t|j d S )Nr6   r   r   r   r!   )r   r:   r   r   r   r&   r'   )r.   r   r3   r3   r4   test_plot_offset_freq  s   z TestTSPlot.test_plot_offset_freqc                 C   s:   t dddd}ttjdt||d}t|j d S )Nz
2023-01-01BQSr6   rL   r   r!   )	r   r   r:   r;   r<   r=   rS   r&   r'   r.   drr   r3   r3   r4   test_plot_offset_freq_business  s   z)TestTSPlot.test_plot_offset_freq_businessc                 C   sR   t tdddtdddtdddg}ttjdt||d}t|j	 d S )N  r%   r      r   r!   )
r
   r   r   r:   r;   r<   r=   rS   r&   r'   r   r3   r3   r4    test_plot_multiple_inferred_freq#  s   &z+TestTSPlot.test_plot_multiple_inferred_freqzApi changed in 3.6.0)reasonc                 C   s   dd l m  m  m} tdddd}ttjd	t
|df|d}tj \}}|j|d | }| }| }t||D ]\}	}
||	d	}t|
 }t
|r^||ks^J qBd S )
Nr   z2012-6-22 21:59:51.960928r     rL   r   r!   rj   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r	   r:   r;   r<   r=   rS   r?   r@   rA   r'   	get_xaxisget_ticklocsget_ticklabelszip_from_ordinalstrftimestrget_text)r.   convrU   rE   rF   r1   axistlocstlabelslocrG   xprsr3   r3   r4   test_uhf(  s"   zTestTSPlot.test_uhfc                 C   s   t dddd}ttjdt|df|d}|jg d }tj	
 \}}|j|d t| d	  d d d	f  }d
}t|dd  ||d |g dk  sVJ d S )N2012-6-22 21:59:51ru   r6   rL   r   r!   )r   r%   rN      rj   r   )QΠE>r%   :0yE>)r   r	   r:   r;   r<   r=   rS   r   r?   r@   rA   r'   r   r*   
get_xydatadifffabsall)r.   rU   rE   irregrF   r1   diffssecr3   r3   r4   test_irreg_hf=  s   $0zTestTSPlot.test_irreg_hfc                 C   s   t dddd}ttjdt|df|d}tj	 \}}|j
t|_
|j|d t| d  d d df  }d	}t|d
d  | dk  sQJ d S )Nr   ru   r6   rL   r   r!   rj   r   r   r%   r   )r   r	   r:   r;   r<   r=   rS   r?   r@   rA   r"   astypeobjectr'   r   r*   r   r   r   r   )r.   rU   rV   rF   r1   r   r   r3   r3   r4   test_irreg_hf_objectK  s   $&zTestTSPlot.test_irreg_hf_objectc                 C   s   t tjdtjdtdddd}|jg d }tj \}}|j	|d}|d us*J t
| d  |jD ]
\}}||ks@J q6d S )	Nr6   r   r   r   r!   )r   r%   r      rj   r   )r   r:   r   r   r   r   r?   r@   rA   r'   r   r*   r+   r"   )r.   r   rF   r1   retr   r   r3   r3   r4   "test_irregular_datetime64_repr_bugW  s    z-TestTSPlot.test_irregular_datetime64_repr_bugc                 C   s   t tdtddd}d}|jd  }tjt|d t|t|dd|_W d    n1 s0w   Y  t	j
 \}}|j|d	 | d  d
 |jd jksTJ | d  }tjt|d t|djdksnJ W d    d S 1 syw   Y  d S )Nr   r   r   PeriodDtype\[B\] is deprecatedr   rn   ri   startr   r   rj   r#   data)r   r>   r   r"   to_timestamptmassert_produces_warningFutureWarningrS   r?   r@   rA   r'   r*   r   r   r+   r   freqstr)r.   btsrs   dtrF   r1   rU   r3   r3   r4   test_business_freqe  s   $"zTestTSPlot.test_business_freqc                 C   s   t tjdtjdtdddddd}|d}tj	 \}}|j
|d	 | d
  d |jd
 jks8J | d
  }t|djdksJJ d S )Ni,  r   r   ri   r   r!   BMEry   rj   r   r#   r  )r   r:   r   r   r   r   r   r?   r@   rA   r'   r*   r   r"   r   r+   r   r	  )r.   r
  r0   rF   r1   rU   r3   r3   r4   test_business_freq_convertr  s   
$z%TestTSPlot.test_business_freq_convertc                 C   s   t  }ttjdtjdtdddd|}tj	 \}}|j
|d | d  }d}tjt|d	 t|d
 W d    d S 1 sEw   Y  d S )Nr6   r   r   r   r!   rj   r   z)freq not specified and cannot be inferredrn   r  )r   r   r:   r   r   r   r   r?   r@   rA   r'   r*   r+   rp   rq   r   r   )r.   r   r
  rF   r1   rU   rs   r3   r3   r4   test_freq_with_no_period_alias~  s   "z)TestTSPlot.test_freq_with_no_period_aliasc                 C   sf   t ddddtdd }ttd|d}tj \}}|j|d |	 d	 
 }t|jr1J d S )
Nz
2012-12-20   r   r      minutesr!   rj   r   )r   r   r	   r:   r   r?   r@   rA   r'   r*   r+   r
   is_normalized)r.   rU   rE   rF   r1   r   r3   r3   r4   test_nonzero_base  s   zTestTSPlot.test_nonzero_basec                 C   sl   t dttjdtjdtddddi}tj \}}|j	|d |
 d  }t|j t| d S )	Nr`   r6   r   r   r   r!   rj   r   )r	   r   r:   r   r   r   r?   r@   rA   r'   r*   r+   r  assert_index_equalr"   r   r   )r.   r
  rF   r1   rU   r3   r3   r4   test_dataframe  s   
zTestTSPlot.test_dataframez8ignore:Period with BDay freq is deprecated:FutureWarningobjr6   r   r   r   r!   r%   r`   bc                 C   s^  t j \}}|j|d | }||d d |d d  | }|d |d d ks/J |d |d d ks;J td|jtd|jf}|dd | }t|d |d j	ks^J t|d |d j	kskJ td|jtd|jf}|t
dddt
dd	d | }t|d |d j	ksJ t|d |d j	ksJ | }t j| d S )
Nrj   r   r   r%   r6   1/1/2000z4/1/2000r   r   )r?   r@   rA   r'   get_xlimset_xlimr   r   intr   r   
get_figurerk   )r.   r  rF   r1   xlimresultexpectedrl   r3   r3   r4   test_axis_limits  s&   zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jksJ |td|jks$J |td|jks0J |td|jks<J |td|j	ksHJ |td|jksTJ d S )Nr   ri   rw   r   r   rb   rx   )
r   r   r   r   
get_finderr   _daily_finder_monthly_finder_quarterly_finder_annual_finder)r.   r   r3   r3   r4   test_get_finder  s   zTestTSPlot.test_get_finderc                 C   s  g d}d}t jt|d tdddjgt|  }}W d    n1 s&w   Y  g }g }|D ]O}td|d}ttj	
dt||}	tj \}
}|	j|d	 | }|| d
  | \}}||d | || d
  tj|  q1||ksJ ||ksJ d S )N)r6   rO      i  i  i
  '  z#Period with BDay freq is deprecatedrn   z1999-1-1ri   rM   r   r   rj   r   ?)r  r  r  r   r   rS   r   r   r:   r;   r<   r=   r?   r@   rA   r'   r   appendget_majorticklocsr  r  rk   r  )r.   day_lstrs   xpl1xpl2rs1rs2nr   r   rF   r1   xaxisvminvmaxr3   r3   r4   test_finder_daily  s(   zTestTSPlot.test_finder_dailyc                 C   s   ddg}t djgt|  }}g }g }|D ]T}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d	 |
 }|| d
  |
 \}}|
|d | || d
  t
j|
  q||ksqJ ||kswJ d S )Ng      @r   1988Q11987Q2r   rz   r   r   rj   r   r,  r   r   rS   r   r  r   r:   r;   r<   r=   r?   r@   rA   r'   r   r-  r.  r  r  rk   r  r.   yrsr0  r1  r2  r3  r4  r   r   rF   r1   r5  r6  r7  r3   r3   r4   test_finder_quarterly  "   z TestTSPlot.test_finder_quarterlyc                 C   s   g d}t djgt|  }}g }g }|D ]T}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d |
 }|| d	  |
 \}}|
|d
 | || d	  t
j|
  q||ksqJ ||kswJ d S )N)gffffff?g      @r   r   zJan 1988r:     ry   r   r   rj   r   r,  r;  r<  r3   r3   r4   test_finder_monthly  r?  zTestTSPlot.test_finder_monthlyc                 C   st   t dddd}ttjdt||}tj	 \}}|j
|d | }| d }tddj}||ks8J d S )	Nr9  i   ry   r   r   rj   r   1989Q1)r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r   r.  r   r   )r.   r   r   rF   r1   r5  r   r   r3   r3   r4   test_finder_monthly_long#  s   z#TestTSPlot.test_finder_monthly_longc           	      C   s   g d}dd |D }g }dD ]9}t d|dd}ttjdt||}tj	 \}}|j
|d	 | }|| d
  tj|  q||ksOJ d S )N)r   i    rD    i  i  iz  c                 S   s   g | ]	}t |d djqS )r{   rM   )r   r   .0rd   r3   r3   r4   
<listcomp>/  s    z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r6      1   rQ      iW  i  1987r{   r   r   rj   r   )r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r   r-  r.  rk   r  )	r.   r   r   nyearsr   r   rF   r1   r5  r3   r3   r4   test_finder_annual-  s   zTestTSPlot.test_finder_annualc           	      C   z   d}t dd|d}ttjdt||}tj	 \}}|j
|d | }| d }tdddj}||ks;J d S )	Ni@ 1/1/1999MinrL   r   rj   r   rM   r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r   r.  r   r   )	r.   nminutesr   r   rF   r1   r5  r   r   r3   r3   r4   test_finder_minutely<  s   zTestTSPlot.test_finder_minutelyc           	      C   rO  )	N   rP  r   rL   r   rj   r   rM   rR  )	r.   nhoursr   r   rF   r1   r5  r   r   r3   r3   r4   test_finder_hourlyI  s   zTestTSPlot.test_finder_hourlyc                 C   s   t tjdtjdtdddd}tj|jdd< tj	 \}}|j
|d | }t|d	ks1J |d
 }| }tjj|t|tjd}t|tjjjsOJ |j}|ddd	f  s^J tj|  d S )Nr  r   r   r   r!   r      rj   r%   r   mask
fill_value)r   r:   r   r   r   nanr   r?   r@   rA   r'   r*   rS   r   maMaskedArrayr   
isinstancecorerZ  r   rk   r  r.   r0   rF   r1   linesliner  rZ  r3   r3   r4   	test_gapsU  s   zTestTSPlot.test_gapsc                 C   s   t tjdtjdtdddd}|jg d }tj|jdd< tj	 \}}|j
|d	}| }t|d
ks8J |d }| }tjj|t|tjd}t|tjjjsVJ |j}|ddd
f  seJ tj|  d S )Nr  r   r   r   r!   	r   r%   r   r   r   r7   r@        r   r   rj   r%   r   rY  )r   r:   r   r   r   r   r\  r?   r@   rA   r'   r*   rS   r   r]  r^  r   r_  r`  rZ  r   rk   r  ra  r3   r3   r4   test_gaps_irregularh  s    zTestTSPlot.test_gaps_irregularc           	      C   s   g d}t tjdt||}tj|jdd< tj	
 \}}|j|d | }t|dks3J |d }| }tjj|t|tjd}t|tjjjsQJ |j}|dddf  s`J d S )Nre  r   r   rj   r%   r   rY  )r   r:   r;   r<   r=   rS   r\  r   r?   r@   rA   r'   r*   r   r]  r^  r   r_  r`  rZ  r   )	r.   rU   r   rF   r1   rb  rc  r  rZ  r3   r3   r4   test_gaps_non_ts}  s   zTestTSPlot.test_gaps_non_tsc           
      C   s  t tjdtjdtdddd}tj|jdd< tj	 \}}|j
|d t|jd	 |jd
 dd}t tjdt||}|j
dd | }t|dksRJ t|j dks]J |d	 }| }tjj|t|tjd}t|tjjjs{J |j}	|	dddf  sJ d S )Nr  r   r   r   r!   r   rX  rj   r   r$   12hrM   r   Tsecondary_yr%   rY  )r   r:   r   r   r   r\  r   r?   r@   rA   r'   r"   r;   r<   r=   rS   r*   right_axr   r]  r^  r   r_  r`  rZ  r   )
r.   lowrF   r1   idxhru   rb  rc  r  rZ  r3   r3   r4   test_gap_upsample  s$   zTestTSPlot.test_gap_upsamplec                 C   s   t tjdd}tj \}}|jdd}t	|dsJ t	|dr&J |
 }| d }t | | }t|| |  dksIJ |d   rSJ tj| d S )	Nr   r6   Trk  left_axrm  r   right)r   r:   r;   r<   r=   r?   r@   rA   r'   r   get_axesr*   r   r+   r  assert_series_equal	get_yaxisget_ticks_positionget_visiblerk   )r.   r   rl   rF   r1   axesrc  r   r3   r3   r4   test_secondary_y  s   zTestTSPlot.test_secondary_yc                 C   sn   t tjdd t tjdd}tj \}}|j|d |	 
 dks-J tj|  d S )Nr   r6   rj   left)r   r:   r;   r<   r=   r?   r@   rA   r'   ru  rv  rk   r  )r.   ser2rF   ax2r3   r3   r4   test_secondary_y_yaxis  s   z!TestTSPlot.test_secondary_y_yaxisc                 C   s   t tjdd}t tjdd}| }|jdd}|  s(J t|dr/J t|ds6J t|ds=J t|drDJ d S )Nr   r6   Trk  rq  rm  )	r   r:   r;   r<   r=   r'   ru  rw  r   )r.   r   r{  r1   r|  r3   r3   r4   test_secondary_both  s   zTestTSPlot.test_secondary_bothc           	      C   s   t ddd}ttjdd|}tj \}}|j	dd}t
|ds&J t
|dr-J | }| d	 }t| |  }t|| |  d
ksRJ |d	   r\J tj| d S )Nr  r6   r   r   Trk  rq  rm  r   rr  )r   r   r:   r;   r<   r=   r?   r@   rA   r'   r   rs  r*   r   r+   r  r  rt  ru  rv  rw  rk   )	r.   rU   r   rl   rF   r1   rx  rc  r   r3   r3   r4   test_secondary_y_ts  s   zTestTSPlot.test_secondary_y_tsc                 C   sf   t ddd}ttjdd|}tj \}}|j	|d |
  dks)J tj|  d S )Nr  r6   r   r   rj   rz  )r   r   r:   r;   r<   r=   r?   r@   rA   r'   ru  rv  rk   r  )r.   rU   r{  rF   r|  r3   r3   r4   test_secondary_y_ts_yaxis  s   z$TestTSPlot.test_secondary_y_ts_yaxisc                 C   s@   t ddd}ttjdd|}| }|  sJ d S )Nr  r6   r   r   )	r   r   r:   r;   r<   r=   r'   ru  rw  )r.   rU   r{  r1   r3   r3   r4   test_secondary_y_ts_visible  s   z&TestTSPlot.test_secondary_y_ts_visiblec                 C   s~   t d ttjdd}tj	 \}}|j
dd|d}t|ds&J t|dr-J | }|d	   d
ks=J d S )Nscipyr   r6   Tdensityrl  kindr1   rq  rm  r%   rr  )rp   importorskipr   r:   r;   r<   r=   r?   r@   rA   r'   r   rs  ru  rv  r.   r   rl   r1   rx  r3   r3   r4   test_secondary_kde  s   
zTestTSPlot.test_secondary_kdec                 C   sX   t tjdd}tj \}}|jdd|d |	 }|d 
  dks*J d S )Nr   r6   Tbarr  r%   rr  )r   r:   r;   r<   r=   r?   r@   rA   r'   rs  ru  rv  r  r3   r3   r4   test_secondary_bar  s
   zTestTSPlot.test_secondary_barc                 C   s|   t tjddg dd}|jddgdd}|d	   d
ks$J |d   dks0J |d   d
ks<J d S )Nr   r   rN   r`   r  cr   r`   r  T)rl  rA   r   rr  r%   rz  r	   r:   r;   r<   r=   r'   ru  rv  r.   rE   rx  r3   r3   r4   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s%J |d   dks1J |d   dks=J d S )Nr   r  r  r  r  r`   r  T)r  rl  rA   r   rr  r%   rz  r  r  r3   r3   r4   test_secondary_bar_frame  s   z#TestTSPlot.test_secondary_bar_framec                 C   s  t tjdtjdtddddd}|jg d }tj \}}|j	|d |j	d	|d
}|
 }d}tjt|d7 t|d  }t|d  }	t||jd t|	|jd | \}
}|j }W d    n1 ssw   Y  |
|d jksJ ||d jksJ d S Nrg  r   r   ri   r   r!   r   r   r6   r   r@        rf  rj   gr   r   rn   r   r%   r$   )r   r:   r   r   r   r   r?   r@   rA   r'   r*   r  r  r  r   r+   r  r"   r   r  r   r.   s1s2rF   r1   r|  rb  rs   idx1idx2rz  rr  pidxr3   r3   r4   test_mixed_freq_regular_first  s(   	z(TestTSPlot.test_mixed_freq_regular_firstc                 C   s   t tjdtjdtdddd}|jg d }tj \}}|j	d|d |j	|d	 t
|d
r2J | }|d  }t||jtj |d  }t||jtj d S Nrg  r   r   r   r!   r  r  r   rj   r   r   r%   )r   r:   r   r   r   r   r?   r@   rA   r'   r   r*   r+   r  assert_numpy_array_equalr"   r   r   rR   r.   r  r  rF   r1   rb  x1x2r3   r3   r4   test_mixed_freq_irregular_first!  s   z*TestTSPlot.test_mixed_freq_irregular_firstc                 C   s(  t tjdtjdtddddd }|jg dd d f }tj	 \}}|j
|d |j
d	|d
}| }d}tjt|d9 t|d  }t|d  }	||jds[J |	|jdsfJ | \}
}|j }W d    n1 s{w   Y  |
|d jksJ ||d jksJ d S r  )r   r:   r   r   r   to_framer   r?   r@   rA   r'   r*   r  r  r  r   r+   equalsr"   r   r  r   r  r3   r3   r4    test_mixed_freq_regular_first_df0  s,   z+TestTSPlot.test_mixed_freq_regular_first_dfc                 C   s   t tjdtjdtdddd }|jg dd d f }tj	 \}}|j
d|d |j
|d	 t|d
r8J | }|d  }t||jtj |d  }t||jtj d S r  )r   r:   r   r   r   r  r   r?   r@   rA   r'   r   r*   r+   r  r  r"   r   r   rR   r  r3   r3   r4   "test_mixed_freq_irregular_first_dfF  s   z-TestTSPlot.test_mixed_freq_irregular_first_dfc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	jdksOJ qAd S )
NrP  m  rw   r   r@  r   r   rj   r  r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r*   r   r+   r   r.   ro  idxlhighrn  rF   r1   rc  r3   r3   r4   test_mixed_freq_hf_firstV     z#TestTSPlot.test_mixed_freq_hf_firstc                 C   s   t dddd}tjdd}t||d}|d }tj	
 \}}|j|d	}|jd
|d |jd  d |jd  d ksEJ d S )Nz2012-01-01 13:00
2012-01-02r   rM   r   r@  r!   rv   rj   rr   r   r%   )r   r:   r;   r<   r=   r   r   interpolater?   r@   rA   r'   rb  r+   )r.   ts_indts_datar0   ts2rF   r1   r3   r3   r4   test_mixed_freq_alignmenta  s   ,z$TestTSPlot.test_mixed_freq_alignmentc           	      C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
d|d	 |j
d|d	 | D ]}t| d
jdksQJ qC| }t|jdks_J tj|  d S )NrP  r  rw   r   r@  r   r   T)legendr1   r  )r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r*   r   r+   r   
get_legendtextsrk   r  )	r.   ro  r  r  rn  rF   r1   rc  legr3   r3   r4   test_mixed_freq_lf_firstn  s   z#TestTSPlot.test_mixed_freq_lf_firstc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	jdksOJ qAd S )
NrP     rv   r   r   r   r   rj   r  r  r  r3   r3   r4   test_mixed_freq_lf_first_hourly|  r  z*TestTSPlot.test_mixed_freq_lf_first_hourlyc                 C   s   t tjdtjdtdddd}|jg d }d}tjt|d t	d	dd
d}W d    n1 s2w   Y  t tj
dt||}tj \}}|j|d |j|d d S )Nr  r   r   r   r!   )r   r%   r   rN   r   r   r   r      r7   r6   rf              r   rn   z1/3/2000ri   r   r   rj   )r   r:   r   r   r   r   r  r  r  r   r;   r<   r=   rS   r?   r@   rA   r'   )r.   r0   r   rs   r   psrF   r1   r3   r3   r4   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||}tjjddd\}\}}|j|d	 |j|d	 |j	d
ksEJ |j	d
ksLJ |j
d  d |j
d  d ks`J d S )N
2015-01-01rN   r   r   r%   r   T)nrowssharexrj   ry   r   r#   )r   rT   r   r>   rS   r?   r@   rA   r'   r   rb  r   r.   r  r  r  r  rF   ax1r|  r3   r3   r4   test_mixed_freq_shared_ax  s   ,z$TestTSPlot.test_mixed_freq_shared_axc                 C   s   t dddd}|d d |dd  }ttt||}ttt||}tj \}}| }|j	|d |j	|d |j
d  d	 |j
d  d	 ksQJ d S )
Nr  rN   r   r   r%   r   rj   r   r#   r   rT   r   r>   rS   r?   r@   rA   twinxr'   rb  r   r  r3   r3   r4    test_mixed_freq_shared_ax_twin_x  s   ,z+TestTSPlot.test_mixed_freq_shared_ax_twin_xzTODO (GH14330, GH14322)c                 C   s   t dddd}|d d |dd  }ttt||}ttt||}tj \}}| }|j	|d |j	|d |j
d  d	 |j
d  d	 ksQJ d S )
Nr  rN   ry   r   r%   r   rj   r   r#   r  r  r3   r3   r4   0test_mixed_freq_shared_ax_twin_x_irregular_first  s   ,z;TestTSPlot.test_mixed_freq_shared_ax_twin_x_irregular_firstc                 C   s   t j \}}tdtdg}ttt||}|j|d |	 d 
 }|j t| ks2J t| |j ks?J d S )Nr  z
2015-01-03rj   r   )r?   r@   rA   r   r   r   r>   rS   r'   r*   r+   r"   rv   max)r.   rF   r1   dtiru   r2   r3   r3   r4   test_nat_handling  s   zTestTSPlot.test_nat_handlingc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d d	}tjt|d
 |j
|dd W d    d S 1 sSw   Y  d S )NrP  4   rx   r   r@  r   r   rj   zz'how' is not a valid keyword for plotting functions. If plotting multiple objects on shared axes, resample manually first.rn   foo)r1   how)r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   rp   rq   r   )r.   ro  r  r  rn  rF   r1   rs   r3   r3   r4   *test_to_weekly_resampling_disallow_how_kwd  s   "z5TestTSPlot.test_to_weekly_resampling_disallow_how_kwdc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	j|jksPJ qAd S )
NrP  r  rx   r   r@  r   r   rj   r  r  r  r3   r3   r4   test_to_weekly_resampling  s   z$TestTSPlot.test_to_weekly_resamplingc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | jtj}tjg d	tjd
}| D ](}	t|	 dj|jkscJ |	jdd}
t|
dkrvt|
| qTt|
| qTd S )NrP  r  rx   r   r@  r   r   rj   i  i  i  i  i  i   i  i  i  i  i  i  r   r  Forig)r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r   asi8r   r   r^   r*   r   r+   r   r  r  )r.   ro  r  r  rn  rF   r1   
expected_h
expected_lrc  r2   r3   r3   r4   test_from_weekly_resampling  s&   z&TestTSPlot.test_from_weekly_resamplingzkind1, kind2)rc  area)r  rc  c                 C   s  t dddd}t dddd}ttjdt|df|g d	d
}ttjdt|df|g d	d
}t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sxJ t|jdd|	 |
|| j7 }
t|jdd|
 qe| jtj}	tjt|	tjd}
tdD ]1}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qd S )NrP  r  rx   r   r@  r   r   rN   r   r%   r   r   Tr  stackedr1   r  r   Fr  r  )r   r	   r:   r;   r<   rS   r?   r@   rA   r'   r^   r   zerosr>   rb  r   r+   r   r  r  rR   r   r   r  r   )r.   kind1kind2ro  r  r  rn  rF   r1   
expected_x
expected_yr_   rc  r3   r3   r4   $test_from_resampling_area_line_mixed  sF   
z/TestTSPlot.test_from_resampling_area_line_mixedc                 C   s  t dddd}t dddd}ttjdt|df|g d	d
}ttjdt|df|g d	d
}tj \}}|j	|d|d |j	|d|d |
 jtj}	tjt|	tjd}
tdD ]/}|j| }t| dj|jksxJ t|jdd|	 |
|| j7 }
t|jdd|
 qdtjg dtjd}	tjt|	tjd}
tdD ]1}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qd S )NrP  r  rx   r   r@  r   r   rN   r  r   Tr  r   r  Fr  r  )r   r	   r:   r;   r<   rS   r?   r@   rA   r'   r   r  r   r   r  r>   rb  r   r+   r   r  r  rR   r   r^   )r.   r  r  ro  r  r  rn  rF   r1   r  r  r_   rc  rb  r3   r3   r4   0test_from_resampling_area_line_mixed_high_to_low2  sF   
z;TestTSPlot.test_from_resampling_area_line_mixed_high_to_lowc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d t| dksGJ | D ]}t| d	jd
ksYJ qKd S Nz2014-07-01 09:00ru   2   rL   100msr   r   rj   r  r   r  r  r3   r3   r4   "test_mixed_freq_second_millisecondh     z-TestTSPlot.test_mixed_freq_second_millisecondc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d t| dksGJ | D ]}t| d	jd
ksYJ qKd S r  r  r  r3   r3   r4   .test_mixed_freq_second_millisecond_low_to_highv  r  z9TestTSPlot.test_mixed_freq_second_millisecond_low_to_highc                 C   sX   t dddt dddt dddg}ttjdt|dft|td}t	|j
 d S )Nr   r%   r   rg  r   rN   r   )r   r	   r:   r;   r<   r=   rS   r
   r   r&   r'   rY   r3   r3   r4   test_irreg_dtypes  s   "
zTestTSPlot.test_irreg_dtypesc                 C   s^   t ddd}|g d t}ttjdt|df|}t	j
 \}}t|j|d d S )Nr  r6   r   )r   r   r   r7   r   rN   rj   )r   r   r   r	   r:   r;   r<   r=   rS   r?   r@   rA   r&   r'   )r.   rU   rE   rF   r1   r3   r3   r4   test_irreg_dtypes_dt64  s
    z!TestTSPlot.test_irreg_dtypes_dt64c                    s*  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d | }| }t||D ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qWd S )Nr%   rN   r  r   r   rg  c                    "   g | ]} t t|d   qS r  r   r  r   rF  tr3   r4   rH       " z(TestTSPlot.test_time.<locals>.<listcomp>r  r!   rj   <   %H:%M:%S%H:%M)r   r:   r;   r<   integerscumsumr^   r	   r=   rS   r?   r@   rA   r'   
get_xticksrB   r   divmodr  r   r   r   r.   deltasr0   rE   rF   r1   tickslabels_tick_labelmru   r   r   r   r3   r  r4   	test_time  s0   zTestTSPlot.test_timec                    s  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d | }| }t||D ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qW|dd | }| }t||D ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qd S )Nr%   rN   r  r   r   rg  c                    r  r  r  rF  r  r3   r4   rH    r  z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r  r!   rj   r  r  r  z1:30z5:00)r   r:   r;   r<   r  r  r^   r	   r=   rS   r?   r@   rA   r'   r  rB   r   r  r  r   r   r   r  r  r3   r  r4   test_time_change_xlim  sJ   z TestTSPlot.test_time_change_xlimc                    s  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d}| }| }t||D ]m\}}	tt|d\}
}t|t| d }t|
d\}}
|	 }t	|dkr|d dkrt||
||d}n.|d dkrt||
||dd d }n|dkrt||
||d}n
t||
||d}||ksJ qWd S )Nr%   rN   r  r   r   rg  c                    r  ))microsecondsr  rF  r  r3   r4   rH    r  z.TestTSPlot.test_time_musec.<locals>.<listcomp>r  r!   rj   r  g    .Ai  r   r  r  )r   r:   r;   r<   r  r  r^   r	   r=   rS   r?   r@   rA   r'   r  rB   r   r  r  roundr   r   r   )r.   r  r0   rE   rF   r1   r   r  r  r  r  ru   r   r   r   r   r3   r  r4   test_time_musec  s:   zTestTSPlot.test_time_musecc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
d	|d
}| D ]}t| jdksOJ qBt|dsWJ t|dr^J |j D ]}t| jdkspJ qcd S )NrP  r  rw   r   r@  r   r   rj   Trl  r1   rq  rm  )r   r   r:   r;   r<   r=   rS   r?   r@   rA   r'   r*   r   r+   r   r   rq  r  r3   r3   r4   test_secondary_upsample  s   z"TestTSPlot.test_secondary_upsamplec                 C   s(  t j }|d}ttjddt	t
dtdtdddd	d
}|jddg|d | }t| dks:J | d  dksFJ | d  dksRJ | d  dks^J | d  dksjJ |j d u ssJ t }| D ]	}||  qzt|dksJ t j| d S )N   r   r6   r   ABCDr   
2000-01-01r6   ri   r   r   r"   rh   r  r   r   	A (right)r%   z	B (right)r   rN   rw   )r?   r@   figureadd_subplotr	   r:   r;   r<   r=   r
   listr   r   r'   r  rS   r*   	get_textsr   rm  setaddr   rk   )r.   rl   r1   rE   r  colorsrc  r3   r3   r4   test_secondary_legend  s(   

z TestTSPlot.test_secondary_legendc                 C   s   t tjddttdtdtddddd	}t	j
 }|d
}|jddgd|d | }t| dks;J | d  dksGJ | d  dksSJ | d  dks_J | d  dkskJ t	j
| d S )Nr   r  r  r   r  r6   ri   r   r  r  rh   r   F)rl  
mark_rightr1   r   r   r%   rN   rw   )r	   r:   r;   r<   r=   r
   r  r   r   r?   r@   r  r  r'   r  rS   r*   r  r   rk   r.   rE   rl   r1   r  r3   r3   r4   test_secondary_legend_right*  s   

z&TestTSPlot.test_secondary_legend_rightc                 C   s   t tjddttdtdtddddd	}t	j
 \}}|jd
dg|d | }| d  dks9J | d  dksEJ t	j
| d S )Nr   r  r  r   r  r6   ri   r   r  r  rh   )r  rl  r1   r   r  r%   r	   r:   r;   r<   r=   r
   r  r   r   r?   r@   rA   r'   r  r  r   rk   r  r3   r3   r4   test_secondary_legend_bar;  s   z$TestTSPlot.test_secondary_legend_barc                 C   s   t tjddttdtdtddddd	}t	j
 \}}|jd
dgd|d | }| d  dks:J | d  dksFJ t	j
| d S )Nr   r  r  r   r  r6   ri   r   r  r  rh   F)r  rl  r  r1   r   r%   r  r  r3   r3   r4   test_secondary_legend_bar_rightH  s   z*TestTSPlot.test_secondary_legend_bar_rightc                 C   s   t tjddttdtdtddddd	}t	j
 }|d
}t tjddttdtdtddddd	}|jddg|d}| }t| dksSJ |j d u s\J t }| D ]	}||  qct|dksuJ t	j
| d S )Nr   r  r  r   r  r6   ri   r   r  r  r   rw   r  r   )r	   r:   r;   r<   r=   r
   r  r   r   r?   r@   r  r  r'   r  rS   r*   rm  r  r  r   rk   r.   rE   rl   r1   r  r  rc  r3   r3   r4   test_secondary_legend_multi_colU  s*   

z*TestTSPlot.test_secondary_legend_multi_colc                 C   s   t dtdd ttdtdtdd tdD tdd	}tj	
 }|d
}|jddg|d}| }t| dksAJ |j d u sJJ t }| D ]	}||  qQt|dkscJ tj	  d S )N皙?x   r  r   r  r   c                 S      g | ]}d | qS zi-r3   rG  r_   r3   r3   r4   rH  s      z:TestTSPlot.test_secondary_legend_nonts.<locals>.<listcomp>r  r  r  rh   ri   r  r   )r	   r:   r   reshaper
   r  r   r>   r?   r@   r  r  r'   r  rS   r*   rm  r  r  r   rk   r!  r3   r3   r4   test_secondary_legend_nontsn  s    

z&TestTSPlot.test_secondary_legend_nontsc                 C   s   t dtdd ttdtdtdd tdD tdd	}tj	
 }|d
}|jddg|d}| }t| dksAJ |j d u sJJ t }| D ]	}||  qQt|dkscJ d S )Nr#  r$  r%  r  r   c                 S   r&  r'  r3   r(  r3   r3   r4   rH    r)  zDTestTSPlot.test_secondary_legend_nonts_multi_col.<locals>.<listcomp>r  r  r  r   rw   r  r   )r	   r:   r   r*  r
   r  r   r>   r?   r@   r  r  r'   r  rS   r*   rm  r  r  r   r!  r3   r3   r4   %test_secondary_legend_nonts_multi_col  s   

z0TestTSPlot.test_secondary_legend_nonts_multi_colc                 C   s   t dddd}ttjdt|df|}tj	 \}}|j
|d}| }| D ]}t| dkr>| d	ks>J q,d S )
Nr   r@  r   r   r   rN   rj   r   r  )r   r	   r:   r;   r<   r=   rS   r?   r@   rA   r'   r   r   r   get_rotation)r.   r   rE   rF   r1   r5  rc  r3   r3   r4   test_format_date_axis  s    z TestTSPlot.test_format_date_axisc                 C   sX   t dddd}ttt|}tj \}}|j||dd}t	t
|d  | d S )Nr  r6   rw   r  r{   )rG   r   )r   r  r>   rS   r?   r@   rA   r'   r  r  r   r+   )r.   rd   re   rF   r1   rb  r3   r3   r4   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}tj \}}|jd
d |D |ddd |D |ddd\}}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  r%   g      $@g      &@g      ?g      (@c                 S      g | ]}|  qS r3   	toordinalrF  r3   r3   r4   rH        z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>-c                 S   r2  r3   r3  rF  r3   r3   r4   rH    r5  r   )	linewidthc                 S   r2  r3   r3  rF  r3   r3   r4   rH    r5  r   r   c                 S   r2  r3   r3  rF  r3   r3   r4   rH    r5  )r   r:   r   r?   r@   rA   r'   r^   r   r  r  r   )	r.   datesvalues1values2rF   r1   line1line2expr3   r3   r4   test_mpl_nopandas  s(    zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} ttjdtjdtdddd}|jg d }tj	
 \}}|d d	 j|d
 |d	d  j|d
 | \}}|||j d|ksLJ |||j d|ksZJ d S )Nr   DatetimeConverterrg  r   r   r   r!   r%   r   r   r   r  r7   r6   r@  r  r  rf  r  r  r   rj    r   r@  r   r:   r   r   r   r   r?   r@   rA   r'   r  convertr"   rv   r  r.   r@  r0   ts_irregularrF   r1   rz  rr  r3   r3   r4    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}tj \}}|j|d | \}}|jd|d | \}	}
||	ks:J ||
k s@J d S )	N)r%   r   rN   r   )r   r   r   r  r%   r!   r   rj   Tr  )r   r?   r@   rA   r'   r  r.   index_1index_2r  r  rF   r1   left_beforeright_before
left_afterright_afterr3   r3   r4   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}tj \}}|j|d	 | \}}|jd
|d | \}	}
||	ks@J ||
k sFJ d S )Nr  r   rw   r  z
2000-01-05r%   r!   r   rj   Tr  )r   r   r?   r@   rA   r'   r  rH  r3   r3   r4    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}tj \}}|j|d | \}}|d jd	|d
 | \}}||ks8J ||ks>J d S )Nr  r+  rv   r   r%   r!   rj   rw   Tr  )	r   r   r?   r@   rA   r'   r  resamplemean)	r.   r   r0   rF   r1   rK  rL  rM  rN  r3   r3   r4   #test_secondary_y_mixed_freq_ts_xlim  s   z.TestTSPlot.test_secondary_y_mixed_freq_ts_xlimc                 C   s   ddl m} ttjdtjdtdddd}|jg d }tj	
 \}}|d d	 j|d
 |d	d  jd|d |d d	 j|d
 | \}}|||j d|ksWJ |||j d|kseJ d S )Nr   r?  rg  r   r   r   r!   rA  r   rj   Tr  rB  rC  rE  r3   r3   r4   "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}tj \}}|| tddddtddddg}|| d S )Ni  r%   r   r@  )r   r?   r@   rA   r'   r   )r.   rR   rF   r1   r3   r3   r4   test_plot_outofbounds_datetime  s
   
z)TestTSPlot.test_plot_outofbounds_datetimec                 C   s   dd t dD }tdddd}tt jdt|df|}tj	
 \}}|jd|d	 tj	  | }d
d |D }t|t|ksIJ ||ksOJ d S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr3   r(  r3   r3   r4   rH  !  s    zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r6   0nsr   r   rN   r8   c                 S   r2  r3   r   rF  r3   r3   r4   rH  *  r5  )r:   r   r   r	   r;   r<   r=   rS   r?   r@   rA   r'   drawrB   r.   expected_labelsr   rE   rF   r1   r  result_labelsr3   r3   r4   "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dt|df|}tj	 \}}|j
d|d}tj  | }d	d
 |D }t|t|ksCJ ||ksIJ 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:20rV  r6   1 dr   r   rN   r8   c                 S   r2  r3   rX  rF  r3   r3   r4   rH  B  r5  z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r	   r:   r;   r<   r=   rS   r?   r@   rA   r'   rY  rB   rZ  r3   r3   r4    test_format_timedelta_ticks_wide.  s    
z+TestTSPlot.test_format_timedelta_ticks_widec                 C   s6   t tdtddd}tj \}}t|j|d d S )Nr   1dayr   rj   )r   r>   r   r?   r@   rA   r&   r'   )r.   ru   rF   r1   r3   r3   r4   test_timedelta_plotF  s   zTestTSPlot.test_timedelta_plotc                 C   J   t dddd}ttjdt||}tj	 \}}t
|j|d d S )N1 day 2 hr 30 min 10 sr6   r^  r   r   rj   r   r   r:   r;   r<   r=   rS   r?   r@   rA   r&   r'   r.   r"   ru   rF   r1   r3   r3   r4   test_timedelta_long_periodL  r   z%TestTSPlot.test_timedelta_long_periodc                 C   rb  )Nrc  r6   z1 nsr   r   rj   rd  re  r3   r3   r4   test_timedelta_short_periodS  r   z&TestTSPlot.test_timedelta_short_periodc                 C   s`   t dddd}|}tddd}tdddd d d }tj \}}|j||g||gd	 d S )
Nr   r6   r   r   r   r%   g?r$   )weights)r   r:   r   r?   r@   rA   hist)r.   r   rd   w1w2rF   r1   r3   r3   r4   	test_histZ  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}tj \}}|j|d |j|d |j|d d S )Nr[   rE  r@  r1  r   i  r!   i  i  r0  rj   )r   r   r?   r@   rA   r'   )r.   r  r  rF   r1   r3   r3   r4   test_overlapping_datetimec  s$   





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converterc                 C   s   t tjddtdddd}| }tt	 |j|j
|jdd W d    n1 s/w   Y  |j\}}t| |  d S )Nr   r6   z
1970-01-02r   r!   r  )r   )r   r:   r;   r<   r=   r   r'   r  r  DeprecationWarningr"   rR   rb  r  r   )r.   ru   r1   l1l2r3   r3   r4   test_add_matplotlib_datetime64}  s   

z)TestTSPlot.test_add_matplotlib_datetime64c                 C   s|   t tjddddgd}tdddd	|d
< tj \}}|jd
d|d tj	  |
 d }d}| |ks<J d S )Nr   )r6   r   rd   re   r  z
2018-01-01r6   rw   r   r   )rd   re   r  r   )r	   r:   r;   r<   r   r?   r@   rA   scatterrY  rB   r   )r.   rE   rF   r1   rG   r"  r3   r3   r4   "test_matplotlib_scatter_datetime64  s   
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   <   t g d}t|g dd}|jddd}t|dd d S )N)
2020-05-01
2020-05-02z
2020-05-03r[   rd   re   rd   re   r   xrotr   r	   r'   r   r.   rd   rE   rx  r3   r3   r4   test_check_xticks_rot  s   z TestTSPlot.test_check_xticks_rotc                 C   rt  )Nru  rv  z
2020-05-04r[   rw  rd   re   r  rx  rz  r{  r3   r3   r4   test_check_xticks_rot_irregular  s   z*TestTSPlot.test_check_xticks_rot_irregularc                 C   sb   t g d}t|g dd}|djddd}t|dd	 |djdd
d}t|dd	 d S )Nr}  r[   rw  rd   re   T)re   	use_indexr  rx  Fr   )r   r	   	set_indexr'   r   r{  r3   r3   r4   test_check_xticks_rot_use_idx  s   z(TestTSPlot.test_check_xticks_rot_use_idxc                 C   s^   t g d}t|g dd}|jddddd}t|dd	 |jdddd
d}t|dd	 d S )Nr}  r[   rw  rd   re   T)rd   re   rA   r  r  rx  Fr   rz  r{  r3   r3   r4   test_check_xticks_rot_sharex  s   z'TestTSPlot.test_check_xticks_rot_sharexN)__name__
__module____qualname__rp   markfilterwarningsr5   rH   rW   rZ   ra   rm   rt   parametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   xfailr   r   r   r   r  r  r  r  r  r   r:   r   r   r   r	   r#  r)  r8  r>  rA  rC  rN  slowrT  rW  rd  rh  ri  rp  ry  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  r  r  r  r  r
  r  r  r  r  r   r"  r+  r,  r.  r/  r>  rG  rO  rP  rS  rT  rU  r]  r_  ra  rf  rg  rl  rm  rq  rs  r|  r~  r  r  r3   r3   r3   r4   r   /   sR   


		

	




	


	
	






		



7
5	-#

		

r   c              	   O   sf  dd l m} | }z|  |d}|d| }t|dd }	| |i |}
|
d us/J |d| }|d urR|jj	}t
|trG|j}|	d u rR|j	|ksRJ |d ur]t|j	dd}|d urk|	d u rk||kskJ |d}||d< | |i |}
|
d usJ tjdd}t|| W d    n1 sw   Y  W || d S W || d S || w )	Nr   r  r1   r   T)	is_period   )return_filelike)matplotlib.pyplotr@   gcfclfr  popgcagetattrr"   r   r_  r   r   r   r  ensure_cleanpickledumprk   )fr   seriesargskwargspltrl   r1   orig_axorig_axfreqr   dfreqax_freqpathr3   r3   r4   r&     s<   


r&   )NN)+__doc__r   r   r   r   r  numpyr:   rp   pandas._libs.tslibsr   r   pandas._libs.tslibs.dtypesr   pandasr	   r
   r   r   r   r   r   pandas._testing_testingr  pandas.core.indexes.datetimesr   r   r   pandas.core.indexes.periodr   r   r   pandas.core.indexes.timedeltasr   pandas.tests.plotting.commonr   pandas.tseries.offsetsr   r  r?   r   r&   r3   r3   r3   r4   <module>   s<    $	
             