o
    Ti7&                     @   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   ^/var/www/html/evchargy.com/venv/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Zperiodsfreq)indexc                    s$   | j d  j d krtjS | jd S )Nr   )rB   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!   rE   Zreindex_liker0   assert_frame_equalZexternal_error_raisedAttributeError)r7   r   r4   r5   r   rF   r   &test_rolling_apply_with_pandas_objects2   s   
"rM   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*   rN   c                 S   s   t | S r   )r"   r   r   r   r   rO   X   rP   )      ?       @rS   )r   r    r!   r0   assert_series_equalr"   )r2   rN   r(   r   r5   r4   r?   r   r   r   test_rolling_applyL   s   

rU   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   rO   m       z test_all_apply.<locals>.<lambda>r'   c                 S   rW   rX   r   r   r   r   r   rO   n   rY   )r   r   r   Z	set_indexr    r!   r0   rK   )r2   r(   r   rG   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   rW   rX   r   r   r   r   r   rO   ~   rY   z#test_ragged_apply.<locals>.<lambda>rV   r   r7   r*   r'   rR   r8   Z5s)	r   r   r   rB   r    r!   copyr0   rK   )r2   r(   r   rG   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   rO      rY   z%test_invalid_engine.<locals>.<lambda>Zfoo)r(   r   r   r   r   r   r    r!   r   r   r   r   test_invalid_engine   s   ""ra   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   r_   r   r   r   r   r   r   rO      rY   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonZnopythonF)r(   Zengine_kwargsr`   r   r   r   r   !test_invalid_engine_kwargs_cython   s
   "rc   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   r_   r   r   r   r   r   r   rO      rY   z(test_invalid_raw_numba.<locals>.<lambda>FZnumba)r   r(   r`   r   r   r   r   test_invalid_raw_numba   s
   $"rd   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   rf   r   r   r   numpysum   s   z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r$   )grarh   ri   g      &@g      (@)columnsr   )argskwargs)r   r   )r   r   )names)rB   name)r   r   r    r!   r0   rK   r   from_tuplesr   groupbyrT   )re   rg   rG   idxr5   r4   ZmidxZ
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s   rr   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   rC               ir9   r   r%   r   r   )r   r   rH   rI   rJ   rD   r    r!   r   r0   r1   rE   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$   rs   r&   rt   rv   rw   T)r*   centerr   	   r)   )Zdrop)r   r   rH   rI   rJ   rD   r    r!   r   r   rE   Zreset_indexr0   rT   )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 )Nrs   r   rC   )
r    r!   r   
isinstancer   r0   r1   rE   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 )	Nrs   r   rC   r   r   )axisr   FZcheck_names)
r    r!   r   r   r   r0   rT   rE   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   rC   ry   )resampler   r    r!   r   rB   r   BDaytruncater0   r1   rE   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   rC   ry   Fr   )r   r   r    r!   r   rB   r   r   r   r0   rT   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   rQ   r   )r    r"   r!   r   r	   r0   rT   r1   )r   r   r   rN   r4   r5   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   r\   r   Tr7   r*   r~   )
r   reindexlistrB   r    r!   r   shiftr0   rT   )r   r   r?   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   2  r   z-test_center_reindex_frame.<locals>.<listcomp>r   r&   r   r\   r   r   Tr   )
r   r   r   rB   r    r!   r   r   r0   rK   )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   rR   rS   )	r   r0   Zassert_produces_warningFutureWarningr    r!   r   r-   rK   )r   rG   msgr4   r5   r   r   r   
test_axis1@  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   rM   rU   r[   r^   ra   rc   rd   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sB    ,




