a
    nÝEba|  ã                   @   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 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)ÚVersion)Ú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#   úl/home/ja/django-apps/lartica_env/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 )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_ind3   s    r&   c                   @   sú  e Zd Zdd„ Zdd„ Zejdd„ ƒZejdd„ ƒZejd	d
„ ƒZ	ejdd„ ƒZ
ejdd„ ƒZej di ejdddœejd�g¡dd„ ƒZdd„ Zdd„ Zej di ejdddœejd�g¡dd„ ƒZdd„ Zdd„ Zejd d!„ ƒZejd"d#„ ƒZd$d%„ Zej d&d'd(g¡d)d*„ ƒZd+d,„ Zej d-d.d/g¡d0d1„ ƒZd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z ej d<g d=¢¡d>d?„ ƒZ!ej d@e"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCdCdCdCdDe"j#e"j#g	dEdFdGœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCdCe"j#e"j#dDe"j#e"j#g	dEdFddHœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCe"j#e"j#e"j#dDdDdDg	dEdIdGœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCe"j#e"j#e"j#dDdDe"j#g	dEdIddHœ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dEdIddHœfe$dJƒe$dJƒdEdIddHœff¡dKdL„ ƒZ%ej d@e"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCdDdDdDdDe"j#e"j#g	dMdFdGœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#e"j#dCe"j#e"j#dDdDe"j#e"j#g	dMdFddHœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	dCdCdCe"j#e"j#e"j#dDe"j#e"j#g	dMdIdGœfe"j#e"j#dAe"j#e"j#e"j#dBe"j#e"j#g	e"j#dCdCe"j#e"j#e"j#dDe"j#e"j#g	dMdIddHœff¡dNdO„ ƒZ&dPdQ„ Z'dRdS„ Z(dTdU„ Z)ejdVdW„ ƒZ*ej dXdYejdZejd�g¡d[d\„ ƒZ+ejd]d^„ ƒZ,ejej d_d`dEg¡dadb„ ƒƒZ-dcdd„ Z.dedf„ Z/ejej d_ddgg¡dhdi„ ƒƒZ0ejej djd'dkd(dle"j#g¡dmdn„ ƒƒZ1ejdodp„ ƒZ2ejdqdr„ ƒZ3ejdsdt„ ƒZ4ejdudv„ ƒZ5dwdx„ Z6dydz„ Z7d{d|„ Z8ej d}g d~¢e9j:dd€d��e9j;d(d€d‚�g¡dƒd„„ ƒZ<ejd…d†„ ƒZ=ej d‡dZg dˆ¢fdYg d‰¢fg¡dŠd‹„ ƒZ>dŒd�„ Z?d.S )ŽÚTestSeriesInterpolateDatac           	      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©Údtypeé   é
   r   ©r!   c                 S   s   g | ]}|  ¡ ‘qS r#   )Ú	toordinal)Ú.0Údr#   r#   r$   Ú
