o
    _~#gSl                     @   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~d Z?dS )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   Float64r   dtype)
nprandomdefault_rngstandard_normalr   shiftTtmassert_frame_equalastype)selfdatadfresexpecteddf2res2	expected2 r&   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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.w   Y  |t	u rbtdd	dd|_
tjt|d |jd	d	d	dd W d    d S 1 s[w   Y  d S 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.   r5   r   r   )setflagsr   r   rangelenr   assert_equal)r   
input_dataoutput_datar6   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   5minr,   4h   )r   r   r   r   r   r   r.   r   assert_index_equalr   Hour)r   r6   tsrD   	exp_indexr&   r&   r'   test_shift_mismatched_freqL   s   z-TestDataFrameShift.test_shift_mismatched_freqr7   r   z1/1/2011   r*   r+   2017r   r-   
shift_sizer   r   r
   c                 C   s&   |t ur| }|||usJ d S N)r   to_framer   )r   r7   rR   r6   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w   Y  | }tjtdd |jdtdd W d    n1 sDw   Y  |	t
}|jdi d}|d i ks]J | }|jdi d}|jd i ksqJ d S )Nr   zfill_value must be a scalarr0   r   r   r   )r   r   )r   r?   pytestraises
ValueErrorr   rU   r   aranger   objectiloc)r   serr    obj_serrD   obj_dfr&   r&   r'   !test_shift_object_non_scalar_fillj   s   
z4TestDataFrameShift.test_shift_object_non_scalar_fillc                 C   s<   t ||t}|d}|td}t || d S )Nr   )r   get_objr   intr   floatrA   )r   datetime_framer6   rL   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   rQ   r   r-   r   r   r
   r   )r   r   r[   r   nanr   rA   )	r   r6   r   r.   arrs1prD   r"   r&   r&   r'   test_shift_32bit_take   s   z(TestDataFrameShift.test_shift_32bit_taker   )r   r
   r   rI   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   2hz2016-1-1 02:00:00)r?   r   r   r   rA   )r   r   r6   r7   rD   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sGJ |d
}|tj	 dd  ttg }||}t|| t|dksoJ d S )N
2016-11-06r*   
   
US/Easternr,   r   tzr   datetime64[ns, US/Eastern]r   	   r
   )
r   r   r   rA   	get_dtyper   r   r\   valuestolist)r   r6   datesr7   r!   exp_valsexpr&   r&   r'   test_shift_dst   s   


 z!TestDataFrameShift.test_shift_dstex)rr   i   ic                 C   sV   t ddddd}||}||}|tgd dd}t|| t|dks)J d S )Nrq   r*   rr   rs   rt   rv   r   )r   r   r   r   rA   ry   )r   r6   r   r|   r7   r!   r~   r&   r&   r'   test_shift_dst_beyond   s   
z(TestDataFrameShift.test_shift_dst_beyondc                 C   s&   t ||}|d}t || d S Nr   )r   rb   r   rA   )r   re   r6   r7   	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   rJ   r.   assert_series_equalassert_numpy_array_equaldropnarz   )r   re   r^   rf   shifted_serr   unshifted_serr&   r&   r'   
test_shift   s   



 zTestDataFrameShift.test_shiftc           
      C   s   t ||}t }|jd|d}t|t|ksJ |jd|d}t || |jddd}t || |jd|d}t || |jd }||d  }	|tu rat j	|
||
|	dd d S t |j| |j|	  d S )Nr   rG   r   Br   F)check_names)r   rb   r   BDayr   r@   rA   r.   r   r   xsassert_almost_equalat)
r   re   r6   r7   offsetrf   r   shifted2d	shifted_dr&   r&   r'   test_shift_by_offset   s   
 z'TestDataFrameShift.test_shift_by_offsetc           
      C   sl  t tjdtdtjdddd}t||}|d}|d}t	|j
|j
 t	|j
|j
 |t u rMt|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 sw   Y  |jdd	d}t|| |jdt d}	t|	| d S )NrI   r   
2020-01-01rQ   r-   r   r   Dzdoes not match PeriodIndex freqr0   WrG   )r   r   r[   rd   pdperiod_ranger   rb   r   rJ   r.   r   r]   r   rz   r   DayrA   rX   rY   rZ   )
r   r6   psrf   r   r   shifted3r8   shifted4shifted5r&   r&   r'   test_shift_with_periodindex   s2   

