U
    sVc.                     @   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ddgddd Zejejdfejdfejdfejdfejdfejdfejdfejdfejdfejdfejdfejdfgdd	d
 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)iNaTTF)paramsc                 C   s   | j S Nparamrequest r
   :/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/test_take.py	writeable   s    r   c                 C   s   | j S r   r   r   r
   r
   r   dtype_can_hold_na   s    r            g       @y      @      @ c                 C   s   | j S r   r   r   r
   r
   r   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_nonnaK   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_nonnas   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   float32r   r   takenantmassert_almost_equalr$   arrr&   r'   expectedr
   r
   r   test_1d_other_dtypes   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,   r0   r6   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   r2   r4   assert_numpy_array_equalr"   object_r!   r$   r7   r'   r8   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   r<   r   r:   r   r=   rB   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   r:   r0   r6   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]r<   r   r   r   r   r:   r   i  r+   )r   r   r   viewr   r   r2   r   int64r4   r5   r   r6   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   r2   r>   r4   r@   rB   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 )NrI   r   r   r   r   r   r:   r   r*         rJ   rK   T)r,   rM   r   indices are out-of-boundsmatch)r   rN   rO   r   r2   r>   r4   r@   pytestraises
IndexErrorrB   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 scalarrT   TrL   r<   )
r   r>   rV   rW   
ValueErrorr   r2   objectr4   r@   r6   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.   r9   r;   rC   rD   rE   rH   rP   rY   r\   r
   r
   r
   r   r   G   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   rS   rT   r   TrM   z2index 2 is out of bounds for( axis 0 with)? size 2F)r   r>   rV   rW   rX   r   r2   )r$   r7   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   r<   r   r   z7'indices' contains values less than allowed \(-2 < -1\)rT   Trc   )
r   r>   rG   rV   rW   rZ   r   r2   r4   r@   )r$   r7   r&   rd   r'   r8   r
   r
   r   test_bounds_check_small)  s    
z)TestExtensionTake.test_bounds_check_smallrM   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 )Nr<   rc   |z.cannot do a non-empty take from an empty axes.rS   rT   r   )r   r>   rG   r   r2   r4   r@   joinrV   rW   rX   )r$   rM   r7   r'   rd   r
   r
   r   test_take_empty5  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        rL   r   r2   r   r>   r4   r@   )r$   r'   r8   r
   r
   r   test_take_na_emptyE  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   rk   rB   r
   r
   r   test_take_coerces_listJ  s    
z(TestExtensionTake.test_take_coerces_listN)r]   r^   r_   re   rg   rV   markZparametrizerj   rl   rm   r
   r
   r
   r   rb     s   
rb   )!r   r`   Znumpyr   rV   Zpandas._libsr   Zpandas._testingZ_testingr4   Zpandas.core.algorithmscoreZ
algorithmsr   Zfixturer   Zfloat64r1   Zuint64Zuint32Zuint16Zuint8rG   Zint32Zint16Zint8rA   Zbool_r   Z
complex128r   r   rb   r
   r
   r
   r   <module>   sj   


 U