U
    `»{jåN  ã                   @   s€  d Z ddlZddlm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 ddlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z 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(d)g¡d*d+„ ƒZ*d,d-„ Z+d.d/„ Z,ej( )d0e-ed1d2d3d4œiƒfe.ed1d5d5d5gd6d7d7gd4œiƒfd8d9„ ed1d2d3d4œiƒfd:d9„ ed1d5d5d5gd6d7d7gd4œiƒfg¡d;d<„ ƒZ/ej( )d0e-ed2d3gd5d6gd1d=�fe.ed5d5d5gd6d7d7ggd5d6gd1d=�fd>d9„ ed2d3gd5d6gd1d=�fd?d9„ ed5d5d5gd6d7d7ggd5d6gd1d=�fg¡d@dA„ ƒZ0dBdC„ Z1dDdE„ Z2dFdG„ Z3ej( )dHe4e5e6e7e8e9e:e;g¡dIdJ„ ƒZ<dS )Kz
test all other .agg behavior
é    N)Úpartial)ÚSpecificationError)Ú	DataFrameÚIndexÚ
MultiIndexÚPeriodIndexÚSeriesÚ
date_rangeÚperiod_range)Úpprint_thingc               	   C   s¬   t tj d¡tj d¡dddddgdddddgdœƒ} |  d¡}dd	„ }tjtd
d�� | |g¡}W 5 Q R X ddg|_	tjtd
d�� | |¡}W 5 Q R X t 
||¡ d S )Né   ÚaÚbÚoneÚtwo)Údata1Údata2Úkey1Úkey2r   c                 S   s   |   ¡ |  ¡  S ©N)ÚmaxÚmin)Zarr© r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/groupby/aggregate/test_other.pyÚpeak_to_peak+   s    z"test_agg_api.<locals>.peak_to_peakz)\['key2'\] did not aggregate successfully©Úmatchr   r   )r   ÚnpÚrandomÚrandnÚgroupbyÚtmÚassert_produces_warningÚFutureWarningÚaggÚcolumnsÚassert_frame_equal)ÚdfÚgroupedr   ÚexpectedÚresultr   r   r   Útest_agg_api   s*    

üÿ
þ
þr+   c                  C   sò   dddgdddgdd dgg} t d	d
„ | D ƒdd
„ | D ƒdd
„ | D ƒdœƒ}dd
„ | D ƒ} t dd
„ | D ƒdd
„ | D ƒdd
„ | D ƒdœƒ}|d |d  ¡  |d< | d¡ tj¡}|d |d  ¡  |d< | d¡ tj¡}t|ƒt|ƒksît‚d S )Né   ú
2012-01-01ç      ð?é   z
2012-01-02g       @é   g      @c                 S   s   g | ]}|d  ‘qS ©r   r   ©Ú.0Úxr   r   r   Ú
<listcomp>B   s     z,test_agg_datetimes_mixed.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS ©r,   r   r2   r   r   r   r5   C   s     c                 S   s   g | ]}|d  ‘qS ©r/   r   r2   r   r   r   r5   D   s     )ÚkeyÚdateÚvaluec                 S   s<   g | ]4}|d  |d r,t j |d d¡ ¡ nd|d g‘qS )r   r,   z%Y-%m-%dNr/   )ÚdtÚdatetimeÚstrptimer9   )r3   Úrowr   r   r   r5   H   s
   ü ýc                 S   s   g | ]}|d  ‘qS r1   r   r2   r   r   r   r5   S   s     c                 S   s   g | ]}|d  ‘qS r6   r   r2   r   r   r   r5   T   s     c                 S   s   g | ]}|d  ‘qS r7   r   r2   r   r   r   r5   U   s     r:   Úweightsr9   )r   Úsumr    Ú	aggregater   ÚlenÚAssertionError)ÚdataZdf1Zdf2Zgb1Zgb2r   r   r   Útest_agg_datetimes_mixed=   s*    ýÿú	ýÿrE   c                  C   s¬   t dddd�} ttj dd¡| d�}|jdd� ¡ }t|jt	ƒsDt
‚t d	d
dd�}ttj t|ƒ¡|d�}ttj t|ƒ¡|d�}t ||dœ¡}| |jj¡}t|ƒ d S )Nz2012-1-1ÚMr0   )ÚfreqÚperiodsr/   ©Úindexr   )Úlevelz1999-01r   )ÚstartrH   rG   )Ús1Ús2)r
   r   r   r   r   r    r@   Ú
isinstancerJ   r   rC   r   ZrandrB   Ú	from_dictÚmonthÚlist)Zprngr'   ÚrsrJ   rM   rN   r(   r   r   r   Útest_agg_period_indexb   s    rT   c               	   C   sÎ  t ddddddddgtdddd�d	œƒ} d | jd
dddgdf< | jd
dddg  d¡}|  d¡}t | ¡ |¡ t | d¡|¡ t | ddi¡|¡ t 	|j
 ¡ |d ¡ t 	|j
 d¡|d ¡ | jd
dddg  d¡}|  d¡}t | ¡ |¡ t | d¡|¡ t | ddi¡|¡ t 	|j
 ¡ |d ¡ t 	|j
 d¡|d ¡ tddddgttdƒdd�dd�}t 	|j
 t¡|¡ t 	|j
 ¡ |¡ td
dddgttdƒdd�dd�}t 	|j
 ¡ |¡ d S )NÚAÚBÚCÚDz1/1/2011é   ÚH)rH   rG   )ÚclassÚtimer   r,   r/   r   r\   r0   é   é   r[   Úfirsté   ÚlastZABCD©Úname©rJ   rc   )r   r	   ÚlocZ	set_indexr    r!   r&   r_   r$   Úassert_series_equalr\   ra   r   r   rR   rB   ÚsizeÚcount)r'   Úexpr(   r   r   r   Ú*test_agg_dict_parameter_cast_result_dtypesq   s2    þÿ

""rj   c                  C   s^   dd„ t dƒD ƒ} tdƒ}t|| dœƒ}| d¡d  t¡}| d¡d  ¡ }t ||¡ d S )Nc                 S   s   g | ]}t  d |d d¡‘qS )iß  r,   )r;   r<   r2   r   r   r   r5   š   s     z0test_agg_cast_results_dtypes.<locals>.<listcomp>é   Zaaabbbbbbccd)ÚXÚYrl   rm   )	ÚrangerR   r   r    r$   rB   rh   r!   rf   )ÚuÚvr'   r*   r)   r   r   r   Útest_agg_cast_results_dtypes—   s    rq   c                  C   sÎ   t dddddgdddddgdddddgdœƒ} t dddddgiddddgd	�}d
|j_|  d
¡dg  ¡ }t ||¡ t ddddgddddgdœddddgd	�}d
|j_|  d
¡ddg  ¡ }t ||¡ d S )Nr,   r/   r0   r]   r   )r   r   Úcr   g      @rI   r   )r   rr   rr   )r   rJ   rc   r    Úmeanr!   r&   )r'   r)   r*   r   r   r   Útest_aggregate_float64_no_int64£   s    . *rt   c            	   
   C   s  t ddddddddgddddddddgtj d¡d t d¡dœƒ} |  dd	g¡}|d
  ¡ }|d
  ¡ }|d  ¡ }|d  ¡ }|d  ddg¡}t	j
||gdd�}ddg|_tj||dd� | tjtjg¡}t	j
||||gdd�}t d
dgddgg¡|_tj||dd� |dd
g  tjtjg¡}t	j
||||gdd�}t dd
gddgg¡|_tj||dd� | dddœ¡}t	j
||gdd�}tj||dd� | ddgddgdœ¡}t	j
||||gdd�}t d
dgddgg¡|_d}tjt|d��" |dd
g  tjtjdœ¡ W 5 Q R X d S )NÚfooÚbarr   r   rY   r.   ©rU   rV   rW   rX   rU   rV   rW   rX   r@   rs   r,   )ZaxisT)Z
check_like©rW   rX   z&Column\(s\) \['r', 'r2'\] do not existr   )ÚrÚr2)r   r   r   r   Úaranger    rs   r@   r$   ÚpdÚconcatr%   r!   r&   r   Zfrom_productÚpytestÚraisesÚKeyError)	r'   r(   Zc_meanZc_sumZd_meanZd_sumr*   r)   Úmsgr   r   r   Útest_aggregate_api_consistency´   sB    üÿ	
r‚   c               	   C   sØ   t dddddgtdƒtdƒdœƒ} d}tjt|d��, |  d¡ dd	d
gidddgidœ¡ W 5 Q R X d}tjt|d��" |  d¡ddg  dd
i¡ W 5 Q R X d}tjt|d�� |  d¡j ddi¡ W 5 Q R X d S )Nr,   r/   r   ©rU   rV   rW   únested renamer is not supportedr   rU   ru   r@   r   rv   rh   r   )rV   rW   z!Column\(s\) \['ma'\] do not existrV   rW   Úma)	r   rn   r~   r   r   r    r$   r€   rV   )r'   r�   r   r   r   Ú"test_agg_dict_renaming_deprecationã   s    "
ÿ&r†   c               
   C   s¸   t ddddddddgddddddddgtj d¡d t d¡dœƒ} |  dd	g¡}d
}tjt|d�� |d  	dddgi¡ W 5 Q R X tjt|d�� |d  	dddœ¡ W 5 Q R X d S )Nru   rv   r   r   rY   r.   rw   rU   rV   r„   r   rX   rW   r@   Ústdrx   )
r   r   r   r   r{   r    r~   r   r   r$   ©r'   Úgr�   r   r   r   Útest_agg_compatö   s    üÿ	 rŠ   c               
   C   s2  t ddddddddgddddddddgtj d¡d t d¡dœƒ} |  dd	g¡}d
}tjt|d��& | 	dddgidddgidœ¡ W 5 Q R X tjt|d��& | 
dddgidddgidœ¡ W 5 Q R X tjt|d�� |d  
tjtjdœ¡ W 5 Q R X tjt|d�� |d  
tjtjdœ¡ W 5 Q R X d S )Nru   rv   r   r   rY   r.   rw   rU   rV   r„   r   rW   rs   r@   rX   )Úr1rz   Úrar‡   Úrbrx   )Úresult1Úresult2)rX   r�   )r   r   r   r   r{   r    r~   r   r   rA   r$   r@   rs   rˆ   r   r   r   Útest_agg_nested_dicts  s"    üÿ	**"r�   c               
   C   sd   t tjjddd�ƒ} dd„ }tjtdd��0 tjt	dd�� |  
d	¡ |¡ W 5 Q R X W 5 Q R X d S )
Né
   )é   r‘   )rg   c                 S   s    t dƒ t |  ¡ ƒ tdƒ‚d S )Nz(----------------------------------------Útest)r   Z	to_stringÚ	TypeError)r'   r   r   r   ÚraiseException+  s    z=test_agg_item_by_item_raise_typeerror.<locals>.raiseExceptionr“   r   zDropping invalidr   )r   r   r   Úrandintr~   r   r”   r!   r"   r#   r    r$   )r'   r•   r   r   r   Ú%test_agg_item_by_item_raise_typeerror(  s
    r—   c                  C   sB   t  ¡ } |  dd„ dd„ g¡}| tj¡}| ¡ }t  ||¡ d S )Nc                 S   s   | j S r   )Úyear©r4   r   r   r   Ú<lambda>7  ó    z*test_series_agg_multikey.<locals>.<lambda>c                 S   s   | j S r   )rQ   r™   r   r   r   rš   7  r›   )r!   ZmakeTimeSeriesr    r$   r   r@   rf   )Útsr(   r*   r)   r   r   r   Útest_series_agg_multikey5  s
    r�   c                  C   s´   t dddddddddddgdddddddddddgdddddddddddgtj d¡tj d¡tj d¡dœƒ} d	d
„ }|  ddg¡ |¡}|  ddg¡ dd„ ¡}t ||¡ d S )Nru   rv   r   r   ZdullZshinyé   )rU   rV   rW   rX   ÚEÚFc                 S   s   t | jjƒdkst‚dS )Nr   ru   )rB   ÚvaluesÚbaserC   r™   r   r   r   Úbadn  s    z.test_series_agg_multi_pure_python.<locals>.badrU   rV   c                 S   s   dS )Nru   r   r™   r   r   r   rš   s  r›   z3test_series_agg_multi_pure_python.<locals>.<lambda>)r   r   r   r   r    r$   r!   r&   )rD   r£   r*   r)   r   r   r   Ú!test_series_agg_multi_pure_python>  s\    õõõ


Öÿ/r¤   c                  C   s–   dd„ } t ddddgddd	d
gt ddd¡t ddd¡t ddd¡t ddd¡gdœƒ}| d¡}| | g¡}|jjd |_| | ¡}t ||¡ d S )Nc                 S   s   t j|  ¡ dd�S )Nr,   )Úq)r   Z
percentileZdropna)r   r   r   r   ÚP1z  s    z test_agg_consistency.<locals>.P1r,   r/   r0   r]   r‘   é   é   é   iÝ  rž   )Zcol1Zcol2r9   r9   r   )	r   r;   r9   r    r$   r%   Zlevelsr!   r&   )r¦   r'   r‰   r)   r*   r   r   r   Útest_agg_consistencyw  s     

üýÿ

rª   c                  C   s†   t ddgddgdœƒ tj¡} G dd„ dƒ}ttjdd	„ d
d	„ ttƒ|ƒ g}|  d¡ t¡}|D ] }|  d¡ |¡}t 	||¡ q`d S )Nr,   r/   r0   r]   )ru   rv   c                   @   s   e Zd Zdd„ ZdS )z$test_agg_callables.<locals>.fn_classc                 S   s   t |ƒS r   ©r@   )Úselfr4   r   r   r   Ú__call__˜  s    z-test_agg_callables.<locals>.fn_class.__call__N)Ú__name__Ú
__module__Ú__qualname__r­   r   r   r   r   Úfn_class—  s   r±   c                 S   s   t | ƒS r   r«   r™   r   r   r   rš   ž  r›   z$test_agg_callables.<locals>.<lambda>c                 S   s   |   ¡ S r   r«   r™   r   r   r   rš   Ÿ  r›   ru   )
r   Zastyper   Zint64r@   r   r    r$   r!   r&   )r'   r±   Zequiv_callablesr)   Zecallr*   r   r   r   Útest_agg_callables“  s    ú	r²   c               	   C   sÎ   t dt dddg¡gdt dddg¡gdt dddg¡ggd	d
gd�} |  d	¡}t dddg¡gt dddg¡gg}tddgd	d�}d
g}t |||d�}|jdd�}t ||¡ |jddd�}t ||¡ d S )Nr,   r‘   r’   é   é(   é2   é<   r/   ÚcategoryZ	arraydata)r%   éF   éZ   rb   ©rJ   r%   F©Znumeric_onlyr@   )	r   r   Úarrayr    r   r@   r!   r&   r$   )r'   ÚgbZexpected_dataZexpected_indexZexpected_columnr)   Zaltr*   r   r   r   Útest_agg_over_numpy_arraysª  s     ýú
$r¾   Ú	as_periodTFc                 C   s,  t dddd�}| r"| d ¡ d¡}tddddg|dœƒ}| d	¡}|d
  dd„ ¡}t|d d d… d