(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
   rr   r   r   r.   r5   r   Tr   ignore_indexr   r   r   r   r   r   r   concatrj   r.   r]   r   r   r   r   r    r"   rD   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   r5   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sJ |jd|dd}t|| d S )Nr   r   )r,   r   r   )r   r   r   r   r@   r   rA   )r   re   r7   r   rf   r   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   r5   )r   r   r   arrayrj   r\   r   r   )r   r    rsxpr&   r&   r'   test_shift_bool5  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sBJ t|j	d d ||j	dd  ksWJ | d}t|j|j t||j	dd  dkstJ t|j	d	d  ||j	d d ksJ t|j
||j
 t|j
||j
 d S )
Nabcr   categoryr   r   r   c                 S   s   | j jd S r   )_mgrarrays)ndframer&   r&   r'   get_cat_valuesE  s   zBTestDataFrameShift.test_shift_categorical1.<locals>.get_cat_valuesrx   r
   )r   r   rA   r]   r   rJ   r.   r   allcodes
categories)r   r6   r7   rtr   catsp1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   r   C)onetwor   )r   r   r   r   r   )r   rl   s2r    r   r   r&   r&   r'   test_shift_categoricalY  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    d S 1 s?w   Y  d S )Nr   r   r   r   r   rW   )r   r   r   r   F)r   orderedz9Cannot setitem on a Categorical with a new category \(f\)r0   f)r   r   Categoricalr   rA   rX   rY   	TypeError)r   r6   rL   r!   r"   r8   r&   r&   r'   !test_shift_categorical_fill_valueb  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sRJ |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;          @      @      @      @r-   )        r;   r   r   r   r   r   rW   )r   r   r;   r   r   r
   r   r
   r   r   )r   r
   r   rI   r   )r   r   r
   r   rI   )r   r   r   r
   r   )r   r   r   rA   ry   )r   r6   dtirL   r~   rD   r!   r7   r&   r&   r'   test_shift_fill_valueq  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 ]0}t| |d}tdD ]}|jd d |f 	|d |jd d |f< q)td|_
|| q|d   }t|ttddd	d
 t|d |d  t|d |d  d S )Nr   r   )r   r   r
   r
   r   r
   )r   r   r   r      ri   r   )listr?   r   r   r   r   r   copyr]   r   r5   appendisnasumr   r   r   r   )r   column_listsr   rf   r5   r    s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}|sqt|jj	dksqJ |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   0   | j t| jd dddddj | jddS )Nr   r   rd   )r   r   set_axisr?   r:   r   r5   r    r&   r&   r'   <lambda>      zETestDataFrameShift.test_shift_axis1_multiple_blocks.<locals>.<lambda>rx   )r
   r   rI   r   r   c                 S   r   )Nr   r   rd   )r   rI   r   r   r&   r&   r'   r     r   )r   r   r   r   integersr   r   r@   r   blocksr   takepiperj   r]   r5   r   r   )r   using_array_managerdf1r#   df3rD   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sJJ |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sJ |jg ddd	}t 
d
|jd d dd f< |j|_t|| d S )Nr
   r   r   )r   r   r   rI   r   r   r   r   r   r   )r   r   r   r   rx   )r
   r   r   r   )r   r   r   r   r   rc   r   r   r]   r   int_r@   r   r   r   r5   r   r   )r   rngr   r#   r   rD   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   s   t tdtjdddd}t||}|jddd}|jddd}t|| |jd	d}t|| |jt	 d}t|| d S )
