
    .i;                     j    d dl Zd dl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_string_dtype)	DataFrameNaTSeries
date_rangec                   
   e Zd Zd Zd Zd Zd Zej                  j                   e
       d      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j0                  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"d/ Z#ej                  j'                  d0d1d2 ej(                  d3 ej0                  d4             ej(                  d5 ej0                  d4            g      d6        Z$ej                  j'                  d0g d7      d8        Z%y9):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        i/var/www/app/trading-bot/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                 2    |dt         j                  dg      }|j                  }|j                  d      }||u sJ  |g d      }t	        j
                  ||       t        j                  ||j                        sJ |j                         d   dk(  sJ y )N   r   Tinplace)r1   r   r   r   )npr   valuesr   r   r$   shares_memorysqueeze)r   r'   requestobjr(   resultr   s          r   test_interpolate_inplacez1TestDataFrameInterpolate.test_interpolate_inplace6   s    q"&&!n-zz.}}";/
X& cjj111||~a C'''r   c                 n   t        ddt        j                  dgdddt        j                  gg dt        d      d      }|rdnd	}d
| d}t	        j
                  t        |      5  |j                          d d d        |d   j                  }|d   j                  }t	        j
                  t        |      5  |j                  d       d d d        t        j                  |d   j                  |      sJ t        j                  |d   j                  |      sJ y # 1 sw Y   xY w# 1 sw Y   `xY w)Nr1   r      	   r1   r      r!   abcdABCDstrobjectz[Cc]annot interpolate with z dtypematchrE   rF   Tr2   )r   r4   r   listpytestraises	TypeErrorr   _valuesr5   r   r6   )r   using_infer_stringr   r   msgcvaluesdvaluess          r   test_interp_basicz*TestDataFrameInterpolate.test_interp_basicD   s   BFFA&Arvv&!&\	
 ,+E7&9]]9C0 	NN	 S'//S'..]]9C0 	)NN4N(	) 39993999	 	
	) 	)s   'D9D+D(+D4z#interpolate doesn't work for string)reasonc                    t        ddt        j                  dgdddt        j                  gg dt        d      d      }d}|sDt	        j
                  t        |	      5  |j                  d
      j                          d d d        y |j                  d
      j                         }|j                  d
      }d|j                  d<   d|j                  d<   t        j                  ||       y # 1 sw Y   y xY w)Nr1   r   r=   r>   r?   rA   rB   .DataFrame cannot interpolate with object dtyperI   rE   gh˹WU@r@   rC   )r!   rD   )r   r4   r   rK   rL   rM   rN   	set_indexr   locr   r   )r   rP   r   rQ   r:   r   s         r   &test_interp_basic_with_non_range_indexz?TestDataFrameInterpolate.test_interp_basic_with_non_range_index[   s     BFFA&Arvv&!&\	
 ?!y4 0S!--/0 0 \\#&224F||C(H#*HLL #$HLL !!&(30 0s    C--C6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_emptys   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)Nr1   r   r=   r>   r?   rC   rD   rE   z,Can not interpolate with method=not_a_methodrI   not_a_methodmethodr   r4   r   rL   rM   
ValueErrorr   r   r   rQ   s      r   test_interp_bad_methodz/TestDataFrameInterpolate.test_interp_bad_method{   sl    BFFA&Arvv&!
 =]]:S1 	2NN.N1	2 	2 	2s   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                  ||       y )N      ?       @      @r1   r=   r>   r?   rA   rB   rC   ri   rj         @rk   )name)r   r4   r   rK   r   r   r   r   r]   s       r   test_interp_comboz*TestDataFrameInterpolate.test_interp_combo   sl    3,Arvv&!&\	
 C$$&.S9
vx0r   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)Nr1   r   r=   r@   rC   rD   rC   zkInterpolation with NaNs in the index has not been implemented. Try filling those NaNs before interpolating.rI   r5   rb   )r   r4   r   rY   rL   rM   NotImplementedErrorr   rf   s      r   test_interp_nan_idxz,TestDataFrameInterpolate.test_interp_nan_idx   sw    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scipyr1   r   r=   r!      r1   r   r@   r!            rC   rE   rE   
polynomialrc   ordergUUU@rX   gu:@)ry   rC   cubicrb   gv:@gb+hZ@nearestF)check_dtype	quadraticg^r@g!g@slineargX ;@zerorj   )rL   importorskipr   r4   r   rY   r#   r   rZ   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           	      L   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                  ||       |j                  d
      }|j                         }|d   |d<   t        j                  ||       |j                  d
      }d|j                  d<   d|j                  d<   t        j                  ||       y )Nru   r1   r   r=   r!   rv   rw   r{   barycentricrb   r@   )r   rC      )r!   rC   kroghrC   pchip      @)
rL   r   r   r4   r   r   r#   rZ   r   r   )r   r   r:   r   	expectedks        r   test_interp_alt_scipyz.TestDataFrameInterpolate.test_interp_alt_scipy   s    G$aArvvq18OP
 }5779 V V
fh/w/GGI	!#	#
fi0w/ V"V
fh/r   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 )Nr1   r   r=   r@   r!   r   rv   r1   r   r@   r=   )r   r1   r   r@   r=   axis)r@   r1   )r   r   )r1   r@   r5   r   rc   r   )
r   r4   r   r   r#   rZ   astypefloat64r   r   r]   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columnsr1   	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   r1   rv   )r   r!   rx   )r   r1   r   r   linearr   )r4   r   r   r   r   r   r   )r   	axis_nameaxis_numberdatar   r:   r   s          r   test_interp_axis_namesz/TestDataFrameInterpolate.test_interp_axis_names   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         ?ri   r=   rx   @   )	r1   r   r@   r=   r@   r   r1   r   )r   r1   r   )r   r4   r   r   )r   r   s     r   test_rowwise_altz)TestDataFrameInterpolate.test_rowwise_alt  sF    sCArvvrvvrB/
 	Ar   check_scipyFTru   )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      rq   g      )r@   rD   r|   r1   r}   )r   r4   r   r   r#   rZ   r   r   )r   r   r   r:   r   s        r   test_interp_leading_nansz1TestDataFrameInterpolate.test_interp_leading_nans  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)Nr1   r   r=   )abr   dr!   rv   r>   r   )rC   rD   rE   rF   ErW   rI   rH   r   )r   r4   r   rL   rM   rN   r   r   )r   r   r   rQ   s       r   test_interp_raise_on_only_mixedz8TestDataFrameInterpolate.test_interp_raise_on_only_mixed   s    BFFA&)ffaA&ffbffa+!
 ?]]9C0 	7IIh+++6	7 	7 	7s   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)r1   r   r@   )r=   r!   r   rq   rH   r   rW   rI   )r   rL   rM   rN   r   rf   s      r   %test_interp_raise_on_all_object_dtypez>TestDataFrameInterpolate.test_interp_raise_on_all_object_dtype.  sE    YY7xH>]]9C0 	NN	 	 	s   AAc                 x   t        dddt        j                  dgi      }|j                         }|j                         j	                         }t        j                         5  |d   j	                  d      }d d d        t        j                  |d          t        j                  ||       y # 1 sw Y   9xY w)Nr   ri   rj   rk   Tr2   )	r   r4   r   r#   r   r   raises_chained_assignment_errorr   r   )r   r   df_origr   r:   s        r   test_interp_inplacez,TestDataFrameInterpolate.test_interp_inplace5  s    c3456'')779((*//1 	7W(((6F	7
vx}5
b'*	7 	7s   "B00B9c                     t        g dt        j                  dddgg dd      }|j                  ddd	
      }|j                  ddd
      }||u sJ t	        j
                  ||       y )Nrl   rj   rm   rk   )r@   r   r   r   )r   r   r   r   r1   F)rc   r   r3   T)r   r4   r   r   r   r   r   s       r   test_interp_inplace_rowz0TestDataFrameInterpolate.test_interp_inplace_row?  si    &bffc3-D<X
 >>5>IxaF||
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	      }|j	                         }t        j                  ||       |ddg   j	                         }t        j                  ||ddg          y )Nr1   r   r=   r   ri   rj   rk   rl   rB   r   r   int64)ri   rj   r@   rk   rD   rF   )r   r4   r   arrayr   r   r   r   s       r   test_interp_ignore_all_goodz4TestDataFrameInterpolate.test_interp_ignore_all_goodI  s    BFFA&!3,)	
 XXl)<XXl':XX0	BXX2)D	
 !
fh/ S#J++-
fb#sn5r   c                 P   d}t        d|      }t        j                  j                  d      j                  ||f      }t        j                  ||dk  <   t        |||      }|j                  dd	      }|j                  ddd
      }||u sJ t        j                  ||       y )Nr!   z
2014-01-01)startr"   r   r   )r   r   r   r   timer   T)r   rc   r3   )	r   r4   randomdefault_rngr   r   r   r   r   )r   r"   idxr   r   r   r:   s          r   test_interp_time_inplace_axisz6TestDataFrameInterpolate.test_interp_time_inplace_axisb  s    |W=yy$$Q'../AB66TCZS#D9>>q>8QvtD||
fh/r   )r   r   )r   r1   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   r@   )
   r1   r   )r   r   r   gGz?)r   r   rc   r   )
r4   linspacesinr   tilearangereindexr   r   r   )r   r   r   xyr   r:   r   s           r   test_interp_string_axisz0TestDataFrameInterpolate.test_interp_string_axiso  s     KK3"FF1IG$BIIbM1

'!e)'
$ 	 xi@>>>D
fh/r   
multiblockrc   )ffillbfillpadc           
      z   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| }t        j                  t
        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nri   rj   rm   rk   g      @r   g       @g      $@g      "@g      >@r`   rF   r   z Can not interpolate with method=rI   r   rd   )r   r   r   rc   r   rQ   s         r   test_interp_fillna_methodsz3TestDataFrameInterpolate.test_interp_fillna_methods{  s     3S"&&#63RVVS$73RVVRVVT:
 ffBsGBsG09]]:S1 	5NN&tN4	5 	5 	5s   B11B:c                     t               }|j                         }|j                  d      }||u sJ t        j                  ||       y )NTr2   r   r#   r   r   r   r   s       r   test_interpolate_empty_dfz2TestDataFrameInterpolate.test_interpolate_empty_df  s@    [779-||
fh/r   c                     t        dg di|      }|j                         }|j                  d      }t        dg did      }t        j                  ||       t        j                  ||       y )Nr   r1   NNNr@   r   r   limitr1   r   rj   Nr@   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   )rL   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   r/   r;   rT   rL   markxfailr   r[   r^   rg   ro   rs   r   r   r   parametrizeparamr   r   td
skip_if_nor   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r	   r	      sA   --,(:. [[%J  44*0
21,%CN0,02 [[ FLLx0FLL!	2FLLA+6	
00 [[|v||Dg8NOP447+0620 [[5n7UV	0 W	0 [[\D%=9[[X'@A5 B :5"0( [[FLL+=2==3KLFLL+=2==3KL		
(( [[R0	0r   r	   )numpyr4   rL   pandas._configr   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   pandas._testing_testingr   r	   r   r   r   <module>r     s/      - ) )  j0 j0r   