a
    dj                     @   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dd Zd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ejdd d!gd"d# Zejd$g d%d&d' Zd(d) Zejd*g d+d,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'e(j)dLdM Z*dNdO Z+dPdQ Z,dRdS Z-dTdU Z.dVdW Z/ejdXej0dYejj1dZd[d\d]gejjd^ed_d`ded_d`dadbe2j3d_d`dcde2j4ddd`dcde2j5dedfd`dej0e2j6dgd`gdhdiejj1dZd[d\ej0e2j6dgd`gdjdiejj1dZd[d\gdkdl dmdndo Z7dpdq Z8drds Z9dtdu Z:dvdw Z;dxdy Z<dzd{ Z=d|d} Z>d~S )TestDataFrameShiftc                 C   s   t jdd}t|}|jdddd}|jjdddj}t|| |dg 	d}|jdddd}tdgd	 dd
}t|| d S )N            i90  )axisperiods
fill_value)r   r   r   ZFloat64r   dtype)
nprandomdefault_rngstandard_normalr   shiftTtmassert_frame_equalastype)selfdatadfresexpecteddf2Zres2Z	expected2 r#   n/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/frame/methods/test_shift.py0test_shift_axis1_with_valid_fill_value_one_array   s    zCTestDataFrameShift.test_shift_axis1_with_valid_fill_value_one_arrayc                 C   s   |t jddtddddd}d}tjt|d  |jd	d	dd
 W d    n1 s\0    Y  |t	u rtdd	dd|_
tjt|d" |jd	d	d	dd W d    n1 s0    Y  d S )Nr
   r   1/1/2000Hr   freqindexMPassing a 'freq' together with a 'fill_value' silently ignores the fill_valuematchr   r   r)   )r   r   r)   )r   r   r   r   r   r   assert_produces_warningFutureWarningr   r   columns)r   frame_or_seriesobjmsgr#   r#   r$   (test_shift_deprecate_freq_and_fill_value#   s    .z;TestDataFrameShift.test_shift_deprecate_freq_and_fill_valuezinput_data, output_data)r   )shape)r
         ?c                 C   s\   |j dd ||d}|tur@||tt|tddd}n||dd}t|| d S )NF)writer   float64)r+   r2   r   r   )Zsetflagsr   r   rangelenr   assert_equal)r   Z
input_dataZoutput_datar3   resultr!   r#   r#   r$   test_shift_non_writable_array6   s    
z0TestDataFrameShift.test_shift_non_writable_arrayc                 C   s   |t jd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 )Nr
   r   r&   r'   r(   r*   r   Z5Tr)   Z4H   )r   r   r   r   r   r   r+   r   assert_index_equalr   ZHour)r   r3   tsr>   Z	exp_indexr#   r#   r$   test_shift_mismatched_freqL   s    z-TestDataFrameShift.test_shift_mismatched_freqr4   r   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   r4   rG   r3   r#   r#   r$   test_shift_always_copy[   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 s0    Y  |	t
}|jdi d}|d i ksJ | }|jdi d}|jd i ksJ d S )Nr   zfill_value must be a scalarr-   r   r   r   )r   r   )r   r;   pytestraises
ValueErrorr   rJ   r   aranger   objectiloc)r   serr   Zobj_serr>   Zobj_dfr#   r#   r$   !test_shift_object_non_scalar_fillj   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_framer3   rC   shiftedr!   r#   r#   r$   test_shift_int|   s    
z!TestDataFrameShift.test_shift_intr   int32int64c           	      C   sb   t ddd}tjd|d}|||d}|d }|j|d}|tjdddd	g|d}t|| d S )
Nz
2000-01-01r   rF   r   r*   r   r   r
   r   )r   r   rP   r   nanr   r=   )	r   r3   r   r+   Zarrs1pr>   r!   r#   r#   r$   test_shift_32bit_take   s    z(TestDataFrameShift.test_shift_32bit_taker   )r   r
   r   rA   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   r3   r4   r>   r!   r#   r#   r$   test_shift_preserve_freqstr   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sJ |d
}|tj	 dd  ttg }||}t|| t|dksJ d S )N
2016-11-06r'   
   
