3
Ud!                 @   s  d 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 ejjddddd	d
dejdej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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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jd/d"d%ddgejjd0ed1e
d2gd3d4 Z'ejjd5dddddd	ddd6d7d8d9d:d;d<d"d%d=d>d?gd@dA Z(ejjddddd	d
dddddg
dBdC Z)dS )Dz
test cython .agg behavior
    N)	DataFrameIndexNaTSeries	Timedelta	Timestampbdate_range)	DataErrorop_namecountsumZstdvarZsemmeanmedianzignore::RuntimeWarning)Z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jdd}t|}t j|jd	d
d	df< fdd |jdgddjd} fdd|D }td|i}d|j_	 |}t
j|| |jddg}i }x,|D ]$\\}}}	 |	d |j|i |< qW t|jjdd}ddg|j_d|_	 |d }dkr8t
j|| d S )Nr      g      ?AB      )r   r   C   
   r   c                s   t |   S )N)getattr)x)r
    ^/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/groupby/aggregate/test_cython.py<lambda>+   s    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>F)Zdropnar   r   )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cat1Zcat2r#   r   )r$   r
   r   test_cythonized_aggers   s,    

r:   c              C   sd   t tjjdddtjjdddjdd} | jdd j }| jdd jtj}tj	|| d S )	Nr      2   r   bool)abr>   r?   )
r   r&   r(   randintastyper+   r   aggr.   r4   )framer9   expectedr   r   r   test_cython_agg_booleanC   s    rE   c              C   s   t tjjdddddgd d} d}tjt|d	 | jd
d j  W d Q R X t tjjdddddgd d} tjt|d	 | dg j| d
 j  W d Q R X d S )Nr   r;   r<   foobar   )r>   r?   zNo numeric types to aggregate)matchr>   r?   )	r   r&   r(   r@   pytestraisesr	   r+   r   )rC   msgr   r   r   test_cython_agg_nothing_to_aggP   s    ""rM   c           	   C   sb   t tjjdddddgd tjdddd	d
} d}tjt|d | j	dj
j  W d Q R X d S )Nr   r;   r<   rF   rG   rH   nowr1   )periodsfreq)r>   r?   dateszNo numeric types to aggregate)rI   r?   )r   r&   r(   r@   pdZ
date_rangerJ   rK   r	   r+   rQ   r   )rC   rL   r   r   r   )test_cython_agg_nothing_to_agg_with_dates\   s    
rS   c              C   sf   t dddgdddgd} | jddd	j  | jddd	j  | jddd	j  | jddd	j  d S )
Nr   r         r;   )r   yr   columns)levelr    )r   r+   r   )r6   r   r   r   test_cython_agg_frame_columnsi   s
    rY   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tjjdd} | jdd	 jd
d }tddddddddgtddgddd	d}tj	|| d S )NrF   rG   onetwothree   )r   r   r   Dr   r   c             S   s   | j  j S )N)Zvalue_countsto_dict)r   r   r   r   r   ~   s    z-test_cython_agg_return_dict.<locals>.<lambda>r   )r[   rZ   r\   r   )r-   )r,   r-   )
r   r&   r(   r)   r+   rB   r   r   r.   r4   )r6   tsrD   r   r   r   test_cython_agg_return_dicts   s    
ra   c              C   sX   t ddd} tdddddgd	 | d
}|jdd }|j }|jtj}tj|| d S )Nz1/1/2000r<   )rO   r   r   r   r^   Er   )r,   c             S   s   | j S )N)month)r   r   r   r   r      s    z&test_cython_fail_agg.<locals>.<lambda>)r   r   r+   r   rB   r&   r.   r4   )Zdrr`   r7   ZsummedrD   r   r   r   test_cython_fail_agg   s    rd   z
op, targopaddfirstc             C   s
   | j d S )Nr   )iloc)r   r   r   r   r      s    r   lastc             C   s
   | j d S )Nr   )rg   )r   r   r   r   r      s    c             C   sX   t tjjd}tjjddddjt}|j|j| }|j|j	|}t
j|| d S )Ni  r   r<   )size)r   r&   r(   r)   r@   rA   floatr+   _cython_agg_generalrB   r.   r/   )r$   targopr6   labelsr9   rD   r   r   r   test__cython_agg_general   s
    ro   c             C   s   t | dkrtj| S tjS )Nr   )lenr&   r   r'   )r   r   r   r   r      s    c             C   s   t j| ddS )Nr   )Zddof)r&   r   )r   r   r   r   r      s    c                s|   t jdddg}tddd}|jt j|d ||d}|j| }|jt j|d ||d}|j fdd	}tj|| d S )
N   r      r   7   r;   )observedc                s    | S )Nr   )r   )rm   r   r   r      s    z/test_cython_agg_empty_buckets.<locals>.<lambda>)	rR   r   ranger+   cutrl   rB   r.   r/   )r$   rm   rt   r6   grpsgr9   rD   r   )rm   r   test_cython_agg_empty_buckets   s    
ry   c             C   s   t jdddgdgd}tddd}|jt j|d || d	jd
}t jdddd}t jdddddgit j|dddd}| r||jdk }t	j
|| |jt j|d || d	jd}t jdddddgit j|dddd}| r||jdk }t	j
|| d S )Nrq   r   rr   r>   )rW   r   rH   r;   )rt   re      )rP   $   T)r-   Zordered)r,   r   r   i  )rR   r   ru   r+   rv   rl   Zinterval_rangeZCategoricalIndexr>   r.   r/   )rt   r6   rw   r9   Z	intervalsrD   r   r   r   $test_cython_agg_empty_buckets_nanops   s&    r|   r$   r5   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}|jdj| }tj|| d S )Nr   r   )r>   r?   r>   )r-   r?   )r,   )r   r   r   r+   Z	aggregater.   r/   )r$   r5   r6   r,   rD   r9   r   r   r   "test_cython_with_timestamp_and_nat   s
    r}   rB   ZohlcZcumprodZcumsumshiftanyallZquantileZrankZcumminZcummaxc             C   st   t dddddgdddddgd}d|jjd	 jj_|jd
gjd| i}|j jd
gjd| i}t	j
|| d S )Ngffffff@g@g@gffffff@g      @Zsetosa)sepal_lengthspeciesFr   r   r   )r   Z_mgrblocksvaluesflagsZ	writeabler+   rB   copyr.   Zassert_equal)rB   r6   r9   rD   r   r   r    test_read_only_buffer_source_agg   s    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|jdd |  }|j|d jdd}t|jdd |  }| dkr|jd}tj	|| d S )Nr   r   r;   r   r   rT   rU   r      r]   	   ZInt64)Zdtype)r   r   Zfloat64)r   r   )
r   rR   arrayZNAr   r+   ZassignrA   r.   r4   )r
   r6   r9   Zdf2rD   r   r   r   test_cython_agg_nullable_int  s    
*
r   )*__doc__Znumpyr&   rJ   ZpandasrR   r   r   r   r   r   r   r   Zpandas._testingZ_testingr.   Zpandas.core.groupby.groupbyr	   markZparametrizeparamfilterwarningsr:   rE   rM   rS   rY   ra   rd   r   r   r   r   r   r   r   ro   ry   r|   r}   r   r   r   r   r   r   <module>   s   $
$




!