a
    oÝEbs+  ã                   @   sh  d Z ddlZddlZddl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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 d0¢¡ej d1ed2ƒed3ƒg¡d4d5„ ƒƒZ'ej d6g d7¢¡d8d9„ ƒZ(ej dg d:¢¡d;d<„ ƒZ)ej d=d>d?g¡ej d@g dA¢¡ej d1ej*g dB¢dCdD�ej*g dB¢dEdD�ej*g dF¢dGdD�ej*g dF¢dHdD�ej*g dI¢dJdD�g¡dKdL„ ƒƒƒZ+dS )Mz
test cython .agg behavior
é    N)Úis_float_dtype)Ú	DataFrameÚIndexÚNaTÚSeriesÚ	TimedeltaÚ	TimestampÚbdate_rangeÚop_nameÚcountÚsumÚstdÚvarÚsemÚmeanÚmedianzignore::RuntimeWarning)ZmarksÚprodÚminÚmaxc           
         s8  ddddddddddt jt jgddgd t j 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 ¡|< qÈt|ƒjjdd�}ddg|j_d|_	ˆ |ƒd }ˆdv �r4t
 ||¡ d S )Nr   é   g      ð?ÚAÚBé   é   )r   r   ÚCé   é
   r   c                    s   t | ˆ ƒƒ S ©N)Úgetattr©Úx)r
   © új/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pandas/tests/groupby/aggregate/test_cython.pyÚ<lambda>4   ó    z(test_cythonized_aggers.<locals>.<lambda>)Úaxisc                    s   i | ]\}}|ˆ |d  ƒ“qS )r   r!   )Ú.0ÚcatÚgroup)Úopr!   r"   Ú
<dictcomp>8   r$   z*test_cythonized_aggers.<locals>.<dictcomp>F)Zdropna)r   r   )ÚnpÚnanÚrandomÚrandnr   ÚlocZdropÚgroupbyÚindexÚnameÚtmÚassert_frame_equalÚ
setdefaultÚTÚstackÚnamesÚassert_series_equal)
r
   ÚdataÚdfÚgroupedÚexpÚresultZexpdZcat1Úcat2r(   r!   )r)   r
   r"   Útest_cythonized_aggers   s.    

ý
r@   c                  C   sd   t tj ddd¡tj ddd¡ d¡dœƒ} |  d¡d  ¡ }|  d¡d  tj¡}t 	||¡ d S )	Nr   é   é2   r   Úbool©ÚaÚbrE   rF   )
r   r+   r-   ÚrandintÚastyper0   r   Úaggr3   r9   ©Úframer>   Úexpectedr!   r!   r"   Útest_cython_agg_booleanL   s    þÿrM   c                  C   s4  t tj ddd¡ddgd dœƒ} tjtdd	��& |  d
¡d jdd� W d   ƒ n1 s\0    Y  tjt	dd	��" |  d
¡d  ¡  W d   ƒ n1 sœ0    Y  t tj ddd¡ddgd dœƒ} t
 t¡�( | dg  | d
 ¡ ¡ }W d   ƒ n1 �s0    Y  t g | d
  ¡  ¡ d�}t
 ||¡ d S )Nr   rA   rB   ÚfooÚbaré   rD   údoes not implement©ÚmatchrE   rF   T©Únumeric_onlyzCould not convert (foo|bar)*©r1   )r   r+   r-   rG   ÚpytestÚraisesÚNotImplementedErrorr0   r   Ú	TypeErrorr3   Zassert_produces_warningÚFutureWarningZsort_valuesZdrop_duplicatesr4   rJ   r!   r!   r"   Útest_cython_agg_nothing_to_aggY   s    "40"8r\   c                  C   sv   t tj ddd¡ddgd tjdddd	�d
