3
Ud<K                 @   s  d Z ddlZddlmZ ddlZddl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j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'd'd( Z(d)d* Z)d+d, Z*ej+j,d-e-e	j
d.dEdFdGdHiife.e	j
d.dId/d/d/gdJd0d1d1giifd2d3 e	j
d.dKdLdMdNiifd4d3 e	j
d.dOd/d/d/gdPd0d1d1giifgd5d6 Z/ej+j,d-e-e	jdQdRgd/d0gd.d7fe.e	jd/d/d/gd0d1d1ggd/d0gd.d7fd8d3 e	jdSdTgd/d0gd.d7fd9d3 e	jd/d/d/gd0d1d1ggd/d0gd.d7fgd:d; Z0d<d= Z1d>d? Z2d@dA Z3ej+j,dBe4e5e6e7e8e9e:e;gdCdD Z<dS )Uz
test all other .agg behavior
    N)partial)	DataFrameIndex
MultiIndexPeriodIndexSeries
date_rangeperiod_range)SpecificationError)pprint_thingc           	   C   sx   t tjjdtjjddddddgdddddgd} | jd}dd	 }|j|g}d
dg|_|j|}tj|| d S )N   abonetwo)data1data2key1key2r   c             S   s   | j  | j  S )N)maxmin)Zarr r   ]/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/groupby/aggregate/test_other.pypeak_to_peak*   s    z"test_agg_api.<locals>.peak_to_peakr   r   )	r   nprandomrandngroupbyaggcolumnstm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 j  |d< |jdjtj}|d |d j  |d< |jdjtj}t|t|kstd S )N   z
2012-01-01g      ?   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   r,   9   s    c             S   s   g | ]}|d  qS )r(   r   )r*   r+   r   r   r   r,   :   s    )keydatevaluec             S   s<   g | ]4}|d  |d r,t jj|d dj nd|d gqS )r   r'   z%Y-%m-%dNr(   )dtdatetimestrptimer.   )r*   rowr   r   r   r,   ?   s   c             S   s   g | ]}|d  qS )r   r   )r*   r+   r   r   r   r,   I   s    c             S   s   g | ]}|d  qS )r'   r   )r*   r+   r   r   r   r,   J   s    c             S   s   g | ]}|d  qS )r(   r   )r*   r+   r   r   r   r,   K   s    r/   weightsr.   )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jdd| d}|jddj }t|jt	sDt
t d	d
dd}ttjjt||d}ttjjt||d}tj||d}|j|jj}t| d S )Nz2012-1-1Mr)   )freqperiodsr(   )indexr   )levelz1999-01r   )startr=   r<   )s1s2)r	   r   r   r   r   r   r5   
isinstancer>   r   r8   r   Zrandr7   	from_dictmonthlist)Zprngr"   rsr>   rA   rB   r#   r   r   r   test_agg_period_indexX   s    rH   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 jd}| jd}tj|j | tj|jd| tj|jddi| tj	|j
j |d  tj	|j
jd|d  | jd
dddg jd}| jd}tj|j | tj|jd| tj|jddi| tj	|j
j |d  tj	|j
jd|d  tjddddgttddddd}tj	|j
jt| tj	|j
j | tjd
dddgttddddd}tj	|j
j | d S )NABCDz1/1/2011   H)r=   r<   )classtimer   r'   r(   r   rP   r)         rO   first   lastABCD)name)r>   rW   )r   r   locZ	set_indexr   r    r!   rS   r   assert_series_equalrP   rU   pdr   r   rF   r7   sizecount)r"   expr#   r   r   r   *test_agg_dict_parameter_cast_result_dtypesg   s.    

$$r^   c              C   s`   dd t dD } td}tj|| d}|jdd jt}|jdd j }tj	|| d S )Nc             S   s   g | ]}t jd |d dqS )i  r'   )r0   r1   )r*   r+   r   r   r   r,      s    z0test_agg_cast_results_dtypes.<locals>.<listcomp>   Zaaabbbbbbccd)XYr`   ra   )
rangerF   rZ   r   r   r   r7   r\   r    rY   )uvr"   r%   r$   r   r   r   test_agg_cast_results_dtypes   s    re   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_| jd
dg j }tj|| t ddddgddddgdddddgd	}d
|j_| jd
ddg j }tj|| d S )Nr'   r(   r)   rQ   r   )r   r   cr   g      @)r>   r   )r   rf   rf   )r   r>   rW   r   meanr    r!   )r"   r$   r%   r   r   r   test_aggregate_float64_no_int64   s    . *rh   c        	      C   s  t ddddddddgddddddddgtjjdd tjdd} | jdd	g}|d
 j }|d
 j }|d j }|d j }|d jddg}t	j
