o
    թZh\)                  
   @   s  d dl Zd dlZd dlmZ d dlm  mZ d dl	Z
d dl	mZmZ d dlmZ ejejejejejddgg dddd	 Zd
d Zejjdd Zdd Zdd Zejdddgejdg ddd Zdd Zdd Zejdddgejdg dejdg dg d fg d!g d"fg d#g d fgd$d% Z ejdddgd&d' Z!ejd(d)d*gd+d, Z"ej#ejdddgejd-d.e$d/j%fd0gd1d2 Z&d3d4 Z'dS )5    N)UnsupportedFunctionCall)	DataFrameSeriesInt64Float64)znp.int32znp.int64z
np.float32z
np.float64r   r   )paramsZidsc                 C   s   | j }|}|dkrtj}n|dkrtj}t|jdkr"t|jnt|j}t|jdkr6t|j	nt|j	}|||fS )zZ
    Fixture of dtypes with min and max values used for testing
    cummin and cummax
    r   r   i)
paramnpint64float64dtypekindiinfominZfinfomax)requestr   Znp_typemin_valmax_val r   [/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/groupby/test_cumulative.pydtypes_for_minmax   s   	


r   c                  C   s   t dgd dd} | dd  }| jdddd d	d
 }d|_t|| t dgd dd} | d t| d< | dd  }| jdddd dd
 }d|_t|| d S )Nb
      keyvaluer   r   FZ
group_keysc                 S      |   S Ncumprodxr   r   r   <lambda>3       z&test_groupby_cumprod.<locals>.<lambda>d   c                 S   r   r    r!   r#   r   r   r   r%   :   r&   )	r   groupbyr"   applynametmassert_series_equalastypefloat)dfactualexpectedr   r   r   test_groupby_cumprod.   s   r2   c                  C   st   t dgd dd} | dd  }tg ddd}t|| | jdd	d
d dd }d|_t|| d S )Nr      順 r   r   r   )r4   l    d(	 l     I5 l      Fx:^ r*   Fr   c                 S   r   r    r!   r#   r   r   r   r%   K   r&   z/test_groupby_cumprod_overflow.<locals>.<lambda>)r   r(   r"   r   r+   r,   r)   r*   )r/   r0   r1   Znumpy_resultr   r   r   test_groupby_cumprod_overflow?   s   r6   c                  C   s\   t ddtjdgg dd} | djddd}t dtjtjgg d	d
}t|| d S )N   r   )r7   r   g      @)ar   cr8   TF)Znumeric_onlyskipna)r7   r   g      @)r   r9   )r   r
   nanr(   r"   r+   assert_frame_equal)r/   resultr1   r   r   r   1test_groupby_cumprod_nan_influences_other_columnsQ   s   
r>   c              
   C   sF  | d }| d }t g dg dd}g d}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< |d |j	ddgdf< ||j	g ddf< |d |j	ddgdf< |d }tj||dd |jdd	d
jdd  }tj||dd |ddi}t
j|j	g ddf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t g dg dd}|dj }tg ddd }t|| d S )!Nr   r7   r7   r7   r7   r7   r   r   r   r      r3   rA   r   r   rA   r   r7   AB)rA   rA   rA   r   r   r   r   r7   rD   rC   Fr   c                 S   r   r    cumminr#   r   r   r   r%   l   r&   ztest_cummin.<locals>.<lambda>r         r   rA   rG      T)Zcheck_exactc                 S   r   r    rE   r#   r   r   r   r%   w   r&   r.   r   r   r3   rG   r3   rA   c                 S   r   r    rE   r#   r   r   r   r%      r&   2001r8   r   r   indexr*   r8   r7   r   r7   )r7   r   r   r5   )r   r-   r(   rF   r+   r<   rD   r)   to_framelocr
   r;   pdto_datetimer   r,   r   )r   r   r   base_dfZexpected_minsr/   r1   r=   r   r   r   test_cummin_   sF   
$rV   methodrF   cummaxr   )UInt64r   r   r.   booleanc                 C   s   t g dtjgd d}|d ||d< |d}t dtjgd i|d}t||  }t|| t|d |   }t|| d S )Nr?      rB   rD   rC   r   )	r   r
   r;   r-   r(   getattrr+   r<   rQ   )rW   r   rU   groupedr1   r=   r   r   r   test_cummin_max_all_nan_column   s   
r_   c              
   C   s  | d }| d }t g dg dd}g d}||}t d|i|}|d }t|| |jdd	d
