o
    5c&                     @   sN   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 dZdS )    N)	DataFrameSeries	Timestamp
date_rangec                   @   s  e Zd Zdd Zejddedgdd Z	dd Z
d	d
 Zdd Zdd Zejdddgdd Zejdejdejjddgdd Zejdddgdd Zejdddgdd Zdd Zdd Z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/d0eejd0dd0ejejejd0gejdejejd1dejejge ejd2ejd3d4d5d6d7d8d9gd:d;d<fdee ejd2d0dejdejejejd0ge ejd2e ejd2d:d;d<fgd=d> Z!d?d@ Z"dAdB Z#dS )CTestDataFrameDiffc                 C   sP   t tjdd}tjtdd |d W d    d S 1 s!w   Y  d S )N   zperiods must be an integer)matchg      ?)r   nprandomrandnpytestraises
ValueErrordiffselfdf r   Z/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/frame/methods/test_diff.pytest_diff_requires_integer   s   "z,TestDataFrameDiff.test_diff_requires_integernum   c                 C   s8   |}| |}|d |d | }t|d | d S )NA)r   shifttmassert_series_equal)r   datetime_framer   r   the_diffexpectedr   r   r   	test_diff   s   
zTestDataFrameDiff.test_diffc                 C   s>   d}|d }t ||g}td|i }|jd dksJ d S )Nl     _r   s)r   r   r   r    )r   abserrsr   r   r   test_diff_int_dtype   s
   z%TestDataFrameDiff.test_diff_int_dtypec                 C   s:   | d}|d}t|d |d |d d  d S )Nfloat32r   r   )astyper   r   r   r   )r   r   tfr   r   r   r   test_diff_mixed_numeric&   s   

&z)TestDataFrameDiff.test_diff_mixed_numericc                 C   s^   t tdgtdgd}|ddd |jdd}t tjtdtdd}t|| d S )	Nr      )yzr   xr   axis)r-   r+   r,   )r   r   insertr   r	   nanr   assert_frame_equal)r   r   resultr   r   r   r   test_diff_axis1_nonconsolidated,   s
   z1TestDataFrameDiff.test_diff_axis1_nonconsolidatedc                 C   s   t dddd}t dd|d d df< t|}|jddd	}t|d tjt	dt	dgd
}t
|| |d}|| }|d   sOJ t
|| |jddd	}|t j }t
|| d S )N   r*   r   ztimedelta64[ns]NaTnsr   r   r.   r   r   )r	   arangereshaper'   timedelta64r   r   pdr6   	Timedeltar   assert_equalisnaallr1   r   arrr   r3   r   r   r   r   test_diff_timedelta64_with_nat4   s   &

z0TestDataFrameDiff.test_diff_timedelta64_with_nattzNUTCc                 C   sb   t jg d|d}t|}| }| }t t jt jt jddg}t| }t	|| d S )N)r6   z
2019-01-01z
2019-01-02)rE   r   )days)
r=   DatetimeIndexr   to_framer   TimedeltaIndexr6   r>   r   r2   )r   rE   dtir#   r   r3   ex_indexr   r   r   r   !test_diff_datetime_axis0_with_natH   s   z3TestDataFrameDiff.test_diff_datetime_axis0_with_nat)marksc                 C   s   t dd|d}t|}| }| |d< td  tj|jd d df< W d    n1 s/w   Y  || }|d 	 
 sBJ |jddd}t|| |jddd}t|| d S )N
2016-01-01   )periodsrE   r   r   r.   )r   r   rI   copyr   assert_produces_warningr=   r6   ilocr@   rA   r   r2   )r   rE   rK   r#   r   r   r3   r   r   r   (test_diff_datetime_with_nat_zero_periodsU   s   z:TestDataFrameDiff.test_diff_datetime_with_nat_zero_periodsc                 C   sd   t tddd|dtddd|dd}|jdd}t tdd	gtdd	gd}t|| d S )
N2010Dr   freqrQ   rE   r8   r   r.   r6   z1 daysr   r   r   r=   rJ   r   r2   r   rE   r   r3   r   r   r   r   test_diff_datetime_axis0j      z*TestDataFrameDiff.test_diff_datetime_axis0c                 C   sd   t tddd|dtddd|dd}|jdd}t tddgtd	d	gd}t|| d S )
NrV   rW   r   rX   r8   r   r.   r6   z0 daysrZ   r[   r   r   r   test_diff_datetime_axis1}   r]   z*TestDataFrameDiff.test_diff_datetime_axis1c                 C   s\   t tdtdgddgd}| }t tjtjgtddggdd	gd
}t	|| d S )Nz20130101 9:01z20130101 9:02      ?       @)timevaluez00:01:00r   ra   rb   )columns)
r   r   r   r=   r6   r	   r1   r>   r   r2   )r   r   resexpr   r   r   test_diff_timedelta   s   z%TestDataFrameDiff.test_diff_timedeltac                 C   sH   t tjdd}tjg dtd|d< | }|d jtjks"J d S )N   r*   )r   r   r*   rP   rg   dtyper   r   )	r   r	   r
   r   arrayobjectr   ri   float64)r   r   r3   r   r   r   test_diff_mixed_dtype   s   z'TestDataFrameDiff.test_diff_mixed_dtypec                 C   s(   | d}||d }t|| d S )Nr9   )r   r   r   r2   r   r   r$   xpr   r   r   test_diff_neg_n   s   