||gdd}ddg|_tj||dd |jtjtjg}t	j
||||gdd}tjd
dgddgg|_tj||dd |dd
g jtjtjg}t	j
||||gdd}tjdd
gddgg|_tj||dd |jddd}t	j
||gdd}tj||dd |jddgddgd}t	j
||||gdd}tjd
dgddgg|_d}tjt|d" |dd
g jtjtjd W d Q R X d S )Nfoobarr   r   rM   g      ?)rI   rJ   rK   rL   rI   rJ   rK   rL   r5   rg   r'   )ZaxisT)Z
check_like)rK   rL   z&Column\(s\) \['r', 'r2'\] do not exist)match)rr2)r   r   r   r   aranger   rg   r5   r   rZ   concatr   r    r!   r   Zfrom_productpytestraisesr
   )	r"   r#   Zc_meanZc_sumZd_meanZd_sumr%   r$   msgr   r   r   test_aggregate_api_consistency   s>    
rs   c              C   s   t jdddddgtdtdd} d}tjt|d, | jdjdd	d
gidddgid W d Q R X d}tjt|d" | jdddg jdd
i W d Q R X d}tjt|d | jdjjddi W d Q R X d S )Nr'   r(   r   )rI   rJ   rK   znested renamer is not supported)rk   rI   ri   r5   r   rj   r\   r   )rJ   rK   z!Column\(s\) \['ma'\] do not existrJ   rK   ma)	rZ   r   rb   rp   rq   r
   r   r   rJ   )r"   rr   r   r   r   "test_agg_dict_renaming_deprecation   s    $
&&ru   c              C   s   t ddddddddgddddddddgtjjdd tjdd} | jdd	g}d
}tjt|d |d j	dddgi W d Q R X tjt|d |d j	ddd W d Q R X d S )Nri   rj   r   r   rM   g      ?)rI   rJ   rK   rL   rI   rJ   znested renamer is not supported)rk   rL   rK   r5   std)rK   rL   )
r   r   r   r   rn   r   rp   rq   r
   r   )r"   grr   r   r   r   test_agg_compat   s     rx   c               C   s2  t ddddddddgddddddddgtjjdd tjdd} | jdd	g}d
}tjt|d& |j	dddgidddgid W d Q R X tjt|d& |j
dddgidddgid W d Q R X tjt|d |d j
tjtjd W d Q R X tjt|d |d j
tjtjd W d Q R X d S )Nri   rj   r   r   rM   g      ?)rI   rJ   rK   rL   rI   rJ   znested renamer is not supported)rk   rK   rg   r5   rL   )Zr1rm   rarv   rb)rK   rL   )result1result2)rL   r|   )r   r   r   r   rn   r   rp   rq   r
   r6   r   r5   rg   )r"   rw   rr   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 | jdj| W d Q R X d S )
N
      )r[   c             S   s    t d t | j  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   )rk   r   )r   r~   )	r   r   r   randintrp   rq   r   r   r   )r"   r   r   r   r   %test_agg_item_by_item_raise_typeerror  s    r   c              C   sB   t j } | jdd dd g}|jtj}|j }t j|| d S )Nc             S   s   | j S )N)year)r+   r   r   r   <lambda>,  s    z*test_series_agg_multikey.<locals>.<lambda>c             S   s   | j S )N)rE   )r+   r   r   r   r   ,  s    )r    ZmakeTimeSeriesr   r   r   r5   rY   )tsr#   r%   r$   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jdtjjdtjjdd} d	d
 }| jddgj|}| jddgjdd }tj|| d S )Nri   rj   r   r   ZdullZshiny   )rI   rJ   rK   rL   EFc             S   s   t | jjdkstdS )Nr   ri   )r7   valuesbaser8   )r+   r   r   r   badc  s    z.test_series_agg_multi_pure_python.<locals>.badrI   rJ   c             S   s   dS )Nri   r   )r+   r   r   r   r   h  s    z3test_series_agg_multi_pure_python.<locals>.<lambda>)r   r   r   r   r   r   r    r!   )r9   r   r%   r$   r   r   r   !test_series_agg_multi_pure_python3  sR    

r   c           
   C   s   dd } t ddddgddd	d
