o
    ðT·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                   @   sH  e Zd Zd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%¢¡d0d1„ ƒZe	j
 d$dd2g¡d3d4„ ƒZd5d6„ Ze	j
 d7e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%¢¡d8d9„ ƒƒZ"e	j
 d:ejd;d<g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%¢¡dAdB„ ƒZ$dCdD„ Z%dEdF„ Z&dGdH„ Z'dIdJ„ Z(dKdL„ Z)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSdT„ Z-dUdV„ Z.dWdX„ Z/dS )YÚ
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ÚcÚed© r!   úc/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/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   )r1   )r   r   r   r0   )r   r2   r   é   )r   r   r   r0   )é
   é   r2   é	   )r   r0   r   r2   )r   r   r   r0   r0   )r   r   r2   r   r   )r   r   r   r   )r4   r5   r2   r   )r   r   r2   )r   r   r   r
   Úunravel_indexÚshape)r   r   r   r   Úi1Úi2ÚeeÚefÚui1Úui2Ú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,   )r0   r   r   ©r   r   r   r   r   r0   ©r   r2   r   r   ©r0   r   r   r2   ©r   r   r   r
   ©r   r   r   r   r   r!   r!   r"   Útest_setxor1dV   s    





zTestSetOps.test_setxor1dc                 C   sœ   t  g d¢¡}t  g d¢¡}t  g d¢¡}t||dd�}t||ƒ t  dgdgdgd	gg¡}t  d
dgddgg¡}t  g d¢¡}t||dd�}t||ƒ d S )NrB   rC   rA   Tr   r   r2   r   r   r0   r   r   rD   rE   r!   r!   r"   Útest_setxor1d_uniquen   s   
zTestSetOps.test_setxor1d_uniquec                 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éÿÿÿÿ)rH   rI   )r   r   r6   r   r6   )r   r0   r   r   r2   r   r0   r2   )r   r   r2   )r   r0   r   )r   r   r
   r   )r   Ú	zero_elemÚone_elemÚtwo_elemr!   r!   r"   Útest_ediff1d}   s"   
ÿzTestSetOps.test_ediff1dzary, prepend, append, expectedr,   ©r%   NrI   )r   r   r   rH   )ç      ð?g      @g      "@c                 C   sH   d  |¡}tt|ƒ� t|||d� W d   ƒ d S 1 sw   Y  d S )Nz dtype of `{}` must be compatible©ÚaryrI   rH   )Úformatr   Ú	TypeErrorr   )r   rR   Ú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   rZ   c                 C   s.   t j|||d�}t||ƒ |j|jksJ ‚d S )NrQ   )r   r   r   r%   )r   rR   rU   rV   rW   Ú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rug }	||	|ƒ |||	ƒ ||	|	ƒ 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 r¦t  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   )ÚotypesÚexcludedc                    s&   t | |ˆd�}ˆ | |ƒ}t||ƒ d S )N©r]   )r   r
   )r   r   ÚxÚy©Ú	isin_slowr]   r!   r"   Úassert_isin_equalÝ   s   
z/TestSetOps.test_isin.<locals>.assert_isin_equalé   ©r   r   r   )r4   é   é   )r   r   r   )é   é   é!   )r6   r2   )r   r0   )r6   r   r   r   r0   r_   rO   ©TFF)r   Ú	vectorizeÚboolr$   Úreshaper   Úint64Úfloat64)r   r]   rc   rk   r   r   r   ÚdÚfrg   r%   ÚarÚempty_arrayr!   ri   r"   Ú	test_isinÖ   sB   














ózTestSetOps.test_isinc                 C   sL  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 �r$ttg g |d�g ƒ d S d S )N©r   r4   r   r   ©TFTTT)r   r]   r2   r   )FFTT)r   r2   r   )TFTF©r   r   r   r   r   r   r   r   r   r   r   r   r   r   rm   )FTFTTTTTTFTFFFrf   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   Nr^   ©r   r   r   r
   )r   r]   Úmultr   r   r   r   r!   r!   r"   Útest_isin_additional  s\   








ÿzTestSetOps.test_isin_additionalc                 C   sB   t  g d¢¡}t  ddg¡}t  g d¢¡}t||ƒ}t||ƒ d S )N)r   r   r   ry   Úer   r„   r   r   r   )TFTFFTFFr�   rE   r!   r!   r"   Útest_isin_char_arrayN  s
   
