
    Owg 2                        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.                  j1                  ddddd	d
d ej2                  dej.                  j5                  d      g      dddg
      d        Zd Zd Zd Zd Zd Z d Z!ej.                  j1                  ddejD                  fdejF                  fd	ejH                  fdejJ                  fdejL                  fdejN                  fdejP                  fdd fdd fg	      d        Z)ej.                  j1                  ddejD                  fdd fd	d  fdejN                  fdejP                  fg      d!        Z*d" Z+ej.                  j1                  d#g d$      ej.                  j1                  d% ed&       ed'      g      d(               Z,ej.                  j1                  d)g d*      d+        Z-ej.                  j1                  dg d,      d-        Z.ej.                  j1                  d.g d/      d0        Z/ej.                  j1                  d1d2d3g      ej.                  j1                  d4g d5      ej.                  j1                  d% ej`                  g d6d78       ej`                  g d6d98       ej`                  g d:d;8       ej`                  g d:d<8       ej`                  g d=d>8      g      d?                      Z1y)@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                 x    ddddddddddt         j                  t         j                  gddgdz  t         j                  j                  d      j	                  d      d	}t        |      }t         j                  |j                  dd
ddf<    fd}|j                  dgd      j                  d      }|D ci c]  \  }}| ||d          }}}t        d|i      }d|j                  _
         ||      }t        j                  ||       |j                  ddg      }i }	|D ]&  \  \  }
}} ||d         |	j                  |
i       |<   ( t        |	      j                  j                  d      }ddg|j                  _        d|_
         ||      d   } dv rt        j"                  ||       y y c c}}w )Nr      g      ?AB         r   r   C
   r    c                 &     t        |              S N)getattr)xr   s    a/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>z(test_cythonized_aggers.<locals>.<lambda>8   s    &71g&(     )axisT)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opgroupedcatgroupexpresultexpdcat1cat2s   `           r&   test_cythonized_aggersrG      s   , Aq!Q1abffbff=3Z!^YY""1%55b9D
 
4B&&BFF1R63;	(B ggse!g$,,S1G18
9:335:
9C
9
S#J
CCIIN[F&#& jj#s$GD& 9te*,U3Z.b!$'9
D/


!
!t
!
4CCjCIIOCH[F/!
vs+ "! :s   ;F6c                  ,   t        t        j                  j                  d      j	                  ddd      t        j                  j                  d      j	                  ddd      j                  d      d      } | j                  d      d   j                         }d	}t        j                  t        |
      5  | j                  d      d   j                  t        j                        }d d d        t        j                  |       y # 1 sw Y    xY w)Nr   r      2   boolabrM   rN   zusing SeriesGroupBy.meanmatch)r   r+   r-   r.   integersastyper2   r   r5   assert_produces_warningFutureWarningaggr;   )framerC   msgexpecteds       r&   test_cython_agg_booleanrY   P   s    &&q)221a<&&q)221a<CCFK	
E ]]3$))+F
$C		#	#M	= 8==%c*..rww78 68,	8 8s   92D

Dc                     t        t        j                  j                  d      j	                  ddd      ddgdz  d      } d	}t        j                  t        |
      5  | j                  d      d   j                  d       d d d        t        t        j                  j                  d      j	                  ddd      ddgdz  d      } | dg   j                  | d         j                  d      }t        g | d   j                         j                         g       }t        j                  ||       y # 1 sw Y   xY w)Nr   r   rI   rJ   foobar   rL   KCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesrO   rM   rN   Tnumeric_only)r3   columns)r   r+   r-   r.   rQ   pytestraises	TypeErrorr2   r   sort_valuesdrop_duplicatesr5   r6   )rV   rW   rC   rX   s       r&   test_cython_agg_nothing_to_aggrg   `   s%   ii##A&//1b9QS@STE XC	y	, 8c3$$$$78 ii##A&//1b9QS@STE C5\!!%*-222EF
%*((*::<bH &(+8 8s   %D99Ec            	      n   t        t        j                  j                  d      j	                  ddd      ddgdz  t        j                  ddd	
      d      } d}t        j                  t        |      5  | j                  d      j                  j                  d       d d d        y # 1 sw Y   y xY w)Nr   r   rI   rJ   r[   r\   r]   nowr   )periodsfreq)rM   rN   datesr^   rO   rN   Tr_   )r   r+   r-   r.   rQ   pd
date_rangerb   rc   rd   r2   rl   r   )rV   rW   s     r&   )test_cython_agg_nothing_to_agg_with_datesro   t   s    &&q)221a<"$]]5"5A	
E XC	y	, 9c  %%4%89 9 9s   6,B++B4c                     t        g dg dd      } d}t        j                  t        |      5  | j	                  dd      j                          d d d        t        j                  t        |      5  | j	                  dd      j                          d d d        t        j                  t        |      5  | j	                  dd      j                          d d d        t        j                  t        |      5  | j	                  dd      j                          d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   gxY w# 1 sw Y   y xY w)	N)r   r      )rq      rI   )r%   yz+DataFrame.groupby with axis=1 is deprecatedrO   r   ra   )levelr)   )r   r5   rS   rT   r2   r   )r=   rW   s     r&   test_cython_agg_frame_columnsru      s   	3	4B
7C		#	#M	= 3


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


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


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



