a
    Pfۅ                     @   s   d dl Zd dlZd dlm  mZ d dlZd dlm	Z	m
Z
mZmZmZ d dlmZ ejg dddd Zejg dddd	 ZG d
d dZdS )    N)Index
MultiIndexSeries
date_rangeisna)linearindexvaluesnearestslinearzero	quadraticcubicbarycentrickrogh
polynomialsplinepiecewise_polynomialfrom_derivativespchipakimacubicspline)paramsc                 C   s"   | j }|dv rddini }||fS )a	  Fixture that returns an (method name, required kwargs) pair.

    This fixture does not include method 'time' as a parameterization; that
    method requires a Series with a DatetimeIndex, and is generally tested
    separately from these non-temporal methods.
    r   r   order   paramrequestmethodkwargs r"   e/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/series/methods/test_interpolate.pynontemporal_method   s    r$   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 C   s"   | j }|dv rddini }||fS )zFixture that returns a (method name, required kwargs) pair to
    be tested for various Index types.

    This fixture does not include methods - 'time', 'index', 'nearest',
    'values' as a parameterization
    r   r   r   r   r   r"   r"   r#   interp_methods_ind2   s    r%   c                   @   s  e Zd Zejjdddd Zdd Zdd Zd	d
 Z	dd Z
dd Zdd Zdd Zejdi ejdddeddgdd Zdd Zdd Zejdi ejdddeddgdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zejd+d,d-gd.d/ Zd0d1 Zejd2d3d4gd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"ejdAg dBdCdD Z#ejdEe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdHdHdHdIe$j%e$j%g	dJdKdLfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdHe$j%e$j%dIe$j%e$j%g	dJdKddMfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%e$j%dIdIdIg	dJdNdLfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%e$j%dIdIe$j%g	dJdNddMfe$j%e$j%e$j%e$j%e$j%e$j%e$j%ge$j%e$j%e$j%e$j%e$j%e$j%e$j%gdJdNddMfe&dOe&dOdJdNddMffdPdQ Z'ejdEe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHdIdIdIdIe$j%e$j%g	dRdKdLfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%e$j%dHe$j%e$j%dIdIe$j%e$j%g	dRdKddMfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	dHdHdHe$j%e$j%e$j%dIe$j%e$j%g	dRdNdLfe$j%e$j%dFe$j%e$j%e$j%dGe$j%e$j%g	e$j%dHdHe$j%e$j%e$j%dIe$j%e$j%g	dRdNddMffdSdT Z(dUdV Z)dWdX Z*dYdZ Z+d[d\ Z,ejd]d^ejd_eddgd`da Z-dbdc Z.ejdddedJgdfdg Z/dhdi Z0djdk Z1ejddddlgdmdn Z2ejdod,dpd-dqe$j%gdrds Z3dtdu Z4dvdw Z5dxdy Z6dzd{ Z7d|d} Z8d~d Z9dd Z:ejdg de;j<ddde;j=d-ddgdd Z>dd Z?ejdd_g dfd^g dfgdd Z@dd ZAdd ZBd3S )TestSeriesInterpolateDataz)EA.fillna does not handle 'linear' methodreasonc                 C   sR   t tddd}| }tj|d< |jd}| }|jd}t	|| d S )Nz
2012-01-01   )periods   D)
r   r   copypdNaTdtZ	to_periodinterpolatetmassert_series_equal)selforigserZser_perZres_perZexpected_perr"   r"   r#   test_interpolate_period_valuesQ   s    
z8TestSeriesInterpolateData.test_interpolate_period_valuesc                 C   s   t tjt|td|j}| }tj|dd< |jdd}t	
|| t dd |jD |jdt}| }tj|dd< |jd	d}t	
|| d S )
Ndtyper)   
   r   r    c                 S   s   g | ]}|  qS r"   )	toordinal).0dr"   r"   r#   