d�}d	|j_t	 
||¡ |d
  dd„ ¡}tddgd
d�}d	|j_t	 
||¡ |d
  dd„ ¡}ttjdd�tjdd�gd
d�}d	|j_| �rttj d¡tj d¡gd
d�}d	|j_t	 
||¡ d S )Nr-   r]   ÚUTC)rH   ÚtzrX   r   r,   ©r   r   r   r   c                 S   s
   | j d S ©Nr   ©Úilocr™   r   r   r   rš   Ñ  r›   z6test_agg_tzaware_non_datetime_result.<locals>.<lambda>r/   rb   c                 S   s   | j d jS rÃ   )rÅ   r˜   r™   r   r   r   rš   ×  r›   iÜ  c                 S   s   | j d | j d  S )Néÿÿÿÿr   rÄ   r™   r   r   r   rš   Ü  r›   )Údays)r	   Ztz_localizeZ	to_periodr   r    r$   r   rJ   rc   r!   rf   r|   Z	TimedeltaÚoffsetsZDay)r¿   Zdtir'   r½   r*   r)   r   r   r   Ú$test_agg_tzaware_non_datetime_resultÅ  s(    
  rÉ   c                     s¨  t jddd�‰ td‡ fdd„tdƒD ƒdœƒ} |  d	¡d
  tj¡jd }|  d	¡d
  dd„ ¡jd }|  d	¡d
  ¡ jd }|ˆ ksŒt	‚|ˆ ks˜t	‚|ˆ ks¤t	‚dd„ tddƒD ƒ}td	d