gtjdddtjdddtjdddtjdddgd}|jd}|j| g}|jjd |_|j| }tj|| d S )Nc             S   s   t j| j ddS )Nr'   )q)r   Z
percentileZdropna)r   r   r   r   P1o  s    z test_agg_consistency.<locals>.P1r'   r(   r)   rQ   r~            i  r   )Zcol1Zcol2r.   r.   r   )	r   r0   r.   r   r   r   Zlevelsr    r!   )r   r"   rw   r$   r%   r   r   r   test_agg_consistencyl  s    



r   c              C   s   t ddgddgdjtj} G dd d}ttjdd	 d
d	 tt| g}| jdjt}x(|D ] }| jdj|}tj	|| qbW d S )Nr'   r(   r)   rQ   )ri   rj   c               @   s   e Zd Zdd ZdS )z$test_agg_callables.<locals>.fn_classc             S   s   t |S )N)r5   )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 )N)r5   )r+   r   r   r   r     s    z$test_agg_callables.<locals>.<lambda>c             S   s   | j  S )N)r5   )r+   r   r   r   r     s    ri   )
r   Zastyper   Zint64r5   r   r   r   r    r!   )r"   r   Zequiv_callablesr$   Zecallr%   r   r   r   test_agg_callables  s    
r   c              C   s   t jdtjdddggdtjdddggdtjdddgggd	d
gd} | jd	jt}tjdddggtjdddggg}t jddgd	d}d
g}t j|||d}tj	|| d S )Nr'   r~   r      (   2   <   r(   categoryZ	arraydata)r   F   Z   )rW   )r>   r   )
rZ   r   r   arrayr   r   r5   r   r    r!   )r"   r%   Zexpected_dataZexpected_indexZexpected_columnr$   r   r   r   test_agg_over_numpy_arrays  s    $r   c              C   s   t jdddd} t jddddg| d}|jd}|d	 jd
d }t j| d d d d	d}d|j_tj	|| |d	 jdd }t jddgd	d}d|j_tj	|| |d	 jdd }t jt j
ddt j
ddgd	d}d|j_tj	|| d S )Nz
2012-01-01rQ   UTC)r=   tzr   r'   )r   r   r   r   c             S   s
   | j d S )Nr   )iloc)r+   r   r   r   r     s    z6test_agg_tzaware_non_datetime_result.<locals>.<lambda>r(   )rW   c             S   s   | j d jS )Nr   )r   r   )r+   r   r   r   r     s    i  c             S   s   | j d | j d  S )Nr'   r   )r   )r+   r   r   r   r     s    )days)rZ   r   r   r   r   r   r>   rW   r    rY   Z	Timedelta)Zdtir"   gbr%   r$   r   r   r   $test_agg_tzaware_non_datetime_result  s    
"r   c                 s  t jddd t jd fddtdD d} | jd	d
 jtjjd }| jd	d
 jdd jd }| jd	d
 j jd }| kst	| kst	| kst	dd tddD }t jd	d