US/Easternr)   r   tzr   datetime64[ns, US/Eastern]r   	   r
   )
r   r   r   r=   	get_dtyper   r   rQ   valuestolist)r   r3   datesr4   r    Zexp_valsexpr#   r#   r$   test_shift_dst   s    


 z!TestDataFrameShift.test_shift_dstex)rc   i   ic                 C   sV   t ddddd}||}||}|tgd dd}t|| t|dksRJ d S )Nrb   r'   rc   rd   re   rg   r   )r   r   r   r   r=   rj   )r   r3   rp   rm   r4   r    rn   r#   r#   r$   test_shift_dst_beyond   s    
z(TestDataFrameShift.test_shift_dst_beyondc                 C   s&   t ||}|d}t || d S Nr   )r   rU   r   r=   )r   rX   r3   r4   	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   rB   r+   assert_series_equalassert_numpy_array_equaldropnark   )r   rX   rS   rY   Zshifted_serrt   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 rt j	|
||
|	dd nt |j| |j|	  d S )Nr   r@   rw   Br   F)Zcheck_names)r   rU   r   BDayr   r<   r=   r+   r   rx   xsZassert_almost_equalat)
r   rX   r3   r4   offsetrY   rt   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 rt |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   Dzdoes not match PeriodIndex freqr-   Wr@   )r   makePeriodFramerU   r   rB   r+   r   ry   rR   rz   rk   r   Dayr=   rM   rN   rO   )
r   r3   psrY   rt   r   shifted3r5   Zshifted4Zshifted5r#   r#   r$   test_shift_with_periodindex   s,    

(,z.TestDataFrameShift.test_shift_with_periodindexc                 C   sj   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 )
Nr
   rc   r   r   r+   r2   r   Tr   Zignore_indexr   r   r   r   r   r   pdconcatr]   r+   rR   r   r   r   r   r   r!   r>   r#   r#   r$   test_shift_other_axis  s    (z(TestDataFrameShift.test_shift_other_axisc                 C   sj   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 )Nr
   r   r   r   r   Tr   r   r2   r   r   r   r#   r#   r$   test_shift_named_axis  s    (z(TestDataFrameShift.test_shift_named_axisc                 C   sR   |j }t }|jd|dd}t|t|ks2J |jd|dd}t|| d S )Nr   r   )r)   r   rw   )r   r   r}   r   r<   r   r=   )r   rX   r4   r   rY   rt   r#   r#   r$   test_shift_other_axis_with_freq)  s    z2TestDataFrameShift.test_shift_other_axis_with_freqc                 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   r2   )r   r   r   arrayr]   rQ   r   r   )r   r   rsxpr#   r#   r$   test_shift_bool3  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sJ t|j	d d ||j	dd  ksJ | d}t|j|j t||j	dd  dksJ t|j	d	d  ||j	d d ksJ t|j
||j
 t|j
||j
 d S )
Nabcr   categoryr   r   r   c                 S   s   | j jd S rs   )_mgrarrays)Zndframer#   r#   r$   get_cat_valuesC  s    zBTestDataFrameShift.test_shift_categorical1.<locals>.get_cat_valuesri   r
   )r   r   r=   rR   rz   rB   r+   r   allcodes
categories)r   r3   r4   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   )rv   r|   C)ZoneZtwor   )r   r   r   r   r   )r   r^   s2r   r   r   r#   r#   r$   test_shift_categoricalW  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   rL   )r   r   r   r   F)r   Zorderedz9Cannot setitem on a Categorical with a new category \(f\)r-   f)r   r   ZCategoricalr   r=   rM   rN   	TypeError)r   r3   rC   r    r!   r5   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sJ |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(   )r8          @      @      @      @r*   )        r8   r   r   r   r   r   rL   )r   r   r8   r   r   r
   r   r
   r   r   )r   r
   r   rA   r   )r   r   r
   r   rA   )r   r   r   r
   r   )r   r   r   r=   rj   )r   r3   ZdtirC   rn   r>   r    r4   r#   r#   r$   test_shift_fill_valueo  s$    z(TestDataFrameShift.test_shift_fill_valuec                 C   s&   t dg i}|d}t|| d S )Nfoor   )r   r   r   r   )r   r   r   r#   r#   r$   test_shift_empty  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< qRtd|_
