a
    PfE                     @   s  d dl m Z  d dlZd dlZd dlm  mZ d dl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ejdi gejdi gdd	 d
i gejdi gejdi gejdi gdd	 di gdd	 ddd igdd	 di gdd	 ddd igg
dd Zejdejdi gejdi gdd	 d
i gejdi gejdi gejdi gdd	 di gdd	 ddd igdd	 di gdd	 ddd igg
dd Zejdejdi dgejdi dgd d	 d
i d gejdi dgejdi dgejdi dgd!d	 di dgd"d	 ddd idgd#d	 di dgd$d	 ddd idgg
d%d& Zejdejdi dgejdi dgd'd	 d
i d gejdi dgejdi dgejdi dgd(d	 di dgd)d	 ddd idgd*d	 di dgd+d	 ddd idgg
d,d- Zejdejdi gejdi gejdi gejdi gejdi gd.d	 di gd/d	 ddd igd0d	 di gd1d	 ddd igg	d2d3 Zd4d5 Z ejd6di gdi gdi gdi gdi gdi gddd igdi gddd igg	ejd7g d8d9d: Z!d;d< Z"ejd=di d>gdi d>gd
i d gdi d>gdi d>gdi d>gdi d>gddd id>gdi d>gddd id>gg
d?d@ Z#ejdAdi ddgdi ddgd
i d d gdi ddgdi ddgdi ddgdi ddgddd iddgdi ddgddd iddgg
dBdC Z$ejdAdi ddgdi ddgd
i d d gdi ddgdi ddgdi ddgdi ddgddd iddgdi ddgddd iddgg
dDdE Z%ejdFdGd	 dHd	 dId	 dJd	 dKd	 dLd	 dMd	 dNd	 dOd	 dPd	 dQd	 dRd	 dSd	 dTd	 ej&dUd	 e'dVdWgdXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ejdddedf dgD dhdf diD  djdk Z.ejdFdld	 dmd	 dnd	 dod	 dpd	 dqd	 drd	 dsd	 dtd	 dud	 dvd	 dwd	 dxd	 dyd	 dzd	 ej&d{d	 e'dVdWgd|d} Z/dS )~    datetimeN)	DataFrameDatetimeIndexSeriesconcatisnanotna)offsetszcompare_func, roll_func, kwargsmeansumc                 C   s   t | t S Nnpisfiniteastypefloatr   x r   c/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/window/test_rolling_functions.py<lambda>       r   countmedianminmaxc                 C   s   t j| ddS N   ddofr   stdr   r   r   r   r   "   r   r"   c                 C   s   t j| ddS Nr   r   r!   r   r   r   r   r   #   r   r    c                 C   s   t j| ddS r   r   varr   r   r   r   r   $   r   r%   c                 C   s   t j| ddS r#   r$   r   r   r   r   r   %   r   c                 C   sn   t | jd|d|f i |}t|ts,J tdt| |p<dd d }t|jd || |d |  d S )N2   stepr   r   )	getattrrolling
isinstancer   rangelentmassert_almost_equaliloc)seriescompare_func	roll_funckwargsr(   resultendr   r   r   test_series   s    r8   c                 C   s   t | t S r   r   r   r   r   r   r   5   r   c                 C   s   t j| ddS r   r!   r   r   r   r   r   <   r   c                 C   s   t j| ddS r#   r!   r   r   r   r   r   =   r   c                 C   s   t j| ddS r   r$   r   r   r   r   r   >   r   c                 C   s   t j| ddS r#   r$   r   r   r   r   r   ?   r   c                 C   s   t |jd|d|f i |}t|ts,J tdt||p<dd d }tj|jdd d f |j|d |d d f j	|d| ddd d S )	Nr&   r'   r   r   r)   )ZaxisrawFZcheck_names)
r*   r+   r,   r   r-   r.   r/   assert_series_equalr1   apply)r9   framer3   r4   r5   r(   r6   r7   r   r   r   
test_frame/   s    $r>   z%compare_func, roll_func, kwargs, minp
   c                 C   s   t | t S r   r   r   r   r   r   r   R   r   c                 C   s   t j| ddS r   r!   r   r   r   r   r   V   r   c                 C   s   t j| ddS r#   r!   r   r   r   r   r   W   r   c                 C   s   t j| ddS r   r$   r   r   r   r   r   X   r   c                 C   s   t j| ddS r#   r$   r   r   r   r   r   Y   r   c                 C   s   d}| d d d  d }t|j||d|f i |}|jd }|dt   }	| d d d |	|}
t	|j
d ||
 d S )N      Bwindowmin_periodsr)      )resampler   r*   r+   indexr
   BDaytruncater/   r0   r1   )r2   r3   r4   r5   minpwinZserZseries_result	last_date	prev_dateZtrunc_seriesr   r   r   test_time_rule_seriesM   s    
