o
    g-                     @   s   d dl Zd dlZd dlmZmZmZmZmZm	Z	 d dl
m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S )     N)	DataFrameIndex
MultiIndexSeries	Timestamp
date_range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   \/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/window/test_apply.py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   dtype)
r   r   r   npsumisna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periodsfreq)indexc                    s$   | j d  j d krtjS | jd S )Nr   )r;   r#   nanilocxdfr   r   f-   s   
z1test_rolling_apply_with_pandas_objects.<locals>.fFr   r   T)r   r#   randomrandnrandintr   r   r   r>   reindex_liker(   assert_frame_equalexternal_error_raisedAttributeError)r/   rC   r,   r-   r   rA   r   &test_rolling_apply_with_pandas_objects#   s   "rK   c                 C   s   | \}}t g dd}|djdd ||d}t|| t g d}|jdd	d
jdd ||d}t g d}t|| |jdd	d
jt||d}t|| d S )Nfloat64r!   r   c                 S   s   |   S N)meanr?   r   r   r   <lambda>>       z$test_rolling_apply.<locals>.<lambda>r   )NNNr   r   r   c                 S   s   t | S rM   )r   r?   r   r   r   rO   C   rP   )      ?       @rR   )r   r   r   r(   assert_series_equalr   )r*   r   r   r-   r,   r7   r   r   r   test_rolling_apply:   s   rT   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 )Nr6   r1   r7   r8   r3   r4   r   r	   )r/   1sc                 S      dS Nr	   r   r?   r   r   r   rO   W       z test_all_apply.<locals>.<lambda>r   c                 S   rV   rW   r   r?   r   r   r   rO   X   rX   )r   r   r   	set_indexr   r   r(   rH   )r*   r   r   rB   errr,   r-   r   r   r   test_all_applyK   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 )Nr5   r1   z20130101 09:00:00z20130101 09:00:02z20130101 09:00:03z20130101 09:00:05z20130101 09:00:06c                 S   rV   rW   r   r?   r   r   r   rO   h   rX   z#test_ragged_apply.<locals>.<lambda>rU   r	   )r/   r   r   rQ   r0   5s)	r   r   r   r;   r   r   copyr(   rH   )r*   r   r   rB   rC   r,   r-   r   r   r   test_ragged_apply\   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 rM   r   r?   r   r   r   rO   {   rX   z%test_invalid_engine.<locals>.<lambda>foo)r   r   r   r   r   r   r   r   r   r   r   r   test_invalid_enginey   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   r`   rM   r   r?   r   r   r   rO      rX   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>cythonnopythonF)r   engine_kwargsrb   r   r   r   r   !test_invalid_engine_kwargs_cython~   s
   "rg   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`   rM   r   r?   r   r   r   rO      rX   z(test_invalid_raw_numba.<locals>.<lambda>Fnumba)r   r   rb   r   r   r   r   test_invalid_raw_numba   s
   $"ri   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 rM   )r#   r$   )r@   rk   r   r   r   ra      s   z+test_rolling_apply_args_kwargs.<locals>.foor	   r   )grarl   rm   g      &@g      (@)columnsr   )argskwargs)r	   r   )r	   r	   )names)r;   name)r   r   r   r   r(   rH   r   from_tuplesr   groupbyrS   )rj   ra   rB   idxr-   r,   midx
gb_rollingr   r   r   test_rolling_apply_args_kwargs   s   rx   )numpyr#   r   pandasr   r   r   r   r   r   pandas._testing_testingr(   markparametrizer   r.   rK   rT   r\   r_   rc   rg   ri   rx   r   r   r   r   <module>   s"     

