o
    _~#g&                     @   s`  d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ ejdZdd Zejdg dd	d
 Z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ejdddd igd!dggd"d# Z d$d% Z!d&d' Z"d(d) Z#d*d+ Z$d,d- Z%d.d/ Z&ejd0g d1d2d3 Z'd4d5 Z(d6d7 Z)d8d9 Z*dS ):    N)		DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnanotna)offsetsz3ignore:.*(empty slice|0 for slice).*:RuntimeWarningc                 C   s   | t |   S N)npisfinitemeanx r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/window/test_apply.pyf   s   r   bad_raw)N   r   c                 C   sP   t jtdd ttddjt| d W d    d S 1 s!w   Y  d S )Nz'raw parameter must be `True` or `False`match   r   raw)pytestraises
ValueErrorr   rangerollingapplylen)r   r   r   r   test_rolling_apply_invalid_raw   s   "r#   c                 C   sx   | \}}t g d}|djtj||d}|  sJ |jdddjtj||d}t g dtd}t	|| d S )N)r      r      
   enginer   r   min_periods)r   r      r&   dtype)
r   r    r!   r   sumr	   allfloattmassert_almost_equal)engine_and_rawr(   r   valsresultexpectedr   r   r    test_rolling_apply_out_of_bounds$   s   r7   windowr$   2sc                    s   t tjddtjdjdddddtdddd	d
  fdd} | j|dd} j	dd  
 }t|| tt  | j|dd W d    d S 1 sZw   Y  d S )Nr$      r   r&   )sizeAB20130101speriodsfreqindexc                    s$   | j d  j d krtjS | jd S )Nr   )rE   r   nanilocr   dfr   r   r   ?   s   
z1test_rolling_apply_with_pandas_objects.<locals>.fFr   T)r   r   randomdefault_rngstandard_normalintegersr   r    r!   rH   reindex_liker1   assert_frame_equalexternal_error_raisedAttributeError)r8   r   r5   r6   r   rI   r   &test_rolling_apply_with_pandas_objects2   s   
"rS   c                 C   s   | \}}t g dd}|jd|djdd ||d}t|| t g d}|jd	d
|djdd ||d}t g dd d | }t|| |jd	d
|djt||d}t|| d S )Nfloat64r,   r&   )stepc                 S   s   |   S r   )r   r   r   r   r   <lambda>Q       z$test_rolling_apply.<locals>.<lambda>r'   )NNNr$   r   r*   rU   c                 S   s   t | S r   )r"   r   r   r   r   rV   X   rW   )      ?       @rZ   )r   r    r!   r1   assert_series_equalr"   )r3   rU   r(   r   r6   r5   r@   r   r   r   test_rolling_applyL   s   

r\   c                 C   s~   | \}}t tddddtdddd }|jdd	}|jd
d	}|jdd ||d}|jdd ||d}t|| d S )Nr?   r:   r@   rA   r<   r=   r$   r   )r8   1sc                 S      dS Nr   r   r   r   r   r   rV   m       z test_all_apply.<locals>.<lambda>r'   c                 S   r^   r_   r   r   r   r   r   rV   n   r`   )r   r   r   	set_indexr    r!   r1   rP   )r3   r(   r   rJ   errr5   r6   r   r   r   test_all_applya   s   rd   c                 C   s   | \}}t dtdi}tdtdtdtdtdg|_dd	 }|jd
ddj|||d}| }d|d< t|| |jdddj|||d}| }d|d< t|| |jdddj|||d}| }d|d< t|| d S )Nr>   r:   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06c                 S   r^   r_   r   r   r   r   r   rV   ~   r`   z#test_ragged_apply.<locals>.<lambda>r]   r   r8   r*   r'   rY   r9   5s)	r   r   r   rE   r    r!   copyr1   rP   )r3   r(   r   rJ   r   r5   r6   r   r   r   test_ragged_applyr   s*   rh   c                   C   sT   t jtdd ttddjdd dd W d    d S 1 s#w   Y  d S )Nz)engine must be either 'numba' or 'cython'r   r   c                 S      | S r   r   r   r   r   r   rV      r`   z%test_invalid_engine.<locals>.<lambda>foo)r(   r   r   r   r   r   r    r!   r   r   r   r   test_invalid_engine   s   ""rl   c                   C   sZ   t jtdd ttddjdd dddid	 W d    d S 1 s&w   Y  d S )
Nz+cython engine does not accept engine_kwargsr   r   c                 S   ri   r   r   r   r   r   r   rV      r`   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonnopythonF)r(   engine_kwargsrk   r   r   r   r   !test_invalid_engine_kwargs_cython   s
   "rp   c                   C   sV   t jtdd ttddjdd ddd W d    d S 1 s$w   Y  d S )	Nz.raw must be `True` when using the numba enginer   r   c                 S   ri   r   r   r   r   r   r   rV      r`   z(test_invalid_raw_numba.<locals>.<lambda>Fnumba)r   r(   rk   r   r   r   r   test_invalid_raw_numba   s
   $"rr   args_kwargsparr&   )r&   c                 C   s   dd }t ddgddgd}tddg}t ddgdd	gg|d
}|dj|| d | d d}t|| tjddgdd gd}tdd	g|dd}|	dd d}|j|| d | d d}t
|| d S )Nc                 S   s   t | | S r   )r   r.   )r   rt   r   r   r   numpysum   s   z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r$   )grarv   rw   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rE   name)r   r   r    r!   r1   rP   r   from_tuplesr   groupbyr[   )rs   ru   rJ   idxr6   r5   midx
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s   r   c                 C   s\  t tjdd}tj|d d< tj|dd < |jdddjt| d}t	
|jd t|dd  |jd	d
djt| d}t|jd sJJ t|jd rSJ t|jd r\J t|jd seJ t tjdd	}|jdddjt| d}t|jd sJ t|jd sJ |jd	ddjt| d}|jd	ddjt| d}t	
|| d S )Nr$   2   r&      r)   r   rF               ir:   r   r%   r   r   )r   r   rK   rL   rM   rG   r    r!   r   r1   r2   rH   r   r	   r
   )r   objr5   obj2result0result1r   r   r   	test_nans   s"    r   c                 C   s   t tjdd}tj|d d< tj|dd < |jddddjt| d	}t	|t tjgd
 gjdddjt| d	j
