
    bMhB2                        d Z ddlZddlZddlmZmZ ddlZddlm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmc mZ ej                            ddddd	d
d ej        dej                            d          g          dddg
          d             Zd Zd Zd Zd Zd Z d Z!ej                            ddej"        fdej#        fd	ej$        fdej%        fdej&        fdej'        fdej(        fdd fdd fg	          d             Z)ej                            ddej"        fdd fd	d  fdej'        fdej(        fg          d!             Z*d" Z+ej                            d#g d$          ej                            d% ed&           ed'          g          d(                         Z,ej                            d)g d*          d+             Z-ej                            dg d,          d-             Z.ej                            d.g d/          d0             Z/ej                            d1d2d3g          ej                            d4g d5          ej                            d% ej0        g d6d78           ej0        g d6d98           ej0        g d:d;8           ej0        g d:d<8           ej0        g d=d>8          g          d?                                     Z1dS )@z
test cython .agg behavior
    N)is_float_dtypeis_integer_dtype)	DataFrameIndexNaTSeries	Timedelta	Timestampbdate_rangeop_namecountsumstdvarsemmeanmedianzignore::RuntimeWarning)marksprodminmaxc                 p   
 ddddddddddt           j        t           j        gddgdz  t           j                            d                              d          d	}t          |          }t           j        |j        dd
ddf<    fd
|                    dgd                              d          }
fd|D             }t          d|i          }d|j	        _
         
|          }t          j        ||           |                    ddg          }i }|D ]0\  \  }}}	 
|	d                   |                    |i           |<   1t          |          j                            d          }ddg|j	        _        d|_
         
|          d         } dv rt          j        ||           d S d S )Nr      g      ?AB         r   r   C
   r    c                 4     t          |                       S N)getattr)xr   s    j/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>z(test_cythonized_aggers.<locals>.<lambda>8   s    &71g&&((     )axisc                 :    i | ]\  }}| |d                    S )r     ).0catgroupops      r&   
<dictcomp>z*test_cythonized_aggers.<locals>.<dictcomp><   s+    
9
9
9:335:
9
9
9r(   T)future_stack)r   r   )npnanrandomdefault_rngstandard_normalr   locdropgroupbyindexnametmassert_frame_equal
setdefaultTstacknamesassert_series_equal)r   datadfgroupedexpresultexpdcat1cat2r.   r/   s   `         @r&   test_cythonized_aggersrK      s   , Aq!Q1abfbf=3Z!^Y""1%%55b99 D
 
4B&BF1R63;	(	(	(	(B ggse!g$$,,S11G
9
9
9
9
9
9
9C
S#J

CCINR[[F&#&&& jj#s$$GD& 9 9te*,"U3Z..b!!$''
D//

!
!t
!
4
4CCjCIOCHR[[F/!!
vs+++++ "!r(   c                  v   t          t          j                            d                              ddd          t          j                            d                              ddd                              d          d          } |                     d          d                                         }d	}t          j	        t          |
          5  |                     d          d                             t          j                  }d d d            n# 1 swxY w Y   t          j        ||           d S )Nr   r      2   boolabrQ   rR   zusing SeriesGroupBy.meanmatch)r   r2   r4   r5   integersastyper9   r   r<   assert_produces_warningFutureWarningaggrB   )framerG   msgexpecteds       r&   test_cython_agg_booleanr]   P   sH   &&q))221a<<&&q))221a<<CCFKK	
 	
 E ]]3$))++F
$C		#M	=	=	= 8 8==%%c*..rw778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 68,,,,,s   9DD Dc                     t          t          j                            d                              ddd          ddgdz  d          } d	}t          j        t          |
          5  |                     d          d         	                    d           d d d            n# 1 swxY w Y   t          t          j                            d                              ddd          ddgdz  d          } | dg                             | d                   	                    d          }t          g | d         
                                                                t          g d                    }t          j        ||           d S )Nr   r   rM   rN   foobar   rP   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesrS   rQ   rR   Tnumeric_onlystrdtype)r:   columns)r   r2   r4   r5   rU   pytestraises	TypeErrorr9   r   sort_valuesdrop_duplicatesr   r<   r=   )rZ   r[   rG   r\   s       r&   test_cython_agg_nothing_to_aggrn   `   s   i##A&&//1b99QS@STT E XC	y	,	,	, 8 8c3$$$$7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 i##A&&//1b99QS@STT E C5\!!%*--222EEF
