o
    5³cÖ  ã                   @   sH   d dl Z d dlmZ d dlZd dlmZ d dlm	Z	 G dd„ de	ƒZ
dS )é    N)Úis_numeric_dtype)ÚBaseExtensionTestsc                   @   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   s\   t  g d¢|dœ¡}| d¡jjd }| d¡jjd }t |j|jj	¡ t 
|j|¡ d S )N)ÚBr   NNÚAr   r   ÚC©r   r   r   r   r   )ÚpdÚ	DataFrameÚgroupbyÚgrouperÚ	groupingsÚtmÚassert_numpy_array_equalÚgrouping_vectorr   ÚvaluesÚassert_extension_array_equal)ÚselfÚdata_for_groupingÚdfÚgr1Úgr2© r   úY/var/www/html/gps/gps/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d|dj ¡ }t j|dd\}}|r9t jj|dd}t jg d¢|d	d
}|  	||¡ d S t  |g d¢dœ¡}|  
||¡ d S )N©é   r   é   r   é   r   r   é   r   r   )r   T©Úsort©Úname)ç      @ç      ð?ç      @r   ©Úindexr$   )r   r   )r	   r
   r   r   ÚmeanÚ	factorizeÚIndexÚ_with_inferÚSeriesÚassert_series_equalÚassert_frame_equal)	r   r   r   r   ÚresultÚ_Úuniquesr)   Ú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¡}|  ||¡ | d¡ d¡}|  ||¡ | d¡ ¡ }|  ||¡ d S )Nr   r   )r   r   r    é   r   r   Úfirst)r	   r
   ÚilocÚ	set_indexr   Úaggr0   r7   )r   r   r   r4   r1   r   r   r   Útest_groupby_agg_extension%   s   
z+BaseGroupbyTests.test_groupby_agg_extensionc                 C   sn   t  g d¢|dœ¡}|jdddj ¡ }t j|dd\}}t jj|dd}t jg d¢|dd	}|  	||¡ d S )
Nr   r   r   Fr!   r#   )r&   r%   r'   r   r(   )
r	   r
   r   r   r*   r+   r,   r-   r.   r/   )r   r   r   r1   r2   r)   r4   r   r   r   Útest_groupby_extension_no_sort5   s   z/BaseGroupbyTests.test_groupby_extension_no_sortc                 C   sV   ||  ¡   }t g d¢|dœ¡}| d¡j t¡}tjg d¢dd}|  ||¡ d S )N)r   r   r   r   r   r    r   r   )r   r   r   r   r   r   r   r#   )	Úisnar	   r
   r   r   Ú	transformÚlenr.   r/   )r   r   Úvalidr   r1   r4   r   r   r   Ú test_groupby_extension_transform>   s
   z1BaseGroupbyTests.test_groupby_extension_transformc                 C   sl   t  g d¢|dœ¡}|jddd |¡ |jdddj |¡ |jddd |¡ |jdddj |¡ d S )Nr   r   r   F)Ú
group_keysr   )r	   r
   r   Úapplyr   r   )r   r   Úgroupby_apply_opr   r   r   r   Útest_groupby_extension_applyG   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}|  	||¡ d S )Nr   r   r   c                 S   s   | j S )N)Úarray)Úxr   r   r   Ú<lambda>P   s    z>BaseGroupbyTests.test_groupby_apply_identity.<locals>.<lambda>)r   r   é   r   r   r    é   r6   )r   r   r   r    r#   r   r(   )
r	   r
   r   r   rC   r.   r8   rF   r,   r/   )r   r   r   r1   r4   r   r   r   Útest_groupby_apply_identityN   s   üø
z,BaseGroupbyTests.test_groupby_apply_identityc                 C   s²   t  g d¢|g d¢dœ¡}|j}t|ƒs|jdkrd }nt}d}tj||d | d¡ 	¡ j
}W d   ƒ n1 s:w   Y  |jjrKt  dd	g¡}nt  d	g¡}t ||¡ d S )
Nr   )r   r   r   r   r   r   r   r   )r   r   r   Údecimalz!The default value of numeric_only)Úmatchr   r   r   )r	   r
   Údtyper   r$   ÚFutureWarningr   Úassert_produces_warningr   ÚsumÚcolumnsÚ_is_numericr,   Úassert_index_equal)r   r   r   rN   ÚwarnÚmsgr1   r4   r   r   r   Útest_in_numeric_groupby]   s$   ýÿÿz(BaseGroupbyTests.test_in_numeric_groupbyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚpytestÚmarkÚparametrizer5   r;   r<   rA   rE   rK   rW   r   r   r   r   r   
   s    

		r   )r\   Úpandas.core.dtypes.commonr   Úpandasr	   Úpandas._testingÚ_testingr   Ú pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s    