o
    Ô­jHŒ  ã                   @   st   d Z ddlZddlmZmZmZmZ ddlm	Z	m
Z
mZmZ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)Úassert_array_equalÚassert_equalÚassert_raisesÚassert_raises_regex)Úediff1dÚintersect1dÚsetxor1dÚunion1dÚ	setdiff1dÚuniqueÚin1dÚisinc                   @   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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g¡ej	 
d"g d#¢¡d8d9„ ƒƒZ!ej	 
d"g d#¢¡d:d;„ ƒZ"d<d=„ Z#d>d?„ Z$d@dA„ Z%dBdC„ Z&dDdE„ Z'dFdG„ Z(dHdI„ Z)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dS )RÚ
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!   ú]/var/www/html/CropPilot/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„ ZdS )z4TestSetOps.test_intersect1d_array_like.<locals>.Testc                 S   s
   t  d¡S )Nr   )r   Úarange©r   r!   r!   r"   Ú	__array__%   s   
z>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__N)Ú__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   Ú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+   )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_setxor1dU   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éÿÿÿÿ)rB   rC   )r   r   r5   r   r5   )r   r/   r   r   r1   r   r/   r1   )r   r   r1   )r   r/   r   )r   r   r   r   )r   Ú	zero_elemÚone_elemÚtwo_elemr!   r!   r"   Útest_ediff1dm   s"   
ÿzTestSetOps.test_ediff1dzary, prepend, append, expectedr+   ©ÚdtypeNrC   )r   r   r   rB   )ç      ð?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©ÚaryrC   rB   )Úformatr   Ú	TypeErrorr   )r   rM   Ú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   rU   c                 C   s.   t j|||d�}t||ƒ |j|jksJ ‚d S )NrL   )r   r   r   rJ   )r   rM   rP   rQ   rR   Ú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©rX   )r   r   )r   r   ÚxÚy©Ú	isin_slowrX   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/   rZ   rI   ©TFF)r   Ú	vectorizeÚboolr$   Úreshaper   Úint64Úfloat64)r   rX   r^   rf   r   r   r   ÚdÚfrb   rJ   ÚarÚempty_arrayr!   rd   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   r3   r   r   ©TFTTT©r   rX   r1   r   )FFTT)r   r1   r   )TFTF©r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh   )FTFTTTTTTFTFFFra   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   NrY   ©r   r   r   r   )r   rX   Úmultr   r   r   r   r!   r!   r"   Ú	test_in1d  s\   








ÿzTestSetOps.test_in1dc                 C   sB   t  g d¢¡}t  ddg¡}t  g d¢¡}t||ƒ}t||ƒ d S )N)r   r   r   rt   Úer   r€   r   r   r   )TFTFFTFFr}   r@   r!   r!   r"   Útest_in1d_char_arrayA  s
   
zTestSetOps.test_in1d_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 in1d's invert parameterry   r|   rh   ra   T©ÚinvertrX   >   NrY   rI   N)r   r   r   rƒ   r   Úfloat32)r   rX   r~   r   r   r!   r!   r"   Útest_in1d_invertJ  s$   ÿ
ÿÿúzTestSetOps.test_in1d_invertc                 C   s¤   t  d¡ dd¡}t  dd¡ dd¡}t  dd¡ dd¡}t  g d¢¡}tt||d|d	�|ƒ tt||d
|d	�|ƒ tt||d|d	�|ƒ tt||d
|d	�|ƒ d S )Nr/   r   r   r5   é?   rj   )FFFTTTTr{   F)r   r$   rq   r   r   r   )r   rX   r   r   Úlong_br   r!   r!   r"   Útest_in1d_ravel_  s,   ÿ
ÿþ
ÿþ
ÿþzTestSetOps.test_in1d_ravelc                 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ÍÍArI   )r   r   r   r‰   )r   r   r   r   r   r   r   T©rƒ   r   )r   r   r   r   r   r‰   rz   r   N)r   r   rr   rp   r   r   rƒ   )r   r   r   rR   r   r   r!   r!   r"   Ú!test_in1d_hit_alternate_algorithmt  s   z,TestSetOps.test_in1d_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 in1d works for boolean inputTF)FFFra   r‚   N)r   r   r   r   rƒ   )r   rX   r   r   rR   r!   r!   r"   Útest_in1d_boolean„  s   ÿ
ÿzTestSetOps.test_in1d_booleanrY   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 in1d works for timedelta inputr   éd   r3   )Úsizeútimedelta64[s]ra   N)r   ÚrandomÚRandomStateÚrandintr   Úastyper   )r   rX   Úrstater   r   ÚtruthÚa_timedeltaÚb_timedeltar!   r!   r"   Útest_in1d_timedelta�  s   


