U
    _{fa                     @   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)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ejd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ejddddddddddg	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ddddddddgd'd( Zejd)d*d+d,d-d.d/d0d1gd2d3 Zejddddddddddg	d4d5 Zejdddddddddgd6d7 Zejd)d*d+d,d-d.d/d0d1gd8d9 Zejddddddddddg	d:d; Zejddddddddddg	d<d= Zd>d? Zd@dA ZdBdC ZejjdDdE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_ Z*d`da Z+dbdc Z,ejj-ddde Z.dfdg Z/dhdi Z0djdk Z1dldm Z2dndo Z3e4j5dpdq Z6drds Z7dtdu Z8dvdw Z9dxdy Z:dzd{ Z;d|d} Z<d~d Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMejjdDdEdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[ejjddE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| d  }|d j|d jfd	ksft	|d
 j|d
 jfdkst	d S )N1/1/2011   H)periodsfreqtzg     g@g     t@indexr   r   r   )   r   )
r   r   _check_plot_worksplotlist	get_lines	get_xdatahourminuteAssertionError)selfZtz_aware_fixturer   r    tsaxxdata r0   f/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/plotting/test_datetimelike.pytest_ts_plot_with_tz/   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
   	   r   r   Zfontsizer.   )r   nprandomrandnrangepltsubplotsr%   get_xticklabelsZget_yticklabelsZget_fontsizer+   )r,   dffigr.   labelr0   r0   r1   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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MSd   r   r   r      r   r   (   -   c   z2008-1-1 00:15:00Z15Tr3   )r   r   valuesr   r6   r7   r8   lenr$   r%   union)r,   idxr=   df2r0   r0   r1   test_frame_inferredD   s    

zTestTSPlot.test_frame_inferredc                 C   s<   t dddg}t||d}t|j|d t|j|d d S )Nr#   r   rE   r   )Zxerr)Zyerr)r6   arrayr   r$   r%   )r,   iar0   r0   r1   test_is_error_nozeroindexW   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 )NrA   ArE   rC   xyzr#   r   )rS   Br.   zno numeric data to plotmatch)r   r   r:   r;   r%   rJ   r'   r+   closepytestraises	TypeError)r,   rL   r=   r>   r.   msgr0   r0   r1   test_nonnumeric_exclude^   s    z"TestTSPlot.test_nonnumeric_excluder   STr   DWMQrS   c                 C   sD   t d|dd}ttjt||}| j \}}t|j	|d d S N
12/31/1999rB   rC   rX   )
r   r   r6   r7   r8   rJ   r:   r;   r$   r%   r,   r   rL   ser_r.   r0   r0   r1   test_tsplot_periodk   s    zTestTSPlot.test_tsplot_periodzQ-DECZ1B30Minc                 C   sD   t d|dd}ttjt||}| j \}}t|j	|d d S rg   )
r   r   r6   r7   r8   rJ   r:   r;   r$   r%   ri   r0   r0   r1   test_tsplot_datetimer   s    zTestTSPlot.test_tsplot_datetimec                 C   sD   t  }| j \}}|jd|d d}|| d  ks@td S )Nkstyler.   )        rq   rq   r#   r   )tmmakeTimeSeriesr:   r;   r%   r'   	get_colorr+   )r,   r-   rk   r.   colorr0   r0   r1   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 symbolrY   zb-z#000099)rp   ru   T)Zdrop)rr   rs   r\   r]   
ValueErrorr%   Zreset_index)r,   r-   r_   sr0   r0   r1   test_both_style_and_color   s    z$TestTSPlot.test_both_style_and_colormsusc                 C   sD   | j  \}}tdd|d}ttjt||}t|j	|d d S )N1/1/2012rB   r   r   rX   )
r:   r;   r   r   r6   r7   r8   rJ   r$   r%   )r,   r   rk   r.   rngrj   r0   r0   r1   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_datevaluerc     rS   re   z1987-12rA   z1987-1-1)%pandas.plotting._matplotlib.converterr   r+   r   ordinal)r,   r   r0   r0   r1   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   )r'   r(   r   	get_ydataZformat_coordr+   )r.   Zexpected_string
first_lineZfirst_xZfirst_yr0   r0   r1   check_format_of_first_point   s    zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointr#   z
2014-01-01rE   zA-DECr}   r   rX   zt = 2014  y = 1.000000rc   zt = 2014-01-01  y = 1.000000)r   r   r:   r;   r%   rr   r[   )r,   r   Zannualrk   r.   Zdailyr0   r0   r1   test_ts_plot_format_coord   s    

