3
pdëA  ã               @   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jZ	d dl
jj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jdƒejfej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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   ú8/tmp/pip-build-7vycvbft/pandas/pandas/tests/test_take.pyÚ	writeable   s    r	   c             C   s   | j S )N)r   )r   r   r   r   Údtype_can_hold_na   s    r
   é   é€   é   g       @g      @y              @Ú c             C   s   | j S )N)r   )r   r   r   r   Údtype_fill_out_dtype)   s    r   c               @   s†   e Zd Zej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S )ÚTestTakez Incompatible type for fill_valuec       	      C   sô   |\}}t jjdddƒj|ƒ}||j_ddddg}t jd|d}tj|||d |j	|ƒ}t
j||ƒ dddd	g}t jd|d}|r¶tj|||d |j	|ƒ}t j|d< t
j||ƒ n:tjt| jd tj|||d W d Q R X |j	||d d S )
Nr   é   é   r   )Údtype)Úouté   )Úmatchéÿÿÿÿ)ÚnpÚrandomÚrandintÚastypeÚflagsr	   ÚemptyÚalgosÚtake_1dÚtakeÚtmÚassert_almost_equalÚnanÚpytestÚraisesÚ	TypeErrorÚ
fill_error)	Úselfr
   r	   r   Úcan_hold_naÚdataÚindexerr   Úexpectedr   r   r   Útest_1d_with_outK   s$    