<listcomp>g       z>TestSeriesInterpolateData.test_interpolate.<locals>.<listcomp>r   time)r   nparangelenfloatr   r-   nanr1   r2   r3   astype)r4   Zdatetime_seriestsZts_copyZlinear_interpZord_tsZord_ts_copyZtime_interpr"   r"   r#   test_interpolate]   s    z*TestSeriesInterpolateData.test_interpolatec                 C   sT   t dddtjg}d}tjt|d |jdd W d    n1 sF0    Y  d S )Nr   r   r+   zGtime-weighted interpolation only works on Series.* with a DatetimeIndexmatchrB   r;   r   rC   rG   pytestraises
ValueErrorr1   )r4   Znon_tsmsgr"   r"   r#   /test_interpolate_time_raises_for_non_timeseriesp   s    zITestSeriesInterpolateData.test_interpolate_time_raises_for_non_timeseriesc                 C   st   t d tg d}tg dtg dd}|jtg dt}||j	ddj
d	d
 }t|| d S )Nscipyr:            	      &@g     &@g      '@g     '@      (@g     (@g      )@g     )@      *@	      ?      ?      ?      ?       @      @      @      @      @rA   r^   r_   r`   rb   rc   rd   r   r;   r      )rN   importorskipr   r   r   unionrH   rF   reindexr1   locr2   r3   )r4   r6   expected	new_indexresultr"   r"   r#   test_interpolate_cubicsplinex   s    

z6TestSeriesInterpolateData.test_interpolate_cubicsplinec                 C   sf   t d tttjdjdd}|j	t
g dt}||jdd}|jdd	  d S )
NrS   r+   d   )size)g     H@g     H@g     H@g      I@g     @I@g     `I@r   r;   1   3   )rN   rh   r   rC   sortrandomdefault_rnguniformr   ri   r   rH   rF   rj   r1   rk   )r4   r6   rm   interp_sr"   r"   r#   test_interpolate_pchip   s    

z0TestSeriesInterpolateData.test_interpolate_pchipc                 C   s   t d tg d}tg dtg dd}|jtg dt}||j	dd}t
|jd	d
 | tg dtg dd}|jtg dt}||j	dd	d}t
|jd	d
 | d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   )	rY   r]   r]   r]   rZ   r]   r]   r]   r[   )r    ZderrN   rh   r   r   r   ri   rH   rF   rj   r1   r2   r3   rk   r4   r6   rl   rm   rx   r"   r"   r#   test_interpolate_akima   s(    


z0TestSeriesInterpolateData.test_interpolate_akimac                 C   st   t d tg d}tg dtg dd}|jtg dt}||j	dd}t
|jd	d
 | d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   rz   r{   r"   r"   r#   %test_interpolate_piecewise_polynomial   s    

z?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   st   t d tg d}tg dtg dd}|jtg dt}||j	dd}t
|jd	d
 | d S )NrS   rT   rX   r\   rA   rf   r   r;   r   rg   rz   r{   r"   r"   r#   !test_interpolate_from_derivatives   s    

z;TestSeriesInterpolateData.test_interpolate_from_derivativesr!   r   r   r    r   rS   )Zmarksc                 C   sT   t tjtjg}t|jf i || t g td }t|jf i || d S )Nr8   )r   rC   rG   r2   r3   r1   object)r4   r!   sr"   r"   r#   test_interpolate_corners   s    
z2TestSeriesInterpolateData.test_interpolate_cornersc                 C   s   t tjttjddd}tjdd|jd d d< |jj	
t}|jdd}| }t|j	}| }t t|| || |j	| |j| d}t|| | |jdd}t|| t|| | d S )	Nr+      rA   r:   rg   r   r;   r	   )r   rC   rG   rt   ru   rv   standard_normalrk   r   r	   rH   rF   r1   r-   r   interpr2   r3   )r4   r   valsrn   rl   badZgoodZother_resultr"   r"   r#   test_interpolate_index_values   s    "
"z7TestSeriesInterpolateData.test_interpolate_index_valuesc                 C   s\   t ddtjtjtjdg}d}tjt|d |jdd W d    n1 sN0    Y  d S )Nr   rg   rU   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrK   rB   r;   rM   r4   r   rQ   r"   r"   r#   test_interpolate_non_ts   s
    z1TestSeriesInterpolateData.test_interpolate_non_tsc                 C   s>   t ddtjdg}|jf i |}t g d}t|| d S )Nr   r   rg           r]   ra   re   r   rC   rG   r1   r2   r3   )r4   r!   r   rn   rl   r"   r"   r#   test_nan_interpolate   s    