rO   c                 C   s   t | t S r   r   r   r   r   r   r   n   r   c                 C   s   t j| ddS r   r!   r   r   r   r   r   r   r   c                 C   s   t j| ddS r#   r!   r   r   r   r   r   s   r   c                 C   s   t j| ddS r   r$   r   r   r   r   r   t   r   c                 C   s   t j| ddS r#   r$   r   r   r   r   r   u   r   c                 C   s   d}|d d d  d }t|j||d|f i |}|jd }	|	dt   }
|d d d |
|	}tj	|
|	|j|| ddd	 d S )
Nr@   rA   rB   rC   r)   rF   r9   Fr:   )rG   r   r*   r+   rH   r
   rI   rJ   r/   r;   Zxsr<   )r9   r=   r3   r4   r5   rK   rL   ZfrmZframe_resultrM   rN   Ztrunc_framer   r   r   test_time_rule_framei   s    
rQ   c                 C   s   t j| ddS r   r!   r   r   r   r   r      r   c                 C   s   t j| ddS r#   r!   r   r   r   r   r      r   c                 C   s   t j| ddS r   r$   r   r   r   r   r      r   c                 C   s   t j| ddS r#   r$   r   r   r   r   r      r   c                 C   s  t tjdd}tj|d d< tj|dd < t|jddd|f i |}t	|j
d | |dd  t|jdd	d|f i |}t|j
d
 sJ t|j
