a
    oÝEb^  ã                   @   sl   d dl Zd dlZd dlm  mZ d dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ G dd„ dƒZdS )é    N)ÚCategoricalIndexÚ	DataFrameÚIndexÚNaTÚSeriesÚ
date_rangeÚoffsetsc                   @   s”  e Zd Zej dejdd�g fejdd�ej	dgfg¡dd„ ƒZ
dd	„ Zej d
ee d¡gƒedddd�eedƒeddd�d�g¡ej dg d¢¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zej dg d¢¡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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;d<„ Z"d=d>„ Z#e$j%d?d@„ ƒZ&ej 'dA¡dBdC„ ƒZ(dDdE„ Z)dFdG„ Z*dHdI„ Z+dJdK„ Z,dLdM„ Z-e$j%dNdO„ ƒZ.ej dPej/dQejj0dRdS�dT�dUg¡ejjdVedWdXd�edWdXdYdZ�e1j2dWdXd[d�e1j3d\dXd[d�e1j4d]d^dXd�ej/e1j5d_dXgd`da�ejj0dRdS�dT�ej/e1j5d_dXgdbda�ejj0dRdS�dT�gdcdd„ de�ej 'df¡dgdh„ ƒƒƒZ6didj„ Z7e$j%dkdl„ ƒZ8dmS )nÚTestDataFrameShiftzinput_data, output_data)r   )Úshape)é   ç      ð?c                 C   s\   |j dd� ||ƒ d¡}|tur@||tt|ƒƒtdƒdd�}n||dd�}t ||¡ d S )NF)Úwriteé   Zfloat64)ÚindexÚcolumnsÚdtype©r   )ZsetflagsÚshiftr   ÚrangeÚlenÚtmÚassert_equal)ÚselfZ
input_dataZoutput_dataÚframe_or_seriesÚresultÚexpected© r   úe/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/frame/methods/test_shift.pyÚtest_shift_non_writable_array   s    
üz0TestDataFrameShift.test_shift_non_writable_arrayc                 C   sz   |t j d¡tdddd�d�}|jddd�}|jjddd�}t |j|¡ |jdd	d�}|jt 	d
¡ }t |j|¡ d S )Né   ú1/1/2000ÚH©ÚperiodsÚfreq©r   r   Z5T©r$   Z4Hé   )
ÚnpÚrandomÚrandnr   r   r   r   Úassert_index_equalr   ZHour)r   r   Útsr   Z	exp_indexr   r   r   Útest_shift_mismatched_freq*   s    ÿz-TestDataFrameShift.test_shift_mismatched_freqÚobjr   z1/1/2011é   r!   r"   Z2017©r#   r%   Ú
shift_size)r   r   r   c                 C   s&   |t ur| ¡ }| |¡|us"J ‚d S ©N)r   Úto_framer   )r   r.   r1   r   r   r   r   Útest_shift_always_copy8   s    z)TestDataFrameShift.test_shift_always_copyc                 C   sæ   t tdƒƒ}tjtdd�� |jdg d� W d   ƒ n1 s>0    Y  | ¡ }tjtdd��$ |jdt d¡d� W d   ƒ n1 sˆ0    Y  | 	t
¡}|jdi d�}|d i ksºJ ‚| ¡ }|jdi d�}|jd i ksâJ ‚d S )Né   zfill_value must be a scalar©Úmatchr   ©Ú
fill_valuer   )r   r   )r   r   ÚpytestÚraisesÚ
ValueErrorr   r3   r(   ÚarangeÚastypeÚobjectÚiloc)r   ÚserÚdfZobj_serr   Zobj_dfr   r   r   Ú!test_shift_object_non_scalar_fillG   s    ,2
z4TestDataFrameShift.test_shift_object_non_scalar_fillc                 C   s<   t  ||¡ t¡}| d¡}| t¡ d¡}t  ||¡ d S )Nr   )r   Úget_objr>   Úintr   Úfloatr   )r   Údatetime_framer   r,   Úshiftedr   r   r   r   Útest_shift_intY   s    
z!TestDataFrameShift.test_shift_intc           	      C   sl   t ddd�}dD ]V}tjd|d�}|||d�}|d }|j|d�}|tjddd	d
g|d�}t ||¡ qd S )Nz
2000-01-01r   r0   )Zint32Úint64r   r%   r   r   r   r5   )r   r(   r=   r   Únanr   r   )	r   r   r   r   ZarrÚs1Úpr   r   r   r   r   Útest_shift_32bit_take_   s    z(TestDataFrameShift.test_shift_32bit_taker#   )r   r   r5   r'   c                 C   sP   |t |ƒtd|dd�d�}| dd¡}|t |ƒtd|dd�d�}t ||¡ d S )Nz2016-1-1 00:00:00r!   r"   r%   r   Z2Hz2016-1-1 02:00:00)r   r   r   r   r   )r   r#   r   r.   r   r   r   r   r   Útest_shift_preserve_freqstrk   s    þþz.TestDataFrameShift.test_shift_preserve_freqstrc                 C   s&  t ddddd�}||ƒ}| d¡}t ||¡ t |¡dks@J ‚| d¡}tg| t¡j 	¡ d d	…  }||ƒ}t ||¡ t |¡dksŽJ ‚| d
¡}| t¡j 	¡ dd … ttg }||ƒ}t ||¡ t |¡dksÞJ ‚dD ]>}| |¡}|tgd dd�}t ||¡ t |¡dksâJ ‚qâd S )Nz
2016-11-06r!   é
   z