z.TestSeriesInterpolateData.test_nan_interpolatec                 C   sF   t ddtjdgg dd}| }t g dg dd}t|| d S )Nr   r+      )r   rg   r)   	   rA   )r]   ra   re         @r   r4   r   rn   rl   r"   r"   r#   test_nan_irregular_index
  s    z2TestSeriesInterpolateData.test_nan_irregular_indexc                 C   sF   t dddtjgtdd}| }t g dtdd}t|| d S )Nr   r   r+   abcdrA   )r   r]   ra   ra   )r   rC   rG   listr1   r2   r3   r   r"   r"   r#   test_nan_str_index  s    z,TestSeriesInterpolateData.test_nan_str_indexc                 C   sT   t d tddtjdgg dd}|jdd}tg d	g dd}t|| d S )
NrS   r   r      )r   r+   rg   r   rA   r   r;   )r]   r         "@g      0@rN   rh   r   rC   rG   r1   r2   r3   )r4   sqrn   rl   r"   r"   r#   test_interp_quad  s
    
z*TestSeriesInterpolateData.test_interp_quadc                 C   s  t d tddtjdtjdg}tg d}|jdd}t|| d	}tjt	|d
 |jddd}W d    n1 s|0    Y  t|| tg d}|jdd}t||
d tjt	|d
 |jddd}W d    n1 s0    Y  t|| tg d}|jdd}t||
d tjt	|d
 |jddd}W d    n1 sb0    Y  t|| tg d}|jdd}t|| tjt	|d
 |jddd}W d    n1 s0    Y  t|| tg d}|jdd}t|| d S )NrS   r   rg   rV      )r]   re   g      @rZ   g     2@      9@r   r;   z:The 'downcast' keyword in Series.interpolate is deprecatedrK   Zinfer)r    Zdowncast)r   rg   rg   rV   rV   r   r
   rF   r   )r   re   g:/KK@rZ   gL82@r   r   )r]   re   g333333@rZ   g3333332@r   r   )rN   rh   r   rC   rG   r1   r2   r3   assert_produces_warningFutureWarningrH   r4   r   rl   rn   rQ   r"   r"   r#   test_interp_scipy_basic  s<    
