
    A[gN                     v    d dl Zd dlZd dlmZ d dlmZ d dlmc m	Z
 d dlmZmZmZmZ d dlmZ  G d d      Zy)    N)using_pyarrow_string_dtype)ChainedAssignmentError)	DataFrameNaTSeries
date_rangec                   Z   e Zd Zd Zd Zd Zej                  j                   e	       d      d        Z
ej                  j                   e	       d      d        Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zej                  j)                  d ej*                  ddd       ej*                  ddd       ej*                  ddd      g      d        Zd Zej                  j)                  dd ej*                  d ej2                  d             g      d!        Zd" Zd# Zd$ Zd% Zd& Zd' Z ej                  j)                  dd(d)g      d*        Z!ej                  j)                  d+ddg      ej                  j)                  d,g d-      d.               Z"d/ Z#d0 Z$ej                  j)                  d1d2d3 ej*                  d4 ej2                  d5              ej*                  d6 ej2                  d5             g      d7        Z%ej                  j)                  d1g d8      d9        Z&y:);TestDataFrameInterpolatec                    t        t        d      t        d      t        d      g      }|j                  j                  dk(  sJ |j                         }t        |d   |d   dz  |d   g      }t        j                  ||       |j                         }|j                         }|j                         }t        j                  ||       y )Nz1+1jnanz2+2jcr         ?   )
r   complexfloatdtypekindinterpolatetmassert_series_equalto_frameassert_frame_equal)selfserresexpecteddfs        f/var/www/html/bid-api/venv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_interpolate.pytest_interpolate_complexz1TestDataFrameInterpolate.test_interpolate_complex   s    gfouU|WV_EFyy~~$$$oo3q63q6C<Q89
sH-\\^nn$$&
c8,    c                    t        t        dd            }|j                         }t        |d<    ||      j	                         } ||      }t        j                  ||       |j                  j                  d      } ||      j	                         } ||j                  j                  d            }t        j                  ||       ||d   z
  }	 ||	      j	                         }
 |||d   z
        }t        j                  |
|       y )Nz
2012-01-01   )periodsr   z
US/Pacificr   )	r   r   copyr   r   r   assert_equaldttz_localize)r   frame_or_seriesorigr   r   r   ser_tzres_tzexpected_tzser_tdres_tdexpected_tds               r   $test_interpolate_datetimelike_valuesz=TestDataFrameInterpolate.test_interpolate_datetimelike_values!   s    jq9:iikAc"..0"4(
X& ##L1 (446%dgg&9&9,&GH
, s1v (446%dT!Wn5
,r    c                    |r9|t         u r1t        j                  j                  d      }|j	                  |        |dt
        j                  dg      }|j                  }|j                  d        |g d      }t        j                  ||       t        j                  ||j                        sJ |j                         d   dk(  sJ y )	Nz'.values-based in-place check is invalidreason   r   Tinplace)r4   r   r   r   )r   pytestmarkxfailapplymarkernpr   valuesr   r   r%   shares_memorysqueeze)r   r(   using_array_managerrequestr8   objr)   r   s           r   test_interpolate_inplacez1TestDataFrameInterpolate.test_interpolate_inplace7   s    ?i#?;;$$,U$VD%q"&&!n-zz%";/