US/Eastern)r$   r#   Útzr   zdatetime64[ns, US/Eastern]r   é	   éþÿÿÿr   )rP   iöÿÿÿé   iìÿÿÿr   )
r   r   r   r   Ú	get_dtyper   r>   r?   ÚvaluesÚtolist)r   r   Údatesr.   ÚresZexp_valsÚexpÚexr   r   r   Útest_shift_dst{   s(    


 
z!TestDataFrameShift.test_shift_dstc                 C   s&   t  ||¡}| d¡}t  ||¡ d S ©Nr   )r   rD   r   r   )r   rG   r   r.   Ú	unshiftedr   r   r   Útest_shift_by_zero–   s    
z%TestDataFrameShift.test_shift_by_zeroc                 C   sÌ   |d }|  d¡}t |j|j¡ |  d¡}t |d |¡ |  d¡}t |j|j¡ |  d¡}t |d |¡ |  d¡  d¡}t | ¡ j|jd d… ¡ |  d¡  d¡}t | ¡ j|jd d… ¡ d S )NÚAr   éûÿÿÿ)r   r   r+   r   Úassert_series_equalÚassert_numpy_array_equalÚdropnarV   )r   rG   rA   rH   Zshifted_serr^   Zunshifted_serr   r   r   Ú
test_shiftœ   s    



ÿzTestDataFrameShift.test_shiftc           
      C   sÜ   t  ||¡}t ¡ }|jd|d�}t|ƒt|ƒks6J ‚|jd|d�}t  ||¡ |jddd�}t  ||¡ |jd|d�}t  ||¡ |jd }||d  }	|tu rÀt j	| 
|¡| 
|	¡dd� nt  |j| |j|	 ¡ d S )Nr   r&   ra   ÚBr   F)Zcheck_names)r   rD   r   ÚBDayr   r   r   r   r   rb   ÚxsZassert_almost_equalÚat)
r   rG   r   r.   ÚoffsetrH   r^   Úshifted2ÚdZ	shifted_dr   r   r   Útest_shift_by_offset´   s    
z'TestDataFrameShift.test_shift_by_offsetc           
      C   sV  t  ¡ }t  ||¡}| d¡}| d¡}t  |j|j¡ t  |j|j¡ |tu r‚t  |jd d …df  	¡ j