gd |dœƒ} |  d¡}| d jd ‰ ˆ | 
d¡d jd k�st	‚ˆ | d¡d jd k�s"t	‚ˆ | ¡ d jd k�s>t	‚ˆ | dd„ ¡jd k�s\t	‚| d jd ‰ ˆ | ¡ d jd k�s†t	‚ˆ | dd„ ¡jd k�s¤t	‚d S )Nz2016-01-01 12:00:00ú
US/Pacific©rÁ   r,   c                    s   g | ]}ˆ t j|d � ‘qS ))Úminutes)r;   Ú	timedelta)r3   Únn©rœ   r   r   r5   è  s     z0test_agg_timezone_round_trip.<locals>.<listcomp>r‘   rÂ   r   r   r   c                 S   s
   t  | ¡S r   )r   r   r™   r   r   r   rš   ë  r›   z.test_agg_timezone_round_trip.<locals>.<lambda>c                 S   s$   g | ]}t jd |d›d�dd�‘qS )z	2016-01-0Údz	 12:00:00rÊ   rË   )r|   Ú	Timestamp)r3   Úir   r   r   r5   ò  s    r   r/   ©rU   rV   rU   rV   c                 S   s
   | j d S rÃ   rÄ   r™   r   r   r   rš   þ  r›   )r   r,   c                 S   s
   | j d S )NrÆ   rÄ   r™   r   r   r   rš     r›   )r|   rÑ   r   rn   r    r$   r   r   rÅ   rC   ZnthÚheadr_   Úapplyra   )r'   rŽ   r�   Zresult3Údatesr(   r   rÏ   r   Útest_agg_timezone_round_tripå  s*     ÿ
