
    Kh                         S r SSKrSSKJrJrJrJrJrJrJ	r	  SSK
Jr  SSK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)ediff1dintersect1dsetxor1dunion1d	setdiff1duniqueisin)	AxisError)assert_array_equalassert_equalassert_raisesassert_raises_regexc                      \ rS 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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\RD                  \R                  4/5      \
R                  R                  S/ SQ5      S) 5       5       r#\
R                  R                  S*\R                  " S+S,/\RD                  S
9\R                  " S-S./\R                  S
9/5      \
R                  R                  S/ SQ5      S/ 5       5       r$\
R                  R                  S/ SQ5      S0 5       r%S1 r&S2 r'S3 r(S4 r)S5 r*S6 r+S7 r,S8 r-S9 r.S: r/S; r0S<r1g)=
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         R/var/www/html/env/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S jrSrg)4TestSetOps.test_intersect1d_array_like.<locals>.Test%   Nc                 .    [         R                  " S5      $ )Nr   )r   arange)r   dtypecopys      r%   	__array__>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__&   s    yy|#r(    )NN)__name__
__module____qualname____firstlineno__r1   __static_attributes__r3   r(   r%   Testr+   %   s    $r(   r9   r   r   r   )r   r   )r   r9   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   )rA   )r   r   r   r@   )r   rB   r   r   )r   r   r   r@   )
      rB   	   )r   r@   r   rB   )r   r   r   r@   r@   )r   r   rB   r   r   )r   r   r   r   )rC   rD   rB   r   )r   r   rB   )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   r:   )r@   r   r   r   r   r   r   r   r@   r   rB   r   r   r@   r   r   rB   r   r   r   r   r   r    r!   r"   r#   s        r%   test_setxor1dTestSetOps.test_setxor1dV   s    HH\"HH_%XXi QN1!HHYHHYXX()QN1!HH\"HH\"XX()QN1!2xB/0r(   c                    [         R                  " / SQ5      n[         R                  " / SQ5      n[         R                  " / SQ5      n[        XSS9n[        XC5        [         R                  " S/S/S/S	//5      n[         R                  " S
S/SS//5      n[         R                  " / SQ5      n[        XSS9n[        XC5        g )NrS   rT   rR   Tr   r   rB   r   r   r@   r   r   rU   rV   s        r%   test_setxor1d_uniqueTestSetOps.test_setxor1d_uniquen   s    HH\"HH\"XX()Q.1!HHqcA3aS)*HHq!fq!f%&XX()Q.1!r(   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)r]   r^   )r   r   rE   r   rE   )r   r@   r   r   rB   r   r@   rB   )r   r   rB   )r   r@   r   )r   r   r   r   )r   	zero_elemone_elemtwo_elems       r%   test_ediff1dTestSetOps.test_ediff1d}   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, expectedr:   r/   Nr^   )r   r   r   r]   )      ?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aryr^   r]   )formatr   	TypeErrorr   )r   ri   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   rr   c                 ~    [         R                  " UUUS9n[        XT5        UR                  UR                  :X  d   eg )Nrh   )r   r   r   r/   )r   ri   rl   rm   rn   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rw   )r	   r   )r    r!   xy	isin_slowrw   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   rB   )r   r@   )rE   r   r   r   r@   ry   re   TFF)r   	vectorizeboolr.   reshaper   int64float64)r   rw   r   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   rw   rB   r   )FFTT)r   rB   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>   Nrx   r   r   r	   r   )r   rw   multr    r!   r"   r#   s          r%   test_isin_additionalTestSetOps.test_isin_additional  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   rV   s        r%   test_isin_char_arrayTestSetOps.test_isin_char_arrayN  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 isin's invert parameterr   r   r   r   Tinvertrw   >   Nrx   re   N)r   r   r   r   r	   float32)r   rw   r   r    r!   s        r%   test_isin_invertTestSetOps.test_isin_invertW  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           	      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       eAre   )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!   rn   r"   r#   s         r%   !test_isin_hit_alternate_algorithm,TestSetOps.test_isin_hit_alternate_algorithml  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 isin works for boolean inputTF)FFFr   r   N)r   r   r   r	   r   )r   rw   r    r!   rn   s        r%   test_isin_booleanTestSetOps.test_isin_boolean|  sj     HHdE]#HH*+88UDM*840	2299X.T=	?r(   rx   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 isin works for timedelta inputr   d   rC   )sizetimedelta64[s]r   N)r   randomRandomStaterandintr	   astyper   )r   rw   rstater    r!   trutha_timedeltab_timedeltas           r%   test_isin_timedeltaTestSetOps.test_isin_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   re   ry   r   )r   r   pytestraises
ValueErrorr	   r   r    r!   s      r%   test_isin_table_timedelta_fails*TestSetOps.test_isin_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  =(       a-    U[         R                  :H  =(       a    U[         R
                  :H  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 isin works as expected for mixed dtype input.)r   r   r   r   re   )ir      )r   r      )TTFFry   zexceed the maximum)matchr   N)r   
issubdtypesignedintegerr   int16int8r   r   RuntimeErrorr	   r   )	r   dtype1dtype2rw   is_dtype2_signedar1ar2rn   expect_failures	            r%   test_isin_mixed_dtype TestSetOps.test_isin_mixed_dtype  s     ==1A1ABhh|62((>8C((=7C8867 6bhh46RWW#4 	 |3GHSD) IH tC48(C IHs   $D
Ddatal            l           l         l        c                     US   n[         R                  " X#US9n[        USS/5        UR                  [         R                  5      n[         R                  " X#US9n[        USS/5        g)z>Test values outside intp range (negative ones if 32bit system)r   r   FTN)r   r	   r   r   int32)r   rw   r   queryr;   s        r%   test_isin_mixed_huge_vals$TestSetOps.test_isin_mixed_huge_vals  s]     Qggd-3. {{288$ggd-3/r(   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 isin works as expected for bool/int input.
AllIntegerr   re   r   r   r   r   )FTTr   )TTTTN)r   	typecodesr   r   r   r	   )r   rw   r/   r    r!   rn   s         r%   test_isin_mixed_boolean"TestSetOps.test_isin_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   rn   results        r%   test_isin_first_array_is_object*TestSetOps.test_isin_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_isin_second_array_is_object+TestSetOps.test_isin_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_isin_both_arrays_are_object+TestSetOps.test_isin_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   Nre   rC   T)r   r/   intobjectr   r	   r   )r   dtr   r   rn   r   s         r%   +test_isin_both_arrays_have_structured_dtype6TestSetOps.test_isin_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   re   Tr   )r   )r   r   r   r_   )r   r   r   r   F)r   r   r   r	   r   r   r   s        r%   'test_isin_with_arrays_containing_tuples2TestSetOps.test_isin_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 isin raises expected errors.)r   r   r   r   r   )r   r   r@   rB   rC   	quicksortr   )r   r    r   r!   r   re   ry   )r_   r   r   r   r   r_   NTFr   rx   )r   r   r   r   r	   r   r   r   iinfomaxr   r   )r   r   r   obj_ar1obj_ar2r/   overflow_ar2r   s           r%   test_isin_errorsTestSetOps.test_isin_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_union1d:  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   r3   )r   r   r   r   r.   uint32r   r/   rV   s        r%   test_setdiff1dTestSetOps.test_setdiff1dL  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!   rn   rt   s        r%   test_setdiff1d_unique TestSetOps.test_setdiff1d_unique^  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_arraye  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   rB   )rE   rB   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r    r!   c1aux1aux2c2s          r%   test_manywaysTestSetOps.test_manywaysj  sM    HH_%HH*+a^1 q}t"2"r(   r3   )2r4   r5   r6   r7   r&   r<   rO   rW   rZ   rc   r   markparametrizer   r   r   nanr   r   rp   r   r   r   ru   r   r   r   r   r   r   r   r   uint8uint16uint64r   r   r   r   r   r   r   r  r
  r  r  r  r  r$  r8   r3   r(   r%   r   r      s1   4$
+%'N10"J& [[= 
)288	,				 
)288	,	)2::	.			 
,bgg	.				%@ .
&/.
& [[%
((9BHH
-


((<rxx
0
2 ((9BJJ
/
((A3bjj
)

((9BJJ
/
1 ((9BHH
-


((<rxx
0
2 ((9BHH
-


((=
1
3	
*.+*. [[V%<=78 >78r [[V%<=;< >;<z" [[V%<=G >G("  [[V%<=? >? [[VdF^4M 5M% [[WWbhhXXrwwXXryy!YY!XXrxx XXrxx YY!	
 [[V%<=D >D* [[V
%!3
&(#2884&  [[V%<=	0 >	
	0 [[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\R                  R                  S/ S
Q5      S 5       rS rS rS rS rS rS rS rSrg)
TestUniqueiu  c           	      H   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S/SS/SS//n[        U5      n[        X5        [        USS9u  p[        X5        [        X5        [         R                  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)rj   r   r   )r    r!   rH   rI   r#   r   base_msgro   vjj1j2j3s                r%   	check_all,TestUnique.test_unique_1d.<locals>.check_ally  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   rC  rB  )r   r   rD  r   r:   r   r   r   Tr2  r   r@  .)r1  )r1  r2  g       @rf   )r   r   r   )r   r   r   r   )r   r   r   )r3  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   rm   r   emptylenlistzipr   r   char	chararrayzerosr   r/   intpr(  complex
datetime64timedelta64)r   r:  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_cntrG  all_nanss                            r%   test_unique_1dTestUnique.test_unique_1dw  s   .	+` ""$"2%KKb) R\\,/0R\\*-._%%&B!B!Bbba,  XXc!fb!1XXc!fb!1""!( #XXd3q9or*XXd3q9or*""!( $299R=8X*>? %1v1v1v&AY2#Ad3
2#6' GGa #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                 4   [        [        U R                  [        5        [        [        U R                  S[        4S[        4/5        [        [
        [        [        R                  " S5      SS9  [        [
        [        [        R                  " S5      SS9  g )Nr    r!   rC   r   axis)	r   rk   _run_axis_testsr   r   r
   r   r   r.   )r   s    r%   test_unique_axis_errors"TestUnique.test_unique_axis_errors   sd    i!5!5v>i!5!5SzC=1	3 	i2Q?i2R@r(   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   rj  r   )r   r|   r   r   )r   ro   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   r<  r=  r>  r    r!   z&Non-bitwise-equal booleans test failedrC   re   r_   r   FTr   rj  z"Negative zero equality test failedg       rF  )rK  r   r   rm   r   floatrm  r.   r)  r   viewr   r   r   r   )r   rW  r/   ro   r   r   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(   rk  r   r_   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   rj  r?   r   r   r   r   )r   rk  r   uniqs       r%   test_unique_1d_with_axis#TestUnique.test_unique_1d_with_axisE  s%    HH-.a#4.r(   )Nr   r_   c           	          [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[        USUS9u  p4[        UR                  Uc  UR                  OS5        [        U[         R                  " X4US95        g )N)r   r   r   )r   r   r   T)r2  rk  r   rj  )r   r   r   r   ndimr   take)r   rk  r   r}  r[  s        r%   test_unique_inverse_with_axis(TestUnique.test_unique_inverse_with_axisK  sV    HHiIyAB1T=	SXXqvv1=1bggdd;<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rk  r1  r2  r3  )r   r   )rG   r   r   )r   r   r   r   r   r   r   rj  )r   rL  r   r   r   r/   r   r   rangerM  rN  )
r   single_zeror}  idxr[  cntrG   multiple_zerosrk  expected_shapes
             r%   test_unique_axis_zeros!TestUnique.test_unique_axis_zerosR  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)  re   r   T)r1  r3  z6Unique returned different results when asked for index)r   r   mamasked_equalr   r   r   mask)r   r   r   r5  v2rA  r#   ro   s           r%   test_unique_maskedTestUnique.test_unique_maskedv  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'bhilqr_   r   rj  r|  )r   fmtr   r    r!   s        r%    test_unique_sort_order_with_axis+TestUnique.test_unique_sort_order_with_axis  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[        [         R
                  " XhSS9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[        [         R
                  " XhSS9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 failedrj  z&Unique with 2d array and axis=1 failed)r   r   r   rq  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   ro   r   data3dr}  r  r[  r  s
             r%   rm  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?277415t<>3!Q 0#6$T48N3=43<.?277415t<>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    rZ  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(   c                 \   [         R                  " [         R                  SSSSS[         R                  SS/	5      n[         R                  " U5      [         R                  " USS94[         R
                  " U5      [         R                  " USSS94[         R                  " U5      [         R                  " USSS	94[         R                  " U5      [         R                  " USSSSS
944 H>  u  p#[        U5      [        U5      :X  d   e[        X#5       H  u  pE[        XE5        M     M@     g )Nr   r   r   r   Fr  T)r3  r  )r2  r  )r1  r2  r3  r  )r   r   r(  unique_valuesr   unique_countsunique_inverse
unique_allrM  rO  r   )r   arrres_unique_array_api
res_uniquert   rn   s         r%   test_unique_array_api_functions*TestUnique.test_unique_array_api_functions  s   hh1aArvvq!<=   %		#/
   %		#TUC
 !!#&		#deD
 c"		!%#'"&#	1
, 0 +,J???$'(<$I "64 %J31
r(   c                    [         R                  " / SQ/ SQ/5      n[         R                  " USS9u  p#UR                  UR                  5      n[         R
                  [         R                  4 HW  nU" U5      n[        X%R                  5        [        X5R                  5        [        XR                  UR                     5        MY     g )Nr:   )r   r   r   TrE  )
r   r   r   r   rG   r  r  r   r0  inverse_indices)r   r  expected_valuesexpected_inversefuncr   s         r%   test_unique_inverse_shape$TestUnique.test_unique_inverse_shape  s    hh	9-.,.IIc$,O)+33CII>%%r}}4D#YF>/1G1GHsMM&2H2H$IJ	 5r(   r3   N)r4   r5   r6   r7   rg  rn  rt  ry  r   r&  r'  r~  r  r  r  r  rm  r  r  r  r8   r3   r(   r%   r-  r-  u  s    gLRAN>, [[VaW-/ ./
 [[V]3= 4="?H1/*:XK5>	Kr(   r-  )__doc__numpyr   r   r   r   r   r   r   r	   numpy.exceptionsr
   numpy.testingr   r   r   r   r   r   r-  r3   r(   r%   <module>r     sK       '? ? c	# c	#LsK sKr(   