a
    ç´«jÆ’  ã                   @   s|   d Z ddlZddlmZmZmZmZmZmZm	Z	 ddl
mZ ddlmZmZmZmZ ddlZG dd„ dƒZG dd	„ d	ƒZdS )
z-Test functions for 1D array set operations.

é    N)Úediff1dÚintersect1dÚsetxor1dÚunion1dÚ	setdiff1dÚuniqueÚisin)Ú	AxisError)Úassert_array_equalÚassert_equalÚassert_raisesÚassert_raises_regexc                   @   s@  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
dejg d¢ejd�dejdfejg d¢ejd�ejg d¢ejd�ddfejg d¢ejd�ejejdfg¡dd„ ƒZej	 
dejg d¢ejd�ddejg d¢ejd�fejg d¢ejd�ejdgejd�dejg d¢ejd�fejg d¢ejd�ddejg d¢ejd�fejg d¢ejd�ddejg d¢ejd�fg¡d d!„ ƒZej	 
d"g d#¢¡d$d%„ ƒZej	 
d"g d#¢¡d&d%„ ƒZd'd(„ Zej	 
d"g d#¢¡d)d*„ ƒZd+d,„ Zej	 
d"g d#¢¡d-d.„ ƒZej	 
d"dd/g¡d0d1„ ƒZd2d3„ Zej	 
d4ejejfejejfejejfejejfejejfejejfejejfg¡ej	 
d"g d#¢¡d5d6„ ƒƒZ ej	 
d7ejd8d9gejd�ejd:d;gejd�g¡ej	 
d"g d#¢¡d<d=„ ƒƒZ!ej	 
d"g d#¢¡d>d?„ ƒZ"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRdS„ Z,dTdU„ Z-dS )VÚ
TestSetOpsc                 C   s”   t  g d¢¡}t  g d¢¡}t  g d¢¡}t||dd�}t||ƒ t  g d¢¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )N©é   é   é   é   ©r   é   é   r   r   )r   r   r   T©Úassume_unique)r   r   r   r   r   )r   r   r   r   r   r   r   )ÚnpÚarrayr   r
   )ÚselfÚaÚbÚecÚcZed© r    ú_/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/lib/tests/test_arraysetops.pyÚtest_intersect1d   s    


zTestSetOps.test_intersect1dc                 C   sL   G dd„ dƒ}|ƒ }t ||ƒ}t||ƒ t g d¢g d¢ƒ}t|g d¢ƒ d S )Nc                   @   s   e Zd Zddd„ZdS )z4TestSetOps.test_intersect1d_array_like.<locals>.TestNc                 S   s
   t  d¡S )Nr   )r   Úarange)r   ÚdtypeÚcopyr    r    r!   Ú	__array__&   s    z>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__)NN)Ú__name__Ú
__module__Ú__qualname__r&   r    r    r    r!   ÚTest%   s   r*   ©r   r   r   )r   r
   )r   r*   r   Úresr    r    r!   Útest_intersect1d_array_like#   s    

z&TestSetOps.test_intersect1d_array_likec                 C   sÜ  t  g d¢¡}t  g d¢¡}t||ddd�\}}}t  g d¢¡}t||ƒ t|| |ƒ t|| |ƒ t  g d¢¡}t  g d¢¡}t||dd�\}}}t  g d¢¡}t||ƒ t|| |ƒ t|| |ƒ t  g d	¢g d
¢g¡}t  g d¢g d¢g¡}t||ddd�\}}}t  ||j¡}t  ||j¡}	t  g d¢¡}
t|
|| ƒ t|
||	 ƒ t  g d¢g d¢g¡}t  g d¢g d¢g¡}t||dd�\}}}t  ||j¡}t  ||j¡}	t  g d¢¡}
t|
|| ƒ t|
||	 ƒ d S )N©r   r   r   r   )r   r   r   é   T)r   Úreturn_indices)r   r   r   )r   r   r   r   r   r   r   )r   é   r   r   r   r   r   r   )r0   )r   r   r   r/   )r   r1   r   é   )r   r   r   r/   )é
   é   r1   é	   )r   r/   r   r1   )r   r   r   r/   r/   )r   r   r1   r   r   )r   r   r   r   )r3   r4   r1   r   )r   r   r1   )r   r   r   r
   Zunravel_indexÚshape)r   r   r   r   Úi1Úi2ÚeeZefZui1Zui2Zear    r    r!   Útest_intersect1d_indices/   s<    