,,..z1TestSeriesInterpolateData.test_interp_scipy_basicc                 C   sN   t ddtjtjtjdg}t ddddtjdg}|jd	d
d}t|| d S )Nr   rg   rU   r]   re         @      @rY   r   r+   r    limitr   r4   r   rl   rn   r"   r"   r#   test_interp_limitG  s    z+TestSeriesInterpolateData.test_interp_limitr   r   c                 C   sb   t ddtjdg}|\}}tjtdd& |jf ||d| W d    n1 sT0    Y  d S )Nr   r+   r   zLimit must be greater than 0rK   r   r    rM   )r4   r$   r   r   r    r!   r"   r"   r#   *test_interpolate_invalid_nonpositive_limitN  s    zDTestSeriesInterpolateData.test_interpolate_invalid_nonpositive_limitc                 C   sf   t ddtjdg}|\}}d}tjtdd& |jf ||d| W d    n1 sX0    Y  d S )Nr   r+   r   ra   zLimit must be an integerrK   r   rM   )r4   r$   r   r    r!   r   r"   r"   r#   $test_interpolate_invalid_float_limitV  s
    z>TestSeriesInterpolateData.test_interpolate_invalid_float_limitinvalid_methodNZnonexistent_methodc                 C   s   t ddtjdtjdg}d| d}|d u r0d}tjt|d |j|d	 W d    n1 s`0    Y  tjt|d |j|d
d W d    n1 s0    Y  d S )Nr   rg   rV   r   zmethod must be one of.* Got 'z	' insteadz%'method' should be a string, not NonerK   r;   r   r   rM   )r4   r   r   rQ   r"   r"   r#   test_interp_invalid_method^  s    *z4TestSeriesInterpolateData.test_interp_invalid_methodc              	   C   s   t ddtjdtjdg}d}d}tjt|dL tjt|d |j	ddd	 W d    n1 sb0    Y  W d    n1 s0    Y  d S )
Nr   rg   rV   r   z:'fill_value' is not a valid keyword for Series.interpolate"Series.interpolate with method=padrK   pad)
fill_valuer    )
r   rC   rG   rN   rO   rP   r2   r   r   r1   )r4   r6   rQ   msg2r"   r"   r#   $test_interp_invalid_method_and_valuem  s    z>TestSeriesInterpolateData.test_interp_invalid_method_and_valuec                 C   sl   t ddtjtjtjdg}t ddddtjdg}|jd	d
dd}t|| |jd	d
dd}t|| d S )Nr   rg   rU   r]   re   r   r   rY   r   r+   forwardr    r   limit_directionZFORWARDr   r   r"   r"   r#   test_interp_limit_forwardw  s    z3TestSeriesInterpolateData.test_interp_limit_forwardc              	   C   s   t tjddtjtjtjdtjg}t g d}|jddd}t|| t tjdddd	d
ddg}|jddd}t|| t ddddd	d
dtjg}|jddd}t|| d S )Nr]   re   rY   )r]   r]   re   r   r   r   rY   rY   r   bothr    r   r   r   r   r   backwardr   r   r"   r"   r#   test_interp_unlimited  s    "z/TestSeriesInterpolateData.test_interp_unlimitedc                 C   s   t ddtjtjtjdg}d}tjt|d  |jdddd	 W d    n1 sR0    Y  tjt|d |jddd
 W d    n1 s0    Y  d S )Nr   rg   rU   zVInvalid limit_direction: expecting one of \['forward', 'backward', 'both'\], got 'abc'rK   r   r+   abcr   r   rM   r   r"   r"   r#   test_interp_limit_bad_direction  s    .z9TestSeriesInterpolateData.test_interp_limit_bad_directionc              
   C   s0  t tjtjdtjtjtjdtjtjg	}t tjtjdddddtjtjg	}|jdd	d
}t|| t tjtjddtjtjdtjtjg	}|jdd	dd}t|| t tjtjddtjddtjtjg	}|jdd	ddd}t|| t tjtjdtjtjtjdddg	}|jddd
}t|| t tjtjdtjtjtjddtjg	}|jdddd}t|| t tjddtjtjtjddtjg	}|jddddd}t|| t dddtjtjtjdtjtjg	}|jdddd}t|| d}tjt|d |jddd
 W d    n1 s"0    Y  d S )Nrg      re   r   r         @r   r   insider    
limit_arear   r    r   r   r   )r    r   r   r   outsider   )r    r   r   zEInvalid limit_area: expecting one of \['inside', 'outside'\], got abcrK   r   )	r   rC   rG   r1   r2   r3   rN   rO   rP   r   r"   r"   r#   test_interp_limit_area  sF    (" $$ $$z0TestSeriesInterpolateData.test_interp_limit_areaz!method, limit_direction, expected))r   r   r   )ffillr   r   )backfillr   r   )bfillr   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   c              	   C   s   t g d}d| d| d}d}tjt|dL tjt|d |j||d W d    n1 sd0    Y  W d    n1 s0    Y  d S )Nr   r+   rg   z`limit_direction` must be 'z' for method ``zSeries.interpolate with method=rK   r   )r   rN   rO   rP   r2   r   r   r1   )r4   r    r   rl   r   rQ   r   r"   r"   r#   "test_interp_limit_direction_raises  s    z<TestSeriesInterpolateData.test_interp_limit_direction_raiseszdata, expected_data, kwargsrg   r   re   r   r   r   r   r   r   r)   c                 C   sb   t |}t |}d}tjt|d  |jf i |}W d    n1 sH0    Y  t|| d S )Nr   rK   r   r2   r   r   r1   r3   r4   dataZexpected_datar!   r   rl   rQ   rn   r"   r"   r#   test_interp_limit_area_with_pad  s    &.z9TestSeriesInterpolateData.test_interp_limit_area_with_padr   c                 C   sb   t |}t |}d}tjt|d  |jf i |}W d    n1 sH0    Y  t|| d S )Nz$Series.interpolate with method=bfillrK   r   r   r"   r"   r#   $test_interp_limit_area_with_backfill  s    .z>TestSeriesInterpolateData.test_interp_limit_area_with_backfillc                 C   s  t ddtjtjtjdg}t ddtjdddg}|jd	d
dd}t|| t dddtjddg}|jd	ddd}t|| t ddtjtjtjddtjtjdtjg}t g d}|jd	d
dd}t|| t dddtjdddddddg}|jd	ddd}t|| d S )Nr   rg   rU   r]   re   r   r   rY   r   r+   r   r   r   r   r   r   rV   )r]   re   r   r   r   r   r         $@rY   rZ   rZ   r   r   r   rZ   r   r   r"   r"   r#   test_interp_limit_direction7  s     *z5TestSeriesInterpolateData.test_interp_limit_directionc                 C   sx   t tjtjdddtjg}t dddddtjg}|jddd	d
}t|| t g d}|jdddd
}t|| d S )Nr)   r   r   r   r   r   r   r+   r   r   )r   r   r   r   r   r   r   r   r   r"   r"   r#   test_interp_limit_to_endsP  s    z3TestSeriesInterpolateData.test_interp_limit_to_endsc                 C   s   t tjtjddtjtjg}t tjtjdddtjg}|jdddd}t|| t tjdddtjtjg}|jddd	d}t|| t tjddddtjg}|jddd
d}t|| d S )Nr)   r   r   r   r   r   r   r   r   r   r   r   r"   r"   r#   test_interp_limit_before_ends\  s    z7TestSeriesInterpolateData.test_interp_limit_before_endsc                 C   sH   t d tg d}|jddd}t|| | }t|| d S )NrS   r   r   r   r   )rN   rh   r   r1   r2   r3   )r4   r   rn   r"   r"   r#   test_interp_all_goodl  s    
z.TestSeriesInterpolateData.test_interp_all_goodcheck_scipyFTc                 C   s   t g d}tddtjg|d}| }d|jd< | }t	|| d}|rt
jt|d |jddd W d    n1 s0    Y  d S )	N))r   a)r   b)r+   cr   r+   rA   z?Only `method=linear` interpolation is supported on MultiIndexesrK   r   r   )r   from_tuplesr   rC   rG   r-   rk   r1   r2   r3   rN   rO   rP   )r4   r   idxr   rl   rn   rQ   r"   r"   r#   test_interp_multiIndexv  s    
z0TestSeriesInterpolateData.test_interp_multiIndexc                 C   sd   t d tdtjdgg dd}d}t jt|d |jdd	 W d    n1 sV0    Y  d S )
NrS   r   rg   )r   r+   r   rA   z8krogh interpolation requires that the index be monotonicrK   r   r;   rN   rh   r   rC   rG   rO   rP   r1   r   r"   r"   r#   test_interp_nonmono_raise  s
    
z3TestSeriesInterpolateData.test_interp_nonmono_raiser    r
   c           	      C   s   t d tdtjdgtdd|dd}|dkr4d nt}d}tj||d	 |j	|d
}W d    n1 sl0    Y  |d ur|
 }t|| tg dtdd|dd}t|| d S )NrS   r   rg   1/1/2000r*   tzrA   r
   0Series.interpolate with method=pad is deprecatedrK   r;   )r]   r]   re   )rN   rh   r   rC   rG   r   r   r2   r   r1   r   r3   )	r4   r    Ztz_naive_fixturedfwarnrQ   rn   altrl   r"   r"   r#   test_interp_datetime64  s     
*z0TestSeriesInterpolateData.test_interp_datetime64c                 C   s   t dddd}t|}tj|d< d}tjt|d |jdd	}W d    n1 sT0    Y  | }t	|| t|}|d
 |d< t	|| d S )Nz
2015-04-05rg   z
US/Centralr   r   r   rK   r   r;   r   )
r   r   r.   r/   r2   r   r   r1   r   r3   )r4   Zdtir6   rQ   rn   r   rl   r"   r"   r#   #test_interp_pad_datetime64tz_values  s    
*z=TestSeriesInterpolateData.test_interp_pad_datetime64tz_valuesc                 C   s,   t g d}|jdd}|}t|| d S )Nr]   ra   re   r   )r   )r   r1   r2   r3   r   r"   r"   r#   test_interp_limit_no_nans  s    z3TestSeriesInterpolateData.test_interp_limit_no_nansr   c                 C   s^   t d tddtjdg}d}t jt|d |j|d W d    n1 sP0    Y  d S )NrS   r   r   rg   z6You must specify the order of the spline or polynomialrK   r;   r   )r4   r    r   rQ   r"   r"   r#   test_no_order  s
    
z'TestSeriesInterpolateData.test_no_orderr   g      r   c                 C   s`   t d tddtjdg}d}t jt|d |jd|d W d    n1 sR0    Y  d S )	NrS   r   r   rg   z.order needs to be specified and greater than 0rK   r   r   r   )r4   r   r   rQ   r"   r"   r#   %test_interpolate_spline_invalid_order  s
    
