o
    Û­jÛ…  ã                   @   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#   úi/var/www/html/CropPilot/venv/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   )zÕFixture 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„ Z9d€d�„ Z:ej d‚g dƒ¢e;j<d„d…d†�e;j=d-d…d‡�g¡dˆd‰„ ƒZ>dŠd‹„ Z?ej dŒd_g d�¢fd^g dŽ¢fg¡d�d�„ ƒZ@d‘d’„ ZAd“d”„ 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ÚdtÚ	to_periodÚinterpolateÚtmÚassert_series_equal)ÚselfÚorigÚserÚser_perÚres_perÚ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.   Únanr3   r4   r5   Úastype)r6   Údatetime_seriesÚtsÚts_copyÚlinear_interpÚord_tsÚord_ts_copyÚ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©ÚmatchrF   r@   ©r   rG   rK   ÚpytestÚraisesÚ
ValueErrorr3   )r6   Ú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     €)@ç      *@©	ç      ð?ç      ô?ç      ø?ç      ü?ç       @ç      @ç      @ç      @ç      @rE   ©ri   rj   rk   rm   rn   ro   r   r@   r   é   )rX   Úimportorskipr   r   r   ÚunionrL   rJ   Úreindexr3   Úlocr4   r5   )r6   r8   Ú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 )
Nr^   r,   éd   )Úsize)g      H@g     ÀH@g     àH@g      I@g     @I@g     `I@r   r@   é1   é3   )rX   rs   r   rG   ÚsortÚrandomÚdefault_rngÚuniformr   rt   r   rL   rJ   ru   r3   rv   )r6   r8   rx   Ú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 )Nr^   r_   rc   rg   rE   rq   r   r@   r   rr   )	rd   rh   rh   rh   re   rh   rh   rh   rf   )r!   Úder©rX   rs   r   r   r   rt   rL   rJ   ru   r3   r4   r5   rv   ©r6   r8   rw   rx   rƒ   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 )Nr^   r_   rc   rg   rE   rq   r   r@   r   rr   r†   r‡   r#   r#   r$   Ú%test_interpolate_piecewise_polynomial­   ó   

þÿz?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   r‰   )Nr^   r_   rc   rg   rE   rq   r   r@   r   rr   r†   r‡   r#   r#   r$   Ú!test_interpolate_from_derivatives¼   r‹   z;TestSeriesInterpolateData.test_interpolate_from_derivativesr"   r   r   ©r!   r   r^   )Úmarksc                 C   sT   t tjtjgƒ}t |jdi |¤Ž|¡ t g td� ¡ }t |jdi |¤Ž|¡ d S )Nr=   r#   )r   rG   rK   r4   r5   r3   Úobject)r6   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,   é   rE   r?   rr   r   r@   r	   )r   rG   rK   r   r€   r�   Ústandard_normalrv   r   r	   rL   rJ   r3   r.   r   Úinterpr4   r5   )r6   r�   Úvalsry   rw   ÚbadÚgoodÚ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   rr   r`   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrU   rF   r@   rW   ©r6   r�   r\   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   rr   ©ç        rh   rl   rp   r#   ©r   rG   rK   r3   r4   r5   )r6   r"   r�   ry   rw   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   rr   r*   é	   rE   )rh   rl   rp   ç      @rž   ©r6   r�   ry   rw   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,   ÚabcdrE   )r�   rh   rl   rl   )r   rG   rK   Úlistr3   r4   r5   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 )
Nr^   r   r    é   )r   r,   rr   r    rE   r   r@   )rh   r¢   ç      "@g      0@©rX   rs   r   rG   rK   r3   r4   r5   )r6   Úsqry   rw   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 s°w   Y  t ||¡ tg d¢ƒ}|jdd�}t ||¡ tjt	|d
�� |jddd�}W d   ƒ n1 sæw   Y  t ||¡ tg d¢ƒ}|jdd�}t ||¡ d S )Nr^   r   rr   ra   é   )rh   rp   g      @re   g     €2@ç      9@r   r@   z:The 'downcast' keyword in Series.interpolate is deprecatedrU   Úinfer)r!   Údowncast)r   rr   rr   ra   ra   r®   r
   rJ   r   )r   rp   g÷:©/KK@re   gL8ô2@r¯   r   )rh   rp   g333333@re   g3333332@r¯   r   )rX   rs   r   rG   rK   r3   r4   r5   Úassert_produces_warningÚFutureWarningrL   ©r6   r�   rw   ry   r\   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   rr   r`   rh   rp   ç      @ç      @rd   r   r,   ©r!   Úlimitrž   ©r6   r�   rw   ry   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 0rU   ©r¹   r!   r#   rW   )r6   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    rl   zLimit must be an integerrU   r½   r#   rW   )r6   r%   r�   r!   r"   r¹   r#   r#   r$   Ú$test_interpolate_invalid_float_limitV  s   "ÿz>TestSeriesInterpolateData.test_interpolate_invalid_float_limitÚinvalid_methodNÚ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   rr   ra   r®   zmethod must be one of.* Got 'z	' insteadz%'method' should be a string, not NonerU   r@   r¼   r¸   rW   )r6   rÀ   r�   r\   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   rr   ra   r®   z:'fill_value' is not a valid keyword for Series.interpolateú"Series.interpolate with method=padrU   Úpad)Ú
fill_valuer!   )
r   rG   rK   rX   rY   rZ   r4   r²   r³   r3   )r6   r8   r\   Ú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   rr   r`   rh   rp   r¶   r·   rd   r   r,   Úforward©r!   r¹   Úlimit_directionÚ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 )Nrh   rp   rd   )rh   rh   rp   r¶   r·   rª   rd   rd   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   rr   r`   zVInvalid limit_direction: expecting one of \['forward', 'backward', 'both'\], got 'abc'rU   r   r,   ÚabcrÉ   rÎ   rW   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 )Nrr   é   rp   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 abcrU   rÑ   )	r   rG   rK   r3   r4   r5   rX   rY   rZ   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,   rr   z`limit_direction` must be 'z' for method `ú`zSeries.interpolate with method=rU   rÎ   )r   rX   rY   rZ   r4   r²   r³   r3   )r6   r!   rÊ   rw   r�   r\   rÆ   r#   r#   r$   Ú"test_interp_limit_direction_raisesÐ  s   ÿÿ"ÿz<TestSeriesInterpolateData.test_interp_limit_direction_raiseszdata, expected_data, kwargsrr   rÓ   rp   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Ã   rU   r#   ©r   r4   r²   r³   r3   r5   ©r6   ÚdataÚexpected_datar"   r�   rw   r\   ry   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=bfillrU   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   rr   r`   rh   rp   r·   rª   rd   r   r,   rÏ   rÉ   r¶   rÍ   rÓ   r¡   ra   )rh   rp   r¢   r¶   rÔ   r·   rª   ç      $@rd   re   re   r¢   rÔ   rè   re   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 )Nr^   rÞ   r   r   r�   )rX   rs   r   r3   r4   r5   )r6   r�   ry   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,   rE   z?Only `method=linear` interpolation is supported on MultiIndexesrU   r   r�   )r   Úfrom_tuplesr   rG   rK   r.   rv   r3   r4   r5   rX   rY   rZ   )r6   rí   Úidxr�   rw   ry   r\   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 )
Nr^   r   rr   )r   r,   r   rE   z8krogh interpolation requires that the index be monotonicrU   r   r@   ©rX   rs   r   rG   rK   rY   rZ   r3   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 )Nr^   r   rr   ú1/1/2000©r+   ÚtzrE   r
   ú0Series.interpolate with method=pad is deprecatedrU   r@   )rh   rh   rp   )rX   rs   r   rG   rK   r   r³   r4   r²   r3   rÛ   r5   )	r6   r!   Útz_naive_fixtureÚdfÚwarnr\   ry   Úaltrw   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-05rr   z
