U
    ¾mœd0M  ã                   @   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 tjtd
d�� | |¡ W 5 Q R X d S )Né   ÚaÚbÚoneÚtwo)Zdata1Zdata2Úkey1Úkey2r   c                 S   s   |   ¡ |  ¡  S ©N)ÚmaxÚmin)Zarr© r   úb/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/groupby/aggregate/test_other.pyÚpeak_to_peak)   s    z5test_agg_partial_failure_raises.<locals>.peak_to_peakzunsupported operand type©Úmatch)	r   ÚnpÚrandomÚrandnÚgroupbyÚpytestÚraisesÚ	TypeErrorÚagg)ÚdfÚgroupedr   r   r   r   Útest_agg_partial_failure_raises   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>8   s     z,test_agg_datetimes_mixed.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS ©r&   r   r,   r   r   r   r/   9   s     c                 S   s   g | ]}|d  ‘qS ©r)   r   r,   r   r   r   r/   :   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Ústrptimer3   )r-   Úrowr   r   r   r/   >   s
   ü ýc                 S   s   g | ]}|d  ‘qS r+   r   r,   r   r   r   r/   I   s     c                 S   s   g | ]}|d  ‘qS r0   r   r,   r   r   r   r/   J   s     c                 S   s   g | ]}|d  ‘qS r1   r   r,   r   r   r   r/   K   s     r4   Úweightsr3   )r   Úsumr   Ú	aggregater   ÚlenÚAssertionError)ÚdataZdf1Zdf2Zgb1Zgb2r   r   r   Útest_agg_datetimes_mixed3   s*    ýÿú	ýÿr?   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ÚMr*   )ÚfreqÚperiodsr)   ©Úindexr   )Úlevelz1999-01r   )ÚstartrB   rA   )Ús1Ús2)r
   r   r   r   r   r   r:   Ú
isinstancerD   r   r=   r   Zrandr<   Ú	from_dictÚmonthÚlist)Zprngr#   ÚrsrD   rG   rH   r$   r   r   r   Útest_agg_period_indexX   s    rN   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)rB   rA   )ÚclassÚtimer   r&   r)   r   rV   r*   é   é   rU   Úfirsté   ÚlastZABCD©Úname©rD   r]   )r   r	   ÚlocZ	set_indexr   ÚtmÚassert_frame_equalrY   r"   Úassert_series_equalrV   r[   r   r   rL   r<   ÚsizeÚcount)r#   Úexpr$   r   r   r   Ú*test_agg_dict_parameter_cast_result_dtypesg   s2    þÿ

""rf   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&   )r5   r6   r,   r   r   r   r/   �   s     z0test_agg_cast_results_dtypes.<locals>.<listcomp>é   Zaaabbbbbbccd)ÚXÚYrh   ri   )	ÚrangerL   r   r   r"   r<   rd   r`   rb   )ÚuÚvr#   ÚresultÚexpectedr   r   r   Útest_agg_cast_results_dtypes�   s    ro   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)   r*   rW   r   )r   r   Úcr   g      @rC   r   )r   rp   rp   )r   rD   r]   r   Úmeanr`   ra   )r#   rn   rm   r   r   r   Útest_aggregate_float64_no_int64™   s    . *rr   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   rS   r(   ©rO   rP   rQ   rR   rO   rP   rQ   rR   r:   rq   r&   )ZaxisT)Z
check_like©rQ   rR   z&Column\(s\) \['r', 'r2'\] do not existr   )ÚrÚr2)r   r   r   r   Úaranger   rq   r:   r"   ÚpdÚconcatÚcolumnsr`   ra   r   Zfrom_productr   r    ÚKeyError)	r#   r$   Zc_meanZc_sumZd_meanZd_sumrm   rn   Ú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   ©rO   rP   rQ   únested renamer is not supportedr   rO   rs   r:   r   rt   rd   r   )rP   rQ   z!Column\(s\) \['ma'\] do not existrP   rQ   Úma)	r   rj   r   r    r   r   r"   r}   rP   )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 )Nrs   rt   r   r   rS   r(   ru   rO   rP   r�   r   rR   rQ   r:   Ústdrv   )
r   r   r   r   ry   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 )Nrs   rt   r   r   rS   r(   ru   rO   rP   r�   r   rQ   rq   r:   rR   )Úr1rx   Úrar„   Úrbrv   )Úresult1Úresult2)rR   rŒ   )r   r   r   r   ry   r   r   r    r   r;   r"   r:   rq   r…   r   r   r   Útest_agg_nested_dicts  s"    üÿ	**"r�   c               	   C   sJ   t tjjddd�ƒ} dd„ }tjtdd�� |  d¡ |¡ W 5 Q R X d S )	Né
   )é   rŽ   )rc   c                 S   s    t dƒ t |  ¡ ƒ tdƒ‚d S )Nz(----------------------------------------Útest)r   Z	to_stringr!   )r#   r   r   r   ÚraiseException!  s    z=test_agg_item_by_item_raise_typeerror.<locals>.raiseExceptionr�   r   r   )	r   r   r   Úrandintr   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©r.   r   r   r   Ú<lambda>,  ó    z*test_series_agg_multikey.<locals>.<lambda>c                 S   s   | j S r   )rK   r•   r   r   r   r–   ,  r—   )r`   ZmakeTimeSeriesr   r"   r   r:   rb   )Útsr$   rm   rn   r   r   r   Útest_series_agg_multikey*  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 )Nrs   rt   r   r   ZdullZshinyé   )rO   rP   rQ   rR   ÚEÚFc                 S   s   t | jjƒdkst‚dS )Nr   rs   )r<   ÚvaluesÚbaser=   r•   r   r   r   Úbadc  s    z.test_series_agg_multi_pure_python.<locals>.badrO   rP   c                 S   s   dS )Nrs   r   r•   r   r   r   r–   h  r—   z3test_series_agg_multi_pure_python.<locals>.<lambda>)r   r   r   r   r   r"   r`   ra   )r>   rŸ   rm   rn   r   r   r   Ú!test_series_agg_multi_pure_python3  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   ÚP1o  s    z test_agg_consistency.<locals>.P1r&   r)   r*   rW   rŽ   é   é   é   iÝ  rš   )Zcol1Zcol2r3   r3   r   )	r   r5   r3   r   r"   r|   Zlevelsr`   ra   )r¢   r#   r†   rn   rm   r   r   r   Útest_agg_consistencyl  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)   r*   rW   )rs   rt   c                   @   s   e Zd Zdd„ ZdS )z$test_agg_callables.<locals>.fn_classc                 S   s   t |ƒS r   ©r:   )Úselfr.   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—   rs   )
