o
    g*                     @   s   d dl Zd dlZd dlmZ d dlm  mZ d dl	m
Z
mZmZmZ d dlmZ d dlmZ eddejdG dd	 d	ZeddG d
d dZedddd Zedddd ZeddejjejdG dd dZdS )    N)NumbaUtilError)	DataFrameSeriesoption_contextto_datetime)NUMBA_FUNC_CACHEnumbaz0.46.0zignore:\nThe keyword argumentc                   @   sP   e Zd Zejdddgdd Zdd Zdd	 Zejdddgd
d Z	dS )
TestEnginejitTFc                 C   s   dd }|rdd l }||}|||d}d}	ttd}
|
jd|dj||	d	|d
d}|
jd|dj|d|	d
d}t|| d S )Nc                 W   s$   d}|D ]}||7 }qt | | S )Nr   npmean)xargsarg_sumarg r   \/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/window/test_numba.pyf   s   
z0TestEngine.test_numba_vs_cython_apply.<locals>.fr   nogilparallelnopython)   
   r   )centerr   T)r   engineengine_kwargsrawcython)r   r   r   )r   r
   r   rangerollingapplytmassert_series_equal)selfr
   r   r   r   r   r   r   r   r   sresultexpectedr   r   r   test_numba_vs_cython_apply   s   

z%TestEngine.test_numba_vs_cython_applyc                 C   sv   |}|||d}t td}|d}t||d|d}	t||dd}
ttd| d	ftv s3J t|	|
 d S )
Nr      r   r   r   r   r   r   nanRolling_apply_single)r   r   eyer!   getattrr   r#   assert_frame_equal)r%   r   r   r   $arithmetic_numba_supported_operatorsmethodr   dfrollr'   r(   r   r   r   $test_numba_vs_cython_rolling_methods.   s   
z/TestEngine.test_numba_vs_cython_rolling_methodsc                 C   st   |}|||d}t td}| }t||d|d}	t||dd}
ttd| dftv s2J t|	|
 d S )	Nr   r*   r   r+   r   r,   r-   Expanding_apply_single)r   r   r/   	expandingr0   r   r#   r1   )r%   r   r   r   r2   r3   r   r4   expandr'   r(   r   r   r   &test_numba_vs_cython_expanding_methods@   s   z1TestEngine.test_numba_vs_cython_expanding_methodsc                 C   s   dd }dd }|rdd l }||}||}|||d}ttdd}	|	j|d	|d
d}
|	j|dd
d}t|
| |dftv sFJ |	j|d	|d
d}
|	j|dd
d}t|
| |	j|d	|d
d}
|	j|dd
d}t|
| d S )Nc                 S      t | d S )N   r   r   r   r   r   func_1X      z+TestEngine.test_cache_apply.<locals>.func_1c                 S   s   t | d S )Nr*   )r   stdr=   r   r   r   func_2[   r?   z+TestEngine.test_cache_apply.<locals>.func_2r   r   r   r   r   T)r   r   r   r   r   r   r.   )	r   r
   r   r    r!   r"   r#   r$   r   )r%   r
   r   r   r   r>   rA   r   r   r5   r'   r(   r   r   r   test_cache_applyU   s0   

zTestEngine.test_cache_applyN)
__name__
__module____qualname__pytestmarkparametrizer)   r6   r:   rC   r   r   r   r   r	      s    
r	   c                   @   s   e Zd Zejjddd dd gddgddd	 Zejjdd
d dd gddgddd Zejjddd dd gddgddd Zejjddd dd gddgddd Z	dS )TestEWMMeangrouperc                 C      | S Nr   r=   r   r   r   <lambda>       zTestEWMMean.<lambda>c                 C   
   |  dS NAgroupbyr=   r   r   r   rN         
 NonerT   )idsc                 C   sb   t g dtdd}tjtdd ||jddjdd	 W d    d S 1 s*w   Y  d S )
NabrY   rZ   r<   rR   Bzengine must be eithermatch      ?comfoor,   r   r    rG   raises
ValueErrorewmr   r%   rK   r4   r   r   r   test_invalid_engine   s   "zTestEWMMean.test_invalid_enginec                 C   rL   rM   r   r=   r   r   r   rN      rO   c                 C   rP   rQ   rS   r=   r   r   r   rN      rU   c                 C   sh   t g dtdd}tjtdd ||jddjdd	d
id W d    d S 1 s-w   Y  d S )NrX   r<   r[   zcython engine does notr]   r_   r`   r   r   Tr+   rc   rg   r   r   r   test_invalid_engine_kwargs   s   "z&TestEWMMean.test_invalid_engine_kwargsc                 C   rL   rM   r   r=   r   r   r   rN      rO   c                 C   rP   rQ   rS   r=   r   r   r   rN      rU   c                 C   s`   t g dtdd}||jd||d}|||d}	|jd|	d}
|jd	d
}t|
| d S )NrX   r<   r[   r_   )ra   adjust	ignore_nar   r   r+   r   r,   )r   r    rf   r   r#   r1   )r%   rK   r   r   r   rk   rj   r4   rf   r   r'   r(   r   r   r   test_cython_vs_numba   s   z TestEWMMean.test_cython_vs_numbac                 C   rL   rM   r   r=   r   r   r   rN      rO   c                 C   rP   rQ   rS   r=   r   r   r   rN      rU   c                 C   sr   d}t g d}tg dg dd}||j|d||d}	|||d}
|	jd	|
d
}|	jdd}t|| d S )Nz23 days)
2020-01-01rm   z
2020-01-02z
2020-01-10z
2020-02-23z
2020-01-03)rY   rZ   rY   rZ   rZ   rY   )r   r      rn   r   r   r[   T)halfliferj   rk   timesr   r   r+   r   r,   )r   r   rf   r   r#   r1   )r%   rK   r   r   r   rk   ro   rp   r4   rf   r   r'   r(   r   r   r   test_cython_vs_numba_times   s   
z&TestEWMMean.test_cython_vs_numba_timesN)
rD   rE   rF   rG   rH   rI   rh   ri   rl   rq   r   r   r   r   rJ   }   s"    