zTestSetOps.test_isin_char_arrayc              	   C   sº   dD ]"}t  g d¢¡}g d¢| }tt  t|||d�¡t||d|d�ƒ q|dv rYdD ]/}t jg d¢t jd�}g d¢| }t j|t jd�}tt  t|||d�¡t||d|d�ƒ q+d	S d	S )
zTest isin's invert parameterr~   r€   rm   rf   T©Úinvertr]   >   Nr^   rO   N)r   r   r
   r‡   r   Úfloat32)r   r]   r‚   r   r   r!   r!   r"   Útest_isin_invertW  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ÍÍArO   )r   r   r   rŠ   )r   r   r   r   r   r   r   T©r‡   r   )r   r   r   r   r   rŠ   r   r   N)r   r   rw   ru   r
   r   r‡   )r   r   r   rW   r   r   r!   r!   r"   Ú!test_isin_hit_alternate_algorithml  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)FFFrf   r†   N)r   r   r
   r   r‡   )r   r]   r   r   rW   r!   r!   r"   Útest_isin_boolean|  s   ÿ
ÿzTestSetOps.test_isin_booleanr^   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   r4   )Úsizeútimedelta64[s]rf   N)r   ÚrandomÚRandomStateÚrandintr   Úastyper
   )r   r]   Úrstater   r   ÚtruthÚa_timedeltaÚb_timedeltar!   r!   r"   Útest_isin_timedelta‡  s   


zTestSetOps.test_isin_timedeltac                 C   sT   t jg d¢dd�}|}t t¡� t||dd� W d   ƒ d S 1 s#w   Y  d S )N©r   r   r   r�   rO   r_   rf   )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�}|rt jg d¢|d�}n	t jg d¢|d�}t  g d¢¡}|dko9|t jko9|t jk}|r]tjtdd�� t	|||d	� W d
  ƒ d
S 1 sVw   Y  d
S t
t	|||d	�|ƒ d
S )z7Test that isin works as expected for mixed dtype input.)r   r   r   r   rO   )i€ÿÿÿr   é   )r    r   éÿ   )TTFFr_   zexceed the maximum)Úmatchrf   N)r   Ú
issubdtypeÚsignedintegerr   Úint16Úint8r›   rœ   ÚRuntimeErrorr   r
   )	r   Údtype1Údtype2r]   Úis_dtype2_signedÚar1Úar2rW   Ú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   rf   FTN)r   r   r
   r”   Úint32)r   r]   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.Ú
AllIntegerrs   rO   ©r   r   r   r   )FTTrf   )TTTTN)r   Ú	typecodesr   ru   r
   r   )r   r]   r%   r   r   rW   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   r4   Fr�   ©r   r«   r¬   rW   Úresultr!   r!   r"   Útest_isin_first_array_is_objectØ  ó
   z*TestSetOps.test_isin_first_array_is_objectc                 C   s:   d}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S r·   r�   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 )Nr4   Tr�   r¸   r!   r!   r"   Ú test_isin_both_arrays_are_objectæ  r»   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 )NÚfield1Úfield2)r   NrO   r4   T)r   r%   ÚintÚobjectr   r   r
   )r   Údtr«   r¬   rW   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   rO   Tr‹   )rÄ   )r   r   r   rJ   )rÄ   ©r   r   r   F)r   r   rÁ   r   r
   r‡   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 ]G}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  ƒ q8d
S )z&Test that isin raises expected errors.)r   r   r   r   r   )r   r   r0   r2   r4   Ú	quicksortrf   )r   r   r   r   r   rO   r_   )rJ   r   r   r   r   rJ   NTFr   r^   )r   r   r   r�   r   rÁ   r°   rw   ÚiinfoÚmaxr§   r
   )r   r«   r¬   Úobj_ar1Úobj_ar2r%   Ú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   rg   rh   Ú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)r0   r   r   r   r   r   r   r   rÎ   r0   r   é   é   rn   r!   )r   r   r   r
   r$   Úuint32r   r%   rE   r!   r!   r"   Útest_setdiff1dL  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   rW   r[   r!   r!   r"   Útest_setdiff1d_unique^  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_arraye  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   r2   )r6   r2   r   r   r   r   r   )r   r   r   r   r   r   r
   )r   r   r   Úc1Úaux1Úaux2Úc2r!   r!   r"   Útest_manywaysj  s   