|| q6|d   }t|ttddd	d
 t|d |d  t|d |d  d S )Nr   r   )r   r   r
   r
   r   r
   )rq   r   r   r      r\   r   )listr;   r   r   r   r   r   copyrR   r   r2   appendZisnasumr   rx   r   r   )r   Zcolumn_listsr   rY   r2   r   sZnullsr#   r#   r$   test_shift_duplicate_columns  s    ,
z/TestDataFrameShift.test_shift_duplicate_columnsc                 C   s@  t tjdjddd}t tjdjddd}tj||gdd}|s^t|jj	dks^J |j
ddd}|jg ddd}|d	d
 }tj|jd d d df< |j|_t|| tj||gdd}|st|jj	dksJ |j
ddd}|jg ddd}|dd
 }tj|jd d dd f< |j|_t|| d S )Nr
     r   )sizer   r
   r   r   )r   r   r   r   r
   c                 S   s0   | j t| jd dddddj | jddS )Nr   r   rW   )r   r   Zset_axisr;   r7   r   r2   r   r#   r#   r$   <lambda>  s   zETestDataFrameShift.test_shift_axis1_multiple_blocks.<locals>.<lambda>ri   )r
   r   rA   r   r   c                 S   s0   | j t| jd dddddj | jddS )Nr   r   rW   )r   rA   r   r   r#   r#   r$   r     s   )r   r   r   r   integersr   r   r<   r   blocksr   takepiper]   rR   r2   r   r   )r   Zusing_array_managerdf1r"   df3r>   r!   r#   r#   r$    test_shift_axis1_multiple_blocks  s0    z3TestDataFrameShift.test_shift_axis1_multiple_blocksc                 C   s~  t jd}t|jddtd}t|jddt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sJ |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s8J |jg ddd	}t 
d
|jd d dd f< |j|_t|| d S )Nr
   r   r   )r   r   r   rA   r   r   r   r   r   r   )r   r   r   r   ri   )r
   r   r   r   )r   r   r   r   r   rV   r   r   rR   r   int_r<   r   r   r   r2   r   r   )r   rngr   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_fillc                 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@   r   r   )r   r   rU   r   r=   r   r   )r   r3   r   rY   rt   r   r   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@   r   r   )r   rU   r   r=   r+   r)   r   rk   r   r   Zasarrayr2   Z
_with_freq)	r   rX   r3   dtobjrY   rt   r   Zinferred_tsr!   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 )Nz.Given freq M does not match PeriodIndex freq Dr-   Mr@   )r   r   rU   rM   rN   rO   r   )r   r3   r   r5   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 )N)r   r      z6Freq was not set in the index hence cannot be inferredr-   r   r@   )r   rU   rR   rM   rN   rO   r   )r   rX   r3   r   Zno_freqr5   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jtdd |jddd W d    n1 sJ0    Y  | }tjtdd |jddd W d    n1 s0    Y  t||d}|	  |jdddd	}tddg|d
 d}t
|| td
|i}||d< t|jjdks
J |jdddd	}t
|| d S )N
2020-01-01z
2020-01-02zvalue should be ar-   r   r   rL   rv   r|   r   rv   r|   r
   )r   r   	TimestamprM   rN   r   r   rJ   r   _consolidate_inplacer   r   r<   r   r   )r   rS   r   r"   r>   r!   r   r#   r#   r$   )test_shift_dt64values_int_fill_deprecated#  s     ,,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   rf   r   z	2020 Daysr   r   r   ZInt64r   ZFloat32c                 C   s
   t | jS rI   )strr   xr#   r#   r$   r   ^      zTestDataFrameShift.<lambda>)idsc           	      C   s   t |}|r|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sJ |jdddd}t|| d S )
Nr   rv   r   r   r   r   r   r|   r
   )
