3
Ud8G                 @   sb   d dl Z d dlZd dlZd dlmZ d dlZd dlj	Z
d dlmZ ddlmZ G dd deZdS )    N)is_bool_dtype)nargsort   )BaseExtensionTestsc               @   s  e Zd ZdZejj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dd Zdd Zejjdddgdd Zejjdddgdd Zejjddejd d!d"gejd#d$fd%ejd"d d!gejd#d$fgd&d' Zejjd(ddgd)d* Zejjd(ddgd+d, Zejjd(ddgd-d. Zejjd/ejd0d1 gejjdd2d1 ejgd3d4 Zejjd5dsdtgd6d7 Zejjd5dudvgd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%ejjdHddgejjdIdwd dJdKdxdygfd!d!d"d dJdKgfd dzd{d!d"d gfgdLdM Z&dNdO Z'ejjdPd"d|gdQdR Z(ejjdId}d~dggdd"dggd!d!d"ggd"dd!ggdKddgggdSdT Z)ejjdPddd!d"dKgdUdV Z*dWdX Z+dYdZ Z,d[d\ Z-d]d^ Z.d_d` Z/dadb Z0ejjdcd!d"d d"d dJggddde Z1ejjdfd e2d"dge3dhfde2 e3difd"d ge2 e3djfd e2dkdle4dmfgdndo Z5ejjd/ejejej6gdpdq Z7drS )BaseMethodsTestsz%Various Series and DataFrame methods.dropnaTFc             C   sf   |d d }|r&t j||j   }n|}tj|j|dj }tj|j|dj }| j|| d S )N
   )r   )nparrayisnapdSeriesvalue_counts
sort_indexassert_series_equal)selfZall_datar   otherresultexpected r   W/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/extension/base/methods.pytest_value_counts   s    z"BaseMethodsTests.test_value_countsc             C   sr   |d d j  }tj||j   }tj||jdjddj }tjdt	| gt	| |j
d}| j|| d S )Nr   )dtypeT)	normalizer   )index)uniquer	   r
   r   r   r   r   r   r   lenr   r   )r   datavaluesr   r   r   r   r    test_value_counts_with_normalize   s
    "z1BaseMethodsTests.test_value_counts_with_normalizec             C   s8   t jd|i}|jdd}t jddg}| j|| d S )NAcolumns)axisr   r   )r   	DataFramecountr   r   )r   data_missingdfr   r   r   r   r   
test_count+   s    zBaseMethodsTests.test_countc             C   s&   t j|}|j }d}||ks"td S )Nr   )r   r   r$   AssertionError)r   r%   serr   r   r   r   r   test_series_count1   s    
z"BaseMethodsTests.test_series_countc             C   s$   t j|jt}t|t js td S )N)r   r   applyid
isinstancer(   )r   r   r   r   r   r   test_apply_simple_series8   s    z)BaseMethodsTests.test_apply_simple_seriesc             C   s:   t j|j }t jtjdddgtjd}| j|| d S )N   r   r   )r   )r   r   argsortr	   r
   int64r   )r   data_for_sortingr   r   r   r   r   test_argsort<   s    zBaseMethodsTests.test_argsortc             C   sN   |j  }tjdddgtjdd}|jddd}|jddd}tj|| d S )	Nr/   r   r   int)r   r1   safe)Zcasting)r0   r	   r
   r   Zastypetmassert_numpy_array_equal)r   data_missing_for_sortingr   r   r   r   r   test_argsort_missing_arrayA   s
    z+BaseMethodsTests.test_argsort_missing_arrayc             C   s:   t j|j }t jtjdddgtjd}| j|| d S )Nr   r   )r   )r   r   r0   r	   r
   r1   r   )r   r8   r   r   r   r   r   test_argsort_missingI   s    z%BaseMethodsTests.test_argsort_missingc             C   sz   |j  dkst|j dks t|jddddddg}|j  dksFt|j dksVt|j  dksft|j dksvtd S )Nr   r/   r      )argmaxr(   argmintake)r   r2   r8   na_valuer   r   r   r   test_argmin_argmaxN   s    z#BaseMethodsTests.test_argmin_argmaxmethodr=   r>   c             C   s6   d}t jt|d t|d d |  W d Q R X d S )Nzattempt to get)matchr   )pytestraises