|jd d…df j
¡ nt  | 	¡ j
|j
d d… ¡ | dd¡}| dt ¡ ¡}t  ||¡ t  || dd¡¡ d}tjt|d�� |jdd� W d   ƒ n1 �s0    Y  |jddd�}t  ||¡ |jdt ¡ d�}	t  |	|¡ d S )	Nr   éÿÿÿÿr   rf   zdoes not match PeriodIndex freqr6   ÚDr&   )r   ÚmakePeriodFramerD   r   r+   r   r   rc   r@   rd   rV   r   rg   r   r:   r;   r<   )
r   r   ÚpsrH   r^   rk   Úshifted3ÚmsgZshifted4Zshifted5r   r   r   Útest_shift_with_periodindexË   s,    

(ÿ,z.TestDataFrameShift.test_shift_with_periodindexc                 C   sf   t tj dd¡ƒ}tjt tj|jdgd�|jd d …dd…f gddd�}|j	ddd	�}t
 ||¡ d S )
NrP   r   r   ©r   r   rn   Tr   ©Zignore_indexÚaxis©rw   ©r   r(   r)   ÚrandÚpdÚconcatrK   r   r@   r   r   Úassert_frame_equal©r   rB   r   r   r   r   r   Útest_shift_other_axisë   s    (ýz(TestDataFrameShift.test_shift_other_axisc                 C   sf   t tj dd¡ƒ}tjt tj|jdgd�|jd d …dd…f gddd�}|j	dd	d
�}t
 ||¡ d S )NrP   r   r   ru   rn   Tr   rv   r   rx   ry   r~   r   r   r   Útest_shift_named_axis÷   s    (ýz(TestDataFrameShift.test_shift_named_axisc                 C   sZ   t ddgddgdœƒ}| d¡}t tjtjtjgddggtd�ddgd�}t ||¡ d S )	NTF)ÚhighÚlowr   r   r�   r‚   ©r   )r   r   r(   ÚarrayrK   r?   r   r}   )r   rB   ÚrsÚxpr   r   r   Útest_shift_bool  s    
þz"TestDataFrameShift.test_shift_boolc                 C   s@  |g d¢dd�}|  d¡  d¡}t |jd d… | ¡ ¡ dd„ }||ƒ}|  d¡}t |j|j¡ t ||ƒj	d d… dk¡s„J ‚t |j	d d… ||ƒj	dd … k¡s®J ‚|  d¡}t |j|j¡ t ||ƒj	dd … dk¡sèJ ‚t |j	d	d … ||ƒj	d d… k¡�sJ ‚t |j
||ƒj
¡ t |j
||ƒj
¡ d S )
N©ÚaÚbÚcrl   Úcategoryr   r   rn   c                 S   s   | j jd S r]   )Ú_mgrÚarrays)Zndframer   r   r   Úget_cat_values  s    zBTestDataFrameShift.test_shift_categorical1.<locals>.get_cat_valuesrS   r   )r   r   r   r@   rd   r+   r   r(   ÚallÚcodesÚ
categories)r   r   r.   Úrtr�   ÚcatZsp1Zsn2r   r   r   Útest_shift_categorical1  s    
 *
 ,z*TestDataFrameShift.test_shift_categorical1c                 C   sb   t g d¢dd�}t g d¢dd�}t||dœƒ}| d¡}t| d¡| d¡dœƒ}t ||¡ d S )N©r‰   rŠ   r‹   rŒ   r   )r`   rf   ÚC)ÚoneÚtwor   )r   r   r   r   r}   )r   rL   Ús2rB   r…   r†   r   r   r   Útest_shift_categorical&  s    
z)TestDataFrameShift.test_shift_categoricalc                 C   sŠ   |g d¢dd�}|j ddd�}|tjg d¢g d¢dd	�ƒ}t ||¡ d
}tjt|d�� |j ddd� W d   ƒ n1 s|0    Y  d S )Nrˆ   rŒ   r   r   r‰   r8   )r‰   r‰   rŠ   r‹   F)r’   Zorderedz9Cannot setitem on a Categorical with a new category \(f\)r6   Úf)r   r{   ZCategoricalr   r   r:   r;   Ú	TypeError)r   r   r,   rY   r   rs   r   r   r   Ú!test_shift_categorical_fill_value/  s    ÿÿz4TestDataFrameShift.test_shift_categorical_fill_valuec                 C   s  t dddd�}|g d¢|d�}|g d¢|d�}|jdd	d
�}t ||¡ |g d¢|d�}|jdd	d
�}t ||¡ |g d¢ƒ}|jddd
�}t |¡t |¡ks¤J ‚|g d¢|d�}|g d¢|d�}|jddd
�}t ||¡ |g d¢|d�}|jddd
�}t ||¡ d S )Nr    r   r!   r"   )r   ç       @ç      @ç      @g      @r%   )ç        r   rŸ   r    r¡   r   r¢   r8   )r¢   r¢   r   rŸ   r    r   )r   r   r5   r   )r   r   r5   r'   r   )r   r   r   r5   r'   )r   r   r   r   r5   )r   r   r   r   rU   )r   r   Zdtir,   rZ   r   rY   r.   r   r   r   Útest_shift_fill_value>  s$    z(TestDataFrameShift.test_shift_fill_valuec                 C   s&   t dg iƒ}| d¡}t ||¡ d S )NÚfoorn   )r   r   r   r}   )r   rB   r…   r   r   r   Útest_shift_emptyZ  s    
z#TestDataFrameShift.test_shift_emptyc                 C   sê   t tdƒƒdgd g d¢g}tj dd¡}g }|D ]`}t| ¡ |d�}tdƒD ].}|jd d …|f  |d ¡|jd d …|f< qNtdƒ|_	| 
|¡ q2|d  ¡  ¡ }t |ttddƒdd	�¡ t |d |d ¡ t |d |d
 ¡ d S )Nr   r   )r   r   r   r   r   rT   rƒ   r   é   rJ   r   r   )Úlistr   r(   r)   r*   r   Úcopyr@   r   r   ÚappendZisnaÚsumr   rb   r   r}   )r   Zcolumn_listsÚdatarH   r   rB   ÚsZnullsr   r   r   Útest_shift_duplicate_columnsa  s    ,
