
    (phH                         S r SSKrSSKJrJrJrJr  SSKJ	r	J
r
JrJrJrJrJrJr  SSKr " S S5      r " S S5      rg)	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                      \ rS rSrS rS rS rS rS r\	R                  R                  S\R                  " / SQ\R                  S	9S
\R                  S4\R                  " / SQ\R                  S	9\R                  " / SQ\R                   S	9S
S4\R                  " / SQ\R"                  S	9\R                  \R                  S4/5      S 5       r\	R                  R                  S\R                  " / SQ\R&                  S	9SS\R                  " / SQ\R&                  S	94\R                  " / SQ\R                   S	9\R                  " S/\R(                  S	9S
\R                  " / SQ\R                   S	94\R                  " / SQ\R*                  S	9SS\R                  " / SQ\R*                  S	94\R                  " / SQ\R                  S	9SS\R                  " / SQ\R                  S	94/5      S 5       r\	R                  R                  S/ SQ5      S 5       r\	R                  R                  S/ SQ5      S 5       rS  r\	R                  R                  S/ SQ5      S! 5       r\	R                  R                  S/ SQ5      S" 5       rS# r\	R                  R                  S/ SQ5      S$ 5       r\	R                  R                  SS
S%/5      S& 5       rS' r\	R                  R                  S(\R"                  \R&                  4\R&                  \R"                  4\R@                  \RB                  4\RB                  \R@                  4\R@                  \R&                  4\R&                  \R@                  4/5      \	R                  R                  S/ SQ5      S) 5       5       r"\	R                  R                  S/ SQ5      S* 5       r#S+ r$S, r%S- r&S. r'S/ r(S0 r)S1 r*S2 r+S3 r,S4 r-S5 r.S6r/g
)7
TestSetOps   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XSS9n[        XC5        [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        XE5        [        / [        / / 5      5        g )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eds         S/var/www/html/venv/lib/python3.13/site-packages/numpy/lib/tests/test_arraysetops.pytest_intersect1dTestSetOps.test_intersect1d   s    HH\"HH_%XXi D11! HH_%HH*+XXi 1!2{2r23    c                      " S S5      nU" 5       n[        X"5      n[        X25        [        / SQ/ SQ5      n[        U/ SQ5        g )Nc                       \ rS rSrS rSrg)4TestSetOps.test_intersect1d_array_like.<locals>.Test$   c                 .    [         R                  " S5      $ )Nr   )r   aranger   s    r%   	__array__>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__%   s    yy|#r(    N)__name__
__module____qualname____firstlineno__r0   __static_attributes__r2   r(   r%   Testr+   $   s    $r(   r8   r   r   r   )r   r   )r   r8   r    ress       r%   test_intersect1d_array_like&TestSetOps.test_intersect1d_array_like"   s=    	$ 	$ F!3")Y/3	*r(   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[        XSSS9u  p4n[         R                  " / SQ5      n[        X65        [        X   U5        [        X%   U5        [         R                  " / SQ5      n[         R                  " / SQ5      n[        XSS9u  p4n[         R                  " / SQ5      n[        X75        [        X   U5        [        X%   U5        [         R                  " / S	Q/ S
Q/5      n[         R                  " / SQ/ SQ/5      n[        XSSS9u  p4n[         R                  " XAR
                  5      n[         R                  " XRR
                  5      n	[         R                  " / SQ5      n
[        XU   5        [        XU	   5        [         R                  " / SQ/ SQ/5      n[         R                  " / SQ/ SQ/5      n[        XSS9u  p4n[         R                  " XAR
                  5      n[         R                  " XRR
                  5      n	[         R                  " / SQ5      n
[        XU   5        [        XU	   5        g )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   )r@   )r   r   r   r?   )r   rA   r      )r   r   r   r?   )
      rA   	   )r   r?   r   rA   )r   r   r   r?   r?   )r   r   rA   r   r   )r   r   r   r   )rC   rD   rA   r   )r   r   rA   )r   r   r   r   unravel_indexshape)r   r    r!   r#   i1i2eeefui1ui2eas              r%   test_intersect1d_indices#TestSetOps.test_intersect1d_indices.   s   HH\"HH\"DN	rXXi 1!15"%15"% HH*+HH-.T:	rXXl#1!15"%15"% HHlM23HHlN34DN	rr77+r77+XXl#2v&2v& HHo78HHlN34T:	rr77+r77+XXi 2v&2v&r(   c                 d   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        XC5        [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        XC5        [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        XC5        [        / [        / / 5      5        g )	Nr   r   )r   r   r   r9   )r?   r   r   )r   r   r   r   r   r?   )r   rA   r   r   )r?   r   r   rA   )r   r   r	   r   r   r    r!   r"   r#   s        r%   test_setxor1dTestSetOps.test_setxor1dU   s    HH\"HH_%XXi QN1!HHYHHYXX()QN1!HH\"HH\"XX()QN1!2xB/0r(   c           	         [         R                  " / 5      n[         R                  " S/5      n[         R                  " SS/5      n[        / [        U5      5        [        S/[        USS95        [        S/[        USS95        [        SS/[        USSS95        [        / [        U5      5        [        S/[        U5      5        [        / SQ[        US	S
S95        [        / SQ[        USS/S	S/S95        [        SS
/[        US
S95        [        / SQ[        US	S/S95        [        S	S/[        US	S95        [        / SQ[        USS/S95        g )Nr   r   r   )to_begin)to_end)rV   rW   )r   r   rE   r   rE   )r   r?   r   r   rA   r   r?   rA   )r   r   rA   )r   r?   r   )r   r   r   r   )r   	zero_elemone_elemtwo_elems       r%   test_ediff1dTestSetOps.test_ediff1dm   s"   HHRL	88QC=88QF#2wy12A3	A >?A3	! <=B7GI1$MN2wx01A3 129gh1&MN?"8q!faVL	NAq678A#>?9gh1v&FGAq678a#@A9gh!Q&HIr(   zary, prepend, append, expectedr9   dtypeNrW   )r   r   r   rV   )      ?g      @g      "@c                     SR                  U5      n[        [        U5         [        UUUS9  S S S 5        g ! , (       d  f       g = f)Nz dtype of `{}` must be compatiblearyrW   rV   )formatr   	TypeErrorr   )r   rc   prependappendexpectedmsgs         r%   !test_ediff1d_forbidden_type_casts,TestSetOps.test_ediff1d_forbidden_type_casts   s:    : 177A C0!$& 100s	   7
Azary,prepend,append,expectedi   i  )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rl   c                 ~    [         R                  " UUUS9n[        XT5        UR                  UR                  :X  d   eg )Nrb   )r   r   r   r_   )r   rc   rf   rg   rh   actuals         r%   test_ediff1d_scalar_handling'TestSetOps.test_ediff1d_scalar_handling   s:    : #)%,. 	V&||x~~---r(   kind)Nsorttablec                   ^^ S n[         R                  " U[        /S1S9mUU4S jn[         R                  " S5      R	                  / SQ5      n[         R
                  " / SQ/ SQ/ S	Q/5      nU" XE5        S
S/nSnU" Xg5        [         R
                  " S5      nU" X5        U" XH5        U" X5        U" SU5        U" US5        U" SS5        TS:w  a  / n	U" X5        U" XI5        U" X5        [        [         R                  [         R                  4 H  n
TS:X  a  U
[         R                  :X  a  M  U
[         R                  [         R                  1;   a  [         R
                  " / SQU
S9nO#U
[        1;   a  [         R
                  " / SQ5      n[         R
                  " / U
S9nU" UW5        U" X5        U" X5        M     g )Nc                 n    [         R                  " U5      R                  5       R                  5       nX;   $ )N)r   asarrayflattentolist)r    r!   s     r%   
_isin_slow(TestSetOps.test_isin.<locals>._isin_slow   s(    

1%%'..0A6Mr(   r   )otypesexcludedc                 @   > [        XTS9nT" X5      n[        X#5        g )Nrq   )r   r   )r    r!   xy	isin_slowrq   s       r%   assert_isin_equal/TestSetOps.test_isin.<locals>.assert_isin_equal   s     Q%A!Aq$r(      r   r   r   )rC         )r   r   r   )      !   )rE   rA   )r   r?   )rE   r   r   r   r?   rs   r^   TFF)r   	vectorizeboolr.   reshaper   int64float64)r   rq   ry   r   r    r!   r#   dfr   r_   arempty_arrayr   s    `           @r%   	test_isinTestSetOps.test_isin   s{   
	 LLTFaSI		% IIbM!!),HHlI|<=! V! HHQK!!! 	!Q!Q!Q 7? Aa#a#a# BHHbjj1Ew5BJJ#62::..XXl%84&XX23((2U3Kk2.b.k7 2r(   c                 F   S GH$  n/ SQn/ SQU-  n[         R                  " / SQ5      n[        X4SUS9n[        Xe5        SUS'   [         R                  " / S	Q5      n[        X4SUS9n[        Xe5        S
u  US'   US'   [         R                  " / SQ5      n[        X4SUS9n[        Xe5        [         R                  " / SQ5      n/ SQU-  n/ SQn[        X4US9n[        Xe5        U/ SQU-  -   n/ SQn[        X4US9n[        Xe5        [         R                  " / SQ5      n[         R                  " / SQU-  5      n[         R                  " / SQ5      n[        X4US9n[        Xe5        [         R                  " / SQ5      n[         R                  " / SQU-  5      n[         R                  " / SQ5      n[        X4US9n[        Xe5        [         R                  " SS/5      n[         R                  " SS/U-  5      n[         R                  " SS/5      n[        X4US9n[        Xe5        GM'     [         R                  " S/5      n[         R                  " S/5      n[         R                  " S/5      n[        X4US9n[        Xe5        US;   a  [        [        / / US9/ 5        g g )Nr   rC   r   r   TFTTTr   rq   rA   r   )FFTT)r   rA   r   )TFTFr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )FTFTTTTTTFTFFFr~   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   Nrr   r   r   r   r   )r   rq   multr    r!   r"   r#   s          r%   	test_in1dTestSetOps.test_in1d  sA    DA$&A34BQD9Aq%AaD45BQD9Aq%JAaD!A$45BQD9Aq%CDAD A4BQ%Aq%I$$A+BQ%Aq%&A4/0A34BQ%Aq%)A+d23A9:BQ%Aq%!Q A!Q$'A5%.)BQ%Aq%_ b HHaSMHHaSMXXugD!1!>!tB6; "r(   c                     [         R                  " / SQ5      n[         R                  " SS/5      n[         R                  " / SQ5      n[        X5      n[        XC5        g )N)r    r!   r#   r   er#   r   r!   r    r#   )TFTFFTFFr   rR   s        r%   test_in1d_char_arrayTestSetOps.test_in1d_char_arrayA  sC    HH=>HHc3Z XXKLJ1!r(   c                    S HS  n[         R                  " / SQ5      n/ SQU-  n[        [         R                  " [	        X4US95      [	        X4SUS95        MU     US;   a  S H  n[         R                  " / SQ[         R
                  S9n/ SQU-  n[         R                  " U[         R
                  S9n[        [         R                  " [	        X4US95      [	        X4SUS95        M     g	g	)
zTest in1d's invert parameterr   r   r   r~   Tinvertrq   >   Nrr   r^   N)r   r   r   r   r   float32)r   rq   r   r    r!   s        r%   test_in1d_invertTestSetOps.test_in1d_invertJ  s    
 DCDAD Aryya)>?#ADAC  >!HHG"$**.$HHQbjj1"299T!T-B#C#'T#EG   "r(   c           	         [         R                  " S5      R                  SS5      n[         R                  " SS5      R                  SS5      n[         R                  " SS5      R                  SS5      n[         R                  " / SQ5      n[	        [        X#SUS	9U5        [	        [        X#S
US	9U5        [	        [        X$SUS	9U5        [	        [        X$S
US	9U5        g )Nr?   r   r   rE   ?   r   )FFFTTTTr   F)r   r.   r   r   r   r   )r   rq   r    r!   long_br"   s         r%   test_in1d_ravelTestSetOps.test_in1d_ravel_  s     IIaL  A&IIaO##Aq)1b!))"a0XX=>4DtD	4E%)+	 	4%)+	 	4%)+	r(   c           	      6   [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  " / SQ[        S9n[	        U[        X5      5        [	        [         R                  " U5      [        XSS95        [         R                  " / SQ[         R                  S9n[         R                  " / SQ[         R                  S9n[         R                  " / S	Q5      n[        XSS
9n[	        XT5        g)z(Hit the standard isin code with integers)r   r   r   r   r   r       eAr^   )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   r   r   r   r   r   )r   r    r!   rh   r"   r#   s         r%   !test_in1d_hit_alternate_algorithm,TestSetOps.test_in1d_hit_alternate_algorithmt  s     HH,BHH=HH^2884881>8T!Z0299X.Q$0GHHH\2HH):XX/0T*1!r(   c           
         [         R                  " SS/5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        U[        X#US95        [        [         R                  " U5      [        X#SUS95        g)z&Test that in1d works for boolean inputTF)FFFr~   r   N)r   r   r   r   r   )r   rq   r    r!   rh   s        r%   test_in1d_booleanTestSetOps.test_in1d_boolean  sj     HHdE]#HH*+88UDM*840	2299X.T=	?r(   rr   c           	         [         R                  R                  S5      nUR                  SSSS9nUR                  SSSS9n[	        X45      nUR                  S5      nUR                  S5      n[        U[	        XgUS95        g)z(Test that in1d works for timedelta inputr   d   rC   )sizetimedelta64[s]r~   N)r   randomRandomStaterandintr   astyper   )r   rq   rstater    r!   trutha_timedeltab_timedeltas           r%   test_in1d_timedeltaTestSetOps.test_in1d_timedelta  sx     &&q)NN1cN+NN1cN+Q
hh/0hh/05${d"KLr(   c                     [         R                  " / SQSS9nUn[        R                  " [        5         [        XSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   r^   rs   r~   )r   r   pytestraises
ValueErrorr   r   r    r!   s      r%   test_in1d_table_timedelta_fails*TestSetOps.test_in1d_table_timedelta_fails  s:    HHY&67]]:&G$ '&&s   A
Azdtype1,dtype2c                    [         R                  " U[         R                  5      n[         R                  " / SQUS9nU(       a  [         R                  " / SQUS9nO[         R                  " / SQUS9n[         R                  " / SQ5      nUS:H  =(       ac    [	        U[         R
                  :H  =(       a    U[         R                  :H  U[         R                  :H  =(       a    U[         R
                  :H  45      nU(       a-  [        R                  " [        SS9   [        XVUS	9  S
S
S
5        g
[        [        XVUS	9U5        g
! , (       d  f       g
= f)z7Test that in1d works as expected for mixed dtype input.)r   r   r   r   r^   )ir      )r   r      )TTFFrs   zexceed the maximum)matchr~   N)r   
issubdtypesignedintegerr   anyint8int16r   r   RuntimeErrorr   r   )	r   dtype1dtype2rq   is_dtype2_signedar1ar2rh   expect_failures	            r%   test_in1d_mixed_dtype TestSetOps.test_in1d_mixed_dtype  s     ==1A1ABhh|62((>8C((=7C8867 Sbgg4&BHH"4bhh46RWW#42
 .
 |3GHSD) IH tC48(C IHs   E
Ec           	      \   [         R                  S    H  n[         R                  " / SQ[        S9n[         R                  " / SQUS9n[         R                  " / SQ[        S9n[	        [        X4US9U5        XCpC[         R                  " / SQ[        S9n[	        [        X4US9U5        M     g)	z4Test that in1d works as expected for bool/int input.
AllIntegerr   r^   r   r   r   r   )FTTr~   )TTTTN)r   	typecodesr   r   r   r   )r   rq   r_   r    r!   rh   s         r%   test_in1d_mixed_boolean"TestSetOps.test_in1d_mixed_boolean  s     \\,/E-T:AU3Axx 34@HtAt4h?qxx 8EHtAt4h? 0r(   c                     S /n[         R                  " S/S-  5      n[         R                  " S/5      n[         R                  " X5      n[        XC5        g Nr   rC   Fr   r   r   r   rh   results        r%   test_in1d_first_array_is_object*TestSetOps.test_in1d_first_array_is_object  sC    fhhs2v88UG$"6,r(   c                     Sn[         R                  " S /S-  5      n[         R                  " S/5      n[         R                  " X5      n[        XC5        g r   r   r   s        r%    test_in1d_second_array_is_object+TestSetOps.test_in1d_second_array_is_object  sA    hhvby!88UG$"6,r(   c                     S /n[         R                  " S /S-  5      n[         R                  " S/5      n[         R                  " X5      n[        XC5        g )NrC   Tr   r   s        r%    test_in1d_both_arrays_are_object+TestSetOps.test_in1d_both_arrays_are_object  sC    fhhvby!88TF#"6,r(   c                    [         R                  " S[        4S[        4/5      n[         R                  " S/US9n[         R                  " S/S-  US9n[         R                  " S/5      n[         R
                  " X#5      n[        XT5        g )Nfield1field2)r   Nr^   rC   T)r   r_   intobjectr   r   r   )r   dtr   r   rh   r   s         r%   +test_in1d_both_arrays_have_structured_dtype6TestSetOps.test_in1d_both_arrays_have_structured_dtype  sn     XX#6(:;<hh	{"-hh	{2~R088TF#"6,r(   c                    [         R                  " SS/[        S9n[         R                  " SS/[        S9n[         R                  " SS/5      n[         R                  " X5      n[	        XC5        [         R                  " XSS9n[	        U[         R
                  " U5      5        [         R                  " / SQ[        S9nUS S n[         R                  " / SQ[        S9nUS S n[         R                  " SS/5      n[         R                  " X5      n[	        XC5        [         R                  " XSS9n[	        U[         R
                  " U5      5        [         R                  " / SQ[        S9nUS S n[         R                  " SS/[        S9n[         R                  " SS	/5      n[         R                  " X5      n[	        XC5        [         R                  " XSS9n[	        U[         R
                  " U5      5        g )
Nr   r   r^   Tr   )r   )r   r   r   rX   )r   r   r   r   F)r   r   r   r   r   r   r   s        r%   'test_in1d_with_arrays_containing_tuples2TestSetOps.test_in1d_with_arrays_containing_tuples  su   hhay/hhay/88T4L)"6,$/6299X#67 hh(7#2hhh(7#2h88T4L)"6,$/6299X#67hh(7#2hhhay/88T5M*"6,$/6299X#67r(   c           	         [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        [        XSS9  [         R                  " / SQ[
        S9n[         R                  " / SQ[
        S9n[        [        [        X4SS9  [         R                  [         R                  4 H  n[         R                  " / SQUS9n[         R                  " S	[         R                  " U5      R                  /US9n[        [        [        XSS9  [         R                  " XS
S9n[        US/S/S-  -   5        [         R                  " XSS9n[        US/S/S-  -   5        M     g
)z&Test that in1d raises expected errors.)r   r   r   r   r   )r   r   r?   rA   rC   	quicksortr~   )r   r    r   r!   r   r^   rs   )rX   r   r   r   r   rX   NTFr   rr   )r   r   r   r   r   r   int32r   iinfomaxr   r   )r   r   r   obj_ar1obj_ar2r_   overflow_ar2r   s           r%   test_in1d_errorsTestSetOps.test_in1d_errors  s    hh'hh'(j${C ((.f=((.f=j$wGhh)E((+59C88R%)<)<$=UKL
 cg WWST:Fvv!';<WWSV<Fvv!';<' *r(   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        XC5        [         R                  " / SQ/ SQ/5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XV5      n[        X5        [        / [        / / 5      5        g )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#   r   r   ezzs	            r%   test_union1dTestSetOps.test_union1d3  s    HH_%HH*+XX()AM1! HHi+,HH_%XX()AM1!2wr2/r(   c                 F   [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        X5      n[        XC5        [         R                  " S5      n[         R                  " S5      n[         R                  " SS/5      n[        X5      n[        XC5        [        / [        / / 5      5        [         R                  " S[         R
                  5      n[        [        U/ 5      R                  [         R
                  5        g )	N)r?   r   r   r   r   r   r   r   r	  r?   r         r   r2   )r   r   r   r   r.   uint32r   r_   rR   s        r%   test_setdiff1dTestSetOps.test_setdiff1dE  s    HH-.HH*+XXq!faO1!IIbMIIbMXXr2haO1!2yR01HHR#Yq"%++RYY7r(   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        XSS9n[        XC5        g )N)r   r   r   )r   r   r   r   r   Tr   )r   r   r   r   )r   r    r!   rh   rn   s        r%   test_setdiff1d_unique TestSetOps.test_setdiff1d_uniqueW  sD    HHYHHY88QF#1t4V&r(   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        [        X5      [         R                  " S/5      5        g )N)r    r!   r#   )r    r!   sr#   )r   r   r   r   r   s      r%   test_setdiff1d_char_array$TestSetOps.test_setdiff1d_char_array^  s6    HH_%HH_%9Q?BHHcUO<r(   c                     [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      n[        X5      n[	        X5      n[        XT5      n[        X65        g )N)r   r   r   r   rA   )rE   rA   r   r   r   r   r   )r   r   r	   r   r
   r   r   )r   r    r!   c1aux1aux2c2s          r%   test_manywaysTestSetOps.test_manywaysc  sM    HH_%HH*+a^1 q}t"2"r(   r2   )0r3   r4   r5   r6   r&   r;   rO   rS   r\   r   markparametrizer   r   r   nanr   r   rj   r   r   r   ro   r   r   r   r   r   r   r   r   r   uint8uint16r   r   r   r   r   r   r   r  r  r  r  r  r   r7   r2   r(   r%   r   r      s   4$
+%'N10J& [[= 
)288	,				 
)288	,	)2::	.			 
,bgg	.				%@ .
&/.
& [[%
((9BHH
-


((<rxx
0
2 ((9BJJ
/
((A3bjj
)

((9BJJ
/
1 ((9BHH
-


((<rxx
0
2 ((9BHH
-


((=
1
3	
*.+*. [[V%<=:8 >:8x [[V%<=;< >;<z" [[V%<=G >G( [[V%<= >("  [[V%<=? >? [[VdF^4M 5M% [[WWbhhXXrwwXXryy!YY!XXrxx XXrxx 	

 [[V%<=D >
D. [[V%<=
@ >
@----8B =D0$8$'=
#r(   r   c                       \ rS rSrS rS rS rS r\R                  R                  SSS/5      S	 5       rS
 rS rS rS rS rSrg)
TestUniquein  c           	      (   S n/ SQS-  n/ SQn/ SQn/ SQS-  n[         R                  " / SQS5      n/ nUR                  [         R                  S   5        UR                  [         R                  S	   5        UR	                  S
5        UR	                  S5        U H9  n[         R
                  " X(5      n	[         R
                  " X85      n
U" XXEXh5        M;     Sn[         R                  " [        U5      U5      n	X)S S & [         R                  " [        U5      U5      n
X:S S & U" XXEXh5        SS/n[         R
                  " [        [        X"5      5      U5      n	[         R
                  " [        [        X35      5      U5      n
U" XXEXh5        / SQn	[        [         R                  " U	5      SS/5        / SQn/ SQn/ SQn[        U5      n[        X5        [        USS9u  p[        X5        [        X5        [         R                  " S5      nSUS'   [         R                  " USS9u  p[        U[         R                  " S5      5        / n[         R                  " USS9S   n[         R                  " USS9S   n[         R                  " USSS9SS  u  nn[        UR                  [         R                   5        [        UR                  [         R                   5        [        UR                  [         R                   5        [        UR                  [         R                   5        S[         R"                  S[         R"                  /nSS[         R"                  /n/ SQn/ SQn/ S Qn[        [         R                  " U5      U5        [        [         R                  " USS9UU45        [        [         R                  " USS9UU45        [        [         R                  " USS!9UU45        S"[         R"                  S#[%        S$[         R"                  5      [%        S[         R"                  5      /nS#S"[%        S$[         R"                  5      /n/ S%Qn/ S&Qn/ S'Qn[        [         R                  " U5      U5        [        [         R                  " USS9UU45        [        [         R                  " USS9UU45        [        [         R                  " USS!9UU45        [         R&                  " S(5      n[         R&                  " S)5      U[         R&                  " S*5      U/n[         R&                  " S*5      [         R&                  " S)5      U/n/ SQn/ SQn/ S Qn[        [         R                  " U5      U5        [        [         R                  " USS9UU45        [        [         R                  " USS9UU45        [        [         R                  " USS!9UU45        [         R(                  " S(5      n[         R(                  " SS+5      U[         R(                  " SS,5      U/n[         R(                  " SS,5      [         R(                  " SS+5      U/n/ SQn/ SQn/ S Qn[        [         R                  " U5      U5        [        [         R                  " USS9UU45        [        [         R                  " USS9UU45        [        [         R                  " USS!9UU45        [         R"                  /S--  n[         R"                  /nS./n/ S/QnS-/n[        [         R                  " U5      U5        [        [         R                  " USS9UU45        [        [         R                  " USS9UU45        [        [         R                  " USS!9UU45        g )0Nc                    SnUR                  SU5      n[        U 5      n[        XU5        UR                  SU5      n[        U SSS5      u  p[        XU5        [        XU5        UR                  SU5      n[        U SSS5      u  p[        XU5        [        XU5        UR                  SU5      n[        U SSS5      u  p[        XU5        [        XU5        UR                  SU5      n[        U SSS5      u  pn[        XU5        [        XU5        [        XU5        UR                  S	U5      n[        U SSS5      u  pn[        XU5        [        XU5        [        XU5        UR                  S
U5      n[        U SSS5      u  pn[        XU5        [        XU5        [        XU5        UR                  SU5      n[        U SSS5      u  pp[        XU5        [        XU5        [        XU5        [        XU5        g )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)rd   r   r   )r    r!   rH   rI   r#   r   base_msgri   vjj1j2j3s                r%   	check_all,TestUnique.test_unique_1d.<locals>.check_allr  s   6H//(B/Cq	AqS)//."5C!T5%0DAqS)qc*//"2B7C!UD%0DAqS)qc*///26C!UE40DAqS)qS)//"CRHCq$e4IA2qS)rs+rs+//"BBGCq$t4IA2qS)rs+rc*//"DbICq%t4IA2qS)rs+rc*// $79;=C"1dD$7MA2qS)rs+rs+rc*r(   )r   r   r   r   r   r   r   rC   )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   r9   )r   r   r   r   r   r   T)r-  r   r;  .)r,  r   )r,  r-  g       @r`   )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   rg   r   emptylenlistzipr   r   	chararrayzerosr   r_   intpr$  complex
datetime64timedelta64)r   r5  r    r!   rH   rI   r#   typesr   aabbunqinva1a2a2_inva1_idxa3_idxa3_invuaua_idxua_invua_cntrA  all_nanss                            r%   test_unique_1dTestUnique.test_unique_1dp  s   .	+` ""$"2%KKb) R\\,/0R\\*-._%%&B!B!Bbba,  XXc!fb!1XXc!fb!1""!( #XXd3q9or*XXd3q9or*""!( $299R=8X*>? % AY2#Ad3
2#6' LLO#YYq6
6288A;/ 14031T2151426889<V\\277+V\\277+V\\277+V\\277+ "&&#rvv&3RYYq\2&RYYqt4r6lCRYYq6VERYYq5F|D RVVVWS"&&%973;OPfgc26623 RYYq\2&RYYqt4r6lCRYYq6VERYYq5F|D mmE"]]<(#r}}\/JCPmmL)2==+FLRYYq\2&RYYqt4r6lCRYYq6VERYYq5F|D nnU#^^As#S"..C*@#FnnQ$bnnQ&<cBRYYq\2&RYYqt4r6lCRYYq6VERYYq5F|D FF8a<ffXRYYx("-RYYxd;b&\JRYYx=F|LRYYxt<r6lKr(   c                 \   [        [        U R                  [        5        [        [        U R                  S[        4S[        4/5        [        [
        R                  [        [
        R                  " S5      SS9  [        [
        R                  [        [
        R                  " S5      SS9  g )Nr    r!   rC   r   axis)	r   re   _run_axis_testsr   r   r   	AxisErrorr   r.   r/   s    r%   test_unique_axis_errors"TestUnique.test_unique_axis_errors  sl    i!5!5v>i!5!5SzC=1	3 	bllFBIIbMBbllFBIIbMCr(   c                     Sn/ SQ/ SQ/n[         R                  " U5      n[        [        USS9[        USS9U5        [        [        USS9[        USS9U5        g )NzUnique failed on list of listsr   r   r   r   rc  r   )r   rv   r   r   )r   ri   inpinp_arrs       r%   test_unique_axis_list TestUnique.test_unique_axis_list!  sR    .)$**S/6#A.wQ0GM6#A.wQ0GMr(   c                    / nUR                  [        R                  S   5        UR                  [        R                  S   5        UR                  S5        UR                  S5        UR                  S[        4S[        4/5        UR                  S[        4S[
        4/5        U H  nU R                  U5        M     Sn[        R                  " S[        R                  S	9R                  S
S5      R                  [        5      n[        R                  " SS/SS//[        S	9n[        [        USS9XS5        Sn[        R                  " SS/SS/SS/SS//5      n[        R                  " SS//5      n[        [        USS9XS5        g )Nr   r7  r8  r9  r    r!   z&Non-bitwise-equal booleans test failedrC   r^   rX   r   FTr   rc  z"Negative zero equality test failedg       r@  )rE  r   r   rg   r   floatrf  r.   r%  r   viewr   r   r   r   )r   rP  r_   ri   datar   s         r%   test_unique_axisTestUnique.test_unique_axis(  sF   R\\,/0R\\*-._%%&sCj3*-.sCj3,/0E  '  7yy288,44R;@@FE4=4,7tD6$Q/=2xx$sDkD#;dLMD#;-(6$Q/=r(   rd  r   rX   c                 b    [         R                  " / SQ5      n[        X!S9n[        U/ SQ5        g )N)r   r   r   r   r   r   r   r   rc  r>   r   r   r   r   )r   rd  r   uniqs       r%   test_unique_1d_with_axis#TestUnique.test_unique_1d_with_axis>  s%    HH-.a#4.r(   c                    [         R                  " S[         R                  S9n[        USSSSS9u  p#pE[	        UR
                  UR
                  5        [        U[         R                  " SS95        [        U[         R                  " S/5      5        [        U[         R                  " SS/5      5        [        U[         R                  " S/5      5        [        US	SSSS9u  p#pE[	        UR
                  UR
                  5        [        U[         R                  " SS95        [        U[         R                  " / 5      5        [        U[         R                  " / 5      5        [        U[         R                  " / 5      5        S
n[         R                  " US9n[        [        U5      5       HD  n[        U5      n	Xh   S:X  a  SX'   OS	X'   [        [        XxS9[         R                  " U	S95        MF     g )N)r   r   )rG   r_   r   Trd  r,  r-  r.  )r   r   )rG   r   r   )r   r   r   r   r   r   r   rc  )r   rF  r   r   r   r_   r   r   rangerG  rH  )
r   single_zerorx  idxrT  cntrG   multiple_zerosrd  expected_shapes
             r%   test_unique_axis_zeros!TestUnique.test_unique_axis_zerosD  s{   hhV277;$[qt48N3 	TZZ!2!234!783!.3!Q 013!. %[qt48N3 	TZZ!2!234!783-3-3- &.#e*%D!%[N{a'($'($vn@!xxn=? &r(   c                 X   [         R                  " / SQSS9n[         R                  R                  US5      n[         R                  " U5      n[         R                  " USSS9u  pEnSn[        UR                  UR                  U5        [        UR                  UR                  U5        g )N)@   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%  r^   r   T)r,  r.  z6Unique returned different results when asked for index)r   r   mamasked_equalr   r   rs  mask)r   r   r   r0  v2r<  r#   ri   s           r%   test_unique_maskedTestUnique.test_unique_maskedh  s|    HHF"$EEq!$IIaL99QTFqF166277C0166277C0r(   c                     SnS HA  n[         R                  " S/S//U5      n[         R                  " USS9n[        X4X-  5        MC     g )Nz*sort order incorrect for integer type '%s'bhilqrX   r   rc  rw  )r   fmtr   r    r!   s        r%    test_unique_sort_order_with_axis+TestUnique.test_unique_sort_order_with_axisu  sG     ;B2$b)A		!!$AqSX. r(   c                 "   [         R                  " / SQ/ SQ/ SQ/ SQ/5      R                  U5      nSn[         R                  " SS/5      n[        [	        U5      UR                  U5      U5        Sn[         R                  " / SQ/ SQ/5      n[        [	        USS9UR                  U5      U5        Sn[         R                  " / S	Q/ S
Q/ S	Q/ S
Q/5      n[        [	        USS9UR                  U5      U5        Sn[         R                  " SS/SS//SS/SS///5      R                  U5      n[         R
                  " USS/SS9n[        [	        USS9XC5        [	        USSSSS9u  pgpSn[        X'   Xc5        Sn[        Xh   U5        Sn[        U	[         R                  " SS/5      U5        [	        USSSSS9u  pgpSn[        US S 2U4   U5        Sn[        US S 2U4   U5        Sn[        U	[         R                  " / SQ5      U5        g )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 failedrc  z&Unique with 2d array and axis=1 failed)r   r   r   rk  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   r_   rs  ri   r   data3drx  r  rT  r  s
             r%   rf  TestUnique._run_axis_tests~  s   xx%%%' ( )/u 	
 71a&!6$<u)=sC6<676$Q/u1EsK69iIFG6$Q/u1EsK6QFF$FF$% & '-fUm 	 !Qa06&q16?$T48N3=49d0?49d+>3!Q 0#6$T48N3=43<.?43<.>3 3S9r(   c           	         [         R                  " SS[         R                  [         R                  [         R                  /5      n[         R                  " U5      n[         R                  " USS9n[	        U[         R                  " S[         R                  /5      5        [	        U[         R                  " S[         R                  [         R                  [         R                  /5      5        g )Nr   F)	equal_nan)r   r   r$  r   r   )r   r    rS  not_unqs       r%   test_unique_nanequals TestUnique.test_unique_nanequals  s    HHaBFFBFFBFF34iil))A/3!RVV 567BHHa-H$IJr(   r2   N)r3   r4   r5   r6   r`  rh  rn  rt  r   r"  r#  ry  r  r  r  rf  r  r7   r2   r(   r%   r(  r(  n  s`    gLRDN>, [[VaW-/ ./
"?H1/*:XKr(   r(  )__doc__numpyr   numpy.testingr   r   r   r   numpy.lib.arraysetopsr   r   r	   r
   r   r   r   r   r   r   r(  r2   r(   r%   <module>r     sH    ? ?   ]	# ]	#@BK BKr(   