o
    iE                     @   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  mZ ejdejdi gejdi gejdd d	i ejd
d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ejdd d	i ejd
d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d0d ddd igd1d di gd2d ddd igg	d3d4 Z"d5d6 Z#ejd7d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d8g d9d:d; 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@dA Z&ejdBd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
dCdD Z'ejdBd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
dEdF Z(ejdGdHd dId dJd dKd dLd dMd dNd dOd dPd dQd dRd dSd dTd dUd ejdVd ej)dgdWdX Z*dYdZ Z+d[d\ Z,d]d^ Z-d_d` Z.dadb Z/ejdcddde dfD dgde dhD  didj Z0ejdGdkd dld dmd dnd dod dpd dqd drd dsd dtd dud dvd dwd dxd dyd ejdzd ej)dgd{d| Z1dS )}    datetimeN)	DataFrameDatetimeIndexSeriesconcatisnanotnazcompare_func, roll_func, kwargsmeansumc                 C      t | t S Nnpisfiniteastypefloatr   x r   e/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/window/test_rolling_functions.py<lambda>       r   countz ignore:min_periods:FutureWarning)marksmedianminmaxc                 C      t j| ddS N   ddofr   stdr   r   r   r   r   #       r$   c                 C   r   Nr   r!   r#   r   r   r   r   r   $   r%   r"   c                 C   r   r   r   varr   r   r   r   r   %   r%   r(   c                 C   r   r&   r'   r   r   r   r   r   &   r%   c                 C   sn   t | jd|d|di |}t|tsJ tdt| |pdd d }t|jd || |d |  d S )N2   stepr   r    r   )	getattrrolling
isinstancer   rangelentmassert_almost_equaliloc)seriescompare_func	roll_funckwargsr+   resultendr   r   r   test_series   s   &r;   c                 C   r   r   r   r   r   r   r   r   6   r   c                 C   r   r   r#   r   r   r   r   r   >   r%   c                 C   r   r&   r#   r   r   r   r   r   ?   r%   c                 C   r   r   r'   r   r   r   r   r   @   r%   c                 C   r   r&   r'   r   r   r   r   r   A   r%   c                 C   s   t |jd|d|d	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,   )axisrawFcheck_namesr   )
r-   r.   r/   r   r0   r1   r2   assert_series_equalr4   apply)r=   framer6   r7   r8   r+   r9   r:   r   r   r   
test_frame0   s   $
rC   z%compare_func, roll_func, kwargs, minp
   c                 C   r   r   r   r   r   r   r   r   T   r   c                 C   r   r   r#   r   r   r   r   r   X   r%   c                 C   r   r&   r#   r   r   r   r   r   Y   r%   c                 C   r   r   r'   r   r   r   r   r   Z   r%   c                 C   r   r&   r'   r   r   r   r   r   [   r%   c                 C   s   d}| d d d  d }t|j||d|di |}|jd }|dt   }	| d d d |	|}
t	|d ||
 d S )N      Bwindowmin_periodsr,      r   )
resampler
   r-   r.   indexoffsetsBDaytruncater2   r3   )r5   r6   r7   r8   minpwinserseries_result	last_date	prev_datetrunc_seriesr   r   r   test_time_rule_seriesO   s   
rX   c                 C   r   r   r   r   r   r   r   r   p   r   c                 C   r   r   r#   r   r   r   r   r   t   r%   c                 C   r   r&   r#   r   r   r   r   r   u   r%   c                 C   r   r   r'   r   r   r   r   r   v   r%   c                 C   r   r&   r'   r   r   r   r   r   w   r%   c                 C   s   d}|d d d  d }t|j||d|d
i |}|jd }	|	dt   }
|d d d |
|	}tj	|
|	|j|| ddd	 d S )NrE   rF   rG   rH   r,   rK   r=   Fr>   r   )rL   r
   r-   r.   rM   rN   rO   rP   r2   r@   xsrA   )r=   rB   r6   r7   r8   rQ   rR   frmframe_resultrU   rV   trunc_framer   r   r   test_time_rule_framek   s   

r^   c                 C   r   r   r#   r   r   r   r   r      r%   c                 C   r   r&   r#   r   r   r   r   r      r%   c                 C   r   r   r'   r   r   r   r   r      r%   c                 C   r   r&   r'   r   r   r   r   r      r%   c                 C   sx  t tjd}tj|d d< tj|dd < t|jddd|di |}t|j	d | |dd  t|jddd|di |}t
|j	d	 sLJ t
|j	d
 rUJ t
|j	d r^J t
|j	d sgJ t tjd}t|jddd|di |}t
|j	d sJ t|j	d sJ |dkrt|jddd|di |}t|jddd|di |}t|| d S d S )Nr)   rD      rJ   r,            rK   i         r   r   r    r   )r   r   randomrandnNaNr-   r.   r2   r3   r4   r   r	   )r6   r7   r8   objr9   obj2result0result1r   r   r   	test_nans   s&   rp   c                  C   sl   t tjd} tj| d d< tj| dd < | jddd }t|j	d t
| dd t  d S )Nr)   rD   r_   r`   ra   r,   )r   r   ri   rj   rk   r.   r   r2   r3   r4   r   r   r   r   )rl   r9   r   r   r   test_nans_count   s   "rq   zroll_func, kwargsrQ   )r   c   d   c                 C   s   t | jt| d ||d|di |}t | jt| ||d|di |}t|}t|t| | }t|| ||  d S )Nr    rJ   r+   r   )r-   r.   r1   r   r2   r@   r3   )r5   rQ   r7   r8   r+   r9   expectednan_maskr   r   r   test_min_periods   s   rw   c                 C   sj   | j t| d d|d }| j t| d|d }t|}t|t| | }t|| ||  d S )Nr    r   rt   )r.   r1   r   r   r2   r@   r3   )r5   r+   r9   ru   rv   r   r   r   test_min_periods_count   s   rx   zroll_func, kwargs, minprc   c                 C   s   t tjd}tj|d d< tj|dd < t|jd|dd| d
i |}tt|t tjgd gjd|d| d
i |jdd  j	dd	}t
|| d S )Nr)   rD   r_   rb   T)rJ   center	   ra   )dropr   )r   r   ri   rj   rk   r-   r.   r   r4   reset_indexr2   r@   )r7   r8   rQ   rl   r9   ru   r   r   r   test_center   s"   "r}   z#roll_func, kwargs, minp, fill_valuec                 C      dd t dD }t| t| j| jd|d|d	i |d| j}t| jd|dd|d	i |}|d ur@||}t	|| d S )
Nc                 S      g | ]}d |dqS r   dr   .0r   r   r   r   
<listcomp>      z.test_center_reindex_series.<locals>.<listcomp>   rE   rH   TrI   rJ   ry   r   )
r0   r-   reindexlistrM   r.   shiftfillnar2   r@   )r5   r7   r8   rQ   
fill_values	series_xp	series_rsr   r   r   test_center_reindex_series  $   
r   c                 C   r~   )
Nc                 S   r   r   r   r   r   r   r   r   :  r   z-test_center_reindex_frame.<locals>.<listcomp>r   rE   rH   r   Tr   r   )
r0   r-   r   r   rM   r.   r   r   r2   assert_frame_equal)rB   r7   r8   rQ   r   r   frame_xpframe_rsr   r   r   test_center_reindex_frame)  r   r   fc                 C      | j dddj| ddS NrD   rf   rH   F)pairwiser.   covr   r   r   r   r   O  r   c                 C   r   r   r.   corrr   r   r   r   r   P  r   c                 C      | j ddd S NrD   rf   rH   r.   r   r   r   r   r   r   Q      c                 C   r   r   r.   r   r   r   r   r   r   R  r   c                 C   r   r   r.   r   r   r   r   r   r   S  r   c                 C   r   r   r.   r
   r   r   r   r   r   T  r   c                 C   r   r   r.   r$   r   r   r   r   r   U  r   c                 C   r   r   r.   r(   r   r   r   r   r   V  r   c                 C   r   r   r.   skewr   r   r   r   r   W  r   c                 C   r   r   r.   kurtr   r   r   r   r   X  r   c                 C   s   | j dddjddS )NrD   rf   rH         ?)quantiler.   r   r   r   r   r   r   Y  s    c                 C   r   r   r.   r   r   r   r   r   r   Z  r   c                 C      | j dddjtddS NrD   rf   rH   FrY   r.   rA   r   r   r   r   r   r   [  r   c                 C   r   NrD   rf   rH   TrY   r   r   r   r   r   r   \  r   c                 C      | j dddd S NboxcarrD   rf   )win_typerI   rJ   r   r   r   r   r   r   ^  r   c                 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 )Nrh   rM   r    rf   rg   rF   rz   r,   r   ArG   columns)rM   r   )
