o
    թZhۅ                     @   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   "   | 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#   c/var/www/html/lang_env/lib/python3.10/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   r   )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   s    z>TestSeriesInterpolateData.test_interpolate.<locals>.<listcomp>r   time)r   nparangelenfloatr   r.   nanr2   r3   r4   astype)r5   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   sV   t dddtjg}d}tjt|d |jdd W d    d S 1 s$w   Y  d S )Nr   r   r,   zGtime-weighted interpolation only works on Series.* with a DatetimeIndexmatchrB   r<   r   rC   rG   pytestraises
ValueErrorr2   )r5   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   reindexr2   locr3   r4   )r5   r7   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   r2   rk   )r5   r7   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   r2   r3   r4   rk   r5   r7   rl   rm   rx   r#   r#   r$   test_interpolate_akima   s(   


z0TestSeriesInterpolateData.test_interpolate_akimac                 C   t   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      

z?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   r}   )NrS   rT   rX   r\   rA   rf   r   r<   r   rg   rz   r{   r#   r#   r$   !test_interpolate_from_derivatives   r   z;TestSeriesInterpolateData.test_interpolate_from_derivativesr"   r   r   r!   r   rS   )Zmarksc                 C   sT   t tjtjg}t|jdi || t g td }t|jdi || d S )Nr9   r#   )r   rC   rG   r3   r4   r2   object)r5   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   r2   r.   r   Zinterpr3   r4   )r5   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    d S 1 s(w   Y  d S )Nr   rg   rU   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrK   rB   r<   rM   r5   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di |}t g d}t|| d S )Nr   r   rg           r]   ra   re   r#   r   rC   rG   r2   r3   r4   )r5   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   r5   r   rn   rl   r#   r#   r$   test_nan_irregular_index
     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   listr2   r3   r4   r   r#   r#   r$   test_nan_str_index  r   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   r2   r3   r4   )r5   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>w   Y  t|| tg d}|jdd}t||
d tjt	|d
 |jddd}W d    n1 sww   Y  t|| tg d}|jdd}t||
d tjt	|d
 |jddd}W d    n1 sw   Y  t|| tg d}|jdd}t|| tjt	|d
 |jddd}W d    n1 sw   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   r2   r3   r4   assert_produces_warningFutureWarningrH   r5   r   rl   rn   rQ   r#   r#   r$   test_interp_scipy_basic  sD   
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   r5   r   rl   rn   r#   r#   r$   test_interp_limitG  s   z+TestSeriesInterpolateData.test_interp_limitr   r   c                 C   sd   t ddtjdg}|\}}tjtdd |jd||d| W d    d S 1 s+w   Y  d S )Nr   r,   r   zLimit must be greater than 0rK   r   r!   r#   rM   )r5   r%   r   r   r!   r"   r#   r#   r$   *test_interpolate_invalid_nonpositive_limitN  s
   "zDTestSeriesInterpolateData.test_interpolate_invalid_nonpositive_limitc                 C   sh   t ddtjdg}|\}}d}tjtdd |jd||d| W d    d S 1 s-w   Y  d S )	Nr   r,   r   ra   zLimit must be an integerrK   r   r#   rM   )r5   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 rd}tjt|d |j|d	 W d    n1 s0w   Y  tjt|d |j|d
d W d    d S 1 sOw   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   )r5   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/ tjt|d |j	ddd	 W d    n1 s1w   Y  W d    d S W d    d S 1 sIw   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   r3   r   r   r2   )r5   r7   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 s)w   Y  tjt|d |jddd
 W d    d S 1 sHw   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   s2  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    d S 1 sw   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   r2   r3   r4   rN   rO   rP   r   r#   r#   r$   test_interp_limit_area  sH   (" $$ $$$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/ tjt|d |j||d W d    n1 s2w   Y  W d    d S W d    d S 1 sJw   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   r3   r   r   r2   )r5   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   b   t |}t |}d}tjt|d |jdi |}W d    n1 s$w   Y  t|| d S )Nr   rK   r#   r   r3   r   r   r2   r4   r5   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   r   )Nz$Series.interpolate with method=bfillrK   r#   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   r2   r3   r4   )r5   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}|rIt
jt|d |jddd W d    d S 1 sBw   Y  d S 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   r2   r3   r4   rN   rO   rP   )r5   r   idxr   rl   rn   rQ   r#   r#   r$   test_interp_multiIndexv  s   
"z0TestSeriesInterpolateData.test_interp_multiIndexc                 C   sf   t d tdtjdgg dd}d}t jt|d |jdd	 W d    d S 1 s,w   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   r2   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rd nt}d}tj||d	 |j	|d
}W d    n1 s6w   Y  |d urI|
 }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   r3   r   r2   r   r4   )	r5   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 s*w   Y  | }t	|| t|}|d
 |d< t	|| d S )Nz
2015-04-05rg   z
US/Centralr   r   r   rK   r   r<   r   )
r   r   r/   r0   r3   r   r   r2   r   r4   )r5   Zdtir7   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   r2   r3   r4   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    d S 1 s)w   Y  d S )NrS   r   r   rg   z6You must specify the order of the spline or polynomialrK   r<   r   )r5   r!   r   rQ   r#   r#   r$   test_no_order  s   
"z'TestSeriesInterpolateData.test_no_orderr   g      r   c                 C   sb   t d tddtjdg}d}t jt|d |jd|d W d    d S 1 s*w   Y  d S )	NrS   r   r   rg   z.order needs to be specified and greater than 0rK   r   r   r   )r5   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   )r5   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s'J d S )NrS   r   r,   r   gffffff@r   r   rg   r   )r!   r   r   r*   r   )rN   rh   r   rC   rG   r2   )r5   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   r9   r   r   rg   r   r   r   )rN   rh   r   rC   rD   rG   ru   rv   Zintegersr2   r3   r4   )r5   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_timedeltar2   r3   r4   )r5   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   r2   r3   r4   )r5   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   r2   r3   Zassert_numpy_array_equalr	   )r5   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rtd |dkr8|d jdi |}tg dd|d	}t	|| d S d
| d}tj
t|d |d jdd|i| W d    d S 1 s]w   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#   )r/   	DataFramerC   rG   rN   rh   r2   r   r3   r4   rO   rP   )	r5   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 r-|t jj	| d	d
 |d j
d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  Nr#   )rN   rh   r/   Ztimedelta_ranger  rC   rG   Zapplymarkermarkxfailr2   r   r3   r4   )	r5   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   r:   )r   rC   rG   Z
sort_indexr2   rF   r3   r4   )r5   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. tjt|d |jdd W d    n1 s,w   Y  W d    d S W d    d S 1 sDw   Y  d S )N)r   Nr   r9   z$Series.interpolate with object dtypezInvalid fill methodrK   Zasfreqr<   )	r   r   rN   rO   rP   r3   r   r   r2   )r5   r7   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   )r5   r7   rn   rl   r#   r#   r$   test_interpolate_fill_value^  s
   
z5TestSeriesInterpolateData.test_interpolate_fill_value)C__name__
__module____qualname__rN   r
  r  r8   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_testingr3   Zfixturer%   r&   r'   r#   r#   r#   r$   <module>   s    