jdd  }t|| ||j	ddgdf< ||j	g ddf< |d }t|| |jdd	d
jdd  }t|| |ddi}t
j|j	g ddf< t dt
jdt
jdt
jdt
jdgi}|d }t|| |jdd	d
jdd  }t|| t dgtdgd}ttddgdd}|dd  }t|| t g dg dd}|dj }tg ddd}t|| d S )Nr   r   r?   r@   rB   )rA   r3   r3   r3   r   rA   rA   rA   rD   rC   Fr   c                 S   r   r    rX   r#   r   r   r   r%      r&   ztest_cummax.<locals>.<lambda>rG   rI   c                 S   r   r    r`   r#   r   r   r   r%      r&   r.   rK   r3   rA   c                 S   r   r    r`   r#   r   r   r   r%      r&   r7   rL   rM   r   rN   r8   rP   )r   r7   r7   )r   r7   r   r5   )r   r-   r(   rX   r+   r<   rD   r)   rQ   rR   r
   r;   rS   rT   r   r,   r   )r   r   r   rU   Zexpected_maxsr/   r1   r=   r   r   r   test_cummax   sB   
$ra   c                  C   s\   t dd tdD } td| | jdd}|d}| }|dd	g }t|| d S )
Nc                 S   s   g | ]}t jj| qS r   )rS   ZNaT_value).0nr   r   r   
<listcomp>   s    z:test_cummax_i8_at_implementation_bound.<locals>.<listcomp>rH   r7   zM8[ns]rC   rD   CrC   rD   rg   )	r   ranger   Z_valuesviewr(   rX   r+   r<   )Zserr/   gbresexpr   r   r   &test_cummax_i8_at_implementation_bound   s   
rm   )r.   r   r   zgroups,expected_datar7   r7   r7   )r7   NNr7   r   rA   r7   Nr   )r7   rA   rA   c           	      C   sh   t dtg d|di}| }||d }t|| dd}t||dd}t|| t|| d S )Nr8   rp   r\   Fr:   )r   r*   )r   r   copyr(   r]   r+   r<   r,   )	rW   r   groupsZexpected_datar/   origrj   r=   r1   r   r   r   test_cummin_max_skipna   s   ru   c                 C   sn   t tjddgg dd}|g dddg }t|| dd}t tjtjtjgg dd}t|| d S )	N       @)rv   rv   rv   rM   rn   r8   r   Frq   )r   r
   r;   r(   r]   r+   r<   )rW   r/   rj   r=   r1   r   r   r   $test_cummin_max_skipna_multiple_cols   s
   rw   funcr"   cumsumc                 C   s   t g dg dd}|d}d}tjt|d t|| ddd	 W d    n1 s-w   Y  tjt|d t|| dd
 W d    d S 1 sMw   Y  d S )NrP   ro   rB   rC   z+numpy operations are not valid with groupbymatchr7   r   rA   )Zfoo)r   r(   pytestZraisesr   r]   )rx   r/   gmsgr   r   r   test_numpy_compat	  s   
"r   z	dtype,valrY   Zuint64)r   l         c                 C   sT   |t jg}tddg|d|d}|d}|| }td|i|d}t|| d S )Nr7   )grpr   r\   r   r   )rS   ZNAr   r(   Z	transformr+   r<   )rW   r   valdatar/   r^   r=   r1   r   r   r   #test_nullable_int_not_cast_as_float  s   


r   c                  C   sD  t ddtjgdtjdgg dgg dd} t dtjgtjdgddggdd	gd}| d
 }t|| | jd
dd }t|| d}tjt|d | d
jdd}W d    n1 saw   Y  | jdd}t|| d}tjt|d | d
j	dd}W d    n1 sw   Y  | j	dd}t|| d S )Nr7   r   	   )rA   r3   r   rf   )columnsr3   rD   rg   rC   F)Zas_indexz1DataFrameGroupBy.cumsum with axis=1 is deprecatedrz   )Zaxisz2DataFrameGroupBy.cumprod with axis=1 is deprecated)
r   r
   r;   r(   ry   r+   r<   Zassert_produces_warningFutureWarningr"   )r/   r1   r=   r~   r   r   r   test_cython_api2'  s$   *&r   )(numpyr
   r|   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasrS   r   r   Zpandas._testingZ_testingr+   ZfixtureZint32r   Zfloat32r   r   r2   markZ
skip_ubsanr6   r>   rV   Zparametrizer_   ra   rm   ru   rw   r   Zskip_if_32bitr   r   r   r   r   r   r   r   <module>   sV    

64