z#TestSetOps.test_intersect1d_indicesc                 C   sÎ   t  g d¢¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ t  g d¢¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ t  g d¢¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )	Nr   r   )r   r   r   r+   )r/   r   r   )r   r   r   r   r   r/   )r   r1   r   r   )r/   r   r   r1   )r   r   r   r
   ©r   r   r   r   r   r    r    r!   Útest_setxor1dV   s     





zTestSetOps.test_setxor1dc                 C   s,  t  g ¡}t  dg¡}t  ddg¡}tg t|ƒƒ tdgt|dd�ƒ tdgt|dd�ƒ tddgt|ddd�ƒ tg t|ƒƒ tdgt|ƒƒ tg d¢t|d	d
d�ƒ tg d¢t|ddgd	dgd�ƒ tdd
gt|d
d�ƒ tg d¢t|d	dgd�ƒ td	dgt|d	d�ƒ tg d¢t|ddgd�ƒ d S )Nr   r   r   )Úto_begin)Úto_endéÿÿÿÿ)r=   r>   )r   r   r5   r   r5   )r   r/   r   r   r1   r   r/   r1   )r   r   r1   )r   r/   r   )r   r   r
   r   )r   Z	zero_elemZone_elemZtwo_elemr    r    r!   Útest_ediff1dn   s"    
ÿzTestSetOps.test_ediff1dzary, prepend, append, expectedr+   ©r$   Nr>   )r   r   r   r=   )ç      ð?g      @g      "@c                 C   sF   d  |¡}tt|ƒ� t|||d� W d   ƒ n1 s80    Y  d S )Nz dtype of `{}` must be compatible©Úaryr>   r=   )Úformatr   Ú	TypeErrorr   )r   rD   ÚprependÚappendÚexpectedÚmsgr    r    r!   Ú!test_ediff1d_forbidden_type_casts�   s    
þz,TestSetOps.test_ediff1d_forbidden_type_castszary,prepend,append,expectedi   i  )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   é÷ÿÿÿ)r   r   r   rL   c                 C   s.   t j|||d�}t||ƒ |j|jks*J ‚d S )NrC   )r   r   r   r$   )r   rD   rG   rH   rI   Úactualr    r    r!   Útest_ediff1d_scalar_handling¤   s    þ
z'TestSetOps.test_ediff1d_scalar_handlingÚkind)NÚsortÚtablec                    s†  dd„ }t j|tgdhd�‰ ‡ ‡fdd„}t  d¡ g d¢¡}t  g d	¢g d
¢g d¢g¡}|||ƒ ddg}d}|||ƒ t  d¡}|||ƒ |||ƒ |||ƒ |d|ƒ ||dƒ |ddƒ ˆdkrêg }	||	|ƒ |||	ƒ ||	|	ƒ tt jt jfD ]ˆ}
ˆdk�r|
t jk�rqø|
t jt jhv �r:t jg d	¢|
d�}n|
thv �rTt  g d¢¡}t jg |
d�}|||ƒ |||ƒ |||ƒ qød S )Nc                 S   s   t  |¡ ¡  ¡ }| |v S )N)r   ÚasarrayÚflattenÚtolist)r   r   r    r    r!   Ú
_isin_slowÉ   s    z(TestSetOps.test_isin.<locals>._isin_slowr   )ZotypesÚexcludedc                    s&   t | |ˆd�}ˆ | |ƒ}t||ƒ d S )N©rO   )r   r
   )r   r   ÚxÚy©Z	isin_slowrO   r    r!   Úassert_isin_equalÎ   s    