zTestSetOps.test_in1d_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�   rI   rZ   ra   )r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r   r   r   r!   r!   r"   Útest_in1d_table_timedelta_failsš  s
   "ÿz*TestSetOps.test_in1d_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oEt|t jko:|t jk|t jkoC|t jkfƒ}|ritjt	dd�� t
|||d	� W d
  ƒ d
S 1 sbw   Y  d
S tt
|||d	�|ƒ d
S )z7Test that in1d works as expected for mixed dtype input.)r   r   r   r   rI   )i€ÿÿÿr   é   )rŸ   r   éÿ   )TTFFrZ   zexceed the maximum)Úmatchra   N)r   Ú
issubdtypeÚsignedintegerr   ÚanyÚint8Úint16rš   r›   ÚRuntimeErrorr   r   )	r   Údtype1Údtype2rX   Úis_dtype2_signedÚar1Úar2rR   Úexpect_failurer!   r!   r"   Útest_in1d_mixed_dtype¡  s   
þ"ÿz TestSetOps.test_in1d_mixed_dtypec                 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 in1d works as expected for bool/int input.Ú
AllIntegerrn   rI   ©r   r   r   r   )FTTra   )TTTTN)r   Ú	typecodesr   rp   r   r   )r   rX   rJ   r   r   rR   r!   r!   r"   Útest_in1d_mixed_booleanÄ  s   
øz"TestSetOps.test_in1d_mixed_booleanc                 C   s<   d g}t  dgd ¡}t  dg¡}t  ||¡}t||ƒ d S ©Nr   r3   Fr}   ©r   r«   r¬   rR   Úresultr!   r!   r"   Útest_in1d_first_array_is_objectÑ  ó
   z*TestSetOps.test_in1d_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_in1d_second_array_is_objectØ  s
   z+TestSetOps.test_in1d_second_array_is_objectc                 C   s<   d g}t  d gd ¡}t  dg¡}t  ||¡}t||ƒ d S )Nr3   Tr}   r´   r!   r!   r"   Ú test_in1d_both_arrays_are_objectß  r·   z+TestSetOps.test_in1d_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   NrI   r3   T)r   rJ   ÚintÚobjectr   r   r   )r   Údtr«   r¬   rR   rµ   r!   r!   r"   Ú+test_in1d_both_arrays_have_structured_dtypeæ  s   z6TestSetOps.test_in1d_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   rI   TrŠ   )rÀ   )r   r   r   rD   )rÀ   ©r   r   r   F)r   r   r½   r   r   rƒ   r´   r!   r!   r"   Ú'test_in1d_with_arrays_containing_tuplesð  s0   


z2TestSetOps.test_in1d_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 in1d raises expected errors.)r   r   r   r   r   )r   r   r/   r1   r3   Ú	quicksortra   )r   r   r   r   r   rI   rZ   )rD   r   r   r   r   rD   NTFr   rY   )r   r   r   rœ   r   r½   Úint32rr   ÚiinfoÚmaxr§   r   )r   r«   r¬   Úobj_ar1Úobj_ar2rJ   Úoverflow_ar2rµ   r!   r!   r"   Útest_in1d_errors  s$   þízTestSetOps.test_in1d_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   rb   rc   ÚezÚzr!   r!   r"   Útest_union1d3  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   é   é   ri   r!   )r   r   r
   r   r$   Úuint32r   rJ   r@   r!   r!   r"   Útest_setdiff1dE  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   rR   rV   r!   r!   r"   Útest_setdiff1d_uniqueW  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_array^  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   Úc1Úaux1Úaux2Úc2r!   r!   r"   Útest_manywaysc  s   