Cj$$&&6688b&&&  H
 &(+++++s   '0B##B'*B'c            	         t          t          j                            d                              ddd          ddgdz  t          j        ddd	
          d          } d}t          j        t          |          5  | 
                    d          j                            d           d d d            d S # 1 swxY w Y   d S )Nr   r   rM   rN   r_   r`   ra   nowr   )periodsfreq)rQ   rR   datesrb   rS   rR   Trc   )r   r2   r4   r5   rU   pd
date_rangeri   rj   rk   r9   rs   r   )rZ   r[   s     r&   )test_cython_agg_nothing_to_agg_with_datesrv   v   s   &&q))221a<<"$]5"5AAA	
 	
 E XC	y	,	,	, 9 9c %%4%8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   =/B99B= B=c                     t          g dg dd          } d}t          j        t          |          5  |                     dd                                           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     dd                                           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     dd                                           d d d            n# 1 swxY w Y   t          j        t          |          5  |                     dd                                           d d d            d S # 1 swxY w Y   d S )	N)r   r      )rx      rM   )r%   yz+DataFrame.groupby with axis=1 is deprecatedrS   r   rh   )levelr)   )r   r<   rW   rX   r9   r   )rD   r[   s     r&   test_cython_agg_frame_columnsr|      sg   	33	4	4B
7C		#M	=	=	= 3 3



++002223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		#M	=	=	= 3 3



++002223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		#M	=	=	= 3 3



++002223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		#M	=	=	= 3 3



++002223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3sG   *A**A.1A.*CC
C
,*D""D&)D&*E??FFc                     t          g dg dt          j                            d                              d          t          j                            d                              d          d          } |                     d          d                             d           }t          d	d	d	d
ddd	d
gt          ddgd          d          }t          j
        ||           d S )N)r_   r`   r_   r`   r_   r`   r_   r_   )oner~   twothreer   r   r~   r   r      )r   r   r    Dr   r   c                 N    |                                                                  S r#   )value_countsto_dictr%   s    r&   r'   z-test_cython_agg_return_dict.<locals>.<lambda>   s    ANN,<,<,D,D,F,F r(   r   )r   r~   r   r`   r_   r;   )r:   r;   )r   r2   r4   r5   r6   r9   rY   r   r   r<   rB   )rD   tsr\   s      r&   test_cython_agg_return_dictr      s    	IIIMMM&&q))99!<<&&q))99!<<		
 	

 
B 
C		!	!"F"F	G	GB1q	)	)1Q+K+KLUEN---  H
 2x(((((r(   c                     t          dd          } t          g ddz  t          |           }|                    d           }|                                }d}t          j        t          |	          5  |                    t          j                  
                    t                    }d d d            n# 1 swxY w Y   t          j        ||           d S )