z!TestDataFrameDiff.test_diff_neg_nc                 C   s$   | d}| d}t|| d S )Nr_   r   )r   r   r2   rn   r   r   r   test_diff_float_n   s   

z#TestDataFrameDiff.test_diff_float_nc                 C   sh   t ddgddgg}t|jddt tjdgtjdgg t|jddt tjtjgddgg d S )Nr_   r`   g      @g      @r   r.   r   )r   r   r2   r   r	   r1   r   r   r   r   test_diff_axis   s     z TestDataFrameDiff.test_diff_axisc                 C   sL   t dddd}td|i}|jddd}|tj t}t	|| d S )NrO   r*   )rQ   rW   r   r   r.   )
r   	to_periodr   r   r=   r6   r'   rk   r   r2   )r   pir   r3   r   r   r   r   test_diff_period   s
   z"TestDataFrameDiff.test_diff_periodc                 C   s   t tddtjdtjd d}t tjtjtjg|d d d}|jdd}t|| t tjdddtjdd	dd
}|jdd}t |d tj |d d d
}t|| d S )Nr*   r   rh   r   Brw   r   r.   r&   rl   )r!   r"   r!   r"   r   	r   ranger	   r:   rl   r1   r   r   r2   r   r   r   r3   r   r   r   test_diff_axis1_mixed_dtypes   s   "" z.TestDataFrameDiff.test_diff_axis1_mixed_dtypesc                 C   sJ   t tddtjdtjd d}|tj }|jddd}t|| d S )Nr*   r   rh   rv   r   r/   rQ   rx   rz   r   r   r   *test_diff_axis1_mixed_dtypes_large_periods   s   "
z<TestDataFrameDiff.test_diff_axis1_mixed_dtypes_large_periodsc                 C   s`   t tddtjdtjd d}t d|d  |d tj d}|jdd	d
}t|| d S )Nr*   r   rh   rv         r   rw   r   r9   r|   rx   rz   r   r   r   -test_diff_axis1_mixed_dtypes_negative_periods   s   " z?TestDataFrameDiff.test_diff_axis1_mixed_dtypes_negative_periodsc                 C   sT   t ddgddggdd}| }t tjtjgddggtddd}t|| d S )	Nr   r   zSparse[int]rh   r_   r~   floatg        )r   r   r	   r1   r=   SparseDtyper   r2   )r   	sparse_dfr3   r   r   r   r   test_diff_sparse   s   z"TestDataFrameDiff.test_diff_sparsezaxis,expectedr      r*   rg      	            r!   r"   cdInt64rh   c                 C   sl   t tddtjdgdtddtjdgdttjdtddd ddd}|j|d	}t|| d S )
Nr   r   r   r   r   r   r   rh   r.   )	r   r	   repeatr1   tiler:   r   r   r2   )r   r/   r   r   r3   r   r   r   test_diff_integer_na   s   z&TestDataFrameDiff.test_diff_integer_nac                 C   sH   t jdd}d|j_t|}| }tt | }t	|| d S )Nrg   r   F)
r	   r
   r   flags	writeabler   r   rj   r   r2   rB   r   r   r   test_diff_readonly  s   z$TestDataFrameDiff.test_diff_readonlyc                 C   sV   t td}||}| }|dv rdnd}t tjddddg|d}t|| d S )Nrg   )int8int16r&   rl   r_   rh   )r   ry   r'   r   r	   r1   r   r2   )r   any_int_numpy_dtyper   r3   expected_dtyper   r   r   r   test_diff_all_int_dtype(  s   
z)TestDataFrameDiff.test_diff_all_int_dtype)$__name__
__module____qualname__r   r   markparametrizer	   int64r   r%   r)   r4   rD   rM   paramxfailrU   r\   r^   rf   rm   rp   rq   rr   ru   r{   r}   r   r   r   r1   r   r   r   r   r   r   r   r   r      sj    
	





		
	r   )numpyr	   r   pandasr=   r   r   r   r   pandas._testing_testingr   r   r   r   r   r   <module>   s    