z/TestDataFrameShift.test_shift_duplicate_columnsc                 C   s  t tjjddd�ƒ}t tjjddd�ƒ}tj||gdd�}|sRt|jjƒdksRJ ‚|j	ddd�}|j
g d¢dd�}tj|jd d …d d…f< |j|_t ||¡ tj||gdd�}|sÈt|jjƒdksÈJ ‚|j	d	dd�}|j
g d
¢dd�}tj|jd d …d	d …f< |j|_t ||¡ d S )Néè  ©r   r5   ©Úsize©r   r   r   rx   r   )rn   rn   r   r   r   rS   )r   r5   r'   rn   rn   )r   r(   r)   Úrandintr{   r|   r   r�   Úblocksr   ÚtakerK   r@   r   r   r}   )r   Úusing_array_managerÚdf1Údf2Údf3r   r   r   r   r   Ú test_shift_axis1_multiple_blocksw  s$    z3TestDataFrameShift.test_shift_axis1_multiple_blocksc                 C   sr  t tjjddd�ƒ}t tjjddd�ƒ}tj|jd d…dd…f |jd d…d d …f gdd�}|jd	dt d
¡d�}t	|j
jƒd	ksˆJ ‚|jg d¢dd�}t d
¡|jd d …d d	…f< |j|_t ||¡ tj|jd d…dd…f |jd d…d d …f gdd�}|jddt d
¡d�}t	|j
jƒd	k�s,J ‚|jg d¢dd�}t d
¡|jd d …dd …f< |j|_t ||¡ d S )Nr®   r¯   r°   r²   r'   r   r5   rx   r   r   ©rw   r9   )rn   rn   r   r   rS   )r   r5   rn   rn   )r   r(   r)   r³   r{   r|   r@   r   Úint_r   r�   r´   rµ   r   r   r}   )r   r·   r¸   r¹   r   r   r   r   r   Ú.test_shift_axis1_multiple_blocks_with_int_fill”  s     66zATestDataFrameShift.test_shift_axis1_multiple_blocks_with_int_fillz)ignore:tshift is deprecated:FutureWarningc                 C   sª  t  ¡ }t  ||¡}| d¡}| d¡}t  ||¡ |jdd�}t  ||¡ |jt ¡ d�}t  ||¡ d}tjt	|d�� |jdd� W d   ƒ n1 sœ0    Y  t  ||¡}	|	 d¡}| d¡}t  |	|¡ |	j|	j
jd�}t  ||¡ t|jtt |j
¡ƒ|jd�}
t  |
|¡}
|
 d¡}|	 d¡}|j
 d ¡|_