z/TestSetOps.test_isin.<locals>.assert_isin_equalé   ©r   r   r   )r3   é   é   )r   r   r   )é   é   é!   )r5   r1   )r   r/   )r5   r   r   r   r/   rQ   rA   ©TFF)r   Z	vectorizeÚboolr#   Úreshaper   Úint64Úfloat64)r   rO   rU   r[   r   r   r   ÚdÚfrX   r$   ÚarZempty_arrayr    rZ   r!   Ú	test_isinÇ   s@    













zTestSetOps.test_isinc                 C   sJ  dD �]ä}g d¢}g d¢| }t  g d¢¡}t||d|d�}t||ƒ d|d< t  g d	¢¡}t||d|d�}t||ƒ d
\|d< |d< t  g d¢¡}t||d|d�}t||ƒ t  g d¢¡}g d¢| }g d¢}t|||d�}t||ƒ |g d¢|  }g d¢}t|||d�}t||ƒ t  g d¢¡}t  g d¢| ¡}t  g d¢¡}t|||d�}t||ƒ t  g d¢¡}t  g d¢| ¡}t  g d¢¡}t|||d�}t||ƒ t  ddg¡}t  ddg| ¡}t  ddg¡}t|||d�}t||ƒ qt  dg¡}t  dg¡}t  dg¡}t|||d�}t||ƒ |dv �rFttg g |d�g ƒ d S )N©r   r3   r   r   ©TFTTT)r   rO   r1   r   )FFTT)r   r1   r   )TFTF©r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   )FTFTTTTTTFTFFFrW   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   NrP   ©r   r   r   r
   )r   rO   Úmultr   r   r   r   r    r    r!   rk     sZ    









c                 C   sB   t  g d¢¡}t  ddg¡}t  g d¢¡}t||ƒ}t||ƒ d S )N)r   r   r   rh   Úer   rq   r   r   r   )TFTFFTFFro   r;   r    r    r!   Útest_isin_char_array?  s
    
zTestSetOps.test_isin_char_arrayc              	   C   s¶   dD ]D}t  g d¢¡}g d¢| }tt  t|||d�¡t||d|d�ƒ q|dv r²dD ]Z}t jg d¢t jd�}g d¢| }t j|t jd�}tt  t|||d�¡t||d|d�ƒ qVd	S )
zTest isin's invert parameterrl   rn   r]   rW   T©ÚinvertrO   >   NrP   rA   N)r   r   r
   rt   r   Úfloat32)r   rO   rp   r   r   r    r    r!   Útest_isin_invertH  s     ÿ
ÿÿzTestSetOps.test_isin_invertc                 C   s¶   t jg d¢t jd�}t jg d¢t jd�}t jg d¢td�}t|t||ƒƒ tt  |¡t||dd�ƒ t jg d¢t jd�}t jg d¢t jd�}t  g d	¢¡}t||dd
�}t||ƒ dS )z(Hit the standard isin code with integers)r   r   r   r   r   r   ç    eÍÍArA   )r   r   r   rw   )r   r   r   r   r   r   r   T©rt   r   )r   r   r   r   r   rw   rm   r   N)r   r   rf   rd   r
   r   rt   )r   r   r   rI   r   r   r    r    r!   Ú!test_isin_hit_alternate_algorithm]  s    z,TestSetOps.test_isin_hit_alternate_algorithmc                 C   s^   t  ddg¡}t  g d¢¡}t  ddg¡}t|t|||d�ƒ tt  |¡t||d|d�ƒ dS )z&Test that isin works for boolean inputTF)FFFrW   rs   N)r   r   r
   r   rt   )r   rO   r   r   rI   r    r    r!   Útest_isin_booleanm  s    ÿ
ÿzTestSetOps.test_isin_booleanrP   c                 C   sb   t j d¡}|jdddd�}|jdddd�}t||ƒ}| d¡}| d¡}t|t|||d�ƒ dS )z(Test that isin works for timedelta inputr   éd   r3   )Úsizeútimedelta64[s]rW   N)r   ÚrandomZRandomStateÚrandintr   Úastyper
   )r   rO   Zrstater   r   ÚtruthZa_timedeltaZb_timedeltar    r    r!   Útest_isin_timedeltax  s    