Nz1/1/2000rN   )rq   )r   r   r    r   Er!   )rg   r:   c                     | j         S r#   )monthr   s    r&   r'   z&test_cython_fail_agg.<locals>.<lambda>   s    17 r(   zusing SeriesGroupBy.sumrS   )r   r   objectr9   r   r<   rW   rX   rY   r2   rV   rB   )drr   rE   summedr[   r\   s         r&   test_cython_fail_aggr      s   	Z	,	,	,B	)))B.fB	G	G	GBjj**++G[[]]F
#C		#M	=	=	= 6 6;;rv&&--f556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 68,,,,,s   58B99B= B=z
op, targopfirstc                     | j         d         S Nr   ilocr   s    r&   r'   r'      s    AF1I r(   lastc                     | j         d         S )Nr   r   s    r&   r'   r'      s    16": r(   c                    t          t          j                            d                              d                    }t          j                            d                              ddd                              t                    }|                    |          	                    | d d          }|t          j        v rt          nd }d|  }t          j        ||	          5  |                    |                              |          }d d d            n# 1 swxY w Y   t          j        ||           d S )
Nr   i  r   rN   )sizeTaltrd   zusing DataFrameGroupBy.rS   )r   r2   r4   r5   r6   rU   rV   floatr9   _cython_agg_generalcom_cython_tablerX   r<   rW   rY   r=   )r/   targoprD   labelsrG   warnr[   r\   s           r&   test__cython_agg_generalr      sU    
29((++;;DAA	B	BBY""1%%..q"4.@@GGNNFZZ33BDt3TTF"c&777==TD
(B
(
(C		#D	4	4	4 2 2::f%%))&112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &(+++++s   *)DD#&D#c                 h    t          |           dk    rt          j        |           nt          j        S r   )lenr2   r   r3   r   s    r&   r'   r'      s"    SVVaZZRYq\\\RV r(   c                 .    t          j        | d          S )Nr   )ddof)r2   r   r   s    r&   r'   r'      s    "&+++ r(   c                    t          g d          }t          ddd          }|                    t          j        |d         |          |          }|                    | d d          }|                    t          j        |d         |          |          }|                    fd          }t          j        ||           d S )	N   r      r   7   rM   observedTr   c                      |           S r#   r+   )r%   r   s    r&   r'   z/test_cython_agg_empty_buckets.<locals>.<lambda>   s    vvayy r(   )	r   ranger9   rt   cutr   rY   r<   r=   )r/   r   r   rD   grpsgrG   r\   s    `      r&   test_cython_agg_empty_bucketsr      s     
<<<	 	 BB??D 	

26"Q%&&
::A""24d"CCF


26"Q%&&
::Auu(((())H&(+++++r(   c                    t          g ddg          }t          j        dddt                    }|                    t          j        |d         |          |                               d	d d
          }t          j        ddd          }t          dg dit          j	        |dd
                    }| r||j
        dk             }t          j        ||           |                    t          j        |d         |          |                               dd d
          }t          dg dit          j	        |dd
                    }| r||j
        dk             }t          j        ||           d S )Nr   rQ   )rh   r   ra   rM   rf   r   r   Tr      )rr   )r   r   $   r   )r;   orderedr:   r   )r   r   i  r   r   )r   r2   arangeintr9   rt   r   r   interval_rangeCategoricalIndexrQ   r<   r=   )r   rD   r   rG   	intervalsr\   s         r&   $test_cython_agg_empty_buckets_nanopsr      s    
<<<#	/	/	/B9QAS)))DZZr#w--ZAAUU4d V  F !!Ra000I	mmm!)#tDDD  H  -HJ!O,&(+++ ZZr#w--ZAAUUDt V  F 	ooo!)#tDDD  H  -HJ!O,&(+++++r(   r/   )r   r   r   r   rC   z2016-10-14 21:00:44.557z17088 days 21:00:44.557c                    t          ddg|t          gd          }t          ddgd          }t          d|t          gi|          }|                    d                              |           }t          j        ||           d S )Nr   r   rP   rQ   r   rR   r   )r   r   r   r9   	aggregater<   r=   )r/   rC   rD   r:   r\   rG   s         r&   "test_cython_with_timestamp_and_natr     s     
!QtSk22	3	3B1a&s###E #c{+5999HZZ__&&r**F(F+++++r(   rY   )r   r   r   r   r   r   r   r   ohlccumprodcumsumshiftanyallquantiler   r   rankcummincummaxc                 d   t          g dg dd          }d|j        j        d         j        _        |                    dg                              d| i          }|                                                    dg                              d| i          }t          j	        ||           d S )N)gffffff@g@g@gffffff@g      @)setosar   r   r   r   )sepal_lengthspeciesFr   r   r   )
r   _mgrarraysflags	writeabler9   rY   copyr<   assert_equal)rY   rD   rG   r\   s       r&    test_read_only_buffer_source_aggr     s    6 
555III	
 	

 
B ).BGN1%ZZ$$((.#)>??Fwwyy  )--11>32GHHHOFH%%%%%r(   )
r   r   r   r   r   r   r   r   r   r   c                    t          ddgdz  t          j        ddddddd	d
dt          j        g
d          d          } t	          |                    d          d         |                       }|                    |d                             d                    } t	          |                    d          d         |                       }| dv rd}nd}|                    |          }t          j
        ||           d S )Nr   r   rM   r   r   rx   ry   r      r   	   Int64rf   )r   r   float64)r   )r   r   FT)convert_integer)r   rt   arrayNAr$   r9   assignrV   convert_dtypesr<   rB   )r   rD   rG   df2r\   r   s         r&   test_cython_agg_nullable_intr   @  s   $ 
