
    Owgs'                     T    d dl Zd dlZd dlZd dlmZmZmZmZ d dl	m
Z  G d d      Zy)    N)	DataFrameSeries	Timestamp
date_rangec                      e Zd Zd Zej
                  j                  dd ej                  d      g      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      d        Zej
                  j                  d	d
dg      d        Zej
                  j                  d	d
dg      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej
                  j                  dd eej:                  dddej:                  ej:                  ej:                  dgej:                  dej:                  ej:                  ddej:                  ej:                  g ej<                  ej:                  d      ej:                  ddd d!d"d#d$gd%d&'      fd e ej<                  ej:                  d      ddej:                  dej:                  ej:                  ej:                  dg ej<                  ej:                  d       ej<                  ej:                  d      d%d&'      fg      d(        Zd) Z d* Z!y
)+TestDataFrameDiffc                     t        t        j                  j                  d      j	                  d            }t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)N   )r
   r
   zperiods must be an integer)matchg      ?)	r   nprandomdefault_rngstandard_normalpytestraises
ValueErrordiffselfdfs     [/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/frame/methods/test_diff.pytest_diff_requires_integerz,TestDataFrameDiff.test_diff_requires_integer   sU    ryy,,Q/??GH]]:-IJ 	GGCL	 	 	s   A..A7num   c                     |}|j                  |      }|d   |d   j                  |      z
  }t        j                  |d   |       y )NA)r   shifttmassert_series_equal)r   datetime_framer   r   the_diffexpecteds         r   	test_diffzTestDataFrameDiff.test_diff   sC    773<c7RW]]3//
x}h7    c                     d}|dz   }t        ||g      }t        d|i      j                         }|j                  d   dk(  sJ y )Nl     _r   s)r   r   r   r&   )r   abserrss        r   test_diff_int_dtypez%TestDataFrameDiff.test_diff_int_dtype   sH    "EaVnSz"'')ttAw!||r$   c                     |j                  d      }|j                  d      }t        j                  |d   |d   |d   j	                  d      z
         y )Nfloat32r   r   )astyper   r   r   r   )r   r    tfr!   s       r   test_diff_mixed_numericz)TestDataFrameDiff.test_diff_mixed_numeric&   sI    ""9-771:
x}bg3a8H.HIr$   c                    t        t        dg      t        dg      d      }|j                  ddd       |j                  d      }t        t        j
                  t        d      t        d      d      }t        j                  ||       y )	Nr
      )yzr   xr   axis)r5   r3   r4   )r   r   insertr   r   nanr   assert_frame_equal)r   r   resultr"   s       r   test_diff_axis1_nonconsolidatedz1TestDataFrameDiff.test_diff_axis1_nonconsolidated,   si    VQC[vqc{;<
		!S!a266q	q	JK
fh/r$   c                    t        j                  d      j                  dd      j                  d      }t        j                  dd      |d d df<   t        |      }|j                  dd	      }t        |d   t        j                  t        j                  d      t        j                  d      gd
      }t        j                  ||       |j                  d      }||z
  }|d   j                         j                         sJ t        j                  ||       |j                  dd	      }|t         j                  z  }t        j                  ||       y )N   r2   r
   ztimedelta64[ns]NaTnsr   r   r6   r   r   )r   arangereshaper.   timedelta64r   r   pdr?   	Timedeltar   assert_equalisnaallr9   r   arrr   r;   r"   s        r   test_diff_timedelta64_with_natz0TestDataFrameDiff.test_diff_timedelta64_with_nat4   s   iil""1a(//0ABNN5$/AqD	s^#ABFFBLLOR\\RS_+UVW
)7{!%%'''
)!$;
)r$   tzNUTCc                    t        j                  g d|      j                  |      }t        |      }|j	                         }|j                         }t        j                  t         j                  t         j                  t        j                  d      g      j                  |      }t        |      j	                         }t        j                  ||       y )N)r?   z
2019-01-01z
2019-01-02)rN   r   )days)rF   DatetimeIndexas_unitr   to_framer   TimedeltaIndexr?   rG   r   r:   )	r   rN   unitdtir)   r   r;   ex_indexr"   s	            r   !test_diff_datetime_axis0_with_natz3TestDataFrameDiff.test_diff_datetime_axis0_with_natH   s     BrJRRSWXSk\\^$$bffbffbll6J%KLTT
 (#,,.
fh/r$   c                    t        dd|      }t        |      }|j                         j                         }|j                         |d<   t        j
                  |j                  d d df<   ||z
  }|d   j                         j                         sJ |j                  dd      }t        j                  ||       |j                  dd      }t        j                  ||       y )N
2016-01-01   )periodsrN   r   r   r6   )r   r   rT   copyrF   r?   ilocrI   rJ   r   r   r:   )r   rN   rW   r)   r   r"   r;   s          r   (test_diff_datetime_with_nat_zero_periodsz:TestDataFrameDiff.test_diff_datetime_with_nat_zero_periodsW   s     qR8Sk\\^  "
117{!%%'''#
fh/#
fh/r$   c           	         t        t        ddd|      t        ddd|      d      }|j                  d      }t        t        j                  dd	g      t        j                  dd	g      d      }t        j                  ||       y )
N2010Dr
   freqr]   rN   rA   r   r6   r?   z1 daysr   r   r   rF   rU   r   r:   r   rN   r   r;   r"   s        r   test_diff_datetime_axis0z*TestDataFrameDiff.test_diff_datetime_axis0k   s     f3bAf3bA
 a$$eX%67$$eX%67
 	fh/r$   c           	         t        t        ddd|      t        ddd|      d      }|j                  d      }t        t        j                  ddg      t        j                  d	d	g      d      }t        j                  ||       y )
