
    Pi.                        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 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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.          d/             Z*ej                            d0d1d2g          ej                            d3g d4          ej                            d$ ej+        g d5d67           ej+        g d5d87           ej+        g d9d:7           ej+        g d9d;7           ej+        g d<d=7          g          d>                                     Z,d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                 l   
 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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    ~/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>z(test_cythonized_aggers.<locals>.<lambda>7   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(   )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_aggersrJ      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//

!
!
#
#CCjCIOCHR[[F/!!
vs+++++ "!r(   c                     t          t          j                            d                              ddd          t          j                            d                              ddd                              d          d          } |                     d          d                                         }|                     d          d                             t          j                  }t          j
        ||           d S )	Nr   r      2   boolabrP   rQ   )r   r1   r3   r4   integersastyper8   r   aggr;   rA   )framerF   expecteds      r&   test_cython_agg_booleanrW   O   s    &&q))221a<<&&q))221a<<CCFKK	
 	
 E ]]3$))++F}}S!!#&**2733H68,,,,,r(   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   rL   rM   foobar   rO   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesmatchrP   rQ   Tnumeric_onlystrdtype)r9   columns)r   r1   r3   r4   rR   pytestraises	TypeErrorr8   r   sort_valuesdrop_duplicatesr   r;   r<   )rU   msgrF   rV   s       r&   test_cython_agg_nothing_to_aggrk   ]   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   rL   rM   rY   rZ   r[   nowr   )periodsfreq)rP   rQ   datesr\   r]   rQ   Tr_   )r   r1   r3   r4   rR   pd
date_rangere   rf   rg   r8   rp   r   )rU   rj   s     r&   )test_cython_agg_nothing_to_agg_with_datesrs   s   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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)rY   rZ   rY   rZ   rY   rZ   rY   rY   )oneru   twothreerv   rv   ru   rw   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   )rv   ru   rw   rZ   rY   r:   )r9   r:   )r   r1   r3   r4   r5   r8   rT   r   r   r;   rA   )rC   tsrV   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                  L   t          dd          } t          g ddz  t          |           }|                    d           }|                                }|                    t          j                                      t                    }t          j	        ||           d S )Nz1/1/2000rM   )rn   )r   r   r    ry   Er!   )rc   r9   c                     | j         S r#   )monthr}   s    r&   r'   z&test_cython_fail_agg.<locals>.<lambda>   s    17 r(   )
r   r   objectr8   r   rT   r1   rS   r;   rA   )drr   rD   summedrV   s        r&   test_cython_fail_aggr      s    	Z	,	,	,B	)))B.fB	G	G	GBjj**++G[[]]F{{26""))&11H68,,,,,r(   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k    rddini }| d	vrd|d
<   |                    |          	                    | d d          } |                    |          j
        |fi |}t          j        ||           d S )Nr   i  r   rM   )sizer   ddofr   )r   r   r)   Taltr`   )r   r1   r3   r4   r5   rR   rS   floatr8   _cython_agg_generalrT   r;   r<   )r/   targoprC   labelskwargsrF   rV   s          r&   test__cython_agg_generalr      s     
29((++;;DAA	B	BBY""1%%..q"4.@@GGNNF%KKfa[[RF	"""vZZ33BDt3TTF%rzz&!!%f7777H&(+++++r(   c                 h    t          |           dk    rt          j        |           nt          j        S r   )lenr1   r   r2   r}   s    r&   r'   r'      s"    SVVaZZRYq\\\RV r(   c                 .    t          j        | d          S )Nr   )r   )r1   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   rL   observedTr   c                      |           S r#   r+   )r%   r   s    r&   r'   z/test_cython_agg_empty_buckets.<locals>.<lambda>   s    vvayy r(   )	r   ranger8   rq   cutr   rT   r;   r<   )r/   r   r   rC   grpsgrF   rV   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   rP   )rd   r   r[   rL   rb   r   r   Tr      )ro   )r   r   $   r   )r:   orderedr9   r   )r   r   i  r   r   )r   r1   arangeintr8   rq   r   r   interval_rangeCategoricalIndexrP   r;   r<   )r   rC   r   rF   	intervalsrV   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   rB   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   rO   rP   r~   rQ   r   )r   r   r   r8   	aggregater;   r<   )r/   rB   rC   r9   rV   rF   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(   rT   )r   r   r   r   r   r   r   r   ohlccumprodcumsumshiftanyallquantiler   r   rankcummincummaxc                 n   t          g dg dd          }d|j        j        d         j        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blocksvaluesflags	writeabler8   rT   copyr;   assert_equal)rT   rC   rF   rV   s       r&    test_read_only_buffer_source_aggr     s    6 
555III	
 	

 
B 05BGN1",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   rL   r   r         r      rx   	   Int64rb   )r   r   float64)r   )r   r   FT)convert_integer)r   rq   arrayNAr$   r8   assignrS   convert_dtypesr;   rA   )r   rC   rF   df2rV   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(   rc   )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   rb   r   r   r   r~   r   r    r   )r9   rd   rc   )	r   rq   r   r   r8   r   r   r;   r<   )rc   rC   rF   rV   s       r&   &test_count_masked_returns_masked_dtyper   M  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   r   r   r   rb   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 )
Nr   )rP   rP   rQ   rQ   )keycolr   
always_intr   r   r   r   )rq   r   r   r8   
Int64Dtyper   rc   r   Float64Dtyper$   r   )rB   r   actionr   rC   rD   expected_dtyperF   s           r&   test_cython_agg_EA_known_dtypesr   ]  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(   )-__doc__numpyr1   re   pandas.core.dtypes.commonr   r   pandasrq   r   r   r   r   r	   r
   r   pandas._testing_testingr;   markparametrizeparamfilterwarningsrJ   rW   rk   rs   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) ) )(- - - 		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(   