+0023 33 33 33 33 3s/   "D*5"D6:"E?"E*D36D?EEc                     t        g dg dt        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      } | j                  d      d   j                  d       }t        d	d	d	d
ddd	d
gt        ddgd      d      }t        j                  ||       y )N)r[   r\   r[   r\   r[   r\   r[   r[   )onerw   twothreerx   rx   rw   ry   r      )r   r   r    Dr   r   c                 >    | j                         j                         S r#   )value_countsto_dictr%   s    r&   r'   z-test_cython_agg_return_dict.<locals>.<lambda>   s    ANN,<,D,D,F r(   r   )rx   rw   ry   r\   r[   r4   )r3   r4   )r   r+   r-   r.   r/   r2   rU   r   r   r5   r;   )r=   tsrX   s      r&   test_cython_agg_return_dictr      s    	IM&&q)99!<&&q)99!<		

B 
C		!	!"F	GB1q	)1Q+KLUEN-H
 2x(r(   c                  T   t        dd      } t        g ddz  |       }|j                  d       }|j                         }d}t	        j
                  t        |	      5  |j                  t        j                        }d d d        t	        j                  |       y # 1 sw Y    xY w)
Nz1/1/2000rJ   )rj   )r   r   r    r{   Er!   r3   c                     | j                   S r#   )monthr   s    r&   r'   z&test_cython_fail_agg.<locals>.<lambda>   s
    177 r(   zusing SeriesGroupBy.sumrO   )
r   r   r2   r   r5   rS   rT   rU   r+   r;   )drr   r?   summedrW   rX   s         r&   test_cython_fail_aggr      s    	Z	,B	)B.b	9Bjj*+G[[]F
#C		#	#M	= ';;rvv&' 68,' 's    BB'z
op, targopfirstc                      | j                   d   S Nr   ilocr   s    r&   r'   r'      s    AFF1I r(   lastc                      | j                   d   S )Nr   r   s    r&   r'   r'      s    166": r(   c                 B   t        t        j                  j                  d      j	                  d            }t        j                  j                  d      j                  ddd      j                  t              }|j                  |      j                  | d d      }|t        j                  v rt        nd }d|  }t        j                  ||	      5  |j                  |      j                  |      }d d d        t        j                   |       y # 1 sw Y    xY w)
Nr   i  r   rJ   )sizeTaltr`   zusing DataFrameGroupBy.rO   )r   r+   r-   r.   r/   rQ   rR   floatr2   _cython_agg_generalcom_cython_tablerT   r5   rS   rU   r6   )r>   targopr=   labelsrC   warnrW   rX   s           r&   test__cython_agg_generalr      s     
299((+;;DA	BBYY""1%..q"4.@GGNFZZ33BDt3TF"c&7&77=TD#B4
(C		#	#D	4 2::f%))&12 &(+2 2s   !DDc                 h    t        |       dkD  rt        j                  |       S t        j                  S r   )lenr+   r   r,   r   s    r&   r'   r'      s     SVaZRYYq\ RVV r(   c                 0    t        j                  | d      S )Nr   )ddof)r+   r   r   s    r&   r'   r'      s    "&&+ r(   c                 ^   t        g d      }t        ddd      }|j                  t        j                  |d   |      |      }|j                  | d d      }|j                  t        j                  |d   |      |      }|j                  fd      }t        j                  ||       y )	N   r      r   7   rI   observedTr   c                      |       S r#    )r%   r   s    r&   r'   z/test_cython_agg_empty_buckets.<locals>.<lambda>   s    vay r(   )	r   ranger2   rm   cutr   rU   r5   r6   )r>   r   r   r=   grpsgrC   rX   s    `      r&   test_cython_agg_empty_bucketsr      s     
<	 BB?D 	

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


266"Q%&
:Auu()H&(+r(   c                    t        g ddg      }t        j                  dddt              }|j	                  t        j                  |d   |      |       j                  d	d d
      }t        j                  ddd      }t        dg dit        j                  |dd
            }| r||j                  dk7     }t        j                  ||       |j	                  t        j                  |d   |      |       j                  dd d
      }t        dg dit        j                  |dd
            }| r||j                  dk7     }t        j                  ||       y )Nr   rM   )ra   r   r]   rI   dtyper   r   Tr      )rk   )r   r   $   r   )r4   orderedr   r   )r   r   i  r   r   )r   r+   arangeintr2   rm   r   r   interval_rangeCategoricalIndexrM   r5   r6   )r   r=   r   rC   	intervalsrX   s         r&   $test_cython_agg_empty_buckets_nanopsr      sH    
