o
    Eh-                     @   s  d dl m 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)Zparam)Zrequest r	   6lib/python3.10/site-packages/pandas/tests/test_take.pydtype_fill_out_dtype   s   r   c                   @   sl   e Z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 )TestTakec                 C   s   |\}}}t jdddd|}g d}tj|||d}|g d |g d k s/J |d |ks7J |j|ks>J g d	}tj|||d}|g d
 || k sXJ |j|ks_J d S )N   r      r   r   r   )
fill_valuer   r   r   r   r   r      r   r   r   r   r   r   r   r   	nprandomdefault_rngintegersastypealgostake_ndall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|}g d}tj||d|d}|g dd d f |g dd d f k s8J |dd d f |k sFJ |j|ksMJ tj||d	|d}|d d g df |d d g df k snJ |d d df |k s|J |j|ksJ g d
}tj||d|d}|g dd d f ||d d f k sJ |j|ksJ tj||d	|d}|d d g df |d d |f k sJ |j|ksJ d S )Nr   r      r   r   axisr   r   r   r   r   r   r   r   r!   r	   r	   r
   test_2d_fill_nonna;   s$   
00,,zTestTake.test_2d_fill_nonnac                 C   s  |\}}}t jdddd|}g d}tj||d|d}|g dd d d d f |g dd d d d f k s>J |dd d d d f |k sOJ |j|ksVJ tj||d	|d}|d d g dd d f |d d g dd d f k s}J |d d dd d f |k sJ |j|ksJ tj||d|d}|d d d d g df |d d d d g df k sJ |d d d d df |k sJ |j|ksJ g d
}tj||d|d}|g dd d d d f ||d d d d f k sJ |j|ksJ tj||d	|d}|d d g dd d f |d d |d d f k s+J |j|ks3J tj||d|d}|d d d d g df |d d d d |f k sYJ |j|ksaJ d S )Nr   r   )r(   r   r   r   r)   r   r   r   r   r   r   r   r!   r	   r	   r
   test_3d_fill_nonnaS   s2   
<"<"<"8::zTestTake.test_3d_fill_nonnac                 C   sR   t jddt j}g d}t||}||}t j	|d< t
|| d S )Nr   
   r   r   r   r   r   r   r   r   Zstandard_normalr   Zfloat32r   r   takenantmassert_almost_equalr"   arrr$   r%   expectedr	   r	   r
   test_1d_other_dtypesu   s   

zTestTake.test_1d_other_dtypesc                 C   s   t jddt j}g d}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/   r4   r	   r	   r
   test_2d_other_dtypes~   s   
zTestTake.test_2d_other_dtypesc                 C   s`   t jg dtd}t|g d}|g d}t|| t|g d}|jt j	ks.J d S )Nr   r   r   r    r   r   r   r   r   r   r   
r   arrayboolr   r   r0   r2   assert_numpy_array_equalr    object_r"   r5   r%   r6   r	   r	   r
   test_1d_bool   s   zTestTake.test_1d_boolc                 C   s   t jg dg dg dgtd}t|g d}|jg ddd}t|| tj|g ddd}|jg ddd}t|| t|g d	}|jt j	ksPJ d S )
Nr:   )r   r   r   )r   r   r   r;   r<   r   r8   r   r=   r>   rC   r	   r	   r
   test_2d_bool   s    zTestTake.test_2d_boolc                 C   s   t jddt j}g d}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   r   r   r8   r   r   r/   r4   r	   r	   r
   test_2d_float32   s   zTestTake.test_2d_float32c                 C   s^  t jddddd }|jdd}g d}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 )Nr   i  iY r'   l    h] zdatetime64[ns]r;   rF   r   r8   r   i  r   r)   )r   r   r   r   viewr   r   r0   r   int64r2   r3   r   r4   r	   r	   r
   test_2d_datetime64   s,   zTestTake.test_2d_datetime64c                 C   s   t ddd}t|ddg}t g dg dg}t|| tj|ddgddd	}t g dg d
g}t|| d S )N   r   r   r   r   r   )	   r-      T
allow_fillr   )r   r   r   )r   arangereshaper   r0   r?   r2   rA   rC   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 d    d S 1 slw   Y  d S )NrK   r   r   r   r   r   r8   r   r(         rL   rM   T)r*   rO   r   indices are out-of-boundsmatch)r   rP   rQ   r   r0   r?   r2   rA   pytestraises
IndexErrorrC   r	   r	   r
   test_take_axis_1   s   """zTestTake.test_take_axis_1c                 C   s   t g d}t ddg}tjtdd tj||ddgd W d    n1 s*w   Y  t jg dtd}tj||ddgd}t jd	dggtd}t	|| d S )
Nr   r   r   r   r   zfill_value must be a scalarrV   TrN   r;   r   )
r   r?   rX   rY   
ValueErrorr   r0   objectr2   rA   r4   r	   r	   r
   !test_take_non_hashable_fill_value   s   z*TestTake.test_take_non_hashable_fill_valueN)__name__
__module____qualname__r&   r+   r,   r7   r9   rD   rE   rG   rJ   rR   r[   r_   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   s   t ddg}d}tjt|d tj|ddgdd W d    n1 s%w   Y  d}tjt|d tj|ddgd	d W d    d S 1 sIw   Y  d S )
Nr   r   rU   rV   r   TrO   z2index 2 is out of bounds for( axis 0 with)? size 2F)r   r?   rX   rY   rZ   r   r0   )r"   r5   msgr	   r	   r
   test_bounds_check_large  s   "z)TestExtensionTake.test_bounds_check_largec                 C   s   t jg dt jd}g d}d}tjt|d tj||dd W d    n1 s*w   Y  t||}t jg dt jd}t	|| d S )	Nr\   r;   )r   r   z7'indices' contains values less than allowed \(-2 < -1\)rV   Trd   )r   r   r   )
r   r?   rI   rX   rY   r]   r   r0   r2   rA   )r"   r5   r$   re   r%   r6   r	   r	   r
   test_bounds_check_small  s   z)TestExtensionTake.test_bounds_check_smallrO   TFc                 C   s   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 d    d S 1 s9w   Y  d S )Nr;   rd   |z.cannot do a non-empty take from an empty axes.rU   rV   r   )r   r?   rI   r   r0   r2   rA   joinrX   rY   rZ   )r"   rO   r5   r%   re   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        rN   )r   r0   r   r?   r2   rA   )r"   r%   r6   r	   r	   r
   test_take_na_empty(  s   z$TestExtensionTake.test_take_na_emptyc                 C   sh   g d}d}t jt|d t|ddg}W d    n1 s w   Y  tddg}t || d S )Nr\   z0take accepting non-standard inputs is deprecatedrV   r   r   )r2   Zassert_produces_warningFutureWarningr   r0   r   r?   rA   )r"   r5   re   r%   r6   r	   r	   r
   test_take_coerces_list-  s   z(TestExtensionTake.test_take_coerces_listN)r`   ra   rb   rf   rh   rX   ZmarkZparametrizerk   rl   rn   r	   r	   r	   r
   rc      s    
rc   )r   Znumpyr   rX   Zpandas._libsr   Zpandas._testingZ_testingr2   Zpandas.core.algorithmscoreZ
algorithmsr   ZfixtureZint8Zint16Zint32Zfloat64Z
complex128rB   Zbool_r   r   rc   r	   r	   r	   r
   <module>   sF    
 U