US/Centralr÷   r   rù   rU   rÄ   r@   r   )
r   r   r/   r0   r4   r²   r³   r3   rÛ   r5   )r6   Údtir8   r\   ry   rý   rw   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©rh   rl   rp   r   )r¹   )r   r3   r4   r5   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 )Nr^   r   r   rr   z6You must specify the order of the spline or polynomialrU   r@   rô   )r6   r!   r�   r\   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 )	Nr^   r   r   rr   z.order needs to be specified and greater than 0rU   r   r�   rô   )r6   r   r�   r\   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 )
Nr^   r   r,   r    r*   rÓ   r   r�   ©rh   rl   rp   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 )Nr^   r   r,   rr   r    é   r   )r!   r   Úext)rh   rl   rp   r¢   r¶   rÔ   rÔ   r   r  r«   )r6   r�   Úresult3Ú	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 )Nr^   r   r,   r    gffffff@rÓ   r   rr   r   )r!   r   r�   r*   r�   )rX   rs   r   rG   rK   r3   )r6   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 )Nr^   r?   r,   rJ   r=   r   r¡   rr   r   r   r�   )rX   rs   r   rG   rH   rK   r€   r�   Úintegersr3   r4   r5   )r6   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   rr   rÞ   rE   rF   r@   r  )r   r,   r    )rh   g®(%«ªú?rp   )r   rG   rK   r/   Úto_timedeltar3   r4   r5   )r6   rû   ry   rw   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,   rE   r	   r@   )r   r   rG   r€   r�   r“   rI   rK   r3   r4   r5   )r6   ÚrngrN   ry   Ú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    Ú12D)r+   r  )r   ra   é   é$   r   )ÚdaysrF   r@   Ú12h)Úhours)r   r   Úappendr/   Ú
DateOffsetÚsort_valuesru   r3   r4   Úassert_numpy_array_equalr	   )r6   r   rN   rx   r  ry   r#   r#   r$   Ú test_series_interpolate_intraday  s   z:TestSeriesInterpolateData.test_series_interpolate_intradayÚind)rî   rï   rð   rC   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   rr   rE   r   r^   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.rU   r!   r#   )r/   Ú	DataFramerG   rK   rX   rs   r3   r   r4   r5   rY   rZ   )	r6   r&   r"  rû   r!   r"   ry   rw   Ú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.
        r^   r   r    r#  r   rr   rE   >   r   r   z2 interpolation is not supported for TimedeltaIndexr(   r!   rœ   r&  Nr#   )rX   rs   r/   Útimedelta_ranger(  rG   rK   ÚapplymarkerÚmarkÚxfailr3   r   r4   r5   )	r6   r    r&   r"  rû   r!   r"   ry   rw   r#   r#   r$   Ú test_interpolate_timedelta_index4  s   