<listcomp>\   ó    z>TestSeriesInterpolateData.test_interpolate.<locals>.<listcomp>©r	   Útime)r   ÚnpÚarangeÚlenÚfloatr	   ÚcopyÚNaNÚinterpolateÚtmÚassert_series_equalÚastype)	ÚselfZdatetime_seriesZstring_seriesÚtsZts_copyZlinear_interpZord_tsZord_ts_copyZtime_interpr#   r#   r$   Útest_interpolateR   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   é   zGtime-weighted interpolation only works on Series.* with a DatetimeIndex©Úmatchr3   r,   )r   r4   r9   ÚpytestÚraisesÚ
ValueErrorr:   )r>   Znon_tsÚmsgr#   r#   r$   Ú/test_interpolate_time_raises_for_non_timeseriese   s    zITestSeriesInterpolateData.test_interpolate_time_raises_for_non_timeseriesc                 C   sh   t g d¢ƒ}t g d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡jdd�dd	… }t 	||¡ d S )
N©r+   é   é   é   ©	ç      &@g     €&@g      '@g     €'@ç      (@g     €(@g      )@g     €)@ç      *@©	ç      ð?ç      ô?ç      ø?ç      ü?ç       @ç      @ç      @ç      @ç      @r2   ©rS   rT   rU   rW   rX   rY   r   r,   r   é   ©
r   r   r	   Úunionr=   r7   Úreindexr:   r;   r<   )r>   ÚserÚexpectedÚ	new_indexÚresultr#   r#   r$   Útest_interpolate_cubicsplinem   s    
þÿz6TestSeriesInterpolateData.test_interpolate_cubicsplinec                 C   sT   t t tjjdd�¡ƒ}|j tg d¢ƒ¡ t	¡}| 
|¡jdd�}|dd…  d S )Néd   )Úsize)g      H@g     ÀH@g     àH@g      I@g     @I@g     `I@r   r,   é1   é3   )r   r4   ÚsortÚrandomÚuniformr	   r^   r   r=   r7   r_   r:   )r>   r`   rb   Úinterp_sr#   r#   r$   Útest_interpolate_pchip}   s    
ÿþz0TestSeriesInterpolateData.test_interpolate_pchipc                 C   sÂ   t g d¢ƒ}t g d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡jdd�}t 	|dd	… |¡ t g d
¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡jddd�}t 	|dd	… |¡ d S )NrI   rM   rQ   r2   r[   r   r,   r   r\   )	rN   rR   rR   rR   rO   rR   rR   rR   rP   )r!   Zderr]   ©r>   r`   ra   rb   rl   r#   r#   r$   Útest_interpolate_akimaŠ   s&    
þÿ
þÿz0TestSeriesInterpolateData.test_interpolate_akimac                 C   sh   t g d¢ƒ}t g d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡jdd�}t 	|dd	… |¡ d S )
NrI   rM   rQ   r2   r[   r   r,   r   r\   r]   rn   r#   r#   r$   Ú%test_interpolate_piecewise_polynomial¥   s    
þÿz?TestSeriesInterpolateData.test_interpolate_piecewise_polynomialc                 C   sh   t g d¢ƒ}t g d¢tg d¢ƒd�}|j tg d¢ƒ¡ t¡}| |¡jdd�}t 	|dd	… |¡ d S )
NrI   rM   rQ   r2   r[   r   r,   r   r\   r]   rn   r#   r#   r$   Ú!test_interpolate_from_derivatives´   s    
þÿz;TestSeriesInterpolateData.test_interpolate_from_derivativesr"   r   r   ©r!   r   )Zmarksc                 C   sT   t tjtjgƒ}t |jf i |¤Ž|¡ t g td� ¡ }t |jf i |¤Ž|¡ d S )Nr(   )r   r4   Únanr;   r<   r:   Úobject)r>   r"   Úsr#   r#   r$   Útest_interpolate_cornersÃ   s    
z2TestSeriesInterpolateData.test_interpolate_cornersc                 C   sÊ   t tjt tj d¡¡d�}tj d¡|d d d…< |jj 	t
¡}|jdd�}| ¡ }t|jƒ}| }t t || || |j| ¡|j| d�}t || |¡ |jdd�}t ||¡ t || |¡ d S )Né   r2   r+   r\   r	   r,   r
   )r   r4   rs   ri   rj   ZrandÚrandnr	   r
   r=   r7   r:   r8   r   Zinterpr;   r<   )r>   ru   Úvalsrc   ra   Ú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   r\   rJ   zStime-weighted interpolation only works on Series or DataFrames with a DatetimeIndexrB   r3   r,   ©r   r4   rs   rD   rE   rF   r:   ©r>   ru   rG   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   r\   ©ç        rR   rV   rZ   ©r   r4   rs   r:   r;   r<   )r>   r"   ru   rc   ra   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   rA   é   )r   r\   r*   é	   r2   )rR   rV   rZ   ç      @r�   ©r>   ru   rc   ra   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   rA   Úabcdr2   )r€   rR   rV   rV   )r   r4   rs   Úlistr:   r;   r<   r†   r#   r#   r$   Útest_nan_str_index  s    z,TestSeriesInterpolateData.test_nan_str_indexc                 C   sJ   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   rA   r\   rƒ   r2   r   r,   )rR   r…   ç      "@g      0@r�   )r>   Úsqrc   ra   r#   r#   r$   Útest_interp_quad  s    z*TestSeriesInterpolateData.test_interp_quadc                 C   sD  t ddtjdtjdgƒ}t g d¢ƒ}|jdd�}t ||¡ |jddd	�}t ||¡ t g d
¢ƒ}|jdd�}t || d¡¡ |jddd	�}t ||¡ t g d
¢ƒ}|jdd�}t || d¡¡ |jddd	�}t ||¡ t g d¢ƒ}|jdd�}t ||¡ |jddd	�}t ||¡ t g d¢ƒ}|jdd�}t ||¡ d S )Nr   r\   rK   é   )rR   rZ   g      @rO   g     €2@ç      9@r   r,   Zinfer)r!   Zdowncast)r   r\   r\   rK   rK   r�   r   r7   r   )r   rZ   g÷:©/KK@rO   gL8ô2@r�   r   )rR   rZ   g333333@rO   g3333332@r�   r   )r   r4   rs   r:   r;   r<   r=   ©r>   ru   ra   rc   r#   r#   r$   Útest_interp_scipy_basic  s0    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   r\   rJ   rR   rZ   ç      @ç      @rN   r   rA   ©r!   Úlimitr�   r‘   r#   r#   r$   Útest_interp_limit:  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   rA   rƒ   zLimit must be greater than 0rB   ©r–   r!   r|   )r>   r%   r–   ru   r!   r"   r#   r#   r$   Ú*test_interpolate_invalid_nonpositive_limitA  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   rA   rƒ   rV   zLimit must be an integerrB   r™   r|   )r>   r%   ru   r!   r"   r–   r#   r#   r$   Ú$test_interpolate_invalid_float_limitI  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�}tjt|d�� |j|d� W d   ƒ n1 sT0    Y  tjt|d�� |j|d	d
� W d   ƒ n1 s�0    Y  d S )Nr   r\   rK   r�   zmethod must be one of.* Got 'z	' insteadrB   r,   r˜   r•   r|   )r>   rœ   ru   rG   r#   r#   r$   Útest_interp_invalid_methodQ  s    *z4TestSeriesInterpolateData.test_interp_invalid_methodc                 C   s\   t ddtjdtjdgƒ}d}tjt|d�� |jddd� W d   ƒ n1 sN0    Y  d S )	Nr   r\   rK   r�   z&Cannot pass both fill_value and methodrB   Úpad)Z
fill_valuer!   r|   )r>   r`   rG   r#   r#   r$   Ú$test_interp_invalid_method_and_value^  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   r\   rJ   rR   rZ   r“   r”   rN   r   rA   Úforward©r!   r–   Úlimit_directionÚFORWARDr�   r‘   r#   r#   r$   Útest_interp_limit_forwardf  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 )NrR   rZ   rN   )rR   rR   rZ   r“   r”   rŒ   rN   rN   r   Úboth©r!   r¢   r“   r”   rŒ   r    Úbackwardr�   r‘   r#   r#   r$   Útest_interp_unlimitedr  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 sŽ0    Y  d S )Nr   r\   rJ   zVInvalid limit_direction: expecting one of \['forward', 'backward', 'both'\], got 'abc'rB   r   rA   Úabcr¡   r¦   r|   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 )Nr\   é   rZ   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 abcrB   r©   )	r   r4   rs   r:   r;   r<   rD   rE   rF   )r>   ru   ra   rc   rG   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�}tjt|d�� |j||d� W d   ƒ n1 sP0    Y  d S )N©r   rA   r\   z`limit_direction` must be 'z' for method `ú`rB   r¦   )r   rD   rE   rF   r:   )r>   r!   r¢   ra   ru   rG   r#   r#   r$   Ú"test_interp_limit_direction_raises¿  s    z<TestSeriesInterpolateData.test_interp_limit_direction_raiseszdata, expected_data, kwargsr\   r«   rZ   r”   rž   r­   r®   r°   r±   r*   c                 C   s0   t |ƒ}t |ƒ}|jf i |¤Ž}t ||¡ d S ©N©r   r:   r;   r<   ©r>   ÚdataZexpected_datar"   ru   ra   rc   r#   r#   r$   Útest_interp_limit_area_with_padÔ  s    &z9TestSeriesInterpolateData.test_interp_limit_area_with_padrµ   c                 C   s0   t |ƒ}t |ƒ}|jf i |¤Ž}t ||¡ d S 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   r\   rJ   rR   rZ   r”   rŒ   rN   r   rA   r§   r¡   r“   r¥   r«   r„   rK   )rR   rZ   r…   r“   r¬   r”   rŒ   ç      $@rN   rO   rO   r…   r¬   r¿   rO   r�   r‘   r#   r#   r$   Útest_interp_limit_direction   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   rA   r§   r¡   )r“   r“   r“   r”   rŒ   rŒ   r¥   r�   r‘   r#   r#   r$   Útest_interp_limit_to_ends9  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_endsE  s    z7TestSeriesInterpolateData.test_interp_limit_before_endsc                 C   s>   t g d¢ƒ}|jddd�}t ||¡ | ¡ }t ||¡ d S )Nr¶   r   r   rr   rº   )r>   ru   rc   r#   r#   r$   Útest_interp_all_goodU  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}|rŒt
jt|d�� |jddd� W d   ƒ n1 s‚0    Y  d S )	N))r   Úa)r   Úb)rA   Úcr   rA   r2   z?Only `method=linear` interpolation is supported on MultiIndexesrB   r   rr   )r   Úfrom_tuplesr   r4   rs   r8   Úlocr:   r;   r<   rD   rE   rF   )r>   rÄ   Úidxru   ra   rc   rG   r#   r#   r$   Útest_interp_multiIndex_  s    
z0TestSeriesInterpolateData.test_interp_multiIndexc                 C   sZ   t dtjdgg d¢d�}d}tjt|d�� |jdd� W d   ƒ n1 sL0    Y  d S )	Nr   r\   )r   rA   r   r2   z8krogh interpolation requires that the index be monotonicrB   r   r,   r|   r}   r#   r#   r$   Útest_interp_nonmono_raisep  s    z3TestSeriesInterpolateData.test_interp_nonmono_raiser!   r   c                 C   sT   t dtjdgtdd|d�d�}|j|d�}t g d¢tdd|d�d�}t ||¡ d S )Nr   r\   ú1/1/2000©ÚperiodsÚtzr2   r,   )rR   rR   rZ   )r   r4   rs   r   r:   r;   r<   )r>   r!   Ztz_naive_fixtureÚdfrc   ra   r#   r#   r$   Útest_interp_datetime64w  s    ÿþz0TestSeriesInterpolateData.test_interp_datetime64c                 C   sP   t dddd�}t|ƒ}tj|d< |jdd�}t|ƒ}|d |d< t ||¡ d S )	Nz
2015-04-05r\   z
US/CentralrÎ   r   rž   r,   r   )r   r   ÚpdZNaTr:   r;   r<   )r>   Zdtir`   rc   ra   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©rR   rV   rZ   r   )r–   rº   r†   r#   r#   r$   Útest_interp_limit_no_nans�  s    z3TestSeriesInterpolateData.test_interp_limit_no_nansr   c                 C   sT   t ddtjdgƒ}d}tjt|d�� |j|d� W d   ƒ n1 sF0    Y  d S )Nr   r   r\   z6You must specify the order of the spline or polynomialrB   r,   r|   )r>   r!   ru   rG   r#   r#   r$   Útest_no_order–  s    z'TestSeriesInterpolateData.test_no_orderr   g      ð¿r€   c                 C   sV   t ddtjdgƒ}d}tjt|d�� |jd|d� W d   ƒ n1 sH0    Y  d S )Nr   r   r\   z.order needs to be specified and greater than 0rB   r   rr   r|   )r>   r   ru   rG   r#   r#   r$   Ú%test_interpolate_spline_invalid_orderŸ  s    z?TestSeriesInterpolateData.test_interpolate_spline_invalid_orderc                 C   sD   t ddtjddtjdgƒ}|jddd�}t g d¢ƒ}t ||¡ d S )	Nr   rA   rƒ   r*   r«   r   rr   ©rR   rV   rZ   r…   r“   r¬   r”   r�   r†   r#   r#   r$   Útest_spline§  s    z%TestSeriesInterpolateData.test_splinec                 C   sn   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   rA   r\   rƒ   é   r   )r!   r   Úext)rR   rV   rZ   r…   r“   r¬   r¬   r   rÙ   r�   )r>   ru   Zresult3Z	expected3Úresult1Ú	expected1r#   r#   r$   Útest_spline_extrapolate®  s    z1TestSeriesInterpolateData.test_spline_extrapolatec                 C   sH   t ddtjddtjdgƒ}|jdddd	�d
 |jddd�d
 ksDJ ‚d S )Nr   rA   rƒ   gffffff@r«   r   r\   r   )r!   r   ru   r*   rr   )r   r4   rs   r:   )r>   ru   r#   r#   r$   Útest_spline_smooth¹  s
    ÿÿz,TestSeriesInterpolateData.test_spline_smoothc                 C   sT   t t d¡d ƒ}tj|tj ddd¡< |jddd�}|jddd�}t ||¡ d S )	Nr+   rA   r   r„   r\   r   r   rr   )	r   r4   r5   rs   rj   Úrandintr:   r;   r<   )r>   ru   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   r\   r¶   r2   r3   r,   rÕ   )r   rA   rƒ   )rR   g®(%«ªú?rZ   )r   r4   rs   rÓ   Zto_timedeltar:   r;   r<   )r>   rÑ   rc   ra   r#   r#   r$   Útest_interp_timedelta64É  s    z1TestSeriesInterpolateData.test_interp_timedelta64c                 C   sZ   t dddd�}ttj t|ƒ¡|d�}tj|d d d…< |jdd�}| ¡ }t 	||¡ d S )	NrÍ   z	1/20/2000ÚD)Úfreqr2   rA   r
   r,   )
r   r   r4   rj   rx   r6   rs   r:   r;   r<   )r>   Úrngr?   rc   Ú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   rK   é   é$   r   )Údaysr3   r,   Z12H)Úhours)r   r   ÚappendrÓ   Z
DateOffsetZsort_valuesr_   r:   r;   Zassert_numpy_array_equalr
   )r>   r	   r?   rb   rç   rc   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 s¶0    Y  d S )Nr   r   r\   r2   r   Úscipyr   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.rB   r!   )rÓ   Ú	DataFramer4   rs   rD   Zimportorskipr:   r   r;   r<   rE   rF   )	r>   r&   rï   rÑ   r!   r"   rc   ra   Zexpected_errorr#   r#   r$   Útest_interp_non_timedelta_indexð  s    

ÿÿz9TestSeriesInterpolateData.test_interp_non_timedelta_indexc           
      C   s®   t jddd�}t jddtjdg|d�}|\}}ddl}|dv sX|d	krtt|jƒtd
ƒk rt|j 	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.
        r   rƒ   rð   r   r\   r2   N>   r   r   r   z1.5.0z2 interpolation is not supported for TimedeltaIndex)Úreasonr!   r   rô   )rÓ   Ztimedelta_rangerö   r4   rs   ró   r   Ú__version__ÚnodeZ
add_markerrD   ÚmarkZxfailr:   r   r;   r<   )
r>   r    r&   rï   rÑ   r!   r"   ró   rc   ra   r#   r#   r$   Ú test_interpolate_timedelta_index  s"    ÿÿÿÿz:TestSeriesInterpolateData.test_interpolate_timedelta_indexzascending, expected_values)r   rA   r\   r„   r+   ©r+   r„   r\   rA   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„   rA   r   rý   )r¼   r	   )Ú	ascendingr	   r,   )r¼   r	   r)   )r   r4   rs   Z
sort_indexr:   r7   r;   r<   )r>   rþ   Zexpected_valuesr?   rc   ra   r#   r#   r$   Útest_interpolate_unsorted_index(  s    z9TestSeriesInterpolateData.test_interpolate_unsorted_indexc                 C   sf   t g d¢ƒ}d}tjt|d�� | dd¡}W d   ƒ n1 s@0    Y  t g d¢ƒ}t ||¡ d S )Nr¶   zwIn a future version of pandas all arguments of Series.interpolate except for the argument 'method' will be keyword-onlyrB   rž   r   )r   r;   Zassert_produces_warningÚFutureWarningr:   r<   )r>   r`   rG   rc   ra   r#   r#   r$   Ú%test_interpolate_pos_args_deprecation3  s    ÿ*z?TestSeriesInterpolateData.test_interpolate_pos_args_deprecation)@Ú__name__Ú
__module__Ú__qualname__r@   rH   ÚtdZskip_if_no_scipyrd   rm   ro   rp   rq   rD   rû   Zparametrizer   rv   r{   r~   r‚   r‡   rŠ   rŽ   r’   r—   rš   r›   r�   rŸ   r¤   r¨   rª   r²   r¸   r4   rs   Ú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'   Q   s2  




ÿþþ	
	ÿþþ	


$

/þ
"ý" 
ý"ý" 
ý
ý
ýæþ#
"ý" 
ý"ý" 
ýðþ

	ÿ






ýþ

þ
r'   )Únumpyr4   rD   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr  ZpandasrÓ   r   r   r   r   r   Zpandas._testingZ_testingr;   Zpandas.util.versionr   Zfixturer%   r&   r'   r#   r#   r#   r$   Ú<module>   s   ÿ
ÿ