d
d  jdd}t|| d S )Nr$   r   r&   r   r   r   T)r*   centerr   	   r)   )drop)r   r   rK   rL   rM   rG   r    r!   r   r   rH   reset_indexr1   r[   )r   r   r5   r6   r   r   r   test_center   s   r   c                 C   sF   | djt| d}t|tsJ t|jd t	|dd   d S )Nr   r   rF   )
r    r!   r   
isinstancer   r1   r2   rH   r   r   )r   seriesr5   r   r   r   test_series   s   $r   c                 C   sd   | djt| d}t|tsJ tj|jdd d f |jdd d d f jtj	d| ddd d S )	Nr   r   rF   r   r   )axisr   Fcheck_names)
r    r!   r   r   r   r1   r[   rH   r   r   )r   framer5   r   r   r   
test_frame   s   "
r   c           	      C   s   d}d}|d d d  d }|j||djt| d}|jd }|dt   }|d d d ||}t	
|jd t| d S )	N   r&   r$   r>   re   r   rF   r   )resampler   r    r!   r   rE   r   BDaytruncater1   r2   rH   r   )	r   r   winminpserseries_result	last_date	prev_datetrunc_seriesr   r   r   test_time_rule_series   s   
r   c           	      C   s   d}d}|d d d  d }|j||djt| d}|jd }|dt   }|d d d ||}t	j
|||jtj| dd	d
 d S )Nr   r&   r$   r>   re   r   rF   r   Fr   )r   r   r    r!   r   rE   r   r   r   r1   r[   xsr   )	r   r   r   r   frmframe_resultr   r   trunc_framer   r   r   test_time_rule_frame   s   

r   r   )r   c   d   c                 C   sv   |j t|d ||djt| d}|j t|||djt| d}t|}t|t| | }t|| ||  d S )Nr   rX   r   )r    r"   r!   r   r	   r1   r[   r2   )r   r   r   rU   r5   r6   nan_maskr   r   r   test_min_periods  s   r   c                 C   sv   dd t dD }d}|t|j| jd|djt| dd|j}|jd|d	d
jt| d}t	|| d S )Nc                 S      g | ]}d |dqS r   dr   .0r   r   r   r   
<listcomp>       z.test_center_reindex_series.<locals>.<listcomp>   r&   r   re   r   Tr8   r*   r   )
r   reindexlistrE   r    r!   r   shiftr1   r[   )r   r   r@   r   	series_xp	series_rsr   r   r   test_center_reindex_series  s   r   c                 C   s   t tdtddddd}dd tdD }d	}|t|j| jd
|djt| d	d|j}|jd
|ddjt| d}t
|| d S )Nr   z
2020-01-01D)rC   rB   rD   c                 S   r   r   r   r   r   r   r   r   3  r   z-test_center_reindex_frame.<locals>.<listcomp>r   r&   r   re   r   r   Tr   )r   r   r   r   r   rE   r    r!   r   r   r1   rP   )r   r   r@   r   frame_xpframe_rsr   r   r   test_center_reindex_frame0  s   r   c                 C   st   t ddg}d}tjt|d |jdddjtj| d}W d    n1 s'w   Y  t ddg}t|| d S )	Nr   r$   z5Support for axis=1 in DataFrame.rolling is deprecatedr   )r8   r   r   rY   rZ   )	r   r1   assert_produces_warningFutureWarningr    r!   r   r.   rP   )r   rJ   msgr5   r6   r   r   r   
test_axis1A  s   r   )+numpyr   r   pandasr   r   r   r   r   r   r   r	   r
   pandas._testing_testingr1   pandas.tseriesr   markfilterwarnings
pytestmarkr   parametrizer#   r7   rS   r\   rd   rh   rl   rp   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB    ,