zTestSetOps.test_isin_timedeltac                 C   sR   t jg d¢dd�}|}t t¡� t||dd� W d   ƒ n1 sD0    Y  d S )N©r   r   r   r}   rA   rQ   rW   )r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r   r   r   r    r    r!   Útest_isin_table_timedelta_failsƒ  s    z*TestSetOps.test_isin_table_timedelta_failszdtype1,dtype2c           	      C   sÎ   t  |t j¡}t jg d¢|d�}|r8t jg d¢|d�}nt jg d¢|d�}t  g d¢¡}|dkor|t jkor|t jk}|r¶tjtdd�� t	|||d	� W d
  ƒ qÊ1 sª0    Y  nt
t	|||d	�|ƒ d
S )z7Test that isin works as expected for mixed dtype input.)r   r   r   r   rA   )i€ÿÿÿr   é   )r‰   r   éÿ   )TTFFrQ   zexceed the maximum)ÚmatchrW   N)r   Z
issubdtypeZsignedintegerr   Úint16Úint8r„   r…   ÚRuntimeErrorr   r
   )	r   Zdtype1Zdtype2rO   Zis_dtype2_signedÚar1Úar2rI   Zexpect_failurer    r    r!   Útest_isin_mixed_dtypeŠ  s    ÿ.z TestSetOps.test_isin_mixed_dtypeÚdatal            l           lûÿÿÿ         lûÿÿÿ        c                 C   sT   |d }t j|||d�}t|ddgƒ | t j¡}t j|||d�}t|ddgƒ dS )z>Test values outside intp range (negative ones if 32bit system)r   rW   FTN)r   r   r
   r€   Úint32)r   rO   r’   Úqueryr,   r    r    r!   Útest_isin_mixed_huge_vals¬  s    z$TestSetOps.test_isin_mixed_huge_valsc                 C   sŽ   t jd D ]~}t jg d¢td�}t jg d¢|d�}t jg d¢td�}tt|||d�|ƒ || }}t jg d¢td�}tt|||d�|ƒ q
dS )	z4Test that isin works as expected for bool/int input.Ú
AllIntegerrc   rA   ©r   r   r   r   )FTTrW   )TTTTN)r   Ú	typecodesr   rd   r
   r   )r   rO   r$   r   r   rI   r    r    r!   Útest_isin_mixed_boolean¼  s    
z"TestSetOps.test_isin_mixed_booleanc                 C   s<   d g}t  dgd ¡}t  dg¡}t  ||¡}t||ƒ d S ©Nr   r3   Fro   ©r   r�   r�   rI   Úresultr    r    r!   Útest_isin_first_array_is_objectÉ  s
    z*TestSetOps.test_isin_first_array_is_objectc                 C   s:   d}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S rš   ro   r›   r    r    r!   Ú test_isin_second_array_is_objectÐ  s
    z+TestSetOps.test_isin_second_array_is_objectc                 C   s<   d g}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S )Nr3   Tro   r›   r    r    r!   Ú test_isin_both_arrays_are_object×  s
    z+TestSetOps.test_isin_both_arrays_are_objectc                 C   s`   t  dtfdtfg¡}t jdg|d�}t jdgd |d�}t  dg¡}t  ||¡}t||ƒ d S )NZfield1Zfield2)r   NrA   r3   T)r   r$   ÚintÚobjectr   r   r
   )r   Údtr�   r�   rI   rœ   r    r    r!   Ú+test_isin_both_arrays_have_structured_dtypeÞ  s    z6TestSetOps.test_isin_both_arrays_have_structured_dtypec                 C   s`  t jddgtd�}t jddgtd�}t  ddg¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ t jg d¢td�}|d d… }t jg d¢td�}|d d… }t  ddg¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ t jg d¢td�}|d d… }t jddgtd�}t  dd	g¡}t  ||¡}t||ƒ t j||dd�}t|t  |¡ƒ d S )