ÿÿz:TestSeriesInterpolateData.test_interpolate_timedelta_indexzascending, expected_values)r   r,   rr   r¡   r?   ©r?   r¡   rr   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   r0  )rä   r   )Ú	ascendingr   r@   )rä   r   r>   )r   rG   rK   Ú
sort_indexr3   rJ   r4   r5   )r6   r1  Úexpected_valuesrN   ry   rw   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ï   r=   z$Series.interpolate with object dtypezInvalid fill methodrU   Úasfreqr@   )	r   r�   rX   rY   rZ   r4   r²   r³   r3   )r6   r8   rÆ   r\   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 )Nr^   r   r   rr   r
   )r!   rÅ   r«   )r6   r8   ry   rw   r#   r#   r$   Útest_interpolate_fill_value^  s
   
z5TestSeriesInterpolateData.test_interpolate_fill_value)CÚ__name__Ú
__module__Ú__qualname__rX   r-  r.  r<   rT   r]   rz   r„   rˆ   rŠ   rŒ   Úparametrizer   ÚtdÚ
skip_if_nor‘   r™   r›   rŸ   r¤   r¨   r­   rµ   r»   r¾   r¿   rÂ   rÇ   rÌ   rÐ   rÒ   rÚ   rà   rG   rK   Úrangeræ   rç   ré   rê   rë   rì   ró   rõ   rþ   r   r  r  r  r  r  r  r  r  r  r!  r/   Úperiod_rangeÚinterval_ranger*  r/  r4  r6  r7  r#   r#   r#   r$   r'   P   s   
ÿþþ
		ÿþþ
	*


/þ

"ý" 
ý"ý" 
ý
ý
ýæþ
#
"ý" 
ý"ý" 
ýðþ


ÿ



	ýþ
þ
r'   )ÚnumpyrG   rX   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsr<  Úpandasr/   r   r   r   r   r   Úpandas._testingÚ_testingr4   Úfixturer%   r&   r'   r#   r#   r#   r$   Ú<module>   s    ÿ
ÿ