z?TestSeriesInterpolateData.test_interpolate_spline_invalid_orderc                 C   sN   t d tddtjddtjdg}|jddd}tg d	}t|| d S )
NrS   r   r+   r   r)   r   r   r   r]   ra   re   r   r   r   r   r   r   r"   r"   r#   test_spline  s
    
z%TestSeriesInterpolateData.test_splinec                 C   sx   t d tddddtjdtjg}|jdddd}tg d	}t|| |jddd
d}tg d}t|| d S )NrS   r   r+   rg   r      r   )r    r   ext)r]   ra   re   r   r   r   r   r   r   r   )r4   r   Zresult3Z	expected3result1	expected1r"   r"   r#   test_spline_extrapolate  s    
z1TestSeriesInterpolateData.test_spline_extrapolatec                 C   sR   t d tddtjddtjdg}|jddd	d
d |jdddd ksNJ d S )NrS   r   r+   r   gffffff@r   r   rg   r   )r    r   r   r)   r   )rN   rh   r   rC   rG   r1   )r4   r   r"   r"   r#   test_spline_smooth  s    
z,TestSeriesInterpolateData.test_spline_smoothc                 C   sh   t d ttdd dd}tj|tjdddd< |j	d	d
d}|j	d	d
d}t
|| d S )NrS   r:   r+   rF   r8   r   r   rg   r   r   r   )rN   rh   r   rC   rD   rG   ru   rv   Zintegersr1   r2   r3   )r4   r   r   r   r"   r"   r#   test_spline_interpolation  s    
z3TestSeriesInterpolateData.test_spline_interpolationc                 C   s   t dtjdgtg dd}|jdd}t g dtg dd}t|| t dtjdgtg dd}|jdd}t g d	tg dd}t|| d S )
Nr   rg   r   rA   rB   r;   r   )r   r+   r   )r]   g(%?re   )r   rC   rG   r.   Zto_timedeltar1   r2   r3   )r4   r   rn   rl   r"   r"   r#   test_interp_timedelta64  s    z1TestSeriesInterpolateData.test_interp_timedelta64c                 C   s`   t dddd}ttjdt||d}tj|d d d< |jdd}| }t	
|| d S )	Nr   z	1/20/2000r,   )freqr+   rA   r	   r;   )r   r   rC   ru   rv   r   rE   rG   r1   r2   r3   )r4   rngrI   rn   expr"   r"   r#   %test_series_interpolate_method_values  s    z?TestSeriesInterpolateData.test_series_interpolate_method_valuesc                 C   s   t dddd}tg d|}||tjdd  }||jdd	}t ddd
d}tg d|}||tjdd  }||jdd	}t	|j
|j
 d S )Nz1/1/2012r   Z12D)r*   r   )r   rV      $   r   )daysrB   r;   Z12h)hours)r   r   appendr.   Z
