o
    թZhA                     @   sZ   d dl Z d dlZd dlmZmZmZmZ d dlZd dl	m
Z ejdG dd dZdS )    N)is_bool_dtypeis_numeric_dtypeis_object_dtypeis_string_dtypez@ignore:The default of observed=False is deprecated:FutureWarningc                   @   sb   e Zd Z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dS )BaseGroupbyTestszGroupby-specific tests.c                 C   sf   t t jg dtd|d}|djjd }|djjd }t|j	|j
j t|j	| d S )N)Br   NNAr   r   C)dtyper   r   r   r   r   )pd	DataFrameSeriesobjectgroupby_grouperZ	groupingstmZassert_numpy_array_equalZgrouping_vectorr   valuesZassert_extension_array_equal)selfdata_for_groupingdfZgr1Zgr2 r   Z/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/extension/base/groupby.pytest_grouping_grouper   s   z&BaseGroupbyTests.test_grouping_grouperas_indexTFc                 C   s   t g d|d}|jj}|r|jd d }|jd|dj }t j|dd\}}g d}|r6|d d }|rOt j	|dd	}	t j
||	d
d}
t||
 d S t ||d}
t||
 d S )N   r      r      r   r      r   r   )r   Tsort)      @      ?      @namer   indexr'   )r   r   )r   r   r
   _is_booleanilocr   r   mean	factorizeIndexr   r   assert_series_equalassert_frame_equal)r   r   r   r   is_boolresult_Zuniquesexp_valsr)   expectedr   r   r   test_groupby_extension_agg%   s   z+BaseGroupbyTests.test_groupby_extension_aggc                 C   s   t g d|d}|jg d }|d}|dddi}t|| |dd}t|| |d }t|| d S )Nr   r   )r   r   r      r   r   first)	r   r   r+   Z	set_indexr   Zaggr   r0   r8   )r   r   r   r5   r2   r   r   r   test_groupby_agg_extension=   s   
z+BaseGroupbyTests.test_groupby_agg_extensionc           	      C   s   t g d|d}|jj}|r|jd d }|jdddj }t j|dd\}}t j	|dd}g d}|r=|d d }t j
||d	d
}t|| d S )Nr   r   r    r   Fr!   r&   )r$   r#   r%   r   r(   )r   r   r
   r*   r+   r   r   r,   r-   r.   r   r   r/   )	r   r   r   r1   r2   r3   r)   r4   r5   r   r   r   test_groupby_extension_no_sortM   s   z/BaseGroupbyTests.test_groupby_extension_no_sortc                 C   s   |j j}||   }tg d|d}|j j}|r"|jd d }|djt	}tj
g ddd}|r<|d d }t|| d S )N)r   r   r   r   r   r   r   r    r   )r   r   r   r   r   r   r   r&   )r
   r*   Zisnar   r   r+   r   r   Z	transformlenr   r   r/   )r   r   r1   Zvalidr   r2   r5   r   r   r    test_groupby_extension_transform`   s   z1BaseGroupbyTests.test_groupby_extension_transformc                 C   s   t g d|d}d}tjt|d |jdddd| W d    n1 s)w   Y  |jddddj| d}tjt|d |jdddd| W d    n1 sYw   Y  |jddddj| d S )	Nr   r   z7DataFrameGroupBy.apply operated on the grouping columnsmatchr   F)Z
group_keysZobservedr   )	r   r   r   Zassert_produces_warningDeprecationWarningr   applyr   r   )r   r   Zgroupby_apply_opr   msgr   r   r   test_groupby_extension_applyr   s   z-BaseGroupbyTests.test_groupby_extension_applyc                 C   s   t g d|d}|djdd }t j|jjg d j|jjddg j|jjd	d
g j|jjdg jgt jg ddddd}t	
|| d S )Nr   r   r   c                 S   s   | j S )N)array)xr   r   r   <lambda>   s    z>BaseGroupbyTests.test_groupby_apply_identity.<locals>.<lambda>)r   r      r   r   r      r7   )r   r   r   r   r&   r   r(   )r   r   r   r   r@   r   r+   rC   r.   r   r/   )r   r   r   r2   r5   r   r   r   test_groupby_apply_identity}   s   
z,BaseGroupbyTests.test_groupby_apply_identityc                 C   s   t g d|g dd}|j}t|s*t|s*|jdks*t|s*t|s*|jdkr:t 	ddg}|
d j}n;t 	dg}d	d
td| g}tjt|d |
d  W d    n1 sfw   Y  |
djddj}t|| d S )Nr   )r   r   r   r   r   r   r   r   )r   r   r	   decimalmr   r	   r   |zdoes not support sum operationsz%agg function failed [how->sum,dtype->r=   T)Znumeric_only)r   r   r
   r   r   r'   r   r   kindr.   r   sumcolumnsjoinreescapepytestZraises	TypeErrorr   Zassert_index_equal)r   r   r   r
   r5   r2   rA   r   r   r   test_in_numeric_groupby   s<   

z(BaseGroupbyTests.test_in_numeric_groupbyN)__name__
__module____qualname____doc__r   rR   markZparametrizer6   r9   r:   r<   rB   rH   rT   r   r   r   r   r      s    
r   )rP   rR   Zpandas.core.dtypes.commonr   r   r   r   Zpandasr   Zpandas._testingZ_testingr   rY   filterwarningsr   r   r   r   r   <module>   s    