r×   c                  C   s    t ddgddgddggtd�} | d } td	d
dgtjd�}t ddddgi|d�}d|j_|  d¡jdd�}t	 
||¡ |  d¡jdd�}|g  }t	 
||¡ d S )Nr,   r/   r0   r]   r   r^   )Zdtypel   ÿÿÿÿ l            l           l           l           l           l           rI   r   Fr»   T)r   Úobjectr   r   Zuint64rJ   rc   r    r@   r!   r&   )r'   rJ   r)   r*   r�   Z	expected2r   r   r   Útest_sum_uint64_overflow  s      ÿþrÙ   zstructure, expectedrW   )r,   r,   r,   )r0   r]   r]   ))r,   r,   )r0   r]   r,   r0   r]   c                 C   s   t | ƒS r   ©Útupler™   r   r   r   rš   %  r›   rš   c                 C   s   t | ƒS r   ©rR   r™   r   r   r   rš   )  r›   c              	   C   sd   t ddddddgddddddgddddddgdœƒ}| ddg¡ | ¡}ddg|j_t ||¡ d S )Nr,   r0   r]   rƒ   rU   rV   )r   r    rA   rJ   Únamesr!   r&   ©Z	structurer)   r'   r*   r   r   r   Útest_agg_structs_dataframe  s    .ÿrß   rd   c                 C   s   t | ƒS r   rÚ   r™   r   r   r   rš   =  r›   c                 C   s   t | ƒS r   rÜ   r™   r   r   r   rš   >  r›   c              	   C   s`   t ddddddgddddddgddddddgdœƒ}| d¡d  | ¡}d|j_t ||¡ d S )Nr,   r0   r]   rƒ   rU   rW   )r   r    rA   rJ   rc   r!   rf   rÞ   r   r   r   Útest_agg_structs_series8  s    .ÿrà   c                 C   sŒ   dddg}t tjdddg|d�dddgdœƒ}|jd	| d
�j tj¡}tdddgtj	dddg|d	d�dd�}| r|||dk }t
 ||¡ d S )Nr   r   rr   )Ú
categoriesr,   r/   r0   rÓ   rU   )Úobservedr   )rá   rc   rV   rd   )r   r|   ZCategoricalr    rV   r$   r   Znansumr   ZCategoricalIndexr!   rf   )râ   rá   r'   r*   r)   r   r   r   Útest_agg_category_nansumL  s    
ÿýrã   c                  C   s†   t dd„ tdƒD ƒdd„ tdƒD ƒdœƒ} | jdddd�}| dd	d
„ i¡}t dd„ tdƒD ƒdd„ tdƒD ƒdœƒ}t ||¡ d S )Nc                 S   s   g | ]}t |ƒ‘qS r   ©Ústrr2   r   r   r   r5   ^  s     z+test_agg_list_like_func.<locals>.<listcomp>r0   rÓ   rU   F)Zas_indexÚsortrV   c                 S   s   t | ƒS r   rÜ   r™   r   r   r   rš   `  r›   z)test_agg_list_like_func.<locals>.<lambda>c                 S   s   g | ]}t |ƒ‘qS r   rä   r2   r   r   r   r5   b  s     c                 S   s   g | ]}t |ƒg‘qS r   rä   r2   r   r   r   r5   b  s     )r   rn   r    r$   r!   r&   )r'   r(   r*   r)   r   r   r   Útest_agg_list_like_func\  s    *$ÿrç   c                  C   sx   t ddgtjddd�tjddd�gdœƒ} |  d¡ dd	d
„ i¡}t tjddd�gtdgdd�dgd�}t ||¡ d S )Nr,   z
2018-01-01rÀ   rË   z
2018-01-02)Útagr9   rè   r9   c                 S   s
   |   d¡S )Nr,   )rÔ   )Úer   r   r   rš   r  r›   z/test_agg_lambda_with_timezone.<locals>.<lambda>rb   rº   )r   r|   rÑ   r    r$   r   r!   r&   )r'   r*   r)   r   r   r   Útest_agg_lambda_with_timezoneg  s    þþÿ	ýrê   Úerr_clsc           	         sš   ddl m}m}m} |ƒ d d… }tdddddgdddddg||ƒdœƒ}t||d |d gƒƒ}‡ fdd„}|d	  |d
 ¡ |¡}tj	||dd� d S )Nr   )ÚDecimalArrayÚ	make_dataÚ