X& cjj111||~a C'''r    z#interpolate doesn't work for stringr2   c                 &   t        ddt        j                  dgdddt        j                  gg dt        d      d      }t        g dg d	g dt        d      d      }d
}t	        j
                  t        |      5  |j                         }d d d        t	        j                  |       |d   j                  }|d   j                  }|rJt        j                  ||d   j                        sJ t        j                  ||d   j                        sLJ t        j                  ||d   j                        rJ t        j                  ||d   j                        rJ t	        j
                  t        |      5  |j                  d      }d d d        J t	        j                  ||       t        j                  |d   j                  |      sJ t        j                  |d   j                  |      sJ y # 1 sw Y   oxY w# 1 sw Y   {xY w)Nr4   r      	   r4   r      r"   abcdABCD      ?       @      @      @)rO   rR         "@rS   'DataFrame.interpolate with object dtypematchrL   rM   Tr5   )r   r;   r   listr   assert_produces_warningFutureWarningr   r   _valuesr<   r=   )	r   using_copy_on_writer   r   msgresultcvaluesdvaluesr   s	            r   test_interp_basicz*TestDataFrameInterpolate.test_interp_basicH   s    BFFA&Arvv&!&\	
 ))!&\	
 8''SA^^%F B
fh/ S'//S'..##GVC[-@-@AAA##GVC[-@-@AAA''1D1DEEE''1D1DEEE''SA....C B{{
b(+ 39993999+ BA BAs   <G::H:HHc                    t        ddt        j                  dgdddt        j                  gg dt        d      d      }d}|st        nd }t        j                  ||	      5  |j                  d
      j                         }d d d        |j                  d
      }d|j                  d<   d|j                  d<   t        j                  |       y # 1 sw Y   OxY w)Nr4   r   rD   rE   rF   rH   rI   rT   rU   rL   rG   rG   rJ   )r"   rK   )r   r;   r   rW   rY   r   rX   	set_indexr   locr   )r   using_infer_stringr   r\   warningr]   r   s          r   &test_interp_basic_with_non_range_indexz?TestDataFrameInterpolate.test_interp_basic_with_non_range_indext   s     BFFA&Arvv&!&\	
 8'9-t''s;\\#&224F <<<$ V V
fh/ <;s   # CCc                 t    t               }|j                         }||usJ |}t        j                  ||       y )N)r   r   r   r   r   r   r]   r   s       r   test_interp_emptyz*TestDataFrameInterpolate.test_interp_empty   s8    [!R
fh/r    c                     t        ddt        j                  dgdddt        j                  gg dd      }d}t        j                  t
        |      5  |j                  d	
       d d d        y # 1 sw Y   y xY w)Nr4   r   rD   rE   rF   rJ   rK   rL   a  method must be one of \['linear', 'time', 'index', 'values', 'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'barycentric', 'krogh', 'spline', 'polynomial', 'from_derivatives', 'piecewise_polynomial', 'pchip', 'akima', 'cubicspline'\]. Got 'not_a_method' instead.rU   not_a_methodmethod)r   r;   r   r7   raises
ValueErrorr   r   r   r\   s      r   test_interp_bad_methodz/TestDataFrameInterpolate.test_interp_bad_method   sh    BFFA&Arvv&!
< 	 ]]:S1NN.N1 211s   A//A8c                    t        ddt        j                  dgdddt        j                  gg dt        d      d	      }|d
   j	                         }t        g dd
      }t        j                  ||       d}t        j                  t        |      5  |d
   j	                  d      }d d d        t        g dd
      }t        j                  ||       y # 1 sw Y   /xY w)NrO   rP   rR   r4   rD   rE   rF   rH   rI   rJ   rN   )name:The 'downcast' keyword in Series.interpolate is deprecatedrU   inferdowncastr4   r   rG   rD   )
r   r;   r   rW   r   r   r   r   rX   rY   )r   r   r]   r   r\   s        r   test_interp_comboz*TestDataFrameInterpolate.test_interp_combo   s    3,Arvv&!&\	
 C$$&.S9
vx0J''SAW(('(:F B,S1
vx0 BAs   CC"c                 \   t        ddt        j                  dgdddt        j                  gg dt        d      d	      }d
}d}d}t	        j
                  t        |      5  t        j                  t        |      5  |j                  d       d d d        d d d        t	        j
                  t        |      5  t        j                  t        |      5  |d   j                  d       d d d        d d d        y # 1 sw Y   oxY w# 1 sw Y   sxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)NrO   rP   rR   r4   rD   rE   rF   rH   rI   z'downcast must be either None or 'infer'=The 'downcast' keyword in DataFrame.interpolate is deprecatedrv   rU   int64rx   rJ   )r   r;   r   rW   r7   rp   rq   r   rX   rY   r   )r   r   r\   msg2msg3s        r    test_inerpolate_invalid_downcastz9TestDataFrameInterpolate.test_inerpolate_invalid_downcast   s    3,Arvv&!&\	
 8NK]]:S1++MF0 G 2 ]]:S1++MF3##W#5 G 21 GF 21 GF 21sH   !D
=C>D
;D"D-D">D	D

DD	D""D+c                    t        ddt        j                  dgt        j                  dddgd      }|j                  d      }d}t	        j
                  t        |      5  |j                  d	
       d d d        y # 1 sw Y   y xY w)Nr4   r   rD   rG   rJ   rK   rJ   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rU   r<   rn   )r   r;   r   rc   r7   rp   NotImplementedErrorr   rr   s      r   test_interp_nan_idxz,TestDataFrameInterpolate.test_interp_nan_idx   sn    aBFFA.bffaA5FGH\\#; 	 ]].c:NN(N+ ;::s   !A==Bc           	      (   t        j                  d       t        ddt        j                  ddt        j                  dgg dd      }|j                  d	      }|j                         }|j                  d
d      }d|j                  d<   d|j                  d<   t        j                  ||       |j                  d      }d|j                  d<   d|j                  d<   t        j                  ||       |j                  d      }d|j                  d<   d|j                  d<   t        j                  ||d       |j                  d      }d|j                  d<   d|j                  d<   t        j                  ||       |j                  d      }d|j                  d<   d|j                  d<   t        j                  ||       |j                  d      }d|j                  d<   d|j                  d<   t        j                  ||d       y )Nscipyr4   r   rD   r"      r4   r   rG   r"            rJ   rL   rL   
polynomialro   ordergUUU@rb   gu:@)r   rJ   cubicrn   gv:@gb+hZ@nearestF)check_dtype	quadraticg^r@g!g@slineargX ;@zerorP   )r7   importorskipr   r;   r   rc   r$   r   rd   r   r   r   r   r   r]   s       r   test_interp_variousz,TestDataFrameInterpolate.test_interp_various   s   G$aArvvq18OP
 \\#779|1=)V *W
fh/w/)V *W
fh/y1 V !W
fhEB{3)V *W
fh/y1)V *W
fh/v."V !W
fhEBr    c           	      <   t        j                  d       t        ddt        j                  ddt        j                  dgg dd      }|j                  d	
      }|j                         }d|j                  d<   d|j                  d<   t        j                  ||       d}t        j                  t        |      5  |j                  d	d      }d d d        t        j                  ||j                  t        j                               |j                  d
      }|j                         }|d   |d<   t        j                  ||       |j                  d
      }d|j                  d<   d|j                  d<   t        j                  ||       y # 1 sw Y   xY w)Nr   r4   r   rD   r"   r   r   r   barycentricrn   rG   )r   rJ      )r"   rJ   r}   rU   rw   )ro   ry   kroghrJ   pchip      @)r7   r   r   r;   r   r   r$   rd   r   r   rX   rY   astyper~   )r   r   r]   r   r\   	expectedks         r   test_interp_alt_scipyz.TestDataFrameInterpolate.test_interp_alt_scipy   sK   G$aArvvq18OP
 }5779 V V
fh/M''SA^^=7^KF B
fhoobhh&?@w/GGI	!#	#
fi0w/ V"V
fh/ BAs   <FFc           	         t        ddt        j                  dgdddt        j                  gt        j                  dddgdt        j                  ddgg dd	      }|j                  d
      }|j	                         }d|j
                  d<   d|j
                  d<   d|j
                  d<   |d   j                  t        j                        |d<   t        j                  ||       |j                  dd      }t        j                  ||       |j                  d
      }|j                         }t        j                  ||       y )Nr4   r   rD   rG   r"   r   r   rz   )r   r4   r   rG   rD   axis)rG   r4   )r   r   )r4   rG   r<   r   ro   r   )
r   r;   r   r   r$   rd   r   float64r   r   ri   s       r   test_interp_rowwisez,TestDataFrameInterpolate.test_interp_rowwise  s   q"&&!$q!RVV$FFAq!$rvvq!$
 Q'779TTTqk((4
fh/Qx8
fh/Q'>>#
fh/r    zaxis_name, axis_numberrowsr   rows_0)idindexindex_0columnsr4   	columns_1c                    dt         j                  dgdt         j                  dgg dd}t        |t         j                        }|j	                  |d	      }|j	                  |d	      }t        j                  ||       y )
Nr   r   r4   r   )r   r"   r   )r   r4   r   r   linearr   )r;   r   r   r   r   r   r   )r   	axis_nameaxis_numberdatar   r]   r   s          r   test_interp_axis_namesz/TestDataFrameInterpolate.test_interp_axis_names2  sh     rvvq>q"&&!nCt2::.Yx@>>{8>D
fh/r    c                     t        dddt        j                  ddt        j                  t        j                  dg	g dd      }|j                  d	       y )
Nr         ?rO   rD   r   @   )	r4   r   rG   rD   rG   r   r4   r   )r   r4   r   )r   r;   r   r   )r   r   s     r   test_rowwise_altz)TestDataFrameInterpolate.test_rowwise_altC  sF    sCArvvrvvrB/
 	Ar    check_scipyFTr   )marksc                    t        t        j                  t        j                  dddgt        j                  ddt        j                  dgd      }|j                         }|j	                         }d|j
                  d	<   t        j                  ||       |r*|j                  d
d      }t        j                  ||       y y )Nr   g      ?r   g      r   g      )rG   rK   r   r4   r   )r   r;   r   r   r$   rd   r   r   )r   r   r   r]   r   s        r   test_interp_leading_nansz1TestDataFrameInterpolate.test_interp_leading_nansM  s     662663a0D"&&RT7UV
 !779$V
fh/^^<q^AF!!&(3 r    c           	      \   t        ddt        j                  dgg dt        j                  dddgt        j                  t        j                  ddgg dd	      }d
}t        j                  t
        |      5  |j                  d      j                  |       d d d        y # 1 sw Y   y xY w)Nr4   r   rD   )abr   dr"   r   rE   rz   )rJ   rK   rL   rM   EvCannot interpolate with all object-dtype columns in the DataFrame. Try setting at least one column to a numeric dtype.rU   objectr   )r   r;   r   r7   rp   	TypeErrorr   r   )r   r   r   r\   s       r   test_interp_raise_on_only_mixedz8TestDataFrameInterpolate.test_interp_raise_on_only_mixed]  s    BFFA&)ffaA&ffbffa+!
) 	
 ]]9C0IIh+++6 100s   7"B""B+c                     t        g dg ddd      }d}t        j                  t        |      5  |j	                          d d d        y # 1 sw Y   y xY w)N)r4   r   rG   )rD   r"   r   r   r   r   r   rU   )r   r7   rp   r   r   rr   s      r   %test_interp_raise_on_all_object_dtypez>TestDataFrameInterpolate.test_interp_raise_on_all_object_dtypeo  sC    YY7xH) 	
 ]]9C0NN 100s   AAc                    t        dddt        j                  dgi      }t        dg di      }|j                         }|j                         }|rMt	        j
                         5  |d   j                  d      }d d d        J t	        j                  ||       nSt	        j                  t        d	      5  |d   j                  d      }d d d        J t	        j                  ||       |j                         }d
}|r[t	        j                  t        t        f|	      5  |d   j                  dd      }d d d        |J t	        j                  ||       y t	        j                  t        |	      5  |d   j                  dd      }d d d        |J t	        j                  ||j                  d             y # 1 sw Y   KxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w)Nr   rO   rP   rR   rN   Tr5   zinplace methodrU   rv   rw   )r6   ry   r~   )r   r;   r   r$   r   raises_chained_assignment_errorr   r   rX   rY   r   r   )r   r[   r   r   expected_cowr]   return_valuer\   s           r   test_interp_inplacez,TestDataFrameInterpolate.test_interp_inplacez  s   c3456c#789wwy335%c{66t6D 6'''!!&,7++MAQR%c{66t6D S'''!!&(3J++ 67s  &c{66tg6V  '''!!&,7++ME%c{66tg6V F'''!!&(//'*BC1 65
 SR  FEs0   %G9G&G;G*GGG'*G3c                     t        g dt        j                  dddgg dd      }|j                  ddd	
      }|j                  ddd
      }|J t	        j
                  ||       y )NrN   rP   rQ   rR   )rG   r   r   r   )r   r   r   r   r4   F)ro   r   r6   T)r   r;   r   r   r   r   )r   r]   r   r   s       r   test_interp_inplace_rowz0TestDataFrameInterpolate.test_interp_inplace_row  so    &bffc3-D<X
 %%XAu%M))4)P###
fh/r    c           	         t        ddt        j                  dgg dddt        j                  dgg dd	      }t        t        j                  g dd
      t        j                  g dd      t        j                  g dd
      t        j                  g dd
      d	      }d}t	        j
                  t        |      5  |j                  d       }d d d        t	        j                  |       t	        j
                  t        |      5  |ddg   j                  d       }d d d        t	        j                  ||ddg          y # 1 sw Y   vxY w# 1 sw Y   1xY w)Nr4   r   rD   rz   rO   rP   rR   rN   rI   r   r   r~   )rO   rP   rG   rR   r}   rU   rx   rK   rM   )	r   r;   r   arrayr   rX   rY   r   r   )r   r   r   r\   r]   s        r   test_interp_ignore_all_goodz4TestDataFrameInterpolate.test_interp_ignore_all_good  s   BFFA&!3,)	
 XXl)<XXl':XX0	BXX2)D	
 N''SA^^T^2F B
fh/ ''SAc
^///>F B
fb#sn5 BA
 BAs   E
E
EEc                 L   d}t        d|      }t        j                  j                  d      j                  ||f      }t        j                  ||dk  <   t        |||      }|j                  dd	      }|j                  ddd
      }|J t        j                  ||       y )Nr"   z
2014-01-01)startr#   r   r   )r   r   r   r   timer   T)r   ro   r6   )	r   r;   randomdefault_rngr   r   r   r   r   )r   r#   idxr   r   r]   r   s          r   test_interp_time_inplace_axisz6TestDataFrameInterpolate.test_interp_time_inplace_axis  s    |W=yy$$Q'../AB66TCZ3$?%%1V%<++64+P###
fh/r    )r   r   )r   r4   c                 d   t        j                  ddd      }t        j                  |      }t        t        j                  |d      t        j
                  d      |      j                  |dz        }|j                  d	|
      }|j                  d	|
      }t        j                  ||       y )Nr   d   i  )
   r4   r   )r   r   r   gGz?)r   r   ro   r   )
r;   linspacesinr   tilearangereindexr   r   r   )r   r   r   xyr   r]   r   s           r   test_interp_string_axisz0TestDataFrameInterpolate.test_interp_string_axis  s     KK3%FF1IG$BIIbM1

'!e)'
$ 	 xi@>>>D
fh/r    
multiblockro   )ffillbfillpadc           
         |r|dv rt        j                  |       t        ddddt        j                  dgdddt        j                  dd	gddd
t        j                  t        j                  dgd      }|rt        j                  |d<   d|d<   |dk7  r|nd} t        ||      |      }d| d}	t        j                  t        |	      5  |j                  ||      }
d d d        t        j                  
|       y # 1 sw Y    xY w)N)r4   r   rO   rP   rQ   rR   g      @r   g       @g      $@rS   g      >@rl   rM   r   r   r   r   z"DataFrame.interpolate with method=z is deprecatedrU   r   )td&mark_array_manager_not_yet_implementedr   r;   r   getattrr   rX   rY   r   r   )r   r@   r   r   ro   r?   r   method2r   r\   r]   s              r   test_interp_fillna_methodsz3TestDataFrameInterpolate.test_interp_fillna_methods  s     4>#955g>3S"&&#63RVVS$73RVVRVVT:
 ffBsGBsG"eO&'72w'T226(.I''SA^^6^=F B
fh/ BAs   C??Dc                     t               }|j                         }|j                  d      }|J t        j                  ||       y )NTr5   r   r$   r   r   r   r   s       r   test_interpolate_empty_dfz2TestDataFrameInterpolate.test_interpolate_empty_df  s>    [779-~~
b(+r    c                     t        dg di|      }|j                         }|j                  d      }t        dg did      }t        j                  ||       t        j                  ||       y )Nr   r4   NNNrG   r   r   limitr4   r   rP   NrG   Float64r   )r   any_int_ea_dtyper   r)   r]   r   s         r   test_interpolate_eaz,TestDataFrameInterpolate.test_interpolate_ea  sb    56>NOwwya(c#9:)L
fh/
b$'r    r   r   Float32zfloat32[pyarrow]pyarrowfloat64[pyarrow]c                     t        dg di|      }|j                         }|j                  d      }t        dg di|      }t        j                  ||       t        j                  ||       y )Nr   r   r   r   r   r   r   )r   r   r   r)   r]   r   s         r   test_interpolate_ea_floatz2TestDataFrameInterpolate.test_interpolate_ea_float  sc     56eDwwya(c#9:%H
fh/
b$'r    )r~   uint64int32int16int8uint32uint16uint8c                     t        j                  d       t        dg di|dz         }|j                  d      }t        dg did	      }t	        j
                  ||       y )
Nr   r   r   z	[pyarrow]r   r   r   r   r  )r7   r   r   r   r   r   )r   r   r   r]   r   s        r   test_interpolate_arrowz/TestDataFrameInterpolate.test_interpolate_arrow  s\     	I&56ek>QRa(c#9:BTU
fh/r    N)'__name__
__module____qualname__r   r0   rB   r7   r8   r9   r   r`   rg   rj   rs   r{   r   r   r   r   r   parametrizeparamr   r   r   
skip_if_nor   r   r   r   r   r   r   r   r   r   r   r  r   r    r   r
   r
      su   --,(" [["$-R  ':':R [["$-R  00&02$1(6*,%CN0602 [[ FLLx0FLL!	2FLLA+6	
00 [[|v||Dg8NOP447$	DB06:0 [[5n7UV	0 W	0 [[\D%=9[[X'@A0 B :04,( [[FLL+=2==3KLFLL+=2==3KL		
(( [[R0	0r    r
   )numpyr;   r7   pandas._configr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   pandas._testing_testingr   r
   r  r    r   <module>r     s2      5 0 ) )  R0 R0r    