Nrb   rc   r
   rd   rA   r   r6   r?   z0 daysrf   rg   s        r   test_diff_datetime_axis1z*TestDataFrameDiff.test_diff_datetime_axis1~   s     f3bAf3bA
 a$$eU^4$$h%9:
 	fh/r$   c                    t        t        d      t        d      gddgd      }|d   j                  j                  |      |d<   |j	                         }t        t
        j                  t        j                  gt        j                  d      dggdd	g
      }|d   j                  j                  |      |d<   t        j                  ||       y )Nz20130101 9:01z20130101 9:02      ?       @)timevaluern   z00:01:00r   ro   )columns)r   r   dtrS   r   rF   r?   r   r9   rG   r   r:   )r   rV   r   resexps        r   test_diff_timedeltaz%TestDataFrameDiff.test_diff_timedelta   s    "?3Y5OPs
 Z]]**406
ggiffbffZ 8!<=PWGX
 &knn,,T2F
c3'r$   c                    t        t        j                  j                  d      j	                  d            }t        j
                  g dt              |d<   |j                         }|d   j                  t        j                  k(  sJ y )Nr
   )   r2   )r   r
   r2   r\   rv   dtyper   r   )
r   r   r   r   r   arrayobjectr   rx   float64)r   r   r;   s      r   test_diff_mixed_dtypez'TestDataFrameDiff.test_diff_mixed_dtype   s_    ryy,,Q/??GH((?&93ay"**,,,r$   c                 z    |j                  d      }||j                  d      z
  }t        j                  ||       y )NrB   )r   r   r   r:   r   r    r*   xps       r   test_diff_neg_nz!TestDataFrameDiff.test_diff_neg_n   s7      $n22266
b"%r$   c                 t    |j                  d      }|j                  d      }t        j                  ||       y )Nrl   r   )r   r   r:   r~   s       r   test_diff_float_nz#TestDataFrameDiff.test_diff_float_n   s2      %  #
b"%r$   c                 j   t        ddgddgg      }t        j                  |j                  d      t        t        j
                  dgt        j
                  dgg             t        j                  |j                  d      t        t        j
                  t        j
                  gddgg             y )Nrl   rm   g      @g      @r   r6   r   )r   r   r:   r   r   r9   r   s     r   test_diff_axisz TestDataFrameDiff.test_diff_axis   s    c
S#J/0
GGGOY}'EF	
 	GGGOY(83*'EF	
r$   c                     t        dd      j                  d      }t        d|i      }|j                  dd      }|t        j
                  z
  j                  t              }t        j                  ||       y )Nr[   r2   )r]   rc   r   r   r6   )