N©r   r   rA   Trx   )r¤   )r   r   r   r?   )r¤   ©r   r   r   F)r   r   r¡   r   r
   rt   r›   r    r    r!   Ú'test_isin_with_arrays_containing_tuplesè  s0    


z2TestSetOps.test_isin_with_arrays_containing_tuplesc                 C   s  t  g d¢¡}t  g d¢¡}ttt||dd� t jg d¢td�}t jg d¢td�}ttt||dd� t jt jfD ]Ž}t jg d¢|d�}t jd	t  |¡j	g|d�}tt
t||dd� t j||d
d�}t|dgdgd  ƒ t j||dd�}t|dgdgd  ƒ qpd
S )z&Test that isin raises expected errors.)r   r   r   r   r   )r   r   r/   r1   r3   Z	quicksortrW   )r   r   r   r   r   rA   rQ   )r?   r   r   r   r   r?   NTFr   rP   )r   r   r   r†   r   r¡   r“   rf   ZiinfoÚmaxrŽ   r
   )r   r�   r�   Zobj_ar1Zobj_ar2r$   Zoverflow_ar2rœ   r    r    r!   Útest_isin_errors	  s"    þzTestSetOps.test_isin_errorsc           	      C   s˜   t  g d¢¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ t  g d¢g d¢g¡}t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ tg tg g ƒƒ d S )N)r   r   r   r   r   ©r   r   r   r   r   r   r   )r   r   r   r   r   r   rƒ   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r
   )	r   r   r   r   r   rX   rY   ZezÚzr    r    r!   Útest_union1d+  s    



zTestSetOps.test_union1dc                 C   sª   t  g d¢¡}t  g d¢¡}t  ddg¡}t||ƒ}t||ƒ t  d¡}t  d¡}t  ddg¡}t||ƒ}t||ƒ tg tg g ƒƒ t  dt j¡}tt|g ƒjt jƒ d S )	N)r/   r   r   r   r   r   r   r   r©   r/   r   é   é   r^   r    )r   r   r   r
   r#   Zuint32r   r$   r;   r    r    r!   Útest_setdiff1d=  s    





zTestSetOps.test_setdiff1dc                 C   sF   t  g d¢¡}t  g d¢¡}t  ddg¡}t||dd�}t||ƒ d S )N)r   r   r   )r   r   r   r   r   Tr   )r   r   r   r   )r   r   r   rI   rM   r    r    r!   Útest_setdiff1d_uniqueO  s
    z TestSetOps.test_setdiff1d_uniquec                 C   s8   t  g d¢¡}t  g d¢¡}tt||ƒt  dg¡ƒ d S )N)r   r   r   )r   r   Úsr   )r   r   r
   r   r‡   r    r    r!   Útest_setdiff1d_char_arrayV  s    z$TestSetOps.test_setdiff1d_char_arrayc                 C   sR   t  g d¢¡}t  g d¢¡}t||ƒ}t||ƒ}t||ƒ}t||ƒ}t||ƒ d S )N)r   r   r   r   r1   )r5   r1   r   r   r   r   r   )r   r   r   r   r   r   r
   )r   r   r   Úc1Zaux1Zaux2Úc2r    r    r!   Útest_manyways[  s    



zTestSetOps.test_manyways).r'   r(   r)   r"   r-   r:   r<   r@   r„   ÚmarkÚparametrizer   r   rf   Únanru   r�   rK   rŒ   rg   r“   rN   rk   rr   rv   ry   rz   r‚   rˆ   Úuint8Zuint16Zuint64r‘   r•   r™   r�   rž   rŸ   r£   r¦   r¨   r«   r®   r¯   r±   r´   r    r    r    r!   r      sº   'ýýýî
ýýýýóþ

9
=	











ùþþ

!"r   c                   @   s˜   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	d
dg¡dd„ ƒZ
ej 	d	g d¢¡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 ) Ú
TestUniquec                 C   st  dd„ }g d¢d }g d¢}g d¢}g d¢d }t  g d¢d¡}g }| t jd	 ¡ | t jd
 ¡ | d¡ | d¡ |D ].}t  ||¡}	t  ||¡}