<#	/B99QAS)DZZr#w-ZAUU4d V F !!!Ra0I	m!!)#tDH HJJ!O,&(+ ZZr#w-ZAUUDt V F 	o!!)#tDH HJJ!O,&(+r(   r>   )r   r   r   r   r<   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|      }|j                  d      j	                  |       }t        j                  ||       y )Nr   r   rL   rM   r   rN   r   )r   r   r   r2   	aggregater5   r6   )r>   r<   r=   r3   rX   rC   s         r&   "test_cython_with_timestamp_and_natr     sj     
!QtSk2	3B1a&s#E #c{+59HZZ_&&r*F(F+r(   rU   )r   r   r   r   r   r   r   r   ohlccumprodcumsumshiftanyallquantiler   r   rankcummincummaxc                 L   t        g dg dd      }d|j                  j                  d   j                  _        |j                  dg      j                  d| i      }|j                         j                  dg      j                  d| i      }t        j                  ||       y )N)gffffff@g@g@gffffff@g      @)setosar   r   r   r   )sepal_lengthspeciesFr   r   r   )
r   _mgrarraysflags	writeabler2   rU   copyr5   assert_equal)rU   r=   rC   rX   s       r&    test_read_only_buffer_source_aggr     s    6 
5I	

B ).BGGNN1%ZZ$((.#)>?Fwwy  )-11>32GHHOOFH%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	        |j                  d      d   |              }|j                  |d   j                  d            } t	        |j                  d      d   |              }| dv rd}nd}|j                  |      }t        j                  ||       y )Nr   r   rI   r   r   rq   rr   r      rz   	   Int64r   )r   r   float64)r   )r   r   FT)convert_integer)r   rm   arrayNAr$   r2   assignrR   convert_dtypesr5   r;   )r   r=   rC   df2rX   r   s         r&   test_cython_agg_nullable_intr   >  s    $ 
sa1aAq!Q1bee<GL	

B 4WRZZ_S)735F
))bgnnY/)
0C6ws{{3',g68H$$&&&GH68,r(   r   )r   Float64booleanc                 H   t        ddgt        j                  dt        j                  g|       t        j                  ddg|       d      }|j	                  d      j                         }t        ddggt        dgd      ddgd	
      }t        j                  ||       y )Nr   r   r   r   r   r   r   r    r   )r3   ra   r   )	r   rm   r   r   r2   r   r   r5   r6   )r   r=   rC   rX   s       r&   &test_count_masked_returns_masked_dtyper   a  s    	Q1bee*E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   rq   rr   r   r   Int8)g?g?g333333?g?Float32r   )TTFFr   c                 "   |rt         j                  | d<   t        g d| d      }|j                  d      }|dk(  rt        j                         }n|dk(  rYt        | j                        r| j                  }nt        | j                        r| j                  }nbt        j                         }nM|dk(  r7t        | j                        r| j                  }n&t        j                         }n|dk(  r| j                  } t        ||             }|d	   j                  k(  sJ |j                  |      }|d	   j                  |k(  sJ  t        |d	   |             }|j                  |k(  sJ |d	   j                  |      }|j                  |k(  sJ y )
Nrq   )rM   rM   rN   rN   )keycolr   
always_intr   r   r   r   )rm   r   r   r2   
Int64Dtyper   r   r   Float64Dtyper$   r   )r<   r   actionr   r=   r?   expected_dtyperC   s           r&   test_cython_agg_EA_known_dtypesr   q  sZ   : %%Q	/=	>BjjG	;	$**%!ZZNdjj)!ZZN]]_N	>	!$**%!ZZN__.N	:	&WWg&(F%=.000w'F%=.000-WWU^W-/F<<>)))U^%%g.F<<>)))r(   )2__doc__numpyr+   rb   pandas.core.dtypes.commonr   r   pandasrm   r   r   r   r   r	   r
   r   pandas._testing_testingr5   pandas.core.commoncorecommonr   markparametrizeparamfilterwarningsrG   rY   rg   ro   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r&   <module>r     sE    
          ;;--.FGH		
 	(,)(,B- ,(
93)(
- 		299						%&	%&

,
, 		CD	+,			,	,,B >?
Y019=V3WX	, @	, 	2&32&  --( "AB, C, T5M2" 
W-V,%Y7%Y7+9=	&*	# 38&*r(   