DateOffsetZsort_valuesrj   r1   r2   Zassert_numpy_array_equalr	   )r4   r   rI   rm   r   rn   r"   r"   r#    test_series_interpolate_intraday  s    z:TestSeriesInterpolateData.test_series_interpolate_intradayind)r   r   r   r>   z
2019-01-01r   startr*   )r  endc           	      C   s   t jddtjdg|d}|\}}|dkr2td |dkrn|d jf i |}tg dd|d	}t	|| nRd
| d}tj
t|d( |d jf d|i| W d    n1 s0    Y  d S )Nr   r   rg   rA   r   rS   r   r   namer   z9Index column must be numeric or datetime type when using z_ method other than linear. Try setting a numeric or datetime index column before interpolating.rK   r    )r.   	DataFramerC   rG   rN   rh   r1   r   r2   r3   rO   rP   )	r4   r%   r   r   r    r!   rn   rl   Zexpected_errorr"   r"   r#   test_interp_non_timedelta_index  s    

z9TestSeriesInterpolateData.test_interp_non_timedelta_indexc           	      C   s   t d tjddd}tjddtjdg|d}|\}}|dv rZ|t jj	| d	d
 |d j
f d|i|}tg dd|d}t|| dS )z
        Tests for non numerical index types  - object, period, timedelta
        Note that all methods except time, index, nearest and values
        are tested here.
        rS   r   r   r   r   rg   rA   >   r   r   z2 interpolation is not supported for TimedeltaIndexr'   r    r   r  N)rN   rh   r.   Ztimedelta_ranger  rC   rG   Zapplymarkermarkxfailr1   r   r2   r3   )	r4   r   r%   r   r   r    r!   rn   rl   r"   r"   r#    test_interpolate_timedelta_index4  s    