||	|
||||ƒ q|d}t  t|ƒ|¡}	||	d d …< t  t|ƒ|¡}
||
d d …< ||	|
||||ƒ ddg}t  tt	||ƒƒ|¡}	t  tt	||ƒƒ|¡}
||	|
||||ƒ g d¢}	t
t  |	¡ddgƒ g d¢}g d¢}ddgddgddgg}t|ƒ}t
||ƒ t|dd�\}}t
||ƒ t
||ƒ t j d¡}d|d< t j|dd�\}}t
|t  d¡ƒ g }t j|dd�d }t j|dd�d }t j|ddd�dd … \}}t|jt jƒ t|jt jƒ t|jt jƒ t|jt jƒ dt jdt jg}ddt jg}g d ¢}g d!¢}g d"¢}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd#�||fƒ d$t jd%td&t jƒtdt jƒg}d%d$td&t jƒg}g d'¢}g d(¢}g d)¢}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd#�||fƒ t  d*¡}t  d+¡|t  d,¡|g}t  d,¡t  d+¡|g}g d ¢}g d!¢}g d"¢}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd#�||fƒ t  d*¡}t  dd-¡|t  dd.¡|g}t  dd.¡t  dd-¡|g}g d ¢}g d!¢}g d"¢}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd#�||fƒ t jgd/ }t jg}dg}g d0¢}d/g}tt  |¡|ƒ tt j|dd�||fƒ tt j|dd�||fƒ tt j|dd#�||fƒ d S )1Nc                 S   sè  d}|  d|¡}t| ƒ}t|||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}	t|||ƒ t|	||ƒ |  d|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d	|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d
|¡}t| dddƒ\}}
}t|||ƒ t|
||ƒ t|||ƒ |  d|¡}t| dddƒ\}}
}}t|||ƒ t|
||ƒ t|||ƒ t|||ƒ d S )Nzcheck {0} failed for type {1}ÚvaluesÚreturn_indexTFÚreturn_inverseÚreturn_countszreturn_index and return_inversezreturn_index and return_countsz return_inverse and return_countsz.return_index, return_inverse and return_counts)rE   r   r
   )r   r   r7   r8   r   r¢   Zbase_msgrJ   ÚvÚjZj1Zj2Zj3r    r    r!   Ú	check_allj  sN    ÿz,TestUnique.test_unique_1d.<locals>.check_all)r   r   r   r   r   r   r   r3   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r–   ÚAllFloatúdatetime64[D]útimedelta64[D]ÚO)Ú Úi)ù      ð?        ù      ð?      ð¿r   rÈ   rÇ   )©r   r   rÉ   r¥   r+   r   r   r   T©r¼   r   rÅ   .)r»   )r»   r¼   g       @rB   )r   r   r   )r   r   r   r   )r   r   r   )r½   y       @      ð¿y      ð?      ð?ç        )r   r   r   )r   r   r   r   r   )r   r   r   Únatz
2020-12-26z
2020-12-24ÚDÚhr   r—   )r   ÚmultiplyÚextendr˜   rH   r   ÚemptyÚlenÚlistÚzipr
   r   ÚcharZ	chararrayZzerosr   r$   Zintpr·   ÚcomplexZ
datetime64Ztimedelta64)r   rÀ   r   r   r7   r8   r   Útypesr¢   ZaaZbbÚunqÚinvZa1Za2Za2_invZa1_idxZa3_idxZa3_invZuaZua_idxZua_invZua_cntrÌ   Zall_nansr    r    r!   Útest_unique_1dh  sÄ    0




ÿÿ 