sa1aAq!Q1be<GLLL	
 	

 
B 4WRZZ__S)73355F
))bgnnY//)
0
0C6ws{{3'',g6688H$$$&&&GGH68,,,,,r(   rg   )r   Float64booleanc                 d   t          ddgt          j        dt          j        g|           t          j        ddg|           d          }|                    d                                          }t          ddggt          dgd          ddgd	
          }t          j        ||           d S )Nr   rf   r   r   r   r   r   r    r   )r:   rh   rg   )	r   rt   r   r   r9   r   r   r<   r=   )rg   rD   rG   r\   s       r&   &test_count_masked_returns_masked_dtyper   c  s    	Q1be*E2221a&...	
 	

 
B ZZ__""$$F
Qqc,,,sCj  H &(+++++r(   with_naTFzop_name, action)	)r   	large_int)r   always_float)r   r   )r   r   )r   r   )r   preserve)r   r   )r   r   )r   r   )r   r   rx   ry   r   rf   Int8)g?g?g333333?g?Float32r   )TTFFr   c                 $   |rt           j        | d<   t          g d| d          }|                    d          }|dk    rt          j                    }n|dk    rLt          | j                  r| j        }nst          | j                  r| j        }nWt          j                    }nC|dk    r0t          | j                  r| j        }n!t          j                    }n|dk    r| j        } t          ||                      }|d	         j        |k    sJ |
                    |          }|d	         j        |k    sJ  t          |d	         |                      }|j        |k    sJ |d	         
                    |          }|j        |k    sJ d S )
Nrx   )rQ   rQ   rR   rR   )keycolr   
always_intr   r   r   r   )rt   r   r   r9   
Int64Dtyper   rg   r   Float64Dtyper$   r   )rC   r   actionr   rD   rE   expected_dtyperG   s           r&   test_cython_agg_EA_known_dtypesr   s  s   :  %Q	///==	>	>BjjG	;		$*%% 	-!ZNNdj)) 	-!ZNN]__NN	>	!	!$*%% 	/!ZNN_..NN	:		&WWg&&((F%=.0000w''F%=.0000-WWU^W--//F<>))))U^%%g..F<>))))))r(   )2__doc__numpyr2   ri   pandas.core.dtypes.commonr   r   pandasrt   r   r   r   r   r	   r
   r   pandas._testing_testingr<   pandas.core.commoncorecommonr   markparametrizeparamfilterwarningsrK   r]   rn   rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r(   r&   <module>r     s               
                                               ;--.FGGH		
 	
 	
 	 (, ,) (,B- - - , , ,,
9 
9 
93 3 3) ) )(
- 
- 
- 		29						%%&	%%&
 
, 
, 
, 		CCD	++,			 	, ,	 	,, , ,B >>>??
YY01199=V3W3WX 	, 	,  @?	, 	   2& &3 2&     - - -( "A"A"ABB, , CB, T5M22   " 
W---V,,,%%%Y777%%%Y777+++9===	 	&* &*	 	#  328&* &* &*r(   