zTestSetOps.test_manyways)0r(   r)   r*   r#   r.   r@   rF   rG   rN   r›   ÚmarkÚparametrizer   r   rw   Únanrˆ   r¦   rY   r¥   rx   r°   r\   r}   rƒ   r…   r‰   rŒ   r�   r™   rŸ   Úuint8Úuint16Ú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)rS   r   r
   )r   r   r9   r:   r   rÂ   Úbase_msgrX   ÚvÚjÚj1Új2Új3r!   r!   r"   Ú	check_ally  sN   ÿz,TestUnique.test_unique_1d.<locals>.check_all)r   r   r   r   r   r   r   r4   )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       @rP   )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µ   rV   r   ÚemptyÚlenÚlistÚzipr
   r   ÚcharÚ	chararrayÚzerosr   r%   Úintprà   ÚcomplexÚ
datetime64Útimedelta64)r   rï   r   r   r9   r:   r   ÚtypesrÂ   ÚaaÚbbÚunqÚinvÚa1Úa2Úa2_invÚa1_idxÚa3_idxÚa3_invÚuaÚua_idxÚua_invÚua_cntrû   Úall_nansr!   r!   r"   Útest_unique_1dw  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   r4   r   ©Úaxiséþÿÿÿ)	r   rT   Ú_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   r`   r
   r   )r   rX   ÚinpÚ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 ]}|  |¡ q4d}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 failedr4   rO   rJ   r   FTr   r  z"Negative zero equality test failedg       €rú   )rÿ   r   rµ   rV   rÀ   Úfloatr  r$   rá   rv   Úviewru   r   r
   r   )r   r  r%   rX   r¯   r¹   r!   r!   r"   Útest_unique_axis/  s"   

"zTestUnique.test_unique_axisr  r   rJ   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  rg   Úuniqr!   r!   r"   Útest_unique_1d_with_axisE  s   z#TestUnique.test_unique_1d_with_axis)Nr   rJ   c                 C   sh   t  g d¢g d¢g d¢g d¢g¡}t|d|d�\}}t|j|d u r$|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  rg   r)  r  r!   r!   r"   Útest_unique_inverse_with_axisK  s   "z(TestUnique.test_unique_inverse_with_axisc           
      C   sR  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 ]"}t
|ƒ}	|| dkr•d|	|< nd	|	|< tt||d�t j|	d�ƒ q„d S )N)r   r   )r8   r%   r   T©r  ræ   rç   rè   )r   r   )r8   r   r   )r   r   r   r   r   r   r   r  )r   r   r¦   r   r   r%   r
   r   Úranger  r  )
r   Úsingle_zeror)  Úidxr  Úcntr8   Úmultiple_zerosr  Úexpected_shaper!   r!   r"   Útest_unique_axis_zerosR  s8   ÿÿ

ÿù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   é?   r7  r   r   r   r   r   r   r7  r   rá   rO   r   T)ræ   rè   z6Unique returned different results when asked for index)r   r   ÚmaÚmasked_equalr   r
   r¯   Úmask)r   rg   rh   rê   Úv2rõ   r   rX   r!   r!   r"   Útest_unique_maskedv  s   
ÿ
zTestUnique.test_unique_maskedc                 C   sD   d}dD ]}t  dgdgg|¡}t j|dd�}t|||| ƒ qd S )Nz*sort order incorrect for integer type '%s'ÚbhilqrJ   r   r  r(  )r   ÚfmtrÂ   r   r   r!   r!   r"   Ú test_unique_sort_order_with_axisƒ  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¯   rX   r¹   Údata3dr)  r1  r  r2  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  Ú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sQJ ‚t	||ƒD ]	\}}t
||ƒ qVqCd S )Nr   r   r   r   FrA  T)rè   rB  )rç   rB  )ræ   rç   rè   rB  )r   r   rà   Úunique_valuesr   Úunique_countsÚunique_inverseÚ
unique_allr  r  r
   )r   ÚarrÚres_unique_array_apiÚ
res_uniquer[   rW   r!   r!   r"   Útest_unique_array_api_functionsÀ  s2    þþþûþóÿç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 ]}||ƒ}t||jƒ t||j	ƒ t||j|j	 ƒ q d S )Nr,   )r   r   r   Trù   )
r   r   r   rv   r8   rG  rH  r
   rå   Úinverse_indices)r   rI  Úexpected_valuesÚ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-  r5  r<  r?  r  rD  rL  rQ  r!   r!   r!   r"   rä   u  s"     *

$	,rä   )Ú__doc__Únumpyr   r   r   r   r   r   r   r   Únumpy.exceptionsr	   Únumpy.testingr
   r   r   r   r›   r   rä   r!   r!   r!   r"   Ú<module>   s    $    j