to_decimalr   r,   )Úid1Zid2Údecimalsr0   c                    s   t | ƒdkrˆ ‚| jd S rÃ   )rB   rÅ   r™   ©rë   r   r   Ú
weird_funcš  s    z1test_groupby_agg_err_catching.<locals>.weird_funcrð   rï   F)Zcheck_names)
Z$pandas.tests.extension.decimal.arrayrì   rí   rî   r   r   r    r$   r!   rf   )	rë   rì   rí   rî   rD   r'   r)   rò   r*   r   rñ   r   Útest_groupby_agg_err_catching{  s    "ÿró   )=Ú__doc__r<   r;   Ú	functoolsr   Únumpyr   r~   Zpandas.errorsr   Zpandasr|   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr!   Zpandas.io.formats.printingr   r+   rE   rT   rj   rq   rt   r‚   r†   rŠ   r�   r—   r�   r¤   rª   r²   r¾   ÚmarkZparametrizerÉ   r×   rÙ   rÛ   rR   rß   rà   rã   rç   rê   ÚNotImplementedErrorÚRuntimeErrorr€   Ú
IndexErrorÚOSErrorÚ
ValueErrorÚArithmeticErrorÚAttributeErrorró   r   r   r   r   Ú<module>   s†   $	!%&/	9
" þþùþ

$(üþ	
øþ