a
    é´«j‰&  ã                   @   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/laksyashrimp/venv/lib/python3.9/site-packages/pandas/tests/window/test_apply.pyÚf   s    r   Úbad_raw)Né   r   c                 C   sN   t jtdd��, ttdƒƒ d¡jt| d� W d   ƒ n1 s@0    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   ƒ n1 s²0    Y  d S )Nr$   é   r   r&   )Úsize©ÚAÚBÚ20130101Ús©ÚperiodsÚfreq©Úindexc                    s$   | j d ˆ j d krtjS | jd S )Nr   éÿÿÿÿ)rD   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!   rG   Zreindex_liker0   Úassert_frame_equalZexternal_error_raisedÚAttributeError)r7   r   r4   r5   r   rH   r   Ú&test_rolling_apply_with_pandas_objects2   s    þû
rO   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*   rP   c                 S   s   t | ƒS r   )r"   r   r   r   r   rQ   X   rR   )ç      ð?ç       @rU   )r   r    r!   r0   Úassert_series_equalr"   )r2   rP   r(   r   r5   r4   r?   r   r   r   Útest_rolling_applyL   s    
ÿ
ÿrW   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   s   dS ©Nr   r   r   r   r   r   rQ   m   rR   z test_all_apply.<locals>.<lambda>r'   c                 S   s   dS rY   r   r   r   r   r   rQ   n   rR   )r   r   r   Z	set_indexr    r!   r0   rM   )r2   r(   r   rI   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   s   dS rY   r   r   r   r   r   rQ   ~   rR   z#test_ragged_apply.<locals>.<lambda>rX   r   ©r7   r*   r'   rT   r8   Z5s)	r   r   r   rD   r    r!   Úcopyr0   rM   )r2   r(   r   rI   r   r4   r5   r   r   r   Útest_ragged_applyr   s*    ûr^   c                   C   sR   t jtdd��0 ttdƒƒ d¡jdd„ dd� W d   ƒ n1 sD0    Y  d S )Nz)engine must be either 'numba' or 'cython'r   r   c                 S   s   | S r   r   r   r   r   r   rQ   ‘   rR   z%test_invalid_engine.<locals>.<lambda>Zfoo)r(   ©r   r   r   r   r   r    r!   r   r   r   r   Útest_invalid_engine�   s    r`   c                   C   sX   t jtdd��6 ttdƒƒ d¡jdd„ dddid	� W d   ƒ n1 sJ0    Y  d S )
Nz+cython engine does not accept engine_kwargsr   r   c                 S   s   | S r   r   r   r   r   r   rQ   —   rR   z3test_invalid_engine_kwargs_cython.<locals>.<lambda>ÚcythonZnopythonF)r(   Zengine_kwargsr_   r   r   r   r   Ú!test_invalid_engine_kwargs_cython”   s    ÿrb   c                   C   sT   t jtdd��2 ttdƒƒ d¡jdd„ ddd� W d   ƒ n1 sF0    Y  d S )	Nz.raw must be `True` when using the numba enginer   r   c                 S   s   | S r   r   r   r   r   r   rQ   Ÿ   rR   z(test_invalid_raw_numba.<locals>.<lambda>FZnumba)r   r(   r_   r   r   r   r   Útest_invalid_raw_numba›   s    ÿrc   Ú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   re   r   r   r   Únumpysum¥   s    z0test_rolling_apply_args_kwargs.<locals>.numpysumr   r$   )ÚgrÚarg   rh   g      &@g      (@)Úcolumnsr   )ÚargsÚkwargs)r   r   )r   r   )Únames)rD   Úname)r   r   r    r!   r0   rM   r   Úfrom_tuplesr   ÚgroupbyrV   )rd   rf   rI   Úidxr5   r4   ZmidxZ
gb_rollingr   r   r   Útest_rolling_apply_args_kwargs¢   s    rq   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 ƒs”J ‚t|jd ƒr¦J ‚t|jd ƒr¸J ‚t|jd ƒsÊJ ‚t tj d¡ d	¡ƒ}|jddd�jt| d�}t|jd ƒ�sJ ‚t|jd ƒ�s J ‚|jd	dd�jt| d�}|jd	dd�jt| d�}t	 
||¡ d S )Nr$   é2   r&   éöÿÿÿé   r)   r   rE   é   é   é   é   iúÿÿÿéûÿÿÿr9   r   r%   r   r   )r   r   rJ   rK   rL   rF   r    r!   r   r0   r1   rG   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$   rr   r&   rs   ru   rv   T)r*   Úcenterr   é	   r)   )Zdrop)r   r   rJ   rK   rL   rF   r    r!   r   r   rG   Zreset_indexr0   rV   )r   rz   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 )Nrr   r   rE   éÎÿÿÿ)
r    r!   r   Ú
isinstancer   r0   r1   rG   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 )	Nrr   r   rE   r€   r   )Úaxisr   F©Zcheck_names)
r    r!   r   r�   r   r0   rV   rG   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   rE   rx   )Úresampler   r    r!   r   rD   r   ÚBDayÚtruncater0   r1   rG   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   rE   rx   Fr…   )r‰   r   r    r!   r   rD   r   rŠ   r‹   r0   rV   Úxsr   )	r   r†   rŒ   r�   Ú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   rS   r   )r    r"   r!   r   r	   r0   rV   r1   )r   r‚   r�   rP   r4   r5   Znan_maskr   r   r   Útest_min_periods  s    ÿÿr–   c                 C   sv   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   s   g | ]}d |d›�‘qS ©r   Údr   ©Ú.0r   r   r   r   Ú
<listcomp>   rR   z.test_center_reindex_series.<locals>.<listcomp>é   r&   rˆ   r\   r   éôÿÿÿT©r7   r*   r}   )
r   ÚreindexÚlistrD   r    r!   r   Úshiftr0   rV   )r   r‚   r?   r�   Z	series_xpZ	series_rsr   r   r   Útest_center_reindex_series  s     ÿþýüÿÿr¢   c                 C   s�   t tdƒtdddd�d�}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 )Nr•   z
2020-01-01ÚD)rB   rA   rC   c                 S   s   g | ]}d |d›�‘qS r—   r   r™   r   r   r   r›   3  rR   z-test_center_reindex_frame.<locals>.<listcomp>rœ   r&   rˆ   r\   r   r�   Trž   )r   r   r   rŸ   r    rD   r    r!   r   r¡   r0   rM   )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 sN0    Y  t ddgƒ}t ||¡ d S )	Nr   r$   z5Support for axis=1 in DataFrame.rolling is deprecatedr   )r7   r„   r   rT   rU   )	r   r0   Zassert_produces_warningÚFutureWarningr    r!   r   r-   rM   )r   rI   Úmsgr4   r5   r   r   r   Ú
test_axis1A  s    8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   rO   rW   r[   r^   r`   rb   rc   rq   r|   r   rƒ   r‡   r�   r“   r–   r¢   r¤   r§   r   r   r   r   Ú<module>   s@   ,ÿ




