a
    Pf&                     @   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   W/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/window/test_apply.pyf   s    r   bad_raw)N   r   c                 C   sN   t jtdd, ttddjt| d W d    n1 s@0    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&   Z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    r6   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    n1 s0    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   )rD   r   nanilocr   dfr   r   r   ?   s    z1test_rolling_apply_with_pandas_objects.<locals>.fFr   T)r   r   randomdefault_rngstandard_normalZintegersr   r    r!   rG   Zreindex_liker0   assert_frame_equalZexternal_error_raisedAttributeError)r7   r   r4   r5   r   rH   r   &test_rolling_apply_with_pandas_objects2   s    
rO   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 )NZfloat64r,   r&   )stepc                 S   s   |   S r   )r   r   r   r   r   <lambda>Q       z$test_rolling_apply.<locals>.<lambda>r'   )NNNr$   r   r*   rP   c                 S   s   t | S r   )r"   r   r   r   r   rQ   X   rR   )      ?       @rU   )r   r    r!   r0   assert_series_equalr"   )r2   rP   r(   r   r5   r4   r?   r   r   r   test_rolling_applyL   s    

rW   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>   r9   r?   r@   r;   r<   r$   r   )r7   1sc                 S   s   dS Nr   r   r   r   r   r   rQ   m   rR   z test_all_apply.<locals>.<lambda>r'   c                 S   s   dS rY   r   r   r   r   r   rQ   n   rR   )r   r   r   Z	set_indexr    r!   r0   rM   )r2   r(   r   rI   Zerrr4   r5   r   r   r   test_all_applya   s    r[   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=   r9   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06c                 S   s   dS rY   r   r   r   r   r   rQ   ~   rR   z#test_ragged_apply.<locals>.<lambda>rX   r   r7   r*   r'   rT   r8   Z5s)	r   r   r   rD   r    r!   copyr0   rM   )r2   r(   r   rI   r   r4   r5   r   r   r   test_ragged_applyr   s*    r^   c                   C   sR   t jtdd0 ttddjdd dd W d    n1 sD0    Y  d S )Nz)engine must be either 'numba' or 'cython'r   r   c                 S   s   | S r   r   r   r   r   r   rQ      rR   z%test_invalid_engine.<locals>.<lambda>Zfoo)r(   r   r   r   r   r   r    r!   r   r   r   r   test_invalid_engine   s    r`   c                   C   sX   t jtdd6 ttddjdd dddid	 W d    n1 sJ0    Y  d S )
Nz+cython engine does not accept engine_kwargsr   r   c                 S   s   | S r   r   r   r   r   r   rQ      rR   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonZnopythonF)r(   Zengine_kwargsr_   r   r   r   r   !test_invalid_engine_kwargs_cython   s    rb   c                   C   sT   t jtdd2 ttddjdd ddd W d    n1 sF0    Y  d S )	Nz.raw must be `True` when using the numba enginer   r   c                 S   s   | S r   r   r   r   r   r   rQ      rR   z(test_invalid_raw_numba.<locals>.<lambda>FZnumba)r   r(   r_   r   r   r   r   test_invalid_raw_numba   s    rc   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   re   r   r   r   numpysum   s    z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r$   )grarg   rh   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rD   name)r   r   r    r!   r0   rM   r   from_tuplesr   groupbyrV   )rd   rf   rI   idxr5   r4   ZmidxZ
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s    rq   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 sJ t|jd rJ t|jd rJ t|jd sJ t tjdd	}|jdddjt| d}t|jd sJ t|jd s J |jd	ddjt| d}|jd	ddjt| d}t	
|| d S )Nr$   2   r&      r)   r   rE               ir9   r   r%   r   r   )r   r   rJ   rK   rL   rF   r    r!   r   r0   r1   rG   r   r	   r
   )r   objr4   obj2Zresult0Z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$   rr   r&   rs   ru   rv   T)r*   centerr   	   r)   )Zdrop)r   r   rJ   rK   rL   rF   r    r!   r   r   rG   Zreset_indexr0   rV   )r   rz   r4   r5   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 )Nrr   r   rE   )
r    r!   r   
isinstancer   r0   r1   rG   r   r   )r   seriesr4   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 )	Nrr   r   rE   r   r   )axisr   FZcheck_names)
r    r!   r   r   r   r0   rV   rG   r   r   )r   framer4   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=   r\   r   rE   rx   )resampler   r    r!   r   rD   r   BDaytruncater0   r1   rG   r   )	r   r   winminpZserZseries_result	last_date	prev_dateZ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=   r\   r   rE   rx   Fr   )r   r   r    r!   r   rD   r   r   r   r0   rV   Zxsr   )	r   r   r   r   ZfrmZframe_resultr   r   Z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   rS   r   )r    r"   r!   r   r	   r0   rV   r1   )r   r   r   rP   r4   r5   Z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   s   g | ]}d |dqS r   dr   .0r   r   r   r   
<listcomp>   rR   z.test_center_reindex_series.<locals>.<listcomp>   r&   r   r\   r   Tr7   r*   r}   )
r   reindexlistrD   r    r!   r   shiftr0   rV   )r   r   r?   r   Z	series_xpZ	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)rB   rA   rC   c                 S   s   g | ]}d |dqS r   r   r   r   r   r   r   3  rR   z-test_center_reindex_frame.<locals>.<listcomp>r   r&   r   r\   r   r   Tr   )r   r   r   r   r   rD   r    r!   r   r   r0   rM   )r   r   r?   r   Zframe_xpZ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 sN0    Y  t ddg}t|| d S )	Nr   r$   z5Support for axis=1 in DataFrame.rolling is deprecatedr   )r7   r   r   rT   rU   )	r   r0   Zassert_produces_warningFutureWarningr    r!   r   r-   rM   )r   rI   msgr4   r5   r   r   r   
test_axis1A  s    8r   )+numpyr   r   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr0   Zpandas.tseriesr   markfilterwarningsZ
pytestmarkr   Zparametrizer#   r6   rO   rW   r[   r^   r`   rb   rc   rq   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s@   ,