rJ   c                  C   sz   dd } t td}tdd |dj| d dd}W d    n1 s%w   Y  |dj| ddd}t|| d S )	Nc                 S   r;   )Nr   r   r=   r   r   r   r      r?   z!test_use_global_config.<locals>.fr   zcompute.use_numbaTr   rB   r   )r   r    r   r!   r"   r#   r$   )r   r&   r'   r(   r   r   r   test_use_global_config   s   rr   c                   C   s\   t jtdd ttddjdd ddiddd	 W d    d S 1 s'w   Y  d S )
Nz"numba does not support kwargs withr]   rn   c                 S   rL   rM   r   r=   r   r   r   rN      rO   z.test_invalid_kwargs_nopython.<locals>.<lambda>rY   r   T)kwargsr   r   )rG   rd   r   r   r    r!   r"   r   r   r   r   test_invalid_kwargs_nopython   s
   "rt   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestTableMethodc                 C   s^   dd }t jtdd ttdjdddj|dd	d
 W d    d S 1 s(w   Y  d S )Nc                 S      t j| ddd S Nr   axisrn   r   sumr=   r   r   r   r         z7TestTableMethod.test_table_series_valueerror.<locals>.fz1method='table' not applicable for Series objects.r]   rn   table)r3   r   TrB   )rG   rd   re   r   r    r!   r"   )r%   r   r   r   r   test_table_series_valueerror   s   "z,TestTableMethod.test_table_series_valueerrorc                 C   sn   |}|||d}t td}t|jdd|dd||dd}	t|jdd	|dd||dd}
t|	|
 d S )
Nr      r   r}   r   r3   ry   min_periodsr   r   r   single)r   r   r/   r0   r!   r#   r1   r%   ry   r   r   r   r2   r3   r   r4   r'   r(   r   r   r   !test_table_method_rolling_methods   s   z1TestTableMethod.test_table_method_rolling_methodsc           
      C   sr   |||d}dd }t td}|jdd|ddj|d	|d
d}|jdd|ddj|d	|d
d}	t||	 d S )Nr   c                 S   rv   rw   rz   r=   r   r   r   r      r|   z:TestTableMethod.test_table_method_rolling_apply.<locals>.fr   r   r}   r   r   Tr   r   r   r   r   )r   r   r/   r!   r"   r#   r1   
r%   ry   r   r   r   r   r   r4   r'   r(   r   r   r   test_table_method_rolling_apply   s   z/TestTableMethod.test_table_method_rolling_applyc                 C   st   dd }t g dg dg dg dg}|jddd	d
j|ddd}t g dg dg dg dg}t|| d S )Nc                 S   sh   t d| jd f}| d d d df | d d df  jdd| d d df   |d d d df< |S )Nrn   r   r   rx   )r   onesshaper{   )r   arrr   r   r   weighted_mean  s   PzNTestTableMethod.test_table_method_rolling_weighted_mean.<locals>.weighted_mean)rn   r   g333333?)r   r   g?)r   r<   g?)r<   r*   gffffff?r   r}   r   )r3   r   Tr   )r   r   )r_          @r_   )g?r   r_   )gk}
@gk}@r_   )g1?   r_   )r   r!   r"   r#   r1   )r%   r   r4   r'   r(   r   r   r   'test_table_method_rolling_weighted_mean   s    z7TestTableMethod.test_table_method_rolling_weighted_meanc           
      C   sj   |||d}dd }t td}|jd|dj|d|dd	}|jd
|dj|d|dd	}	t||	 d S )Nr   c                 S   rv   rw   rz   r=   r   r   r   r     r|   z<TestTableMethod.test_table_method_expanding_apply.<locals>.fr   r}   r3   ry   Tr   r   r   )r   r   r/   r8   r"   r#   r1   r   r   r   r   !test_table_method_expanding_apply  s   z1TestTableMethod.test_table_method_expanding_applyc                 C   sf   |}|||d}t td}t|jd|d||dd}	t|jd|d||dd}
t|	|
 d S )Nr   r   r}   r   r   r   r   )r   r   r/   r0   r8   r#   r1   r   r   r   r   #test_table_method_expanding_methods#  s   z3TestTableMethod.test_table_method_expanding_methodsN)	rD   rE   rF   r~   r   r   r   r   r   r   r   r   r   ru      s    ru   )numpyr   rG   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   pandas._testing_testingr#   pandas.core.util.numba_r   
skip_if_norH   filterwarningsr	   rJ   rr   rt   slowru   r   r   r   r   <module>   s(    


i
>