ValueErrorgetattr)r   rB   r   err_msgr   r   r   test_argmin_argmax_empty_array_   s    z/BaseMethodsTests.test_argmin_argmax_empty_arrayc          
   C   sF   d}t |j||g|jd}tjt|d t||  W d Q R X d S )Nzattempt to get)r   )rC   )type_from_sequencer   rD   rE   rF   rG   )r   rB   r   r@   rH   data_nar   r   r   test_argmin_argmax_all_nah   s    z*BaseMethodsTests.test_argmin_argmax_all_nazna_position, expectedlastr/   r   r   intp)r   firstc             C   s   t ||d}tj|| d S )N)na_position)r   r6   r7   )r   r8   rQ   r   r   r   r   r   test_nargsortr   s    	zBaseMethodsTests.test_nargsort	ascendingc             C   sJ   t j|}|j||d}|jdddg }|s:|d d d }| j|| d S )N)rS   keyr/   r   r   r:   )r   r   sort_valuesilocr   )r   r2   rS   sort_by_keyr)   r   r   r   r   r   test_sort_values~   s    
z!BaseMethodsTests.test_sort_valuesc             C   sN   t j|}|j||d}|r.|jdddg }n|jdddg }| j|| d S )N)rS   rT   r/   r   r   )r   r   rU   rV   r   )r   r8   rS   rW   r)   r   r   r   r   r   test_sort_values_missing   s    
z)BaseMethodsTests.test_sort_values_missingc             C   s`   t jdddg|d}|jddg}t jdddg|jdddgddddgd}| j|| d S )Nr   r/   )r    Br    rZ   r   )r   )r   r#   rU   r?   assert_frame_equal)r   r2   rS   r&   r   r   r   r   r   test_sort_values_frame   s
    (z'BaseMethodsTests.test_sort_values_frameboxc             C   s   | S )Nr   )xr   r   r   <lambda>   s    zBaseMethodsTests.<lambda>c             C   s   | j  S )N)r   )r^   r   r   r   r_      s    c             C   s\   ||j |d |d g}||}t|dks2tt|t|sDt|d |d ksXtd S )Nr   r   )rK   r   r(   r-   rJ   )r   r   r]   rB   Z
duplicatedr   r   r   r   test_unique   s
    zBaseMethodsTests.test_uniquena_sentinelc          	   C   s^   t j||d\}}tjdd||ddddgtjd}|jdddg}tj|| | j|| d S )N)ra   r   r   r/   )r         )	r   	factorizer	   r
   rO   r?   r6   r7   assert_extension_array_equal)r   data_for_groupingra   codesuniquesexpected_codesexpected_uniquesr   r   r   test_factorize   s    zBaseMethodsTests.test_factorizec             C   sh   t j||d\}}|j|d\}}tj|| | j|| t|tt j|ksTt|j|jksdtd S )N)ra   )	r   rd   r6   r7   re   r   r   r(   r   )r   rf   ra   Zcodes_1Z	uniques_1Zcodes_2Z	uniques_2r   r   r   test_factorize_equivalence   s    z+BaseMethodsTests.test_factorize_equivalencec             C   s^   t j|d d \}}tjg tjd}t|jg |d d jd}tj	|| | j
|| d S )Nr   )r   )r   rd   r	   r
   rO   rJ   rK   r   r6   r7   re   )r   r   rg   rh   ri   rj   r   r   r   test_factorize_empty   s
    z%BaseMethodsTests.test_factorize_emptyc             C   sH   |j ddg}tjd|i}|jd }|j|}|jj|jjk	sDtd S )Nr   r    r   )r   r   )r?   r   r#   rV   fillnar    r   r(   )r   r%   arrr&   
filled_valr   r   r   r   test_fillna_copy_frame   s
    

z'BaseMethodsTests.test_fillna_copy_framec             C   sL   |j ddg}tj|}|d }|j|}|j|jk	s:t|j|ksHtd S )Nr   r   )r?   r   r   rn   Z_valuesr(   )r   r%   ro   r)   rp   r   r   r   r   test_fillna_copy_series   s    

z(BaseMethodsTests.test_fillna_copy_seriesc          
   C   s4   d}t jt|d |j|jdg W d Q R X d S )Nz!Length of 'value' does not match.)rC   r   )rD   rE   rF   rn   r?   )r   r%   msgr   r   r   test_fillna_length_mismatch   s    z,BaseMethodsTests.test_fillna_length_mismatchc                s   |d\}}t j|}t j|}|j|dd }t jdd tt|t|D }| j|| |jd  |j dd }t j fddt|D }| j|| d S )	Nr/   c             S   s   | |kS )Nr   )x1x2r   r   r   r_      s    z2BaseMethodsTests.test_combine_le.<locals>.<lambda>c             S   s   g | ]\}}||kqS r   r   ).0abr   r   r   
<listcomp>   s    z4BaseMethodsTests.test_combine_le.<locals>.<listcomp>r   c             S   s   | |kS )Nr   )ru   rv   r   r   r   r_      s    c                s   g | ]}| kqS r   r   )rw   rx   )valr   r   rz      s    )r   r   combineziplistr   rV   )r   data_repeated
orig_data1
orig_data2s1s2r   r   r   )r{   r   test_combine_le   s    


z BaseMethodsTests.test_combine_lec                s   |d\}}t j|}t j|}|j|dd }tjdd. t j|jdd tt|t|D }W d Q R X | j|| |j	d  |j d	d }t j|j fd
dt|D }| j|| d S )Nr/   c             S   s   | | S )Nr   )ru   rv   r   r   r   r_      s    z3BaseMethodsTests.test_combine_add.<locals>.<lambda>ignore)Zoverc             S   s   g | ]\}}|| qS r   r   )rw   rx   ry   r   r   r   rz      s    z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>r   c             S   s   | | S )Nr   )ru   rv   r   r   r   r_      s    c                s   g | ]}|  qS r   r   )rw   rx   )r{   r   r   rz      s    )
r   r   r|   r	   ZerrstaterK   r}   r~   r   rV   )r   r   r   r   r   r   r   r   r   )r{   r   test_combine_add   s    

*
z!BaseMethodsTests.test_combine_addc             C   sZ   t j|d d }t j|dd dddgd}|j|}t j|d d }| j|| d S )Nr<   r/      rb   )r   )r   r   Zcombine_firstr   )r   r   rx   ry   r   r   r   r   r   test_combine_first  s
    
z#BaseMethodsTests.test_combine_firstframezperiods, indicesr<   rb   c       	      C   s   |d d }t j|dd}t j|j|dddd}|r|jddjddj|}t j|t jdgd ddj|gdd	}| j}n|j|}| j}||| d S )
Nr   r    )nameT)
allow_fillr   )rZ   rZ   )r"   )	r   r   r?   to_frameZassignshiftconcatr[   r   )	r   r   r   periodsindicessubsetr   r   comparer   r   r   test_container_shift  s    $
z%BaseMethodsTests.test_container_shiftc             C   sB   |j d}|d |d kst|d |d< |d |d ks>td S )Nr   r   )r   r(   )r   r   r   r   r   r   test_shift_0_periods"  s    
z%BaseMethodsTests.test_shift_0_periodsr   c       	      C   s   |d d }t |jrtj}ntj}y||| W n( tk
rZ   tjt| d Y nX t	j
|}|j|}t	j
|||j|}| j|| t	j|dgd d}|j|}|dkrtjddddg}ndddtjtjg}t	j||d}| j|| d S )Nr   z does not support diffg      ?)r    rZ   r   r   )r   r   operatorxorsub	ExceptionrD   skiprJ   r   r   Zdiffr   r   r#   r	   nanr[   )	r   r   r   opsr   r   r&   ry   r   r   r   	test_diff)  s&    



zBaseMethodsTests.test_diffc             C   s4   |d d }|j |}|j|dd}| j|| d S )Nr/   T)r   )r   r?   re   )r   r   r   r   r   r   r   r   r   r   test_shift_non_empty_arrayC  s    
z+BaseMethodsTests.test_shift_non_empty_arrayc             C   s*   |d d }|j |}|}| j|| d S )Nr   )r   re   )r   r   r   emptyr   r   r   r   r   test_shift_empty_arrayN  s    
z'BaseMethodsTests.test_shift_empty_arrayc             C   s8   |j d}||k	st|d d j d}||k	s4td S )Nr   r/   )r   r(   )r   r   r   r   r   r   test_shift_zero_copiesV  s    
z'BaseMethodsTests.test_shift_zero_copiesc             C   sp   |d d }|d }|j d|d}|jddddg}| j|| |j d|d}|jddddg}| j|| d S )Nrb   r   r   )
fill_valuer/   r<   )r   r?   re   )r   r   ro   r   r   r   r   r   r   test_shift_fill_value]  s    z&BaseMethodsTests.test_shift_fill_valuec          	   C   s&   t jtdd t| W d Q R X d S )Nzunhashable type)rC   )rD   rE   	TypeErrorhash)r   r   r   r   r   test_not_hashableh  s    z"BaseMethodsTests.test_not_hashablec             C   s>   t j|}|r|j }t jj|}t jj|}| j|| d S )N)r   r   r   utilZhash_pandas_objectassert_equal)r   r   as_framerx   ry   r   r   r   test_hash_pandas_object_worksm  s    
z.BaseMethodsTests.test_hash_pandas_object_worksc       
      C   s  |\}}}t |j|||g}|r,tj|}|j|dks>t|j|dddksTt|j|dksft|j|dddks|t|j|dkst|j|dddkst|j|jddg}tjddgtj	d}t
j|| tjdddg}	|j||	ddkstd S )	Nr   right)Zsider   r/   r<   )r   )sorter)rJ   rK   r   r   Zsearchsortedr(   r?   r	   r
   rO   r6   r7   )
r   r2   	as_seriesry   crx   ro   r   r   r   r   r   r   test_searchsortedv  s    

z"BaseMethodsTests.test_searchsortedc             C   sT  |d |d kst t|}|d d \}}tj|j||||g|jd}tjddddg}|rx|jdd}|j	d	d}|j
|}	tj|j||||g|jd}
|r|
jdd}
| j|	|
 tjddddg}|j||||g|jd}|rtjd|i}tjd|i}|j
||}	tj|j||||g|jd}
|rD|
jdd}
| j|	|
 d S )
Nr   r   r/   )r   TFrx   )r   r:   )r(   rJ   r   r   rK   r   r	   r
   r   Zreshapewherer   r#   )r   r   r@   r   clsrx   ry   r)   Zcondr   r   r   r   r   r   test_where_series  s0    
z"BaseMethodsTests.test_where_seriesrepeatsc             C   s   t |j|d d |jd}|r*tj|}|r:tj||n|j|}t|trX|gd n|}dd t	||D }t |j||jd}|rtj||j
j|d}| j|| d S )Nr<   )r   c             S   s"   g | ]\}}t |D ]}|qqS r   )range)rw   r^   n_r   r   r   rz     s    z0BaseMethodsTests.test_repeat.<locals>.<listcomp>)r   )rJ   rK   r   r   r   r	   repeatr-   r4   r}   r   r   )r   r   r   r   	use_numpyro   r   r   r   r   r   test_repeat  s    
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msg)r"   z'axisnegativeshapebar)Zfooz'foo'c          
   C   sB   t j||d* |r&tj||f| n|j|f| W d Q R X d S )N)rC   )rD   rE   r	   r   )r   r   r   kwargserrorrs   r   r   r   r   test_repeat_raises  s    
z#BaseMethodsTests.test_repeat_raisesc             C   s8  t |j|d gt| |jd}t |j|gt| |jd}tj||dd}tj||dd}tj||dd}|j|dkst|j|j dkst|j|dkst|j|dkst|d d j|d d dkst|d d j|d d dkst|jd dkst|dg j|d dks4td S )Nr   )r   F)Z	transposeTr/   r<   )	rJ   rK   r   r   r6   Zbox_expectedequalsr(   copy)r   r   r@   r   r]   Zdata2rL   r   r   r   test_equals  s    ""$zBaseMethodsTests.test_equalsNr:   r   r:   r   r   r:   r:   r:   r:   r   r:   r:   r:   r:   r:   r:   r:   r   r:   r:   )8__name__
__module____qualname____doc__rD   markZparametrizer   r   r'   r*   r.   r3   r9   r;   rA   rI   rM   r	   r
   r   rR   rX   rY   r\   r   r   r   r`   rk   rl   rm   rq   rr   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   dictrF   r   r   r#   r   r   r   r   r   r      sp   	*
	"

	
@@	 	!$
r   )r   Znumpyr	   rD   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr6   Zpandas.core.sortingr   baser   r   r   r   r   r   <module>   s   
