o
    Û­jB2  ã                   @   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   © úg/var/www/html/CropPilot/venv/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  
¡  ¡ tg dd�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Ústr©Údtype)r7   Úcolumns)r   r/   r1   r2   rQ   ÚpytestÚraisesÚ	TypeErrorr6   r   Úsort_valuesÚdrop_duplicatesr   r9   r:   )rV   rW   rD   rX   r$   r$   r%   Útest_cython_agg_nothing_to_agg`   s"   "ÿÿ"ÿ
ýri   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_rangerd   re   rf   r6   rm   r   )rV   rW   r$   r$   r%   Ú)test_cython_agg_nothing_to_agg_with_datesv   s   
ýÿ"ÿrp   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   é   )rq   é   rI   )r#   Úyz+DataFrame.groupby with axis=1 is deprecatedrO   r   rc   )Úlevelr(   )r   r9   rS   rT   r6   r   )rA   rW   r$   r$   r%   Útest_cython_agg_frame_columnsƒ   s   ÿÿÿ"ÿru   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   )Úonerv   ÚtwoÚthreerw   rw   rv   rx   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   )rw   rv   rx   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 t| d�}| dd„ ¡}| ¡ }d	}tjt|d
�� | t	j¡ 
t¡}W d   ƒ n1 s9w   Y  t ||¡ d S )Nz1/1/2000rJ   )rk   )r   r   r   rz   ÚEr   )rb   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   Úobjectr6   r   r9   rS   rT   rU   r/   rR   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   rn   Ú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   )rc   r   r\   rI   ra   rŸ   r   Tr�   é   )rl   )r   r   é$   r   )r8   Úordered©r7   r   )r   r   i´  r   r   )r   r/   ÚarangeÚintr6   rn   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   r}   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   rq   rr   r   é   ry   é	   ÚInt64ra   )r   r   Úfloat64)r   )r   r   FT)Úconvert_integer)r   rn   ÚarrayÚNAr!   r6   ÚassignrR   Úconvert_dtypesr9   r?   )r   rA   rD   Údf2rX   rË   r$   r$   r%   Útest_cython_agg_nullable_int@  s   
"þÿrÑ   rb   )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   ra   r   r   r   r}   r   r   rÉ   )r7   rc   rb   )	r   rn   rÌ   rÍ   r6   r   r   r9   r:   )rb   rA   rD   rX   r$   r$   r%   Ú&test_count_masked_returns_masked_dtypec  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   rq   rr   rÉ   ra   Ú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 )
Nrq   )rM   rM   rN   rN   )ÚkeyÚcolrÛ   Ú
always_intrÖ   r×   rØ   rÜ   )rn   rÍ   r   r6   Ú
Int64Dtyper   rb   r   ÚFloat64Dtyper!   r±   )r@   r   ÚactionrÕ   rA   rB   Úexpected_dtyperD   r$   r$   r%   Útest_cython_agg_EA_known_dtypess  s4   








râ   )2Ú__doc__Únumpyr/   rd   Úpandas.core.dtypes.commonr   r   Úpandasrn   r   r   r   r   r   r	   r
   Úpandas._testingÚ_testingr9   Úpandas.core.commonÚcoreÚcommonr“   ÚmarkÚparametrizeÚparamÚfilterwarningsrH   rY   ri   rp   ru   r   r…   r   r   r   r   r   r   r   r˜   r¦   r°   r²   rÆ   rÑ   rÔ   rÌ   râ   r$   r$   r$   r%   Ú<module>   s²    $	üñþ
!

÷þ


ûþ

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