U
    >vfK,                     @   s  d dl m Z  d dlZd dlZd dlZd dlmZ d dlmZ	 d dl
m  mZ ejejedejfejedejfejdejfejdejfejdejfejd	ejfejd
ejfejdejfejdejfejdejfejd	ejfejd
ejfejdejfejdejfejdejfejd	ejfejd
ejfejdejfejdejfejdejfejd	ejfejd
ejfgddd ZG dd dZG dd dZdS )    )datetimeN)iNaT         g       @y      @      @T )paramsc                 C   s   | j S )N)param)request r   :/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/test_take.pydtype_fill_out_dtype   s    r   c                   @   sv   e Zd Ze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S )TestTakez Incompatible type for fill_valuec                 C   s   |\}}}t jddd|}ddddg}tj|||d}|dddg |dddg k s`t|d |kspt|j|ks~tddddg}tj|||d}|ddddg || k st|j|kstd S )Nr         r   )
fill_value   	nprandomrandintastypealgostake_ndallAssertionErrordtypeselfr   r   r   Z	out_dtypedataindexerresultr   r   r   test_1d_fill_nonna/   s    
$ zTestTake.test_1d_fill_nonnac                 C   s  |\}}}t jddd|}ddddg}tj||d|d}|dddgd d f |dddgd d f k srt|dd d f |k st|j|ksttj||d|d}|d d dddgf |d d dddgf k st|d d df |k st|j|kstddddg}tj||d|d}|ddddgd d f ||d d f k s^t|j|ksnttj||d|d}|d d ddddgf |d d |f k st|j|kstd S )Nr   r      r   r   r   axisr   r   r   r   r   r   r   test_2d_fill_nonna?   s$    
4422zTestTake.test_2d_fill_nonnac                 C   s  |\}}}t jddd|}ddddg}tj||d|d}|dddgd d d d f |dddgd d d d f k s~t|dd d d d f |k st|j|ksttj||d|d}|d d dddgd d f |d d dddgd d f k st|d d dd d f |k s&t|j|ks6ttj||d|d}|d d d d dddgf |d d d d dddgf k st|d d d d df |k st|j|kstddddg}tj||d|d}|ddddgd d d d f ||d d d d f k st|j|ks*ttj||d|d}|d d ddddgd d f |d d |d d f k szt|j|ksttj||d|d}|d d d d ddddgf |d d d d |f k st|j|kstd S )Nr   r   )r%   r   r   r   r   r&   r   r   r   r   r   r   test_3d_fill_nonnaW   s2    
@"B$B$>>>zTestTake.test_3d_fill_nonnac                 C   sP   t jdt j}ddddg}t||}||}t j|d< t	
|| d S )N
   r   r   r   r   r   r   Zrandnr   Zfloat32r   r   takenantmassert_almost_equalr   arrr!   r"   expectedr   r   r   test_1d_other_dtypesy   s    

zTestTake.test_1d_other_dtypesc                 C   s   t jddt j}ddddg}tj||dd}|j|dd}t j|d< t	
|| tj||dd}|j|dd}t j|d d df< t	
|| d S )	Nr*   r%   r   r   r   r   r   r'   r+   r0   r   r   r   test_2d_other_dtypes   s    
zTestTake.test_2d_other_dtypesc                 C   sl   t jdddgtd}t|ddddg}|ddddg}t|| t|dddg}|jt j	ksht
d S )Nr   r   r   r   r   r   arrayboolr   r   r,   r.   assert_numpy_array_equalr   object_r   r   r1   r"   r2   r   r   r   test_1d_bool   s    zTestTake.test_1d_boolc                 C   s   t jdddgdddgdddggtd}t|ddddg}|jddddgdd}t|| tj|ddddgdd}|jddddgdd}t|| t|dddg}|jt j	kst
d S )Nr   r   r6   r   r4   r   r7   r<   r   r   r   test_2d_bool   s    &zTestTake.test_2d_boolc                 C   s   t jddt j}dddddg}tj||dd}|j|dd}t j|ddgd d f< t	
|| tj||dd}|j|dd}t j|d d ddgf< t	
|| d S )Nr   r   r   r   r   r   r4   r+   r0   r   r   r   test_2d_float32   s    zTestTake.test_2d_float32c                 C   s^  t jdddd }|jdd}ddd	d
d	g}tj||dd}|j|dd}t|t jddgd d f< t	
|| tj||dtdd
d
d}|j|dd}tdd
d
|ddgd d f< t	
|| tj||d
d}|j|d
d}t|t jd d ddgf< t	
|| tj||d
tdd
d
d}|j|d
d}tdd
d
|d d ddgf< t	
|| d S )Ni  iY r$   l    h] zdatetime64[ns]r6   r   r   r   r   r4   r   i  r&   )r   r   r   viewr   r   r,   r   int64r.   r/   r   r0   r   r   r   test_2d_datetime64   s&    zTestTake.test_2d_datetime64c                 C   s   t ddd}t|ddg}t dddgdd	d
gg}t|| tj|ddgddd}t dddgdddgg}t|| d S )N   r   r   r   r   r   r   	   r*      T
allow_fillr   )r   arangereshaper   r,   r8   r.   r:   r<   r   r   r   test_take_axis_0   s    zTestTake.test_take_axis_0c              	   C   s   t ddd}tj|ddgdd}t ddgdd	gd
dgddgg}t|| tj|ddgdddd}t ddgddgd
dgddgg}t|| tj	t
dd tj|ddgdddd W 5 Q R X d S )NrC   r   r   r   r   r   r4   r   r%         rD   rE   T)r'   rG   r   indices are out-of-boundsmatch)r   rH   rI   r   r,   r8   r.   r:   pytestraises
IndexErrorr<   r   r   r   test_take_axis_1   s    ""zTestTake.test_take_axis_1c              	   C   s   t dddg}t ddg}tjtdd tj||ddgd W 5 Q R X t jdddgtd	}tj||ddgd}t jddggtd	}t	|| d S )
Nr   r   r   r   zfill_value must be a scalarrN   TrF   r6   )
r   r8   rP   rQ   
ValueErrorr   r,   objectr.   r:   r0   r   r   r   !test_take_non_hashable_fill_value   s    z*TestTake.test_take_non_hashable_fill_valueN)__name__
__module____qualname__recompileZ
fill_errorr#   r(   r)   r3   r5   r=   r>   r?   rB   rJ   rS   rV   r   r   r   r   r   +   s   
"	
r   c                   @   sF   e Zd Zdd Zdd Zejdddgdd	 Zd
d Z	dd Z
dS )TestExtensionTakec              	   C   sv   t ddg}d}tjt|d tj|ddgdd W 5 Q R X d}tjt|d tj|ddgd	d W 5 Q R X d S )
Nr   r   rM   rN   r   TrG   z2index 2 is out of bounds for( axis 0 with)? size 2F)r   r8   rP   rQ   rR   r   r,   )r   r1   msgr   r   r   test_bounds_check_large  s    z)TestExtensionTake.test_bounds_check_largec              	   C   s   t jdddgt jd}dddg}d}tjt|d	 tj||d
d W 5 Q R X t||}t jdddgt jd}t	|| d S )Nr   r   r   r6   r   r   z7'indices' contains values less than allowed \(-2 < -1\)rN   Tr]   )
r   r8   rA   rP   rQ   rT   r   r,   r.   r:   )r   r1   r!   r^   r"   r2   r   r   r   test_bounds_check_small  s    
z)TestExtensionTake.test_bounds_check_smallrG   TFc              	   C   sj   t jg t jd}tj|g |d}t|| dddg}tj	t
|d tj|dg|d W 5 Q R X d S )Nr6   r]   |z.cannot do a non-empty take from an empty axes.rM   rN   r   )r   r8   rA   r   r,   r.   r:   joinrP   rQ   rR   )r   rG   r1   r"   r^   r   r   r   test_take_empty  s    z!TestExtensionTake.test_take_emptyc                 C   s:   t jtg ddgddd}tddg}t|| d S )Nr   Tg        rF   r   r,   r   r8   r.   r:   )r   r"   r2   r   r   r   test_take_na_empty)  s    z$TestExtensionTake.test_take_na_emptyc                 C   s8   dddg}t |ddg}tddg}t|| d S )Nr   r   r   r   re   r<   r   r   r   test_take_coerces_list.  s    
z(TestExtensionTake.test_take_coerces_listN)rW   rX   rY   r_   ra   rP   markZparametrizerd   rf   rg   r   r   r   r   r\      s   
r\   )r   rZ   Znumpyr   rP   Zpandas._libsr   Zpandas._testingZ_testingr.   Zpandas.core.algorithmscoreZ
algorithmsr   ZfixtureZint8Zint16Zint32Zfloat64Z
complex128r;   Zbool_r   r   r\   r   r   r   r   <module>   sF   
 U