zTestUnique.test_unique_1dc                 C   sX   t t| jtƒ t t| jdtfdtfgƒ t ttt d¡dd� t ttt d¡dd� d S )Nr   r   r3   r   ©Úaxiséþÿÿÿ)	r   rF   Ú_run_axis_testsr¡   r    r	   r   r   r#   )r   r    r    r!   Útest_unique_axis_errors  s    ÿz"TestUnique.test_unique_axis_errorsc                 C   sZ   d}g d¢g d¢g}t  |¡}tt|dd�t|dd�|ƒ tt|dd�t|dd�|ƒ d S )NzUnique failed on list of lists©r   r   r   r   rÛ   r   )r   rR   r
   r   )r   rJ   ÚinpZinp_arrr    r    r!   Útest_unique_axis_list  s
    
z TestUnique.test_unique_axis_listc                 C   s  g }|  tjd ¡ |  tjd ¡ | d¡ | d¡ | dtfdtfg¡ | dtfdtfg¡ |D ]}|  |¡ qhd}tjdtjd	� 	d
d¡ 
t¡}tjddgddggtd	�}tt|dd�||ƒ d}t ddgddgddgddgg¡}t ddgg¡}tt|dd�||ƒ d S )Nr–   rÁ   rÂ   rÃ   r   r   z&Non-bitwise-equal booleans test failedr3   rA   r?   r   FTr   rÛ   z"Negative zero equality test failedg       €rË   )rÐ   r   r˜   rH   r    ÚfloatrÞ   r#   r¸   re   Úviewrd   r   r
   r   )r   r×   r$   rJ   r’   rœ   r    r    r!   Útest_unique_axis   s"    

"zTestUnique.test_unique_axisrÜ   r   r?   c                 C   s,   t  g d¢¡}t||d�}t|g d¢ƒ d S )N)r   r   r   r   r   r   r   r   rÛ   r.   ©r   r   r   r
   )r   rÜ   rX   Úuniqr    r    r!   Útest_unique_1d_with_axis6  s    z#TestUnique.test_unique_1d_with_axis)Nr   r?   c                 C   sh   t  g d¢g d¢g d¢g d¢g¡}t|d|d�\}}t|j|d u rH|jndƒ t|t j|||d�ƒ d S )N)r   r   r   )r   r   r   T)r¼   rÜ   r   rÛ   )r   r   r   r   Úndimr
   Útake)r   rÜ   rX   rç   rÙ   r    r    r!   Útest_unique_inverse_with_axis<  s    "z(TestUnique.test_unique_inverse_with_axisc           
      C   sV  t jdt jd�}t|ddddd�\}}}}t|j|jƒ t|t jdd�ƒ t|t  dg¡ƒ t|t  ddg¡ƒ t|t  dg¡ƒ t|d	dddd�\}}}}t|j|jƒ t|t jdd�ƒ t|t  g ¡ƒ t|t  g ¡ƒ t|t  g ¡ƒ d
}t j|d�}tt	|ƒƒD ]H}t
|ƒ}	|| dk�r,d|	|< nd	|	|< tt||d�t j|	d�ƒ �qd S )N)r   r   )r6   r$   r   T©rÜ   r»   r¼   r½   )r   r   )r6   r   r   )r   r   r   r   r   r   r   rÛ   )r   rÑ   r�   r   r   r$   r
   r   ÚrangerÒ   rÓ   )
r   Zsingle_zerorç   ÚidxrÙ   Úcntr6   Zmultiple_zerosrÜ   Zexpected_shaper    r    r!   Útest_unique_axis_zerosC  s6    ÿÿ

ÿz!TestUnique.test_unique_axis_zerosc                 C   sh   t jg d¢dd�}t j |d¡}t  |¡}t j|ddd�\}}}d}t|j|j|ƒ t|j|j|ƒ d S )N)é@   r   r   r   r   é?   rò   r   r   r   r   r   r   rò   r   r¸   rA   r   T)r»   r½   z6Unique returned different results when asked for index)r   r   ÚmaZmasked_equalr   r
   r’   Úmask)r   rX   rY   r¾   Úv2rÆ   r   rJ   r    r    r!   Útest_unique_maskedg  s    