r   Zastyper   Zint64r:   r   r   r"   r`   ra   )r#   r­   Zequiv_callablesrn   Zecallrm   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   r\   ©rD   r|   F©Znumeric_onlyr:   )	r   r   Úarrayr   r   r:   r`   ra   r"   )r#   ÚgbZexpected_dataZexpected_indexZexpected_columnrn   Zaltrm   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'   rW   ÚUTC)rB   ÚtzrR   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)   r\   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   rD   r]   r`   rb   rz   Z	TimedeltaÚoffsetsZDay)r»   Zdtir#   r¹   rm   rn   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)r5   Ú	timedelta)r-   Únn©r˜   r   r   r/   Ý  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Ç   )rz   Ú	Timestamp)r-   Úir   r   r   r/   ç  s    r   r)   ©rO   rP   rO   rP   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—   )rz   rÍ   r   rj   r   r"   r   r   rÁ   r=   ZnthÚheadrY   Úapplyr[   )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|td�}d|j_|  d¡jdd�}t	 
||¡ |  d¡jdd�}|g  }t	 
||¡ d S )Nr&   r)   r*   rW   r   rX   )Údtypel   ÿÿÿÿ l            l           l           l           l           l           )rD   rÔ   r   Fr·   T)r   Úobjectr   r   Zuint64rD   r]   r   r:   r`   ra   )r#   rD   rn   rm   rŒ   Z	expected2r   r   r   Útest_sum_uint64_overflowü  s"     ÿýrÖ   zstructure, expectedrQ   )r&   r&   r&   )r*   rW   rW   ))r&   r&   )r*   rW   r&   r*   rW   c                 C   s   t | ƒS r   ©Útupler•   r   r   r   r–     r—   r–   c                 C   s   t | ƒS r   ©rL   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&   r*   rW   r€   rO   rP   )r   r   r;   rD   Únamesr`   ra   ©Z	structurern   r#   rm   r   r   r   Útest_agg_structs_dataframe  s    .ÿrÜ   r^   c                 C   s   t | ƒS r   r×   r•   r   r   r   r–   3  r—   c                 C   s   t | ƒS r   rÙ   r•   r   r   r   r–   4  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&   r*   rW   r€   rO   rQ   )r   r   r;   rD   r]   r`   rb   rÛ   r   r   r   Útest_agg_structs_series.  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   rp   )Ú
categoriesr&   r)   r*   rÏ   rO   )Úobservedr   )rÞ   r]   rP   r^   )r   rz   ZCategoricalr   rP   r"   r   Znansumr   ZCategoricalIndexr`   rb   )rß   rÞ   r#   rm   rn   r   r   r   Útest_agg_category_nansumB  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   ©Ústrr,   r   r   r   r/   T  s     z+test_agg_list_like_func.<locals>.<listcomp>r*   rÏ   rO   F)Zas_indexÚsortrP   c                 S   s   t | ƒS r   rÙ   r•   r   r   r   r–   V  r—   z)test_agg_list_like_func.<locals>.<lambda>c                 S   s   g | ]}t |ƒ‘qS r   rá   r,   r   r   r   r/   X  s     c                 S   s   g | ]}t |ƒg‘qS r   rá   r,   r   r   r   r/   X  s     )r   rj   r   r"   r`   ra   )r#   r$   rm   rn   r   r   r   Útest_agg_list_like_funcR  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)Útagr3   rå   r3   c                 S   s
   |   d¡S )Nr&   )rÐ   )Úer   r   r   r–   h  r—   z/test_agg_lambda_with_timezone.<locals>.<lambda>r\   r¶   )r   rz   rÍ   r   r"   r   r`   ra   )r#   rm   rn   r   r   r   Útest_agg_lambda_with_timezone]  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Údecimalsr*   c                    s   t | ƒdkrˆ ‚| jd S r¿   )r<   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`   rb   )	rè   ré   rê   rë   r>   r#   rn   rï   rm   r   rî   r   Útest_groupby_agg_err_catchingq  s    "ÿrð   )=Ú__doc__r6   r5   Ú	functoolsr   Únumpyr   r   Zpandas.errorsr   Zpandasrz   r   r   r   r   r   r	   r
   Zpandas._testingZ_testingr`   Zpandas.io.formats.printingr   r%   r?   rN   rf   ro   rr   r   rƒ   r‡   r�   r“   r™   r    r¦   r®   rº   ÚmarkZparametrizerÅ   rÓ   rÖ   rØ   rL   rÜ   rÝ   rà   rä   rç   ÚNotImplementedErrorÚRuntimeErrorr}   Ú
IndexErrorÚOSErrorÚ
ValueErrorÚArithmeticErrorÚAttributeErrorrð   r   r   r   r   Ú<module>   s†   $	%&/	9
" þþùþ

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