r   r   r   r   r   r   r   r<   r   r   )	r   r   r   rS   r   r>   r!   r"   r   r#   r#   r$   (test_shift_dt64values_axis1_invalid_fill=  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   r   r
   rA   r   r   r   r   r   )r   r   r   r   r]   r   r   )r   cir   r>   r!   r#   r#   r$   $test_shift_axis1_categorical_columnsz  s     "&
z7TestDataFrameShift.test_shift_axis1_categorical_columnsc                 C   s\   t tjdd}|jddd d}|tj }t|| |jddd d}t|| d S )Nr
   r   r   r   r   i)r   r   r   r   r   r]   r   r   )r   r   rY   r!   r   r#   r#   r$   test_shift_axis1_many_periods  s    
z0TestDataFrameShift.test_shift_axis1_many_periodsc                 C   sV   t dg ditdddd}|jdd}t dg ditd	d	dd
d}t|| d S )Nr   r   2000r   rF   r*   Z1MSr@   z
02/01/2000)startendr   )r   r   r   r   r   )r   r   rY   r!   r#   r#   r$   test_shift_with_offsets_freq  s    
z/TestDataFrameShift.test_shift_with_offsets_freqc              	   C   s~   g dg dd}g d}t |}||}t g dg dtjddgtjddgtjtjdgtjtjdgd	}t|| d S )
Nr   )rA   r   r   r   r   rH   r8   r   r   r   )Za_0Zb_0Za_1Zb_1Za_2Zb_2)r   r   r   r]   r   r   )r   r   shiftsr   rY   r!   r#   r#   r$   ,test_shift_with_iterable_basic_functionality  s    



z?TestDataFrameShift.test_shift_with_iterable_basic_functionalityc                 C   s@   dg di}g d}t |}|d }t|||| d S )Nr   r   rH   )r   r   r   r   )r   r   r   r   r   r#   r#   r$   test_shift_with_iterable_series  s
    z2TestDataFrameShift.test_shift_with_iterable_seriesc                 C   s   t tjddtddddd}t|jdgddj	d	d
 d|jddd t|jdgddj	dd
 d|jddd d}tj
t|d$ |jddgddd W d    n1 s0    Y  d S )Nr
   r   r&   r'   r(   r*   r   rL   c                 S   s   t | d S rs   rV   r   r#   r#   r$   r     r   zQTestDataFrameShift.test_shift_with_iterable_freq_and_fill_value.<locals>.<lambda>r   r@   c                 S   s   t | d S rs   r   r   r#   r#   r$   r     r   r,   r-   r/   )r   r   r   r   r   r   r   r   r   renamer0   r1   )r   r   r5   r#   r#   r$   ,test_shift_with_iterable_freq_and_fill_value  s     z?TestDataFrameShift.test_shift_with_iterable_freq_and_fill_valuec                 C   s\  ddgddgd}ddg}t |}|dg j|dd	}t ddgtjd
gd}t|| d}tjt|d |j|dd W d    n1 s0    Y  d}tjt	|d |dg W d    n1 s0    Y  d}tjt|d |g  W d    n1 s0    Y  d}tjt|d |jddd	 W d    n1 sN0    Y  d S )Nr   r
   rA   r   r   r   r   Z_suffix)suffixr8   )Z
a_suffix_0Z
a_suffix_1z:If `periods` contains multiple shifts, `axis` cannot be 1.r-   r   z0Periods must be integer, but s is <class 'str'>.r   z0If `periods` is an iterable, it cannot be empty.z/Cannot specify `suffix` if `periods` is an int.Zfails)
r   r   r   r]   r   r   rM   rN   rO   r   )r   r   r   r   rY   r!   r5   r#   r#   r$   .test_shift_with_iterable_check_other_arguments  s$    ,**zATestDataFrameShift.test_shift_with_iterable_check_other_argumentsN)?__name__
__module____qualname__r%   r6   rM   markZparametrizer   emptyZonesr]   r?   rD   r   rP   r   r;   rK   rT   rZ   r`   ra   ro   rr   ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   paramZxfailr   Zperiod_rangeZtimedelta_rangeZinterval_ranger   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r	      s   $



	 
		+
	
		r	   )numpyr   rM   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   $	