d rJ t|j
d rJ t|j
d sJ t tjdd}t|jddd|f i |}t|j
d sJ t|j
d s0J |dkrt|jddd|f i |}t|jddd|f i |}t	|| d S )NrA   r&   r?      rE   r)            rF   i         r   r   r   )r   r   randomdefault_rngstandard_normalnanr*   r+   r/   r0   r1   r   r	   )r3   r4   r5   objr6   obj2Zresult0Zresult1r   r   r   	test_nans   s$    
rb   c                  C   sr   t tjdd} tj| d d< tj| dd < | jddd }t	|j
d t| dd t  d S )NrA   r&   r?   rR   rS   rT   r)   )r   r   r\   r]   r^   r_   r+   r   r/   r0   r1   r   r   r   r   )r`   r6   r   r   r   test_nans_count   s    "rc   zroll_func, kwargsrK   )r   c   d   c                 C   s   t | jt| d ||d|f i |}t | jt| ||d|f i |}t|}t|t| | }t|| ||  d S )Nr   rE   r(   )r*   r+   r.   r   r/   r;   r0   )r2   rK   r4   r5   r(   r6   expectednan_maskr   r   r   test_min_periods   s    ri   c                 C   sj   | j t| d d|d }| j t| d|d }t|}t|t| | }t|| ||  d S )Nr   r   rf   )r+   r.   r   r   r/   r;   r0   )r2   r(   r6   rg   rh   r   r   r   test_min_periods_count   s    rj   zroll_func, kwargs, minprV   c                 C   s   t tjdd}tj|d d< tj|dd < t|jd|dd| f i |}tt|t tjgd gjd|d	| f i |j	dd  j
dd
}t|| d S )NrA   r&   r?   rR   rU   T)rE   center	   rT   )Zdrop)r   r   r\   r]   r^   r_   r*   r+   r   r1   Zreset_indexr/   r;   )r4   r5   rK   r`   r6   rg   r   r   r   test_center   s"    "rm   z#roll_func, kwargs, minp, fill_valuec                 C   s   dd t dD }t| t| j| jd|d|f i |d| j}t| jd|dd|f i |}|d ur||}t	|| d S )	Nc                 S   s   g | ]}d |dqS r   dr   .0r   r   r   r   
<listcomp>  r   z.test_center_reindex_series.<locals>.<listcomp>   r@   rC   TrD   rE   rk   )
r-   r*   reindexlistrH   r+   shiftfillnar/   r;   )r2   r4   r5   rK   
fill_valuesZ	series_xpZ	series_rsr   r   r   test_center_reindex_series  s(    
r|   c                 C   s   dd t dD }t| t| j| jd|d|f i |d| j}t| jd|dd|f i |}|d ur||}t	|| d S )	Nc                 S   s   g | ]}d |dqS rn   r   rp   r   r   r   rr   8  r   z-test_center_reindex_frame.<locals>.<listcomp>rs   r@   rC   rt   Tru   )
r-   r*   rv   rw   rH   r+   rx   ry   r/   assert_frame_equal)r=   r4   r5   rK   rz   r{   Zframe_xpZframe_rsr   r   r   test_center_reindex_frame'  s(    
r~   fc                 C   s   | j dddj| ddS Nr?   rY   rC   F)pairwiser+   Zcovr   r   r   r   r   M  r   c                 C   s   | j dddj| ddS r   r+   Zcorrr   r   r   r   r   N  r   c                 C   s   | j ddd S Nr?   rY   rC   r+   r   r   r   r   r   r   O  r   c                 C   s   | j ddd S r   r+   r   r   r   r   r   r   P  r   c                 C   s   | j ddd S r   r+   r   r   r   r   r   r   Q  r   c                 C   s   | j ddd S r   r+   r   r   r   r   r   r   R  r   c                 C   s   | j ddd S r   r+   r"   r   r   r   r   r   S  r   c                 C   s   | j ddd S r   r+   r%   r   r   r   r   r   T  r   c                 C   s   | j ddd S r   r+   Zskewr   r   r   r   r   U  r   c                 C   s   | j ddd S r   r+   Zkurtr   r   r   r   r   V  r   c                 C   s   | j dddjddS )Nr?   rY   rC         ?)qr+   Zquantiler   r   r   r   r   W  r   c                 C   s   | j ddd S r   r+   r   r   r   r   r   r   X  r   c                 C   s   | j dddjtddS Nr?   rY   rC   FrP   r+   r<   r   r   r   r   r   r   Y  r   c                 C   s   | j dddjtddS Nr?   rY   rC   TrP   r   r   r   r   r   r   Z  r   c                 C   s   | j dddd S NZboxcarr?   rY   )Zwin_typerD   rE   r   r   r   r   r   r   \  r   Zscipy)Zmarksc                 C   s   t td}t tj|jd}tddgddgddgdd	ggd
dgd}ttj|j|jd}| |}t|| | |}t	|| d S )Nr[   rH   r   rY   rZ   rA   rl   r)   r   ArB   columns)rH   r   )
r   r-   r   r_   rH   r   r   r/   r;   r}   )r   r{   
s_expectedZdfZdf_expecteds_resultZ	df_resultr   r   r   +test_rolling_functions_window_non_shrinkageJ  s    (r   c                 C   s   dd t ddD }|tddddd tt dd|d	}|d
d }| }tg dtdd t ddD ddd	dd|  }|d j	d| d }t
|| dS )z%Replicate result expected in GH #6297c                 S   s   g | ]}t d d|qS   r   r   rq   ir   r   r   rr   q  r   z+test_rolling_max_gh6297.<locals>.<listcomp>r      r   rZ   r      r   c                 S   s   t | S r   r   r   r   r   r   r   v  r   z)test_rolling_max_gh6297.<locals>.<lambda>)      ?       @g      @      @g      @c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   r   r   rr   |  r   DfreqNrD   r(   )r-   appendr   r   map
sort_indexr   rG   r   r+   r/   r;   )r(   indicesr2   rg   r   r   r   r   test_rolling_max_gh6297o  s    r   c                 C   s  dd t ddD }|tdddd |tdddd ttt ddd	g |d
}|dd }| }tg dtdd t ddD ddd
d d |  }|d	 j
d| d	 }t|| tg dtdd t ddD ddd
d d |  }|d j
d| d	 }t|| d}tdddd|gtdd t ddD ddd
d d |  }|d j
d| d	 }t|| d S )Nc                 S   s   g | ]}t d d|qS r   r   r   r   r   r   rr     r   z-test_rolling_max_resample.<locals>.<listcomp>r   r   r   rY   rA   r?   rU   r   c                 S   s   t | S r   r   r   r   r   r   r     r   z+test_rolling_max_resample.<locals>.<lambda>)        r   r         @g      4@c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   rr     r   r   r   r   )r   r   r   r   g      $@c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   rr     r   g&@r   r   r   r   c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   rr     r   )r-   r   r   r   rw   r   r   r   rG   r   r+   r/   r;   r   r   )r(   r   r2   rg   r   vr   r   r   test_rolling_max_resample  s>    r   c                 C   s   dd t ddD }|tdddd |tdddd ttt ddd	g |d
}|dd }| }tg dtdd t ddD ddd
d d |  }|d	 j
d| d}t||	  d S )Nc                 S   s   g | ]}t d d|qS r   r   r   r   r   r   rr     r   z-test_rolling_min_resample.<locals>.<listcomp>r   r   r   rY   rA   r?   rU   r   c                 S   s   t | S r   r   r   r   r   r   r     r   z+test_rolling_min_resample.<locals>.<lambda>)r   r   r   r   r   c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   rr     r   r   r   r   )r-   r   r   r   rw   r   r   r   rG   r   r+   r/   r;   )r(   r   r2   rg   rr   r   r   test_rolling_min_resample  s    r   c                  C   s   dd t ddD } | tdddd | tdddd ttt ddd	g | d
}|dd }| }tg dtdd t ddD ddd
}|d	 j
dd	 }t|| d S )Nc                 S   s   g | ]}t d d|qS r   r   r   r   r   r   rr     r   z0test_rolling_median_resample.<locals>.<listcomp>r   r   r   rY   rA   r?   rU   r   c                 S   s   t | S r   r   r   r   r   r   r     r   z.test_rolling_median_resample.<locals>.<lambda>)r   r   r   r   r?   c                 S   s   g | ]}t d d|dqS r   r   r   r   r   r   rr     r   r   r   rD   )r-   r   r   r   rw   r   r   r   rG   r   r+   r/   r;   )r   r2   rg   r   r   r   r   test_rolling_median_resample  s    r   c                  C   sP   d} t tjd| jddd  t tjd| jddd  d S )Ni N  rA   F)rD   rk   )r   r   r\   r]   r^   r+   r   )nr   r   r    test_rolling_median_memory_error  s    
r   	data_typec                 C   s   g | ]}t d | qS )r   r   dtype)rq   widthr   r   r   rr     r   rr   )r[      c                 C   s(   g | ] }d D ]}t | | qqS )Zuir   )rq   r   signr   r   r   rr     r   )r   rA   r[   r   c                 C   sp   t tjd| djdd }|jd tdks6J t tjd| djdd }|jd tdkslJ d S )NrU   r   rY   r   r   Zf8)r   r   Zaranger+   r   Zdtypesr   r   )r   r6   r   r   r   "test_rolling_min_max_numeric_types  s    r   c                 C   s   | j ddd S )Nr?   r   rC   )r+   r   r   r   r   r   r     r   c                 C   s   | j dddj| ddS r   r   r   r   r   r   r     r   c                 C   s   | j dddj| ddS r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j ddddS )Nr?   rY   rC   r   r   r   r   r   r   r     r   c                 C   s   | j ddd S r   r   r   r   r   r   r     r   c                 C   s   | j dddjtddS r   r   r   r   r   r   r     r   c                 C   s   | j dddjtddS r   r   r   r   r   r   r     r   c                 C   s   | j dddd S r   r   r   r   r   r   r     r   c           
      C   s|   t tjd}|}t }|}tdgd}|d d|d< |}| |}t|| | |}t|| | |}	t|	| d S )Nr   ar   float64)r   r   r   r   r   r/   r;   r}   )
r   r{   r   Zdf1Zdf1_expectedZdf2Zdf2_expectedr   Z
df1_resultZ
df2_resultr   r   r   !test_moment_functions_zero_length  s    r   )0r   numpyr   ZpytestZpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr/   Zpandas.tseriesr
   markZparametrizer   Znansumr   r   r   r8   r>   rO   rQ   rb   rc   ri   rj   rm   r|   r~   paramZ
skip_if_nor   r   r   r   r   r   r   r   r   r   r   r   <module>   s   











































%
