o
    d%                     @   s\  d dl Z 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 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d/g d0d1d2 Z&d3d4 Z'd5d6 Z(d7d8 Z)dS )9    N)		DataFrameIndex
MultiIndexSeries	Timestampconcat
date_rangeisnanotna)offsetsc                 C   sN   t   t jddtd | t|   W  d    S 1 s w   Y  d S )Nignorez.*(empty slice|0 for slice).*)messagecategory)warningscatch_warningsfilterwarningsRuntimeWarningnpisfinitemeanx r   R/app/.heroku/python/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   r<   windowr*   2sc                    s   t tjdtj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 sTw   Y  d S )N   r   r,   )sizeAB20130101sZperiodsfreq)indexc                    s$   | j d  j d krtjS | jd S )Nr   )rH   r   nanilocr   dfr   r   r   @   s   
z1test_rolling_apply_with_pandas_objects.<locals>.fFr    r*   T)r   r   randomrandnrandintr   r&   r'   rK   Zreindex_liker6   assert_frame_equalZexternal_error_raisedAttributeError)r=   r   r:   r;   r   rL   r   &test_rolling_apply_with_pandas_objects6   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 )NZfloat64r2   r,   )stepc                 S   s   |   S N)r   r   r   r   r   <lambda>R       z$test_rolling_apply.<locals>.<lambda>r-   )NNNr*   r   r0   rT   c                 S   s   t | S rU   )r(   r   r   r   r   rV   Y   rW   )      ?       @rZ   )r   r&   r'   r6   assert_series_equalr(   )r8   rT   r.   r!   r;   r:   rE   r   r   r   test_rolling_applyM   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 )NrD   r?   rE   rF   rA   rB   r*   r   )r=   1sc                 S      dS Nr   r   r   r   r   r   rV   n       z test_all_apply.<locals>.<lambda>r-   c                 S   r^   r_   r   r   r   r   r   rV   o   r`   )r   r   r%   Z	set_indexr&   r'   r6   rQ   )r8   r.   r!   rM   Zerrr:   r;   r   r   r   test_all_applyb   s   rb   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 )NrC   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   r=   r0   r-   rY   r>   Z5s)	r   r%   r   rH   r&   r'   copyr6   rQ   )r8   r.   r!   rM   r   r:   r;   r   r   r   test_ragged_applys   s*   re   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 rU   r   r   r   r   r   rV      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   ""rh   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   rf   rU   r   r   r   r   r   rV      r`   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonZnopythonF)r.   Zengine_kwargsrg   r   r   r   r   !test_invalid_engine_kwargs_cython   s
   "rj   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   rf   rU   r   r   r   r   r   rV      r`   z(test_invalid_raw_numba.<locals>.<lambda>FZnumba)r!   r.   rg   r   r   r   r   test_invalid_raw_numba   s
   $"rk   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 rU   )r   r3   )r   rm   r   r   r   numpysum   s   z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r*   )graro   rp   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rH   name)r   r   r&   r'   r6   rQ   r   from_tuplesr   groupbyr[   )rl   rn   rM   idxr;   r:   ZmidxZ
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s   ry   c                 C   sP  t tj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
 sGJ t|j
d rPJ t|j
d rYJ t|j
d sbJ t tjd}|jdddjt| d}t|j
d sJ t|j
d sJ |jdddjt| d}|jdddjt| d}t	|| d S )N2   r,      r/   r    rI               ir?   r   r+   r   r   )r   r   rN   rO   NaNr&   r'   r   r6   r7   rK   r   r	   r
   )r!   objr:   obj2Zresult0Zresult1r   r   r   	test_nans   s"    r   c                 C   s   t tj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 )Nrz   r,   r{   r}   r~   T)r0   centerr    	   r/   )Zdrop)r   r   rN   rO   r   r&   r'   r   r   rK   Zreset_indexr6   r[   )r!   r   r:   r;   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 )Nrz   r    rI   )
r&   r'   r   
isinstancer   r6   r7   rK   r   r   )r!   seriesr:   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 )	Nrz   r    rI   r   r   )axisr!   FZcheck_names)
r&   r'   r   r   r   r6   r[   rK   r   r   )r!   framer:   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	
|d t| d S )	N   r,   r*   rC   rc   r    rI   r   )resampler   r&   r'   r   rH   r   BDaytruncater6   r7   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*   rC   rc   r    rI   r   Fr   )r   r   r&   r'   r   rH   r   r   r   r6   r[   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   rX   r    )r&   r(   r'   r   r	   r6   r[   r7   )r!   r   r   rT   r:   r;   Znan_maskr   r   r   test_min_periods  s   r   c                 C   v   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   rc   r    Tr=   r0   r   )
r%   reindexlistrH   r&   r'   r   shiftr6   r[   )r!   r   rE   r   Z	series_xpZ	series_rsr   r   r   test_center_reindex_series  s   r   c                 C   r   )Nc                 S   r   r   r   r   r   r   r   r   3  r   z-test_center_reindex_frame.<locals>.<listcomp>r   r,   r   rc   r    r   Tr   )
r%   r   r   rH   r&   r'   r   r   r6   rQ   )r!   r   rE   r   Zframe_xpZframe_rsr   r   r   test_center_reindex_frame1  s   r   c                 C   sB   t ddg}|jdddjtj| d}t ddg}t|| d S )Nr   r*   )r=   r   r    rY   rZ   )r   r&   r'   r   r3   r6   rQ   )r!   rM   r:   r;   r   r   r   
test_axis1A  s   r   )*r   numpyr   r"   Zpandasr   r   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr6   Zpandas.tseriesr   r   markZparametrizer)   r<   rS   r\   rb   re   rh   rj   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s>    ,




