o
    �¨Êh 2  ã                   @   s˜  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  mZ ej ddddd	d
dejdej d¡gd�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!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"d#„ fd$d%d#„ fg	¡d&d'„ ƒZ)ej d dej"fdd(d#„ fd	d)d#„ fdej'fdej(fg¡d*d+„ ƒZ*d,d-„ Z+ej d.g d/¢¡ej d0ed1ƒed2ƒg¡d3d4„ ƒƒZ,ej d5g d6¢¡d7d8„ ƒZ-ej dg d9¢¡d:d;„ ƒZ.ej d<g d=¢¡d>d?„ ƒZ/ej d@dAdBg¡ej dCg dD¢¡ej d0ej0g dE¢dFdG�ej0g dE¢dHdG�ej0g dI¢dJdG�ej0g dI¢dKdG�ej0g dL¢dMdG�g¡dNdO„ ƒƒƒZ1dS )Pz
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           
         s@  ddddddddddt jt jgddgd t j d¡ d¡d	œ}t|ƒ}t j|jdd
d…df< ‡fdd„‰ |jdgdd� d¡}‡ fdd„|D ƒ}td|iƒ}d|j	_
ˆ |ƒ}t ||¡ | ddg¡}i }|D ]\\}}}	ˆ |	d ƒ| |i ¡|< qgt|ƒjjdd�}ddg|j	_d|_
ˆ |ƒd }ˆdv ržt ||¡ d S d S )Nr   é   g      ð?ÚAÚBé   é   é   ©r   r   ÚCé
   r   c                    s   t | ˆ ƒƒ S ©N)Úgetattr©Úx)r   © ú\/var/www/html/env/lib/python3.10/site-packages/pandas/tests/groupby/aggregate/test_cython.pyÚ<lambda>8   ó    z(test_cythonized_aggers.<locals>.<lambda>)Úaxisc                    s   i | ]\}}|ˆ |d  ƒ“qS )r   r$   )Ú.0ÚcatÚgroup)Úopr$   r%   Ú
<dictcomp><   s    z*test_cythonized_aggers.<locals>.<dictcomp>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$   )r,   r   r%   Útest_cythonized_aggers   s0   
ýÿrH   c                  C   s¢   t tj d¡ ddd¡tj d¡ ddd¡ d¡dœƒ} |  d¡d  ¡ }d	}tj	t
|d
�� |  d¡d  tj¡}W d   ƒ n1 sDw   Y  t ||¡ d S )Nr   r   é   é2   Úbool©ÚaÚbrM   rN   zusing SeriesGroupBy.mean©Úmatch)r   r/   r1   r2   ÚintegersÚastyper6   r   r9   Úassert_produces_warningÚFutureWarningÚaggr?   )ÚframerD   ÚmsgÚexpectedr$   r$   r%   Útest_cython_agg_booleanP   s   þÿþrY   c                  C   sÞ   t tj d¡ ddd¡ddgd dœƒ} d	}tjt|d
�� |  d¡d j	dd� W d   ƒ n1 s3w   Y  t tj d¡ ddd¡ddgd dœƒ} | dg  | d ¡j	dd�}t g | d  
¡  ¡ g d�}t ||¡ d S )Nr   r   rI   rJ   ÚfooÚbaré   rL   úKCannot use numeric_only=True with SeriesGroupBy.mean and non-numeric dtypesrO   rM   rN   T©Únumeric_only)r7   Úcolumns)r   r/   r1   r2   rQ   ÚpytestÚraisesÚ	TypeErrorr6   r   Úsort_valuesÚdrop_duplicatesr9   r:   )rV   rW   rD   rX   r$   r$   r%   Útest_cython_agg_nothing_to_agg`   s   "ÿÿ"ÿÿrf   c                  C   s‚   t tj d¡ ddd¡ddgd tjddd	d
�dœƒ} d}tjt	|d�� |  
d¡jjdd� W d   ƒ d S 1 s:w   Y  d S )Nr   r   rI   rJ   rZ   r[   r\   Únowr   )ÚperiodsÚfreq)rM   rN   Údatesr]   rO   rN   Tr^   )r   r/   r1   r2   rQ   ÚpdÚ
date_rangera   rb   rc   r6   rj   r   )rV   rW   r$   r$   r%   Ú)test_cython_agg_nothing_to_agg_with_datest   s   
ýÿ"ÿrm   c                  C   s   t g d¢g d¢dœƒ} d}tjt|d�� | jddd� ¡  W d   ƒ n1 s(w   Y  tjt|d�� | jddd� ¡  W d   ƒ n1 sHw   Y  tjt|d�� | jddd� ¡  W d   ƒ n1 shw   Y  tjt|d�� | jddd� ¡  W d   ƒ d S 1 s‰w   Y  d S )	N)r   r   é   )rn   é   rI   )r#   Úyz+DataFrame.groupby with axis=1 is deprecatedrO   r   r`   )Úlevelr(   )r   r9   rS   rT   r6   r   )rA   rW   r$   r$   r%   Útest_cython_agg_frame_columns�   s   ÿÿÿ"ÿrr   c                  C   sŒ   t g d¢g d¢tj d¡ d¡tj d¡ d¡dœƒ} |  d¡d  dd	„ ¡}td
d
d
dœddd
dœgtddgdd�dd�}t	 
||¡ d S )N)rZ   r[   rZ   r[   rZ   r[   rZ   rZ   )Úoners   ÚtwoÚthreert   rt   rs   ru   r   é   )r   r   r   ÚDr   r   c                 S   s   |   ¡  ¡ S r    )Úvalue_countsÚto_dictr"   r$   r$   r%   r&   ›   r'   z-test_cython_agg_return_dict.<locals>.<lambda>r   )rt   rs   ru   r[   rZ   ©r8   )r7   r8   )r   r/   r1   r2   r3   r6   rU   r   r   r9   r?   )rA   ÚtsrX   r$   r$   r%   Útest_cython_agg_return_dict�   s   üÿ	ýr|   c                  C   s„   t ddd�} tg d¢d | d�}| dd„ ¡}| ¡ }d	}tjt|d
�� | tj¡}W d   ƒ n1 s5w   Y  t 	||¡ d S )Nz1/1/2000rJ   )rh   )r   r   r   rw   ÚEr   ©r7   c                 S   s   | j S r    )Úmonthr"   r$   r$   r%   r&   ¨   s    z&test_cython_fail_agg.<locals>.<lambda>zusing SeriesGroupBy.sumrO   )
r
   r   r6   r   r9   rS   rT   rU   r/   r?   )Údrr{   rB   ÚsummedrW   rX   r$   r$   r%   Útest_cython_fail_agg¤   s   þr‚   z
op, targopÚfirstc                 C   ó
   | j d S ©Nr   ©Úilocr"   r$   r$   r%   r&   »   ó   
 r&   Úlastc                 C   r„   )Néÿÿÿÿr†   r"   r$   r$   r%   r&   ¼   rˆ   c                 C   s´   t tj d¡ d¡ƒ}tj d¡jdddd� t¡}| |¡j	| d dd�}|t