gd |d} | jd}| d jd   |j
dd jd kst	 |jdd jd ks&t	 |j d jd ksBt	 |jdd jd ks`t	| d jd   |j d jd kst	 |jdd jd kst	d S )Nz2016-01-01 12:00:00z
US/Pacific)r   r'   c                s   g | ]} t j|d  qS ))minutes)r0   	timedelta)r*   nn)r   r   r   r,     s    z0test_agg_timezone_round_trip.<locals>.<listcomp>r~   )r   r   r   r   r   c             S   s
   t j| S )N)r   r   )r+   r   r   r   r     s    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:00z
US/Pacific)r   )rZ   	Timestamp)r*   ir   r   r   r,     s    r   r(   )rI   rJ   rI   rJ   c             S   s
   | j d S )Nr   )r   )r+   r   r   r   r     s    c             S   s
   | j d S )Nr'   r   )r   )r+   r   r   r   r     s    )r   r   )r   r   )rZ   r   r   rb   r   r   r   r   r   r8   ZnthheadrS   applyrU   )r"   r{   r|   Zresult3datesr#   r   )r   r   test_agg_timezone_round_trip  s(    
r   c              C   s|   t jddgddgddggtd} | d } t jd	d
dgtjd}t jddddgi|d}d|j_| jdj	 }t
j|| d S )Nr'   r(   r)   rQ   r   rR   )Zdtypel    l            l           l           l           l           l           )r>   r   )rZ   r   objectr   r   Zuint64r>   rW   r   r5   r    r!   )r"   r>   r$   r%   r   r   r   test_sum_uint64_overflow  s     r   zstructure, expectedrK   r'   r)   rQ   c             C   s   t | S )N)tuple)r+   r   r   r   r     s    r   c             C   s   t | S )N)rF   )r+   r   r   r   r     s    c          	   C   sf   t jddddddgddddddgddddddgd}|jddgj| }ddg|j_tj|| d S )Nr'   r)   rQ   )rI   rJ   rK   rI   rJ   )rZ   r   r   r6   r>   namesr    r!   )	structurer$   r"   r%   r   r   r   test_agg_structs_dataframe  s
    2r   )r>   rW   c             C   s   t | S )N)r   )r+   r   r   r   r   #  s    c             C   s   t | S )N)rF   )r+   r   r   r   r   $  s    c          	   C   sb   t jddddddgddddddgddddddgd}|jdd j| }d|j_tj|| d S )Nr'   r)   rQ   )rI   rJ   rK   rI   rK   )rZ   r   r   r6   r>   rW   r    rY   )r   r$   r"   r%   r   r   r   test_agg_structs_series  s
    2r   c             C   s   dddg}t jt jdddg|ddddgd}|jd	| d
jjtj}t jdddgt j	dddg|d	ddd}| r||dk }t
j|| d S )Nr   r   rf   )
categoriesr'   r(   r)   )rI   rJ   rI   )observedr   )r   rW   rJ   )r>   rW   )rZ   r   ZCategoricalr   rJ   r   r   Znansumr   ZCategoricalIndexr    rY   )r   r   r"   r%   r$   r   r   r   test_agg_category_nansum2  s    
"r   c              C   s   t jdd tdD dd tdD d} | jdddd}|jdd	d
 i}t jdd tdD dd tdD d}tj|| d S )Nc             S   s   g | ]}t |qS r   )str)r*   r+   r   r   r   r,   E  s    z+test_agg_list_like_func.<locals>.<listcomp>r)   )rI   rJ   rI   F)Zas_indexsortrJ   c             S   s   t | S )N)rF   )r+   r   r   r   r   H  s    z)test_agg_list_like_func.<locals>.<lambda>c             S   s   g | ]}t |qS r   )r   )r*   r+   r   r   r   r,   J  s    c             S   s   g | ]}t |gqS r   )r   )r*   r+   r   r   r   r,   J  s    )rZ   r   rb   r   r   r    r!   )r"   r#   r%   r$   r   r   r   test_agg_list_like_funcB  s    ((r   c              C   s~   t jddgt jdddt jdddgd} | jdjdd	d
 i}t jt jdddgt jdgdddgd}tj|| d S )Nr'   z
2018-01-01r   )r   z
2018-01-02)tagr.   r   r.   c             S   s
   | j dS )Nr'   )r   )er   r   r   r   Z  s    z/test_agg_lambda_with_timezone.<locals>.<lambda>)rW   )r>   r   )rZ   r   r   r   r   r   r    r!   )r"   r%   r$   r   r   r   test_agg_lambda_with_timezoneO  s    
r   err_clsc       	         s   ddl m}m}m} | d d }tjdddddgdddddg||d}tj||d |d g} fdd}|d	 j|d
 j|}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 )Nr   )r7   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   rZ   r   r   r   r   r    rY   )	r   r   r   r   r9   r"   r$   r   r%   r   )r   r   test_groupby_agg_err_catchingc  s    &r   )r'   r'   )r'   r'   r'   )r)   rQ   )r)   rQ   rQ   )r'   r'   )r)   rQ   )r'   r'   )r'   r'   r'   )r)   rQ   )r)   rQ   rQ   )r'   r'   )r)   rQ   )r'   r'   r'   )r)   rQ   rQ   )r'   r'   r'   )r)   rQ   rQ   )=__doc__r1   r0   	functoolsr   Znumpyr   rp   ZpandasrZ   r   r   r   r   r   r   r	   Zpandas._testingZ_testingr    Zpandas.core.baser
   Zpandas.io.formats.printingr   r&   r:   rH   r^   re   rh   rs   ru   rx   r}   r   r   r   r   r   r   r   r   r   markZparametrizer   rF   r   r   r   r   r   NotImplementedErrorRuntimeErrorKeyError
IndexErrorOSError
ValueErrorArithmeticErrorAttributeErrorr   r   r   r   r   <module>   sn   $	
%&/	9$$0&8