
    o[we                     \    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  G d d          ZdS )    N)is_bool_dtypeis_numeric_dtypeis_object_dtypeis_string_dtypec                       e Zd ZdZd Zej                            dddg          d             Zd Z	d Z
d	 Zd
 Zd Zd ZdS )BaseGroupbyTestszGroupby-specific tests.c                 H   t          j        g d|d          }|                    d          j        j        d         }|                    d          j        j        d         }t          j        |j        |j        j	                   t          j
        |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gr2s        Clib/python3.11/site-packages/pandas/tests/extension/base/groupby.pytest_grouping_grouperz&BaseGroupbyTests.test_grouping_grouper   s    \<<<CTUU
 
 jjoo%/2jjoo%/2
#C$7EEE
'(;=NOOOOO    as_indexTFc                    t          j        g d|d          }|j        j        }|r|j        d d         }|                    d|          j                                        }t          j        |d          \  }}g d}|r
|d d         }|rDt          j	        |d	          }	t          j
        ||	d
          }
t          j        ||
           d S t          j        ||d          }
t          j        ||
           d S )N   r#      r$      r%   r#      r   r
   )r    Tsort)      @      ?      @namer   indexr.   )r
   r   )r   r   dtype_is_booleanilocr   r   mean	factorizeIndexSeriesr   assert_series_equalassert_frame_equal)r   r    r   r   is_boolresult_uniquesexp_valsr0   expecteds              r   test_groupby_extension_aggz+BaseGroupbyTests.test_groupby_extension_agg   s   \ 8 8 8?PQQRR#)5 	 "BC(335::<<\"3$???
7"?? 	%}H 	4HW3///EySAAAH"6844444|'$A$ABBH!&(33333r   c                    t          j        g d|d          }|j        g d         }|                    d          }|                    d                              ddi          }t          j        ||           |                    d                              d          }t          j        ||           |                    d                                          }t          j        ||           d S )Nr"   r   )r   r$   r&      r   r
   first)	r   r   r3   	set_indexr   aggr   r9   rC   )r   r   r   r?   r;   s        r   test_groupby_agg_extensionz+BaseGroupbyTests.test_groupby_agg_extension5   s    \ 8 8 8?PQQRR7<<<(%%c**C$$c7^44
fh///C$$W--
fh///C&&((
fh/////r   c                    t          j        g d|d          }|j        j        }|r|j        d d         }|                    dd          j                                        }t          j        |d          \  }}t          j	        |d          }g d}|r
|d d         }t          j
        ||d	
          }t          j        ||           d S )Nr"   r   r'   r
   Fr(   r-   )r+   r*   r,   r   r/   )r   r   r1   r2   r3   r   r   r4   r5   r6   r7   r   r8   )	r   r   r   r:   r;   r<   r0   r>   r?   s	            r   test_groupby_extension_no_sortz/BaseGroupbyTests.test_groupby_extension_no_sortE   s    \ 8 8 8?PQQRR#)5 	 "BCe,,.3355< 1>>>5S)))"?? 	%}H9XU===
vx00000r   c                    |j         j        }||                                          }t          j        g d|d          }|j         j        }|r|j        d d         }|                    d          j                            t                    }t          j
        g dd          }|r
|d d         }t          j        ||           d S )N)r#   r#   r%   r%   r#   r&   r   r'   r
   )r%   r%   r$   r$   r%   r#   r   r-   )r1   r2   isnar   r   r3   r   r   	transformlenr7   r   r8   )r   r   r:   validr   r;   r?   s          r    test_groupby_extension_transformz1BaseGroupbyTests.test_groupby_extension_transformX   s    #)5!#4#9#9#;#;";<\ 2 2 2??@@#)5 	 "BC",,S119///c::: 	%}H
vx00000r   c                    t          j        g d|d          }|                    dd                              |           |                    dd          j                            |           |                    dd                              |           |                    dd          j                            |           d S )Nr"   r   r
   F)
group_keysr   )r   r   r   applyr   r
   )r   r   groupby_apply_opr   s       r   test_groupby_extension_applyz-BaseGroupbyTests.test_groupby_extension_applyj   s    \ 8 8 8?PQQRR


35
))//0@AAA


35
))+112BCCC


35
))//0@AAA


35
))+112BCCCCCr   c                    t          j        g d|d          }|                    d          j                            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          }t          j
        ||           d S )Nr"   r   r   c                     | j         S )N)array)xs    r   <lambda>z>BaseGroupbyTests.test_groupby_apply_identity.<locals>.<lambda>s   s    17 r   )r   r#      r$   r%   r&      rB   )r#   r$   r%   r&   r-   r
   r/   )r   r   r   r
   rQ   r7   r3   rV   r6   r   r8   )r   r   r   r;   r?   s        r   test_groupby_apply_identityz,BaseGroupbyTests.test_groupby_apply_identityq   s    \ 8 8 8?PQQRRC"(():):;;9	)))$*	1a&!'	1a&!'	1#$	 (<<<c222	
 	
 	
 	vx00000r   c                 2   t          j        g d|g dd          }|j        }t          |          sCt	          |          s4|j        dk    s)t          |          st          |          s|j        dk    rCt          j	        ddg          }|
                    d                                          j        }nt          j	        dg          }d	                    d
t          j        d|           g          }t!          j        t$          |          5  |
                    d                                           d d d            n# 1 swxY w Y   |
                    d                              d          j        }t'          j        ||           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->)matchT)numeric_only)r   r   r1   r   r   r.   r   r   kindr6   r   sumcolumnsjoinreescapepytestraises	TypeErrorr   assert_index_equal)r   r   r   r1   r?   r;   msgs          r   test_in_numeric_groupbyz(BaseGroupbyTests.test_in_numeric_groupby   s   \---&--- 
 
 "'U##	DU##	D zY&&u%% 'u%% ' zS  xc
++HZZ__((**2FFxH(( 6IMeMMNN	 C y444 & &

3##%%%& & & & & & & & & & & & & & &ZZ__((d(;;CF
fh/////s   (E		EEN)__name__
__module____qualname____doc__r   rh   markparametrizer@   rF   rH   rN   rS   r[   rm    r   r   r   r      s        !!P P P [Z$774 4 874.0 0 0 1 1 1&1 1 1$D D D1 1 1"0 "0 "0 "0 "0r   r   )rf   rh   pandas.core.dtypes.commonr   r   r   r   pandasr   pandas._testing_testingr   r   rt   r   r   <module>ry      s    				                      R0 R0 R0 R0 R0 R0 R0 R0 R0 R0r   