NrI   r   rQ   r-   r   inferrG   r   r   )
r   r?   r   r   r   rb   r   rA   r   r   )r   r6   r   rf   r   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   rG   r   r   )r   rb   r   rA   r.   r,   r   rz   r   r   asarrayr5   
_with_freq)	r   re   r6   dtobjrf   r   r   inferred_tsr"   r&   r&   r'   #test_datetime_frame_shift_with_freq  s$   z6TestDataFrameShift.test_datetime_frame_shift_with_freqc                 C   sj   t tdtjdddd}t||}d}tjt|d |j	dd W d    d S 1 s.w   Y  d S )	NrI   r   rQ   r-   z.Given freq M does not match PeriodIndex freq Dr0   MrG   )
r   r?   r   r   r   rb   rX   rY   rZ   r   )r   r6   r   r8   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    d S 1 s(w   Y  d S )N)r   r      z6Freq was not set in the index hence cannot be inferredr0   r   rG   )r   rb   r]   rX   rY   rZ   r   )r   re   r6   r  no_freqr8   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 s%w   Y  | }tjtdd |jddd W d    n1 sGw   Y  t||d}|	  |jdddd	}tddg|d
 d}t
|| td
|i}||d< t|jjdksJ |jdddd	}t
|| d S )Nr   z
2020-01-02zvalue should be ar0   r   r   rW   r   r   r   r   r   r
   )r   r   	TimestamprX   rY   r   r   rU   r   _consolidate_inplacer   r   r@   r   r   )r   r^   r    r#   rD   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)marksFvalsr   r
   z
US/Pacific)r   ru   r   z	2020 Daysr   r   r   Int64r   Float32c                 C   s
   t | jS rT   )strr   xr&   r&   r'   r   `  s   
 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s_J |jdddd}t|| d S )
Nr   r   r   r   r   r   r	  r   r
   )
r   r   r   r   r   r   r  r@   r   r   )	r   r  r  r^   r    rD   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
   rI   r   r   r   r   r   )r   r   r   r   rj   r   r   )r   cir    rD   r"   r&   r&   r'   $test_shift_axis1_categorical_columns|  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   rj   r   r   )r   r    rf   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   rQ   r-   1MSrG   z
02/01/2000)startendr   )r   r   r   r   r   )r   r    rf   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   )rI   r   r   r   r   rS   r;   r   r   r   )a_0b_0a_1b_1a_2b_2)r   r   r   rj   r   r   )r   r   shiftsr    rf   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   rS   )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    d S 1 s_w   Y  d S )Nr
   r   r)   r*   r+   r-   r   rW   c                 S      t | d S r   rc   r  r&   r&   r'   r         zQTestDataFrameShift.test_shift_with_iterable_freq_and_fill_value.<locals>.<lambda>r   rG   c                 S   r*  r   r+  r  r&   r&   r'   r     r,  r/   r0   r2   )r   r   r   r   r   r   r   r   r   renamer3   r4   )r   r    r8   r&   r&   r'   ,test_shift_with_iterable_freq_and_fill_value  s"   "z?TestDataFrameShift.test_shift_with_iterable_freq_and_fill_valuec                 C   sZ  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 sHw   Y  d}tjt	|d |dg W d    n1 sgw   Y  d}tjt|d |g  W d    n1 sw   Y  d}tjt|d |jddd	 W d    d S 1 sw   Y  d S )Nr   r
   rI   r   r   r   r   _suffix)suffixr;   )
a_suffix_0
a_suffix_1z:If `periods` contains multiple shifts, `axis` cannot be 1.r0   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.fails)
r   r   r   rj   r   r   rX   rY   rZ   r   )r   r   r'  r    rf   r"   r8   r&   r&   r'   .test_shift_with_iterable_check_other_arguments  s,   "zATestDataFrameShift.test_shift_with_iterable_check_other_argumentsc                 C   s$   t  }|jddd}t|| d S )Nr   r   r   )r   r    rD   r&   r&   r'   test_shift_axis_one_empty  s   z,TestDataFrameShift.test_shift_axis_one_emptyN)@__name__
__module____qualname__r(   r9   rX   markparametrizer   emptyonesrj   rE   rN   r   r[   r   r?   rV   ra   rg   rn   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   td&skip_array_manager_not_yet_implementedr   r   r  r  r  r  paramxfailr   r   timedelta_rangeinterval_ranger   r  r  r  r  r(  r)  r.  r4  r5  r&   r&   r&   r'   r	      s    $



	"
		+
	
		r	   )numpyr   rX   pandas.util._test_decoratorsutil_test_decoratorsr=  pandasr   r   r   r   r   r   r   r   pandas._testing_testingr   r	   r&   r&   r&   r'   <module>   s    $	