t  ||¡ | d¡}t  ||
¡ |	jg d	¢ }d
}tjt	|d�� | ¡  W d   ƒ n1 �sœ0    Y  d S )Nr   rn   rf   r&   ú.Given freq M does not match PeriodIndex freq Br6   ÚMrƒ   ©r   r   é   ú6Freq was not set in the index hence cannot be inferred)r   rp   rD   Útshiftr   r   rg   r:   r;   r<   r   r$   r   rV   r   r(   Úasarrayr   Ú
_with_freqr@   )r   rG   r   rq   rH   r^   rk   rr   rs   ÚdtobjÚinferred_tsr   Úno_freqr   r   r   Útest_tshift®  sD    

*

ý


zTestDataFrameShift.test_tshiftc                 C   sB   t  ||¡}t  t¡� | ¡  W d   ƒ n1 s40    Y  d S r2   )r   rD   Úassert_produces_warningÚFutureWarningrÃ   )r   rG   r   rÆ   r   r   r   Útest_tshift_deprecatedâ  s    z)TestDataFrameShift.test_tshift_deprecatedc                 C   st   t  ¡ }t  ||¡}|jddd�}|jddd�}t  ||¡ |jdd�}t  ||¡ |jt ¡ d�}t  ||¡ d S )Nr   Úinferr&   rn   rf   )r   rp   rD   r   r   r   rg   )r   r   rq   rH   r^   rk   rr   r   r   r   Ú'test_period_index_frame_shift_with_freqè  s    z:TestDataFrameShift.test_period_index_frame_shift_with_freqc           	      C   sÎ   t  ||¡}|jddd�}|jddd�}t  ||¡ |j|jjd�}t  ||¡ t|jtt	 
|j¡ƒ|jd�}t  ||¡}|jddd�}|jddd�}|j d ¡|_t  ||¡ |jddd�}t  ||¡ d S )Nr   rÍ   r&   rn   rƒ   )r   rD   r   r   r   r$   r   rV   r   r(   rÄ   r   rÅ   )	r   rG   r   rÆ   rH   r^   rk   rÇ   r   r   r   r   Ú#test_datetime_frame_shift_with_freqö  s$    ýz6TestDataFrameShift.test_datetime_frame_shift_with_freqc                 C   sV   t  ¡ }t  ||¡}d}tjt|d�� |jdd� W d   ƒ n1 sH0    Y  d S )Nr¾   r6   r¿   r&   )r   rp   rD   r:   r;   r<   r   )r   r   rq   rs   r   r   r   Ú-test_period_index_frame_shift_with_freq_error  s
    z@TestDataFrameShift.test_period_index_frame_shift_with_freq_errorc                 C   s\   t  ||¡}|jg d¢ }d}tjt|d�� |jdd� W d   ƒ n1 sN0    Y  d S )NrÀ   rÂ   r6   rÍ   r&   )r   rD   r@   r:   r;   r<   r   )r   rG   r   rÆ   rÈ   rs   r   r   r   Ú)test_datetime_frame_shift_with_freq_error  s
    z<TestDataFrameShift.test_datetime_frame_shift_with_freq_errorc                 C   s¦  t t d¡t d¡gƒ}t t¡� |jddd�}W d   ƒ n1 sF0    Y  t t d¡|d gƒ}t ||¡ | ¡ }t t¡� |jddd�}W d   ƒ n1 s¨0    Y  | ¡ }t 	||¡ t