r   r0   r   nanrM   r   r   r2   r@   r   )r   r   
s_expecteddfdf_expecteds_result	df_resultr   r   r   +test_rolling_functions_window_non_shrinkageL  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      g | ]}t d d|qS   r    r   r   ir   r   r   r   s  r   z+test_rolling_max_gh6297.<locals>.<listcomp>r       r   rg   r      r   c                 S      t | S r   r   r   r   r   r   r   x      z)test_rolling_max_gh6297.<locals>.<lambda>)      ?       @g      @      @g      @c                 S      g | ]	}t d d|dqS r   r    r   r   r   r   r   r   r   ~      DfreqNrI   r+   )r0   appendr   r   map
sort_indexr   rL   r   r.   r2   r@   )r+   indicesr5   ru   r   r   r   r   test_rolling_max_gh6297q  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	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   r   r   r   r   r   r   r   r     r   z-test_rolling_max_resample.<locals>.<listcomp>r    r   r   rf   rF   r   rD   rb   r   c                 S   r   r   r   r   r   r   r   r     r   z+test_rolling_max_resample.<locals>.<lambda>)        r   r         @g      4@c                 S   r   r   r   r   r   r   r   r     r   r   r   r   )r   r   r   r   g      $@c                 S   r   r   r   r   r   r   r   r     r   g&@r   r   r   r   c                 S   r   r   r   r   r   r   r   r     r   )r0   r   r   r   r   r   r   r   rL   r   r.   r2   r@   r   r
   )r+   r   r5   ru   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	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   r   r   r   r   r   r   r   r     r   z-test_rolling_min_resample.<locals>.<listcomp>r    r   r   rf   rF   r   rD   rb   r   c                 S   r   r   r   r   r   r   r   r     r   z+test_rolling_min_resample.<locals>.<lambda>)r   r   r   r   r   c                 S   r   r   r   r   r   r   r   r     r   r   r   r   )r0   r   r   r   r   r   r   r   rL   r   r.   r2   r@   )r+   r   r5   ru   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	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   r   r   r   r   r   r   r   r     r   z0test_rolling_median_resample.<locals>.<listcomp>r    r   r   rf   rF   r   rD   rb   r   c                 S   r   r   r   r   r   r   r   r     r   z.test_rolling_median_resample.<locals>.<lambda>)r   r   r   r   rD   c                 S   r   r   r   r   r   r   r   r     r   r   r   rI   )r0   r   r   r   r   r   r   r   rL   r   r.   r2   r@   )r   r5   ru   r   r   r   r   test_rolling_median_resample  s   r   c                  C   sD   d} t tj| jddd  t tj| jddd  d S )Ni N  rF   F)rI   ry   )r   r   ri   rj   r.   r   )nr   r   r    test_rolling_median_memory_error  s   "r   	data_typec                 C   s   g | ]
}t d | qS )r   r   dtype)r   widthr   r   r   r     s    r   )rh      c                 C   s(   g | ]}d D ]}t | | qqS )uir   )r   r   signr   r   r   r     s   ( )r    rF   rh   r   c                 C   sp   t tjd| djdd }|jd tdksJ t tjd| djdd }|jd tdks6J d S )Nrb   r   rf   r   r   f8)r   r   aranger.   r   dtypesr   r   )r   r9   r   r   r   "test_rolling_min_max_numeric_types  s   r   c                 C   r   )NrD   r   rH   )r.   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   s   | j ddddS )NrD   rf   rH   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   r   r   r   r   r   r   r     r   c                 C   r   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   r2   r@   r   )
r   r   r   df1df1_expecteddf2df2_expectedr   
df1_result
df2_resultr   r   r   !test_moment_functions_zero_length  s   r   )2r   numpyr   pytestpandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r	   pandas._testing_testingr2   pandas.tseries.offsetstseriesrN   markparametrizer
   nansumparamfilterwarningsr   r   r   r;   rC   rX   r^   rp   rq   rw   rx   r}   r   r   skip_if_no_scipyr   r   r   r   r   r   r   r   r   r   r   r   <module>   s    













































&