zTestTake.test_1d_with_outc             C   sÌ   |\}}}t jjdddƒj|ƒ}ddddg}tj|||d}|dddg |dddg kjƒ s`t‚|d |kspt‚|j|ks~t‚ddddg}tj|||d}|ddddg || kjƒ sºt‚|j|ksÈt‚d S )Nr   r   r   r   )Ú
fill_valuer   r   )	r   r   r   r   r   r   ÚallÚAssertionErrorr   )r(   r   r   r.   Ú	out_dtyper*   r+   Úresultr   r   r   Útest_1d_fill_nonnag   s    
$ zTestTake.test_1d_fill_nonnac             C   s°  |\}}t jjdddƒj|ƒ}||j_ddddg}t jd|d}t jd|d}tj|||dd tj|||dd |j	|dd	}	|j	|dd	}
t
j||	ƒ t
j||
ƒ ddddg}t jd|d}t jd|d}|rRtj|||dd tj|||dd |j	|dd	}	|j	|dd	}
t j|	dd d …f< t j|
d d …df< t
j||	ƒ t
j||
ƒ nZxXt||gƒD ]H\}}tjt| jd
 tj||||d W d Q R X |j	|||d q`W d S )Nr   r   é   r   r   r   )r   )r   Úaxis)r5   )r   )r4   r   )r   r   )r4   r   r   )r   r   )r4   r   )r   r   r   r   r   r	   r   r   Útake_ndr    r!   r"   r#   Ú	enumerater$   r%   r&   r'   )r(   r
   r	   r   r)   r*   r+   Úout0Úout1Ú	expected0Ú	expected1Úir   r   r   r   Útest_2d_with_outw   s8    zTestTake.test_2d_with_outc             C   sÈ  |\}}}t jjdddƒj|ƒ}ddddg}tj||d|d}|dddgd d …f |dddgd d …f kjƒ srt‚|dd d …f |kjƒ sŽt‚|j|ksœt‚tj||d|d}|d d …dddgf |d d …dddgf kjƒ sât‚|d d …df |kjƒ s t‚|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jƒ s`t‚|j|kspt‚tj||d|d}|d d …ddddgf |d d …|f kjƒ s´t‚|j|ksÄt‚d S )	Nr   r   r4   r   r   )r5   r.   )r4   r   r   )	r   r   r   r   r   r6   r/   r0   r   )r(   r   r   r.   r1   r*   r+   r2   r   r   r   Útest_2d_fill_nonnaŸ   s$    
4422zTestTake.test_2d_fill_nonnac             C   sB  |\}}t jjdddƒj|ƒ}ddddg}t jd|d}t jd|d}t jd|d}tj|||dd tj|||dd tj|||dd |j|dd	}	|j|dd	}
|j|dd	}tj	||	ƒ tj	||
ƒ tj	||ƒ ddddg}t jd|d}t jd|d}t jd|d}|râtj|||dd tj|||dd tj|||dd |j|dd	}	|j|dd	}
|j|dd	}t j
|	dd d …d d …f< t j
|
d d …dd d …f< t j
|d d …d d …df< tj	||	ƒ tj	||
ƒ tj	||ƒ n\xZt|||gƒD ]H\}}tjt| jd
 tj||||d W d Q R X |j|||d qòW d S )Nr   r   r4   r   r   r   )r   )r   r5   )r5   )r   )r4   r   r   )r   r   r   )r4   r   r   )r4   r   r   r   )r   r   r   )r4   r   r   )r4   r   r   )r   r   r   r   r   r   r6   r    r!   r"   r#   r7   r$   r%   r&   r'   )r(   r
   r   r)   r*   r+   r8   r9   Zout2r:   r;   Z	expected2r<   r   r   r   r   Útest_3d_with_out·   sH    zTestTake.test_3d_with_outc             C   sî  |\}}}t jjdddƒj|ƒ}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jƒ s~t‚|dd d …d d …f |kjƒ s t‚|j|ks®t‚tj||d|d}|d d …dddgd d …f |d d …dddgd d …f kjƒ st‚|d d …dd d …f |kjƒ 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jƒ sŠt‚|d d …d d …df |kjƒ s®t‚|j|ks¾t‚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jƒ 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jƒ szt‚|j|ksŠt‚tj||d|d}|d d …d d …ddddgf |d d …d d …|f kjƒ sÚt‚|j|ksêt‚d S )
Nr   r   r4   r   r   r   )r5   r.   )r4   r   r   r   )	r   r   r   r   r   r6   r/   r0   r   )r(   r   r   r.   r1   r*   r+   r2   r   r   r   Útest_3d_fill_nonnaê   s2    
@"B$B$>>>zTestTake.test_3d_fill_nonnac             C   sP   t jjdƒjt jƒ}ddddg}tj||ƒ}|j|ƒ}t j|d< t	j
||ƒ d S )Né
   r   r   r   r   r   )r   r   Úrandnr   Úfloat32r   r   r    r#   r!   r"   )r(   Úarrr+   r2   r,   r   r   r   Útest_1d_other_dtypes  s    

zTestTake.test_1d_other_dtypesc             C   s–   t jjddƒjt jƒ}ddddg}tj||dd}|j|dd}t j|d	< t	j
||ƒ tj||dd}|j|dd}t j|d d …d
f< t	j
||ƒ d S )NrA   r4   r   r   r   r   )r5   r   r   r   )r   r   rB   r   rC   r   r6   r    r#   r!   r"   )r(   rD   r+   r2   r,   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j|ddddgƒ}|jddddgƒ}tj||ƒ tj|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_r0   )r(   rD   r2   r,   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j|ddddgƒ}|jddddgdd}tj||ƒ tj|ddddgdd}|jddddgdd}tj||ƒ tj|dddgƒ}|jt j	ks¸t
‚d S )Nr   r   )r   r   )r5   r   )r   rG   rH   r   r6   r    r!   rI   r   rJ   r0   )r(   rD   r2   r,   r   r   r   Útest_2d_bool0  s    &zTestTake.test_2d_boolc             C   s$  t jjddƒjt jƒ}dddddg}tj||dd}t j|ƒ}tj||d|d tj	||ƒ |j
|dd}t j|ddgd d …f< tj	||ƒ t jt|ƒ|jd fdd	}tj|||d
 tj||dd}t j|ƒ}tj||d|d tj	||ƒ |j
|dd}t j|d d …ddgf< tj	||ƒ d S )Nr   r   r   r   r   )r5   )r5   r   rC   )r   )r   r   r   )r   r   rB   r   rC   r   r6   Ú
empty_liker!   r"   r    r#   r   ÚlenÚshape)r(   rD   r+   r2   Úresult2r,   r   r   r   r   Útest_2d_float32>  s$    

zTestTake.test_2d_float32c          	   C   s  t jjdddƒd }|jdd}dd	dd
dg}tj||dd}t j|ƒ}tj||d|d tj||ƒ |j	|dd}t
|jt jƒd	dgd d …f< tj||ƒ tj||dtdd
d
ƒd}t j|ƒ}tj|||dtdd
d
ƒd tj||ƒ |j	|dd}tdd
d
ƒ|d	dgd d …f< tj||ƒ tj||d
d}t j|ƒ}tj||d
|d tj||ƒ |j	|d
d}t
|jt jƒd d …d	dgf< tj||ƒ tj||d
tdd
d
ƒd}t j|ƒ}tj|||d
tdd
d
ƒd tj||ƒ |j	|d
d}tdd
d
ƒ|d d …d	dgf< tj||ƒ d S )Ni Š¨ iàY­ r4   r   l    hí] zdatetime64[ns])r   r   r   r   )r5   )r5   r   r   i×  )r5   r.   )r   r5   r.   )r4   r   r   r   )r   r   r   Úviewr   r6   rM   r!   r"   r    r   Úint64r   )r(   rD   r+   r2   rP   r,   r   r   r   Útest_2d_datetime64Z  sB    



zTestTake.test_2d_datetime64c             C   sˆ   t jdƒjddƒ}tj|ddgƒ}t jdddgddd	ggƒ}tj||ƒ tj|ddgd
dd}t jdddgdddggƒ}tj||ƒ d S )Né   r   r   r   r   r   é	   rA   é   T)Ú
allow_fillr.   r   r   )r   ÚarangeÚreshaper   r    rG   r!   rI   )r(   rD   r2   r,   r   r   r   Útest_take_axis_0Š  s    zTestTake.test_take_axis_0c             C   sÐ   t jdƒjddƒ}tj|ddgdd}t jddgddgd	d
gddggƒ}tj||ƒ tj|ddgdddd}t jddgddgd	dgddggƒ}tj||ƒ tj	t
dd tj|ddgdddd W d Q R X d S )NrU   r   r   r   r   )r5   r   r4   é   é   rV   rW   T)r5   rX   r.   zindices are out-of-bounds)r   r   r   )r   rY   rZ   r   r    rG   r!   rI   r$   r%   Ú
IndexError)r(   rD   r2   r,   r   r   r   Útest_take_axis_1•  s    ""zTestTake.test_take_axis_1N)Ú__name__Ú
__module__Ú__qualname__ÚreÚcompiler'   r-   r3   r=   r>   r?   r@   rE   rF   rK   rL   rQ   rT   r[   r_   r   r   r   r   r   G   s   
(3"	
0r   c               @   sF   e Zd Zdd„ Zdd„ Zejjdddgƒdd	„ ƒZd
d„ Z	dd„ Z
dS )ÚTestExtensionTakec             C   sv   t jddgƒ}d}tjt|d tj|ddgdd W d Q R X d}tjt|d tj|ddgd	d W d Q R X d S )
Nr   r   zindices are out-of-bounds)r   r   T)rX   z2index 2 is out of bounds for( axis 0 with)? size 2F)r   rG   r$   r%   r^   r   r    )r(   rD   Ú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 d Q R X tj||ƒ}t jdddgt jd}tj	||ƒ d S )Nr   r   r   )r   r   z7'indices' contains values less than allowed \(-2 < -1\))r   T)rX   r   éþÿÿÿ)
r   rG   rS   r$   r%   Ú
ValueErrorr   r    r!   rI   )r(   rD   r+   rf   r2   r,   r   r   r   Útest_bounds_check_small³  s    
z)TestExtensionTake.test_bounds_check_smallrX   TFc             C   s`   t jg t jd}tj|g |d}tj||ƒ d}tjt	|d tj|dg|d W d Q R X d S )N)r   )rX   zHcannot do a non-empty take from an empty axes.|indices are out-of-bounds)r   r   )
r   rG   rS   r   r    r!   rI   r$   r%   r^   )r(   rX   rD   r2   rf   r   r   r   Útest_take_empty¿  s    z!TestExtensionTake.test_take_emptyc             C   s:   t jtjg ƒddgddd}tjddgƒ}tj||ƒ d S )Nr   Tg        )rX   r.   r   r   )r   r    r   rG   r!   rI   )r(   r2   r,   r   r   r   Útest_take_na_emptyÍ  s    z$TestExtensionTake.test_take_na_emptyc             C   s8   dddg}t j|ddgƒ}tjddgƒ}tj||ƒ d S )Nr   r   r   r   )r   r    r   rG   r!   rI   )r(   rD   r2   r,   r   r   r   Útest_take_coerces_listÒ  s    
z(TestExtensionTake.test_take_coerces_listN)r`   ra   rb   rg   rj   r$   ÚmarkZparametrizerk   rl   rm   r   r   r   r   re   ¥  s
   re   y      @      @y      @      @y      @      @y      @      @)!r   rc   Únumpyr   r$   Zpandas._libsr   Zpandas._testingZ_testingr!   Zpandas.core.algorithmsÚcoreZ
algorithmsr   Zfixturer	   Zfloat64rC   Zuint64Zuint32Zuint16Zuint8rS   Zint32Zint16Zint8rJ   Zbool_r
   Z
complex128r   r   re   r   r   r   r   Ú<module>   s^   
  `