œƒ} tjtdd��$ |  	d¡j
jdd� W d   ƒ n1 sh0    Y  d S )Nr   rA   rB   rN   rO   rP   Únowr6   )ÚperiodsÚfreq)rE   rF   ÚdatesrQ   rR   rF   TrT   )r   r+   r-   rG   ÚpdZ
date_rangerW   rX   rY   r0   r`   r   )rK   r!   r!   r"   Ú)test_cython_agg_nothing_to_agg_with_datesj   s    
ýÿrb   c                  C   sb   t g d¢g d¢dœƒ} | jddd� ¡  | jddd� ¡  | jddd� ¡  | jddd� ¡  d S )N)r   r   é   )rc   é   rA   )r    Úyr   Úcolumns)Úlevelr%   )r   r0   r   )r;   r!   r!   r"   Útest_cython_agg_frame_columnsv   s
    rh   c                  C   s€   t g d¢g d¢tj 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�dd�}t 	||¡ d S )N)rN   rO   rN   rO   rN   rO   rN   rN   )Úoneri   ÚtwoÚthreerj   rj   ri   rk   é   )r   r   r   ÚDr   r   c                 S   s   |   ¡  ¡ S r   )Zvalue_countsÚto_dictr   r!   r!   r"   r#   ‹   r$   z-test_cython_agg_return_dict.<locals>.<lambda>r   )rj   ri   rk   r   rO   rN   ©r2   )r1   r2   )
r   r+   r-   r.   r0   rI   r   r   r3   r9   )r;   ÚtsrL   r!   r!   r"   Útest_cython_agg_return_dict€   s    

üÿ	ýrq   c                  C   sR   t ddd�} tg d¢d | d�}| dd„ ¡}| ¡ }| tj¡}t ||¡ d S )	Nz1/1/2000rB   )r^   )r   r   r   rm   ÚEr   rV   c                 S   s   | j S r   )Úmonthr   r!   r!   r"   r#   ˜   r$   z&test_cython_fail_agg.<locals>.<lambda>)r	   r   r0   r   rI   r+   r3   r9   )Zdrrp   r<   ZsummedrL   r!   r!   r"   Útest_cython_fail_agg”   s    rt   z
op, targopÚaddÚfirstc                 C   s
   | j d S ©Nr   ©Zilocr   r!   r!   r"   r#   ¨   r$   r#   Úlastc                 C   s
   | j d S )Néÿÿÿÿrx   r   r!   r!   r"   r#   ©   r$   c                 C   s^   t tj d¡ƒ}tjjdddd� t¡}| |¡j| d dd�}| |¡ 	|¡}t
 ||¡ d S )Niè  r   rB   )ÚsizeT©ZaltrU   )r   r+   r-   r.   rG   rH   Úfloatr0   Ú_cython_agg_generalrI   r3   r4   )r)   Útargopr;   Úlabelsr>   rL   r!   r!   r"   Útest__cython_agg_generalž   s
    r�   c                 C   s   t | ƒdkrt | ¡S tjS rw   )Úlenr+   r   r,   r   r!   r!   r"   r#   ¹   r$   c                 C   s   t j| dd�S )Nr   )Zddof)r+   r   r   r!   r!   r"   r#   º   r$   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   rA   ©ÚobservedTr|   c                    s   ˆ | ƒS r   r!   r   ©r   r!   r"   r#   É   r$   z/test_cython_agg_empty_buckets.<locals>.<lambda>)	r   Úranger0   ra   Úcutr~   rI   r3   r4   )r)   r   rˆ   r;   ÚgrpsÚgr>   rL   r!   r‰   r"   Útest_cython_agg_empty_bucketsµ   s    rŽ   c                 C   sú   t g d¢dgd�}tdd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�}| r†||jdk }t	 
||¡ |jt |d |¡| d�jdd d	d
�}t dg d¢itj|dd	d�d�}| rê||jdk }t	 
||¡ d S )Nrƒ   rE   )rf   r   rP   rA   r‡   ru   Tr|   é   )r_   )r   r   é$   r   )r2   ZorderedrV   r   )r   r   i´  r   r   )r   rŠ   r0   ra   r‹   r~   Zinterval_rangeZCategoricalIndexrE   r3   r4   )rˆ   r;   rŒ   r>   Z	intervalsrL   r!   r!   r"   Ú$test_cython_agg_empty_buckets_nanopsÍ   s.    ÿ
þÿ
þr‘   r)   )rv   ry   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   rD   rE   ro   rF   rV   )r   r   r   r0   Ú	aggregater3   r4   )r)   r:   r;   r1   rL   r>   r!   r!   r"   Ú"test_cython_with_timestamp_and_natî   s
    r“   rI   )r   r   r   r   r   r   r   r   ZohlcZcumprodZcumsumÚshiftÚanyÚallZquantilerv   ry   ZrankZcumminZ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   Z_mgrZarraysÚflagsZ	writeabler0   rI   Úcopyr3   Zassert_equal)rI   r;   r>   rL   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krŠ| d¡}t 	||¡ d S )Nr   r   rA   r   r   rc   rd   r   é   rl   é	   ÚInt64©Údtype)r   r   Zfloat64)r   r   )
r   ra   ÚarrayÚNAr   r0   ZassignrH   r3   r9   )r
   r;   r>   Zdf2rL   r!   r!   r"   Útest_cython_agg_nullable_int'  s    
"þÿ
r¤   Úwith_naTFzop_name, action)	)r   Ú	large_int)r   Úalways_float)r   r§   )r   r§   )r   r¦   )r   Úpreserve)r   r¨   )rv   r¨   )ry   r¨   )r   r   rc   rd   rŸ   r    ZInt8)gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?ZFloat32ZFloat64)TTFFÚbooleanc                 C   s  |rt j| d< tg d¢| dœƒ}| d¡}|dkr<t  ¡ }nV|dkr`t| jƒrV| j}q’t  ¡ }n2|dkr„t| jƒrz| j}q’t  ¡ }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 )
Nrc   )rE   rE   rF   rF   )ÚkeyÚcolrª   Z
always_intr¦   r§   r¨   r«   )
ra   r£   r   r0   Z
Int64Dtyper   r¡   ZFloat64Dtyper   r’   )r:   r
   Úactionr¥   r;   r<   Zexpected_dtyper>   r!   r!   r"   Útest_cython_agg_EA_known_dtypesJ  s0    







r­   ),Ú__doc__Únumpyr+   rW   Zpandas.core.dtypes.commonr   Zpandasra   r   r   r   r   r   r   r	   Zpandas._testingZ_testingr3   ÚmarkZparametrizeÚparamÚfilterwarningsr@   rM   r\   rb   rh   rq   rt   r   r   r   r   r   r   r   r�   rŽ   r‘   r“   rœ   r¤   r¢   r­   r!   r!   r!   r"   Ú<module>   sª   $	üñþ
!



÷þ
	

ûþ

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