z$TestTSPlot.test_ts_plot_format_coordc                 C   s8   t d|dd}ttjt||}t|j|jj	 d S Nrh   rB   rC   )
r   r   r6   r7   r8   rJ   r$   r%   r    r   r,   r   rL   rj   r0   r0   r1   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 r   )r   r   r6   r7   r8   rJ   r$   r%   r    r   	rule_code)r,   r   rL   rx   r0   r0   r1    test_line_plot_period_mlt_series   s    z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   s:   t d|dd}ttjt||}t|j|jj	j
 d S r   )r   r   r6   r7   r8   rJ   r$   r%   r    r   r   r   r0   r0   r1   test_line_plot_datetime_series   s    z)TestTSPlot.test_line_plot_datetime_seriesc                 C   sD   t d|dd}ttjt|d|dddgd}t|j|jj	 d S 	Nrh   rB   rC   rE   rS   rW   Cr    columns)
r   r   r6   r7   r8   rJ   r$   r%   r    r   r,   r   rL   r=   r0   r0   r1   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 r   )r   r   r6   r7   r8   rJ   r    asfreqr   r   r$   r%   )r,   r   rL   r=   r   r0   r0   r1   test_line_plot_period_mlt_frame   s    "z*TestTSPlot.test_line_plot_period_mlt_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 r   )r   r   r6   r7   r8   rJ   r    	to_periodr   r   r$   r%   r   r0   r0   r1   test_line_plot_datetime_frame   s    "z(TestTSPlot.test_line_plot_datetime_framec                 C   sj   t d|dd}ttjt||}t|jtt|j	}t
|j|j	j |ddddg }t
|j d S )Nrh   rB   rC   r   rE         )r   r   r6   r7   r8   rJ   rI   r	   Zasarrayr    r$   r%   Zinferred_freqr   r0   r0   r1   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-10r   rE   r   rX   r   )
r:   r;   r   r   r9   rJ   r   r%   hasattrr+   )r,   rk   r.   r~   r-   r0   r0   r1   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BQSr3   rC   r   )rr   rs   r$   r%   r   r    r   r6   r7   r8   rJ   )r,   rj   drr0   r0   r1   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  r#   r      r   )	r	   r   r   r6   r7   r8   rJ   r$   r%   )r,   r   rj   r0   r0   r1    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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  rC   r   r   rX   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r   r6   r7   r8   rJ   r:   r;   r%   	get_xaxisZget_ticklocsget_ticklabelszipZ_from_ordinalstrftimestrget_textr+   )r,   convrL   r=   rk   r.   ZaxisZtlocsZtlabelslocr?   xprsr0   r0   r1   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:51ra   rB   rC   r   r   r   r#   rE      rX   g)QΠE>g:0yE>)r   r   r6   r7   r8   rJ   ilocr:   r;   r%   r   r'   
get_xydatadifffabsallr+   copyr    astypeobject)	r,   rL   r=   irregrk   r.   ZdiffssecrM   r0   r0   r1   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   r#   r      rX   )
rr   rs   r:   r;   r%   r+   r   r'   r(   r    )r,   rj   rk   r.   retr   r   r0   r0   r1   "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 )NrX   r   r!   datarW   )rr   ZmakePeriodSeriesr:   r;   r%   r'   r   r    r   r+   r(   r   freqstrr,   btsrk   r.   rL   r0   r0   r1   test_business_freq8  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BMre   rX   r   r!   r   )rr   rs   r   r   r:   r;   r%   r'   r   r    r   r+   r(   r   r   )r,   r   r-   rk   r.   rL   r0   r0   r1   test_business_freq_convert@  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   rX   r   z)freq not specified and cannot be inferredrY   r   )r   rr   rs   r   r:   r;   r%   r'   r(   r\   r]   rw   r   )r,   r   r   rk   r.   rL   r_   r0   r0   r1   test_freq_with_no_period_aliasI  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}      minutesr   rX   r   )r   r   r   r6   aranger:   r;   r%   r'   r(   r	   is_normalizedr+   )r,   rL   r=   rk   r.   r   r0   r0   r1   test_nonzero_baseU  s    zTestTSPlot.test_nonzero_basec                 C   sT   t dt i}| j \}}|j|d | d  }t|j	
 t| d S )NrQ   rX   r   )r   rr   rs   r:   r;   r%   r'   r(   assert_index_equalr    r   r   r   r0   r0   r1   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   r#   r3   1/1/2000z4/1/2000r   r   )get_xlimset_xlimr+   r   r   intr   r   