||dœƒ}| ¡  t t¡�  |jdddd�}W d   ƒ n1 �s0    Y  t
t d¡t d¡g|d dœƒ}t 	||¡ t
d|iƒ}||d	< t|jjƒd
k�spJ ‚|jdddd�}t
ddg|d dœƒ}t 	||¡ d S )Nú
2020-01-01z
2020-01-02r   r   r8   ©r`   rf   r»   r`   rf   r   )r   r{   Ú	Timestampr   rÊ   rË   r   rb   r3   r}   r   Ú_consolidate_inplacer   r�   rŽ   )r   rA   r   r   rB   r¸   r¹   r   r   r   Ú)test_shift_dt64values_int_fill_deprecated  s,    ,,0"z<TestDataFrameShift.test_shift_dt64values_int_fill_deprecatedÚas_catTz1_can_hold_element incorrectly always returns True)Úreason)ZmarksFÚvalsrÒ   r   z
US/Pacific)r#   rQ   ro   z	2020 Daysr   r5   r   ZInt64r   ZFloat32c                 C   s
   t | jƒS r2   )Ústrr   )Úxr   r   r   Ú<lambda>b  ó    zTestDataFrameShift.<lambda>)Úidsz"ignore:Index.ravel.*:FutureWarningc                 C   sü   |rt jjtd�}|j |¡ t|ƒ}|r4| d¡}td|iƒ}|j	dddd�}tdddgiƒ}	t
 ||	¡ t||dœƒ}
|
 ¡  |
j	dddd�}t|
d	 ddgdœƒ}	t
 ||	¡ td|iƒ}||d	< t|jjƒd
ksÜJ ‚|j	dddd�}t
 ||	¡ d S )N)r;   rŒ   r`   rn   r   r¤   r»   rÓ   rf   r   )r:   ÚmarkÚxfailÚNotImplementedErrorÚnodeZ
add_markerr   r>   r   r   r   r}   rÕ   r   r�   rŽ   )r   rÙ   r×   r¶   Úrequestrß   rA   rB   r   r   r¸   r¹   r   r   r   Ú(test_shift_dt64values_axis1_invalid_fillA  s(    )
z;TestDataFrameShift.test_shift_dt64values_axis1_invalid_fillc                 C   sÌ   t g d¢ƒ}tddgddgddgdœ|d d… |d	�}|jdd
�}ttjtjgddgddgdœ|d d… |d	�}t ||¡ |jddd
�}ttjtjgtjtjgddgdœ|d d… |d	�}t ||¡ d S )Nr–   r   r5   r   r'   r   r¦   rn   ru   rx   )r   r   r   r(   rK   r   r}   )r   ÚcirB   r   r   r   r   r   Ú$test_shift_axis1_categorical_columns†  s     "ÿ&ÿ
ýz7TestDataFrameShift.test_shift_axis1_categorical_columnsc                 C   sX   t tj dd¡ƒ}|jddd d�}|tj }t ||¡ |jddd d�}t ||¡ d S )Nr   r5   r¦   r   r»   iúÿÿÿ)r   r(   r)   rz   r   rK   r   r}   )r   rB   rH   r   rk   r   r   r   Útest_shift_axis1_many_periodsœ  s    
z0TestDataFrameShift.test_shift_axis1_many_periodsN)9Ú__name__Ú
__module__Ú__qualname__r:   rß   Zparametrizer(   ÚemptyZonesrK   r   r-   r   r=   r   r   r4   rC   rI   rN   rO   r\   r_   re   rm   rt   r   r€   r‡   r•   r›   rž   r£   r¥   r­   rº   ÚtdZ&skip_array_manager_not_yet_implementedr½   ÚfilterwarningsrÉ   rÌ   rÎ   rÏ   rÐ   rÑ   rÖ   Úparamrà   r{   Zperiod_rangeZtimedelta_rangeZinterval_ranger„   rä   ræ   rç   r   r   r   r   r	      s¨   $þ
ýþ
 		


3	
#ÿþùþ
ÿþÿþôë
 r	   )Únumpyr(   r:   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrì   Zpandasr{   r   r   r   r   r   r   r   Zpandas._testingZ_testingr   r	   r   r   r   r   Ú<module>   s   $	