o
    1فi\)                  
   @   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   )params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minfinfomax)requestr   np_typemin_valmax_val r   e/home/test-dt/pcm-url-check/venv/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
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   r6   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    )r8   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/   r0   r-   r.   )r3   r4   r5   numpy_resultr   r   r   test_groupby_cumprod_overflow?   s   r;   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   )r<   r   g      @)ar   cr=   TF)numeric_onlyskipna)r<   r   g      @)r   r>   )r   r   nanr,   r&   r/   assert_frame_equal)r3   resultr5   r   r   r   1test_groupby_cumprod_nan_influences_other_columnsQ   s   
rD   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   r<   r<   r<   r<   r<   r   r   r   r      r7   rG   r   r   rG   r   r<   AB)rG   rG   rG   r   r   r   r   r<   rJ   rI   Fr!   c                 S   r#   r$   cumminr'   r   r   r   r)   l   r*   ztest_cummin.<locals>.<lambda>r         r   rG   rM      T)check_exactc                 S   r#   r$   rK   r'   r   r   r   r)   w   r*   r2   r   r   r7   rM   r7   rG   c                 S   r#   r$   rK   r'   r   r   r   r)      r*   2001r=   r   r   indexr.   r=   r<   r   r<   )r<   r   r   r9   )r   r1   r,   rL   r/   rB   rJ   r-   to_framelocr   rA   pdto_datetimer   r0   r   )r   r   r   base_dfexpected_minsr3   r5   rC   r   r   r   test_cummin_   sF   
$r^   methodrL   cummaxr   )UInt64r   r   r2   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 )NrE      rH   rJ   rI   r   )	r   r   rA   r1   r,   getattrr/   rB   rX   )r_   r   r\   groupedr5   rC   r   r   r   test_cummin_max_all_nan_column   s   
rg   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   rE   rF   rH   )rG   r7   r7   r7   r   rG   rG   rG   rJ   rI   Fr!   c                 S   r#   r$   r`   r'   r   r   r   r)      r*   ztest_cummax.<locals>.<lambda>rM   rO   c                 S   r#   r$   rh   r'   r   r   r   r)      r*   r2   rR   r7   rG   c                 S   r#   r$   rh   r'   r   r   r   r)      r*   r<   rS   rT   r   rU   r=   rW   )r   r<   r<   )r   r<   r   r9   )r   r1   r,   r`   r/   rB   rJ   r-   rX   rY   r   rA   rZ   r[   r   r0   r   )r   r   r   r\   expected_maxsr3   r5   rC   r   r   r   test_cummax   sB   
$rj   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   )rZ   NaT_value).0nr   r   r   
<listcomp>   s    z:test_cummax_i8_at_implementation_bound.<locals>.<listcomp>rN   r<   zM8[ns]rI   rJ   CrI   rJ   rq   )	r   ranger   _valuesviewr,   r`   r/   rB   )serr3   gbresexpr   r   r   &test_cummax_i8_at_implementation_bound   s   
ry   )r2   r   r   zgroups,expected_datar<   r<   r<   )r<   NNr<   r   rG   r<   Nr   )r<   rG   rG   c           	      C   sh   t dtg d|di}| }||d }t|| dd}t||dd}t|| t|| d S )Nr=   r|   rd   Fr@   )r   r.   )r   r   copyr,   re   r/   rB   r0   )	r_   r   groupsexpected_datar3   origrv   rC   r5   r   r   r   test_cummin_max_skipna   s   r   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       @)r   r   r   rT   rz   r=   r   Fr}   )r   r   rA   r,   re   r/   rB   )r_   r3   rv   rC   r5   r   r   r   $test_cummin_max_skipna_multiple_cols   s
   r   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 )NrW   r{   rH   rI   z+numpy operations are not valid with groupbymatchr<   r   rG   )foo)r   r,   pytestraisesr   re   )r   r3   gmsgr   r   r   test_numpy_compat	  s   
"r   z	dtype,valra   uint64)r   l         c                 C   sT   |t jg}tddg|d|d}|d}|| }td|i|d}t|| d S )Nr<   )grpr   rd   r   r   )rZ   NAr   r,   	transformr/   rB   )r_   r   valdatar3   rf   rC   r5   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 )Nr<   r   	   )rG   r7   r   rp   )columnsr7   rJ   rq   rI   F)as_indexz1DataFrameGroupBy.cumsum with axis=1 is deprecatedr   )axisz2DataFrameGroupBy.cumprod with axis=1 is deprecated)
r   r   rA   r,   r   r/   rB   assert_produces_warningFutureWarningr&   )r3   r5   rC   r   r   r   r   test_cython_api2'  s$   *&r   )(numpyr   r   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorstdpandasrZ   r   r   pandas._testing_testingr/   fixtureint32r   float32r   r   r6   mark
skip_ubsanr;   rD   r^   parametrizerg   rj   ry   r   r   r   skip_if_32bitr   r   r   r   r   r   r   r   <module>   sV    

64