r   	to_periodr   r   rF   r?   r.   rz   r   r:   )r   pir   r;   r"   s        r   test_diff_periodz"TestDataFrameDiff.test_diff_period   sa    a0::3?Ry!#K''/
fh/r$   c                 `   t        t        d      dt        j                  dt        j                        z  d      }t        t        j
                  t        j
                  t        j
                  g|d   dz  d      }|j                  d      }t        j                  ||       t        t        j                  dd      t        j                  dd	      d
      }|j                  d      }t        |d   t        j
                  z  |d   dz  d
      }t        j                  ||       y )Nr2   r
   rw   r   Br   r   r6   r-   r{   )r'   r(   r'   r(   r   	r   ranger   rC   r{   r9   r   r   r:   r   r   r"   r;   s       r   test_diff_axis1_mixed_dtypesz.TestDataFrameDiff.test_diff_axis1_mixed_dtypes   s    U1XA		!2::0N,NOPBFFBFFBFF#;"S'A+NOa
fh/ ))AY/bii6ST
 a2c7RVV#3"S'A+FG
fh/r$   c                     t        t        d      dt        j                  dt        j                        z  d      }|t        j
                  z  }|j                  dd      }t        j                  ||       y )Nr2   r
   rw   r   r   r7   r]   r   r   s       r   *test_diff_axis1_mixed_dtypes_large_periodsz<TestDataFrameDiff.test_diff_axis1_mixed_dtypes_large_periods   sX    U1XA		!2::0N,NOP;a+
fh/r$   c                     t        t        d      dt        j                  dt        j                        z  d      }t        d|d   z  |d   t        j
                  z  d      }|j                  dd	
      }t        j                  ||       y )Nr2   r
   rw   r         r   r   r   rB   r   r   r   s       r   -test_diff_axis1_mixed_dtypes_negative_periodsz?TestDataFrameDiff.test_diff_axis1_mixed_dtypes_negative_periods   so    U1XA		!2::0N,NOP4"S'>3"&&8HIJa,
fh/r$   c                     t        ddgddggd      }|j                         }t        t        j                  t        j                  gddggt	        j
                  dd            }t        j                  ||       y )	Nr   r   zSparse[int]rw   rl   r   floatg        )r   r   r   r9   rF   SparseDtyper   r:   )r   	sparse_dfr;   r"   s       r   test_diff_sparsez"TestDataFrameDiff.test_diff_sparse   si    1v1v.mD	!ffbffT{+2>>'33O
 	fh/r$   zaxis,expectedr      r2   rv      	            r'   r(   cdInt64rw   c           	         t        t        j                  ddt        j                  dgd      t        j                  ddt        j                  dgd      t        j                  t        j                  d      t        j
                  dd      dz  dd      }|j                  |	      }t        j                  ||       y )
Nr   r   r
   r   r   r   r   rw   r6   )	r   r   repeatr9   tilerC   r   r   r:   )r   r7   r"   r   r;   s        r   test_diff_integer_naz&TestDataFrameDiff.test_diff_integer_na   s    > YY1bffa0!4WWaBFFA.2YYrvvq)YYq!_)	 
 d#
fh/r$   c                 <   t         j                  j                  d      j                  d      }d|j                  _        t        |      }|j                         }t        t        j                  |            j                         }t        j                  ||       y )Nr
   )rv   r
   F)r   r   r   r   flags	writeabler   r   ry   r   r:   rK   s        r   test_diff_readonlyz$TestDataFrameDiff.test_diff_readonly"  sl    ii##A&66v>#		s^RXXb\*//1
fh/r$   c                     t        t        d            }|j                  |      }|j                         }|dv rdnd}t        t        j
                  ddddg|      }t        j                  ||       y )Nrv   )int8int16r-   r{   rl   rw   )r   r   r.   r   r   r9   r   r:   )r   any_int_numpy_dtyper   r;   expected_dtyper"   s         r   test_diff_all_int_dtypez)TestDataFrameDiff.test_diff_all_int_dtype+  si    uQx YY*+,0AAIy 	 bffc3S9P
fh/r$   )"__name__
__module____qualname__r   r   markparametrizer   int64r#   r+   r0   r<   rM   rY   r`   rh   rj   rt   r|   r   r   r   r   r   r   r   r   r   r9   r   r   r   r    r$   r   r   r      sk    [[UQ$458 68J0*( [[TD%=10 20 [[TD%=10 20& [[TD%=10 20$ [[TD%=10 20$("-&
&

00"00	0 [[  ffaArvvrvvrvvqI ffaQO&RYYrvvq1 ffaAq"b"=	 " &RYYrvvq1BFFArvvrvvrvvqI&RYYrvvq1&RYYrvvq1	 "	
:0;:0 0	0r$   r   )numpyr   r   pandasrF   r   r   r   r   pandas._testing_testingr   r   r   r$   r   <module>r      s)        f0 f0r$   