ÿ
zTestUnique.test_unique_maskedc                 C   sD   d}dD ]6}t  dgdgg|¡}t j|dd�}t|||| ƒ qd S )Nz*sort order incorrect for integer type '%s'Zbhilqr?   r   rÛ   ræ   )r   Úfmtr¢   r   r   r    r    r!   Ú test_unique_sort_order_with_axist  s
    z+TestUnique.test_unique_sort_order_with_axisc           
      C   sê  t  g d¢g d¢g d¢g d¢g¡ |¡}d}t  ddg¡}tt|ƒ| |¡|ƒ d}t  g d¢g d¢g¡}tt|dd�| |¡|ƒ d}t  g d	¢g d
¢g d	¢g d
¢g¡}tt|dd�| |¡|ƒ d}t  ddgddggddgddggg¡ |¡}t j|ddgdd�}tt|dd�||ƒ t|ddddd�\}}}}	d}t|| ||ƒ d}tt j||dd�|ƒ d}t|	t  ddg¡|ƒ t|ddddd�\}}}}	d}t|d d …|f |ƒ d}tt j||dd�|ƒ d}t|	t  g d¢¡|ƒ d S )N)r   r   r   r   )r   r   r   r   z&Unique with 1d array and axis=0 failedr   r   z&Unique with 2d array and axis=0 failedrÛ   z&Unique with 2d array and axis=1 failed)r   r   r   rà   z&Unique with 3d array and axis=2 failedr   Trì   z-Unique's return_index=True failed with axis=0z/Unique's return_inverse=True failed with axis=0z.Unique's return_counts=True failed with axis=0z-Unique's return_index=True failed with axis=1z/Unique's return_inverse=True failed with axis=1z.Unique's return_counts=True failed with axis=1)r   r   r   )r   r   r€   r
   r   rê   )
r   r$   r’   rJ   rœ   Zdata3drç   rî   rÙ   rï   r    r    r!   rÞ   }  s\    
ýý"
ÿÿþýÿÿzTestUnique._run_axis_testsc                 C   sj   t  ddt jt jt jg¡}t  |¡}t j|dd�}t|t  dt jg¡ƒ t|t  dt jt jt jg¡ƒ d S )Nr   F©Ú	equal_nan)r   r   r·   r   r
   )r   r   rØ   Znot_unqr    r    r!   Útest_unique_nanequals©  s
    
z TestUnique.test_unique_nanequalsc                 C   sÆ   t  t jdddddt jddg	¡}t  |¡t j|dd�ft  |¡t j|ddd�ft  |¡t j|ddd	�ft  |¡t j|ddddd
�ffD ]:\}}t|ƒt|ƒks¢J ‚t	||ƒD ]\}}t
||ƒ q¬q†d S )Nr   r   r   r   Frù   T)r½   rú   )r¼   rú   )r»   r¼   r½   rú   )r   r   r·   Zunique_valuesr   Zunique_countsÚunique_inverseÚ
unique_allrÒ   rÔ   r
   )r   ÚarrZres_unique_array_apiZ
res_uniquerM   rI   r    r    r!   Útest_unique_array_api_functions±  s.     þþþûþóz*TestUnique.test_unique_array_api_functionsc                 C   s|   t  g d¢g d¢g¡}t j|dd�\}}| |j¡}t jt jfD ]6}||ƒ}t||jƒ t||j	ƒ t||j|j	 ƒ q@d S )Nr+   )r   r   r   TrÊ   )
r   r   r   re   r6   rü   rý   r
   rº   Zinverse_indices)r   rþ   Zexpected_valuesZexpected_inverseÚfuncrœ   r    r    r!   Útest_unique_inverse_shapeÐ  s    z$TestUnique.test_unique_inverse_shapeN)r'   r(   r)   rÚ   rß   râ   rå   r„   rµ   r¶   rè   rë   rð   rö   rø   rÞ   rû   rÿ   r  r    r    r    r!   r¹   f  s     *

$	,r¹   )Ú__doc__Únumpyr   r   r   r   r   r   r   r   Znumpy.exceptionsr	   Znumpy.testingr
   r   r   r   r„   r   r¹   r    r    r    r!   Ú<module>   s   $    [