get_figurer:   r[   )r.   Zxlimresultexpectedr>   r,   r0   r1   _testf  s"    z*TestTSPlot.test_axis_limits.<locals>._testrX   r#   rQ   bT)r;   )rr   rs   r:   r;   r%   r   )r,   r   rj   rk   r.   r=   axesr0   r   r1   test_axis_limitse  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   rW   rc   re   rf   rS   rd   )r   r   r   r   Z
get_finderr   Z_daily_finderr+   Z_monthly_finderZ_quarterly_finderZ_annual_finder)r,   r   r0   r0   r1   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 )Nr3   rF      i  i  i
  '  z1999-1-1rW   rD   r   rX   r   ?)r   r   rJ   r   r   r6   r7   r8   r:   r;   r%   r   appendget_majorticklocsr   r   r[   r   r+   )r,   Zday_lstxpl1xpl2rs1rs2nr~   rj   rk   r.   xaxisvminvmaxr0   r0   r1   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   rf   r}   rX   r   r   r   r   rJ   r   r   r   r6   r7   r8   r:   r;   r%   r   r   r   r   r   r[   r   r+   r,   Zyrsr   r   r   r   r   r~   rj   rk   r.   r   r   r   r0   r0   r1   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      re   r}   rX   r   r   r   r   r0   r0   r1   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   re   r}   rX   r   Z1989Q1)r   r   r6   r7   r8   rJ   r:   r;   r%   r   r   r   r   r+   )r,   r~   rj   rk   r.   r   r   r   r0   r0   r1   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 )rS   rD   )r   r   .0rT   r0   r0   r1   
<listcomp>  s     z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r3      1   rH      iW  i  Z1987rS   r}   rX   r   )r   r   r6   r7   r8   rJ   r:   r;   r%   r   r   r   r[   r   r+   )	r,   r   r   Znyearsr~   rj   rk   r.   r   r0   r0   r1   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MinrC   rX   r   rD   r   r   r6   r7   r8   rJ   r:   r;   r%   r   r   r   r   r+   )	r,   Znminutesr~   rj   rk   r.   r   r   r   r0   r0   r1   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   rC   rX   r   rD   r  )	r,   Znhoursr~   rj   rk   r.   r   r   r   r0   r0   r1   test_finder_hourly  s    zTestTSPlot.test_finder_hourlyc           
   
   C   sZ  t  }tj|jdd< | j \}}|j|d | }t	|dksJt
|d }| }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|jdd< | j \}}|j|d}| }t	|dkst
|d }| }tjj|t|tjd}t|tjjjsXt
|j}|dddf  sxt
| j|  dddddd	d
ddg	}ttjt	||}	tj|	jdd< | j \}}|	j|d | }t	|dkst
|d }| }tjj|t|tjd}t|tjjjs6t
|j}|dddf  sVt
d S )Nr      rX   r#   r   maskZ
fill_valuer   r   r4   r         )rr   rs   r6   nanr   r:   r;   r%   r'   rJ   r+   r   maMaskedArrayr   
isinstancecorer
  r   r[   r   r   r7   r8   )
r,   r-   rk   r.   linesliner   r
  rL   rj   r0   r0   r1   	test_gaps  sP    zTestTSPlot.test_gapsc           
      C   s   t  }tj|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 }| }tjj|t|tjd}t|tjjjst|j}	|	ddd
f  std S )Nr   r  rX   r   r"   Z12hrD   Tsecondary_yr#   r	  )rr   rs   r6   r  r   r:   r;   r%   r   r    r   r7   r8   rJ   r'   r+   right_axr   r  r  r   r  r  r
  r   )
