o
    g`%                     @   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dd Zdd Zejddd	gd
d Z	ejd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&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ejd*ejd+d,d-d.d/d0d1gd2d3d4fd(eeejd*d'd(ejd(ejejejd'geejd*eejd*d2d3d4fgd5d6 Zd7d8 Zd9d: ZdS );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   b/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/methods/test_diff.pytest_diff_requires_integer   s   "z,TestDataFrameDiff.test_diff_requires_integerc                 C   s   | d}t|d |d |d d  d}|d }t||g}td|i  }|jd dks3J |d}| d}t|d |d |d d  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 )N   Al     _sfloat32r      )yzr   xaxis)r   r   r   )r   tmassert_series_equalshiftr   r   r   astypeinsertr	   nanassert_frame_equal)r   datetime_framethe_diffabr   rstfr   resultexpectedr   r   r   	test_diff   s"   


"zTestDataFrameDiff.test_diffc                 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   pdr1   	Timedeltar    assert_equalisnaallr%   r   arrr   r-   r.   r   r   r   test_diff_timedelta64_with_nat/   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)r1   z
2019-01-01z
2019-01-02)r@   r   )days)
r8   DatetimeIndexr   to_framer   TimedeltaIndexr1   r9   r    r&   )r   r@   dtiserr   r-   ex_indexr.   r   r   r   !test_diff_datetime_axis0_with_natC   s   z3TestDataFrameDiff.test_diff_datetime_axis0_with_natc                 C   s   t dd|d}t|}| }| |d< tj|jd d df< || }|d   s-J |j	ddd}t
|| |j	ddd}t
|| d S )N
2016-01-01   )periodsr@   r   r   r   )r   r   rD   copyr8   r1   ilocr;   r<   r   r    r&   )r   r@   rF   rG   r   r.   r-   r   r   r   (test_diff_datetime_with_nat_zero_periodsP   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   freqrL   r@   r3   r   r   r1   z1 daysr   r   r   r8   rE   r    r&   r   r@   r   r-   r.   r   r   r   test_diff_datetime_axis0c      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 )
NrP   rQ   r   rR   r3   r   r   r1   z0 daysrT   rU   r   r   r   test_diff_datetime_axis1v   rW   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   r[   r\   )columns)
r   r   r   r8   r1   r	   r%   r9   r    r&   )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   rK   ra   dtyper   r   )	r   r	   r
   r   arrayobjectr   rc   float64)r   r   r-   r   r   r   test_diff_mixed_dtype   s   z'TestDataFrameDiff.test_diff_mixed_dtypec                 C   s(   | d}||d }t|| d S )Nr4   )r   r"   r    r&   r   r'   r+   xpr   r   r   test_diff_neg_n   s   
z!TestDataFrameDiff.test_diff_neg_nc                 C   s$   | d}| d}t|| d S )NrY   r   )r   r    r&   rh   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 )NrY   rZ   g      @g      @r   r   r   )r   r    r&   r   r	   r%   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 )NrJ   r   )rL   rQ   r   r   r   )
r   	to_periodr   r   r8   r1   r#   re   r    r&   )r   pir   r-   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   rb   r   Brq   r   r   r   rf   )r)   r*   r)   r*   r   	r   ranger	   r5   rf   r%   r   r    r&   r   r   r.   r-   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   rb   rp   r   r   rL   rr   rt   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   rb   rp         r   rq   r   r4   rv   rr   rt   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]rb   rY   rx   floatg        )r   r   r	   r%   r8   SparseDtyper    r&   )r   	sparse_dfr-   r.   r   r   r   test_diff_sparse   s   z"TestDataFrameDiff.test_diff_sparsezaxis,expectedr   r      r   ra      	            r)   r*   cdInt64rb   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   rb   r   )	r   r	   repeatr%   tiler5   r   r    r&   )r   r   r.   r   r-   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 )Nra   r   F)
r	   r
   r   flags	writeabler   r   rd   r    r&   r=   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 )Nra   )int8int16r   rf   rY   rb   )r   rs   r#   r   r	   r%   r    r&   )r   any_int_dtyper   r-   expected_dtyper.   r   r   r   test_diff_all_int_dtype!  s   
z)TestDataFrameDiff.test_diff_all_int_dtype)__name__
__module____qualname__r   r/   r?   r   markparametrizerI   rO   rV   rX   r`   rg   rj   rk   rl   ro   ru   rw   ry   r}   r   r	   r%   r   r   r   r   r   r   r   r   r      sb    





		
	r   )numpyr	   r   pandasr8   r   r   r   r   pandas._testing_testingr    r   r   r   r   r   <module>   s    