o
    թZh&                     @   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   U/var/www/html/lang_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&   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    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   )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      dS Nr   r   r   r   r   r   rQ   m       z test_all_apply.<locals>.<lambda>r'   c                 S   rY   rZ   r   r   r   r   r   rQ   n   r[   )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   rY   rZ   r   r   r   r   r   rQ   ~   r[   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   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   rQ      r[   z%test_invalid_engine.<locals>.<lambda>Zfoo)r(   r   r   r   r   r   r    r!   r   r   r   r   test_invalid_engine   s   ""rc   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   ra   r   r   r   r   r   r   rQ      r[   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonZnopythonF)r(   Zengine_kwargsrb   r   r   r   r   !test_invalid_engine_kwargs_cython   s
   "re   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   ra   r   r   r   r   r   r   rQ      r[   z(test_invalid_raw_numba.<locals>.<lambda>FZnumba)r   r(   rb   r   r   r   r   test_invalid_raw_numba   s
   $"rf   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   rh   r   r   r   numpysum   s   z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r$   )grarj   rk   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rD   name)r   r   r    r!   r0   rM   r   from_tuplesr   groupbyrV   )rg   ri   rI   idxr5   r4   ZmidxZ
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s   rt   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   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$   ru   r&   rv   rx   ry   T)r*   centerr   	   r)   )Zdrop)r   r   rJ   rK   rL   rF   r    r!   r   r   rG   Zreset_indexr0   rV   )r   r}   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 )Nru   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 )	Nru   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   r{   )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   r{   Fr   )r   r   r    r!   r   rD   r   r   r   r0   rV   Zxsr   )	r   r   r   r   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      g | ]}d |dqS r   dr   .0r   r   r   r   
<listcomp>       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   r   r   r   r   r   r   r   r   3  r   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 s'w   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   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`   rc   re   rf   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB    ,