zTestSetOps.test_manyways).r'   r(   r)   r#   r-   r?   rA   rH   rš   ÚmarkÚparametrizer   r   rr   Únanr„   r¥   rT   r¦   rs   rÄ   rW   rx   r   r�   r…   rˆ   r‹   rŒ   r˜   rž   Úuint8Úuint16r®   r²   r¶   r¸   r¹   r¿   rÂ   rÊ   rÎ   rÒ   rÓ   rÕ   rÚ   r!   r!   r!   r"   r      s²    'ýýýî
ýýýýóþ

<
=	











úþ

!"r   c                   @   sn   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
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )Ú
TestUniquec                 C   sd  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¢}g d¢}t|ƒ}t
||ƒ t|dd�\}}t
||ƒ t
||ƒ t  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)rN   r   r   )r   r   r8   r9   r   r¾   Úbase_msgrS   ÚvÚjÚj1Új2Új3r!   r!   r"   Ú	check_allr  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   r   r   r   T)rã   r   rð   .)râ   r   )râ   rã   g       @rK   )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°   )r   ÚmultiplyÚextendr±   rQ   r   ÚemptyÚlenÚlistÚzipr   r   Ú	chararrayÚzerosr   rJ   ÚintprÝ   ÚcomplexÚ
datetime64Útimedelta64)r   rë   r   r   r8   r9   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_1dp  sÄ   0





ÿÿ 

zTestUnique.test_unique_1dc                 C   s\   t t| jtƒ t t| jdtfdtfgƒ t tjtt d¡dd� t tjtt d¡dd� d S )Nr   r   r3   r   ©Úaxiséþÿÿÿ)	r   rO   Ú_run_axis_testsr½   r¼   r   Ú	AxisErrorr   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   rS   Ú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 failedr3   rI   rD   r   FTr   r  z"Negative zero equality test failedg       €rõ   )rú   r   r±   rQ   r¼   Úfloatr  r$   rÞ   rq   Úviewrp   r   r   r   )r   r  rJ   rS   Údatarµ   r!   r!   r"   Útest_unique_axis(  s"   

"zTestUnique.test_unique_axisr  r   rD   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  rb   Úuniqr!   r!   r"   Útest_unique_1d_with_axis>  s   z#TestUnique.test_unique_1d_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   )r7   rJ   r   T©r  râ   rã   rä   )r   r   )r7   r   r   )r   r   r   r   r   r   r   r  )r   rû   r¥   r   r   rJ   r   r   Úrangerü   rý   )
r   Úsingle_zeror%  Úidxr	  Úcntr7   Úmultiple_zerosr  Úexpected_shaper!   r!   r"   Útest_unique_axis_zerosD  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   r†   r†   r   r   r   r   r   r   r†   r   rÞ   rI   r   T)râ   rä   z6Unique returned different results when asked for index)r   r   ÚmaÚmasked_equalr   r   r"  Úmask)r   rb   rc   ræ   Úv2rñ   r   rS   r!   r!   r"   Útest_unique_maskedh  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'ÚbhilqrD   r   r  r$  )r   Úfmtr¾   r   r   r!   r!   r"   Ú test_unique_sort_order_with_axisu  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|| |ƒ d}t|	t  ddg¡|ƒ t|ddddd�\}}}}	d}t|d d …|f |ƒ d}t|d d …|f |ƒ 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   Útake)
r   rJ   r"  rS   rµ   Ú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  Únot_unqr!   r!   r"   Útest_unique_nanequalsª  s
   
"z TestUnique.test_unique_nanequalsN)r'   r(   r)   r  r  r  r#  rš   rÛ   rÜ   r&  r.  r4  r7  r  r<  r!   r!   r!   r"   rà   n  s     *
$	,rà   )Ú__doc__Únumpyr   Únumpy.testingr   r   r   r   Únumpy.lib.arraysetopsr   r   r   r	   r
   r   r   r   rš   r   rà   r!   r!   r!   r"   Ú<module>   s    (    d