z:TestSeriesInterpolateData.test_interpolate_timedelta_indexzascending, expected_values)r   r+   rg   r   r:   r:   r   rg   r+   r   c                 C   sN   t ddtjddgg dd}|j|djdd	}t ||td
}t|| d S )Nr:   r   r+   r   r
  )r   r   )	ascendingr   r;   )r   r   r9   )r   rC   rG   Z
sort_indexr1   rF   r2   r3   )r4   r  Zexpected_valuesrI   rn   rl   r"   r"   r#   test_interpolate_unsorted_indexK  s    z9TestSeriesInterpolateData.test_interpolate_unsorted_indexc              	   C   s   t g dtd}d}d}tjt|dJ tjt|d |jdd W d    n1 sX0    Y  W d    n1 sv0    Y  d S )N)r   Nr   r8   z$Series.interpolate with object dtypezInvalid fill methodrK   Zasfreqr;   )	r   r   rN   rO   rP   r2   r   r   r1   )r4   r6   r   rQ   r"   r"   r#   test_interpolate_asfreq_raisesV  s    z8TestSeriesInterpolateData.test_interpolate_asfreq_raisesc                 C   sX   t d ttjddtjdtjg}|jddd}ttjdddddg}t|| d S )NrS   r   r   rg   r
   )r    r   r   )r4   r6   rn   rl   r"   r"   r#   test_interpolate_fill_value^  s
    
z5TestSeriesInterpolateData.test_interpolate_fill_value)C__name__
__module____qualname__rN   r  r  r7   rJ   rR   ro   ry   r|   r}   r~   Zparametrizer   tdZ
skip_if_nor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rG   ranger   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   Zperiod_rangeZinterval_ranger  r	  r  r  r  r"   r"   r"   r#   r&   P   s  
	
		
*


/

"" 
"" 


#

"" 
"" 







	

r&   )numpyrC   rN   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr.   r   r   r   r   r   Zpandas._testingZ_testingr2   Zfixturer$   r%   r&   r"   r"   r"   r#   <module>   s   