jv r,tnd }d| › �}tj||d	�� | |¡ |¡}W d   ƒ n1 sMw   Y  t ||¡ d S )
Nr   iè  r   rJ   )ÚsizeT©Úaltr_   zusing DataFrameGroupBy.rO   )r   r/   r1   r2   r3   rQ   rR   Úfloatr6   Ú_cython_agg_generalÚcomÚ_cython_tablerT   r9   rS   rU   r:   )r,   ÚtargoprA   ÚlabelsrD   ÚwarnrW   rX   r$   r$   r%   Útest__cython_agg_general±   s   
þr•   c                 C   s   t | ƒdkrt | ¡S tjS r…   )Úlenr/   r   r0   r"   r$   r$   r%   r&   Ð   s    c                 C   s   t j| dd�S )Nr   )Úddof)r/   r   r"   r$   r$   r%   r&   Ñ   s    c                    s~   t g d¢ƒ}tdddƒ}|jt |d |¡|d�}|j| d dd�}|jt |d |¡|d�}| ‡ fdd	„¡}t ||¡ d S )
N©é   r   é   r   é7   rI   ©ÚobservedTrŒ   c                    s   ˆ | ƒS r    r$   r"   ©r’   r$   r%   r&   à   s    z/test_cython_agg_empty_buckets.<locals>.<lambda>)	r   Úranger6   rk   Úcutr�   rU   r9   r:   )r,   r’   r�   rA   ÚgrpsÚgrD   rX   r$   rž   r%   Útest_cython_agg_empty_bucketsÌ   s   r£   c                 C   s   t g d¢dgd�}tjdddtd�}|jt |d |¡| d�jd	d d
d�}tjdddd�}t dg d¢itj	|dd
d�d�}| rF||j
dk }t ||¡ |jt |d |¡| d�jdd d
d�}t dg d¢itj	|dd
d�d�}| rx||j
dk }t ||¡ d S )Nr˜   rM   )r`   r   r\   rI   ©Údtyperœ   r   TrŒ   é   )ri   )r   r   é$   r   )r8   Úorderedr~   r   )r   r   i´  r   r   )r   r/   ÚarangeÚintr6   rk   r    r�   Úinterval_rangeÚCategoricalIndexrM   r9   r:   )r�   rA   r¡   rD   Ú	intervalsrX   r$   r$   r%   Ú$test_cython_agg_empty_buckets_nanopsä   s.   ÿ
þÿ
þr®   r,   )rƒ   r‰   r   r   r@   z2016-10-14 21:00:44.557z17088 days 21:00:44.557c                 C   sZ   t ddg|tgdœƒ}tddgdd�}t d|tgi|d�}| d¡ | ¡}t ||¡ d S )Nr   r   rL   rM   rz   rN   r~   )r   r   r   r6   Ú	aggregater9   r:   )r,   r@   rA   r7   rX   rD   r$   r$   r%   Ú"test_cython_with_timestamp_and_nat  s
   r°   rU   )r   r   r   r   r   r   r   r   ÚohlcÚcumprodÚcumsumÚshiftÚanyÚallÚquantilerƒ   r‰   ÚrankÚcumminÚcummaxc                 C   sf   t g d¢g d¢dœƒ}d|jjd j_| dg¡ d| i¡}| ¡  dg¡ d| i¡}t 	||¡ d S )N)gffffff@gš™™™™™@gÍÌÌÌÌÌ@gffffff@g      @)Úsetosar»   r»   r»   r»   )Úsepal_lengthÚspeciesFr   r½   r¼   )
r   Ú_mgrÚarraysÚflagsÚ	writeabler6   rU   Úcopyr9   Úassert_equal)rU   rA   rD   rX   r$   r$   r%   Ú test_read_only_buffer_source_agg  s   þÿrÄ   )
r   r   r   r   r   r   r   r   r   r   c                 C   s¦   t ddgd tjddddddd	d
dtjg
dd�dœƒ}t| d¡d | ƒƒ }|j|d  d¡d�}t| d¡d | ƒƒ }| dv rCd}nd}|j|d�}t	 
||¡ d S )Nr   r   rI   r   r   rn   ro   r   é   rv   é	   ÚInt64r¤   )r   r   Úfloat64)r   )r   r   FT)Úconvert_integer)r   rk   ÚarrayÚNAr!   r6   ÚassignrR   Úconvert_dtypesr9   r?   )r   rA   rD   Údf2rX   rÉ   r$   r$   r%   Útest_cython_agg_nullable_int>  s   
"þÿrÏ   r¥   )rÇ   ÚFloat64Úbooleanc                 C   st   t ddgtjdtjg| d�tjddg| d�dœƒ}| d¡ ¡ }t ddggtdgdd�ddgd	d
�}t ||¡ d S )Nr   r¤   r   r   r   rz   r   r   rÇ   )r7   r`   r¥   )	r   rk   rÊ   rË   r6   r   r   r9   r:   )r¥   rA   rD   rX   r$   r$   r%   Ú&test_count_masked_returns_masked_dtypea  s   ýÿÿ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   rn   ro   rÇ   r¤   ÚInt8)gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?ÚFloat32rÐ   )TTFFrÑ   c                 C   s  |rt j| d< tg d¢| dœƒ}| d¡}|dkrt  ¡ }n4|dkr9t| jƒr+| j}n't| jƒr4| j}nt  ¡ }n|dkrKt| jƒrF| j}nt  ¡ }n|dkrR| j}t	||ƒƒ }|d	 j|ksaJ ‚| 
|¡}|d	 j|ksoJ ‚t	|d	 |ƒƒ }|j|ks~J ‚|d	  
|¡}|j|ksŒJ ‚d S )
Nrn   )rM   rM   rN   rN   )ÚkeyÚcolrÙ   Ú
always_intrÔ   rÕ   rÖ   rÚ   )rk   rË   r   r6   Ú
Int64Dtyper   r¥   r   ÚFloat64Dtyper!   r¯   )r@   r   ÚactionrÓ   rA   rB   Úexpected_dtyperD   r$   r$   r%   Útest_cython_agg_EA_known_dtypesq  s4   








rà   )2Ú__doc__Únumpyr/   ra   Úpandas.core.dtypes.commonr   r   Úpandasrk   r   r   r   r   r   r	   r
   Úpandas._testingÚ_testingr9   Úpandas.core.commonÚcoreÚcommonr�   ÚmarkÚparametrizeÚparamÚfilterwarningsrH   rY   rf   rm   rr   r|   r‚   r   r   r   r   r   r   r   r•   r£   r®   r°   rÄ   rÏ   rÒ   rÊ   rà   r$   r$   r$   r%   Ú<module>   s²    $	üñþ
!

÷þ


ûþ

!ÿþ
þ

þûþ