r,   lowrk   r.   idxhrx   r  r  r   r
  r0   r0   r1   test_gap_upsample>  s     zTestTSPlot.test_gap_upsamplec           
      C   sd  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 |	  d	kst| j|	  | }|jdd}	|  s tt|dr0tt|ds@tt|	dsPtt|	dr`td S )
Nr3   Tr  left_axr  r   rightrX   left)r   r6   r7   r8   r:   r;   r%   r   r+   get_axesr'   r   r(   rr   assert_series_equal	get_yaxisget_ticks_positionget_visibler[   r   )
r,   rj   ser2r>   rk   r.   r   r  r   ax2r0   r0   r1   test_secondary_yS  s0    zTestTSPlot.test_secondary_yc                 C   s8  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
 |
  dkst	| j|
  | }|jdd}
|  s4t	d S )Nr   r3   r   Tr  r  r  r   r  rX   r  )r   r   r6   r7   r8   r:   r;   r%   r   r+   r  r'   r   r(   Zto_timestamprr   r  r   r!  r"  r[   r   )r,   rL   rj   r#  r>   rk   r.   r   r  r   r$  r0   r0   r1   test_secondary_y_tso  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 )	Nr3   TZdensityr  kindr.   r  r  r#   r  )r   r6   r7   r8   r:   r;   r%   r   r+   r  r   r!  r,   rj   r>   r.   r   r0   r0   r1   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 )Nr3   Tbarr'  r#   r  )r   r6   r7   r8   r:   r;   r%   r  r   r!  r+   r)  r0   r0   r1   test_secondary_bar  s
    zTestTSPlot.test_secondary_barc                 C   sz   t tjdddddgd}|jddgdd}|d	   d
ksFt|d   dks^t|d   d
ksvtd S )Nr   rE   rQ   r   cr   T)r  r;   r   r  r#   r  r   r   r6   r7   r8   r%   r   r!  r+   r,   r=   r   r0   r0   r1   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   dks`t|d   dksxtd S )Nr   rE   rQ   r   r-  r.  r+  T)r(  r  r;   r   r  r#   r  r   r/  r0  r0   r0   r1   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   r3   r   r         r  rX   gro   r#   rW   r"   )rr   rs   r:   r;   r%   r'   r   r(   r   r    r   r   r   r+   r,   s1s2rk   r.   r$  r  idx1idx2r  r  Zpidxr0   r0   r1   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   r3   r   r   r4  r5  r  r6  ro   rX   r   r#   )rr   rs   r:   r;   r%   r   r+   r'   r(   assert_numpy_array_equalr    r   r   rI   r,   r8  r9  rk   r.   r  x1Zx2r0   r0   r1   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 r3  )rr   rs   to_framer   r:   r;   r%   r'   r   r(   equalsr    r   r+   r   r   r7  r0   r0   r1    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 r=  )rr   rs   rB  r   r:   r;   r%   r   r+   r'   r(   r>  r    r   r   rI   r?  r0   r0   r1   "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  rc   r}   r   re   rX   r   r   r   r6   r7   r8   rJ   r:   r;   r%   r'   r   r(   r   r+   r,   r  idxlhighr  rk   r.   r  r0   r0   r1   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   rD   r   r   rb   rX   rro   r   r#   )r   r6   r7   r8   r   r   Zinterpolater:   r;   r%   r  r(   r+   )r,   Zts_indZts_datar-   Zts2rk   r.   r0   r0   r1   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  rF  rc   r}   r   re   T)Zlegendr.   r   r      rb   r   r   rX   )r   r   r6   r7   r8   rJ   r:   r;   r%   r'   r   r(   r   r+   
get_legendZtextsr[   r   )	r,   r  rI  rJ  r  rk   r.   r  legr0   r0   r1   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   r#   r   rE   r   r   r   r      r4   r3   r              z1/3/2000r   rW   r}   rX   )rr   rs   r   r   r6   r7   r8   rJ   r:   r;   r%   )r,   r-   r   r~   Zpsrk   r.   r0   r0   r1   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-01rE   re   r}   r#   r   T)ZnrowssharexrX   r   r!   )r   rK   r   r9   rJ   r:   r;   r%   r   r+   r  r   Ztwinx)r,   r:  r;  r8  r9  r>   Zax1r$  r0   r0   r1   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 )NrY  z
2015-01-03rX   r   )r:   r;   r   r
   r   r9   rJ   r%   r'   r(   r    minr+   max)r,   rk   r.   Zdtirx   r/   r0   r0   r1   test_nat_handlingB  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   rd   r}   r   re   rX   r   rG  rH  r0   r0   r1   test_to_weekly_resamplingM  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  r_  rd   r}   r   re   rX                            Zdtyper   Forig)r   r   r6   r7   r8   rJ   r:   r;   r%   r   asi8r   float64rO   r'   r   r(   r   r+   rr   r>  r[   )r,   r  rI  rJ  r  rk   r.   Z
expected_hZ
expected_lr  r/   r0   r0   r1   test_from_weekly_resamplingX  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  r_  rd   r}   r   re   rE   r   r#   r   r   ))r  area)rs  r  T)r(  Zstackedr.   ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  Frn  r   )r   r   r6   r7   randrJ   r:   r;   r%   rO   rq  Zzerosr9   r  r   r(   r   r+   rr   r>  rI   r   r   rp  r   )r,   r  rI  rJ  r  Zkind1Zkind2rk   r.   Z
expected_xZ
expected_yrP   r  r  r0   r0   r1   $test_from_resampling_area_line_mixedo  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:00ra   2   rC   Z100Lr   rX   r   r   r   )r   r   r6   r7   r8   rJ   r:   r;   r%   r'   r+   r   r(   r   rr   r[   rH  r0   r0   r1   "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   r#   r   r  rE   rm  r   r3   r   r   r   r4   rX   )r   r   r6   r7   r8   rJ   r	   r   r$   r%   r   r   r:   r;   )r,   rL   r=   rk   r.   r0   r0   r1   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 )Nr#   rE   r   r   r  c                    s"   g | ]} t t|d   qS r   r   r   r   r   tr0   r1   r     s     z(TestTSPlot.test_time.<locals>.<listcomp>r   r   rX   <   %H:%M:%S%H:%M)r   r6   r7   randintcumsumrO   r   r8   rJ   r:   r;   r%   
get_xticksr<   r   divmodr   r   r   r   r+   r,   deltasr-   r=   r>   r.   tickslabels_tick_labelmrx   hr   r   r0   r{  r1   	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 )Nr#   rE   r   r   r  c                    s"   g | ]} t t|d   qS ry  rz  r   r{  r0   r1   r   	  s     z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r   r   rX   r}  r~  r  z1:30z5:00)r   r6   r7   r  r  rO   r   r8   rJ   r:   r;   r%   r  r<   r   r  r   r   r   r   r+   r   r  r0   r{  r1   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 )Nr#   rE   r   r   r  c                    s"   g | ]} t t|d   qS ))microsecondsrz  r   r{  r0   r1   r   2  s     z.TestTSPlot.test_time_musec.<locals>.<listcomp>r   r   rX   r}  g    .Ai  r   r~  r  )r   r6   r7   r  r  rO   r   r8   rJ   r:   r;   r%   r  r<   r   r  r   roundr   r   r   r+   )r,   r  r-   r=   r>   r.   r  r  r  r  r  rx   r{   r  r   r   r0   r{  r1   test_time_musec/  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  rF  rc   r}   r   re   rX   Tr  r.   r  r  )r   r   r6   r7   r8   rJ   r:   r;   r%   r'   r   r(   r   r+   r   r  rH  r0   r0   r1   test_secondary_upsampleN  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   rS   rW   r  r   r   z	A (right)r#   z	B (right)r   r   rE   rc   F)r  
mark_rightr.   r+  )r(  r  r.   )r(  r  r  r.   )r:   Zfigureadd_subplotrr   ZmakeTimeDataFramer%   rP  rJ   r'   r+   Z	get_textsr   r  setaddrt   r[   r;   ZmakeDataFrame)r,   r>   r.   r=   rQ  colorsr  r0   r0   r1   test_secondary_legend]  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   re   r}   rE   rX   r   r   )r   r   r6   r7   r8   rJ   r:   r;   r%   r   r   r   Zget_rotationr+   )r,   r~   r=   rk   r.   r   r  r0   r0   r1   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 )NrL  r3   rc   startr   r   Y)r?   r   )r   r&   r9   rJ   r:   r;   r%   rr   r   r   r(   )r,   rT   rU   rk   r.   r  r0   r0   r1   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  r#   g      $@g      &@g      ?g      (@-r   )fmtZlwc                 S   s   g | ]}|  qS r0   	toordinalr   r0   r0   r1   r     s     z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   s   g | ]}|  qS r0   r  r   r0   r0   r1   r     s     c                 S   s   g | ]}|  qS r0   r  r   r0   r0   r1   r     s     rm  r   c                 S   s   g | ]}|  qS r0   r  r   r0   r0   r1   r     s     )r   r6   r   r:   r;   Z	plot_dater'   rO   rq  rr   r>  r   )
r,   datesZvalues1Zvalues2kwrk   r.   line1line2expr0   r0   r1   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  r#   r   r   r   rS  r4   r3   r   r4  r5  r  rU  rV  rX    r   r  rr   rs   r:   r;   r%   r   convertr    r\  r+   r]  r,   r  r-   Zts_irregularrk   r.   r  r  r0   r0   r1    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 )Nr#   r   rE   r   r   r   r   rS  r   rX   Tr  )r   r:   r;   r%   r   r+   r,   Zindex_1Zindex_2r8  r9  rk   r.   left_beforeright_before
left_afterright_afterr0   r0   r1   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   rc   r  z
2000-01-05r#   r   r   rX   Tr  )r   r   r:   r;   r%   r   r+   r  r0   r0   r1    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   r\  r}   r#   r   rX   rc   Tr  )	r   r   r:   r;   r%   r   ZresampleZmeanr+   )	r,   r~   r-   rk   r.   r  r  r  r  r0   r0   r1   #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  r#   r   r   r   rS  r4   r3   r   r4  r5  r  rU  rV  rX   Tr  r  r  r  r0   r0   r1   "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  r#   r   r   )r   r:   r;   r%   r   )r,   rI   rk   r.   r0   r0   r1   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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>2dr0   )r   rP   r0   r0   r1   r   8  s     zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r3   0nsr}   rE   r   r5   c                 S   s   g | ]}|  qS r0   r   r   r0   r0   r1   r   A  s     )r6   r   r   r   r7   r8   rJ   r:   r;   r%   drawr<   r+   r,   Zexpected_labelsr~   r=   r>   r.   r  Zresult_labelsr0   r0   r1   "test_format_timedelta_ticks_narrow7  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  r3   1 dr}   rE   r   r5   c                 S   s   g | ]}|  qS r0   r  r   r0   r0   r1   r   Y  s     z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r   r6   r7   r8   rJ   r:   r;   r%   r  r<   r+   r  r0   r0   r1    test_format_timedelta_ticks_wideE  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   rX   z1 day 2 hr 30 min 10 sr3   r  r}   z1 ns)r   r9   r   r:   r;   r$   r%   r6   r7   r8   rJ   )r,   rx   rk   r.   r    r0   r0   r1   test_timedelta_plot]  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 )
Nr   r3   r   r}   r   r#   g?r"   )weights)r   r6   r   r:   r;   hist)r,   r~   rT   Zw1Zw2rk   r.   r0   r0   r1   	test_histo  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 )Nr#   r   rE   r   r   r  r   i  r   i  i  r  rX   )r   r   r:   r;   r%   )r,   r8  r9  rk   r.   r0   r0   r1   test_overlapping_datetimex  s$    





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converterc              	   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 )Nr3   z
1970-01-02r   r   r6  )ru   )r   r6   r7   r8   r   r%   rr   Zassert_produces_warningDeprecationWarningr    rI   r  r>  r   )r,   rx   r.   l1l2r0   r0   r1   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 }d}| |ksztd S )Nr   r3   r   rT   rU   r.  z
2018-01-01rc   r}   r   )rT   rU   r   )r   r6   r7   ZRandomStatert  r   r:   r;   Zscatterr  r<   r   r+   )r,   r=   r>   r.   r?   r   r0   r0   r1   "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-03r#   r   rE   )rT   rU   rT   rU   r   )Zxrotz
2020-05-04r   T)rU   Z	use_indexF)rT   rU   r;   rZ  )r   r   r%   Z_check_ticks_propsZ	set_index)r,   rT   r=   r   r0   r0   r1   test_check_xticks_rot  s     z TestTSPlot.test_check_xticks_rotN)___name__
__module____qualname__r\   markfilterwarningsr2   r@   rN   rR   r`   Zparametrizerl   rm   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  Zslowr  r  r  r  r%  r&  tdZskip_if_no_scipyr*  r,  r1  r2  r<  rA  rD  rE  rK  rN  rR  rX  r[  r^  r`  rr  ru  rw  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0   r0   r0   r1   r   -   s   


 


 
 

 
	 
 
	
		(


3
		 [)[

		
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  r.   r      T)Zreturn_filelike)Zmatplotlib.pyplotZpyplotZgcfr[   Zclfr  popZgcagetattrr+   r    r   r  r   r   rr   Zensure_cleanZsavefigpickledump)fr   Zseriesargskwargsr:   r>   r.   Zorig_axZorig_axfreqr   Zdfreqpathr0   r0   r1   r$     s6    




r$   )NN),__doc__r   r   r   r   r  numpyr6   r\   Zpandas._libs.tslibsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   Zpandas._testingZ_testingrr   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   Zskip_if_no_mplr   r$   r0   r0   r0   r1   <module>   s6   $	           "