
    4i                         S r SSK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  SSKJrJrJrJr   " S S5      r " S	 S
5      rg)z-Test functions for 1D array set operations.

    N)ediff1dintersect1disin	setdiff1dsetxor1dunion1dunique)StringDType)	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         b/var/www/html/dynamic-report/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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__r2   __static_attributes__r4   r)   r&   Testr,   (   s    $r)   r:   r   r   r   )r   r   )r    r:   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   )rB   )r   r   r   rA   )r   rC   r      )r   r   r   rA   )
      rC   	   )r   rA   r   rC   )r   r   r   rA   rA   )r   r   rC   r   r   )r   r   r   r   )rE   rF   rC   r   )r   r   rC   )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_indices2   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;   )rA   r   r   r   r   r   r   r   rA   r   rC   r   r   rA   r   r   rC   r   r   r   r   r    r!   r"   r#   r$   s        r&   test_setxor1dTestSetOps.test_setxor1dY   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 )NrU   rV   rT   Tr   r   rC   r   r   rA   r   r   rW   rX   s        r&   test_setxor1d_uniqueTestSetOps.test_setxor1d_uniqueq   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   rG   r   rG   )r   rA   r   r   rC   r   rA   rC   )r   r   rC   )r   rA   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;   r0   Nr`   )r   r   r   r_   )      ?      @g      "@c                 z    SU S3n[        [        U5         [        UUUS9  S S S 5        g ! , (       d  f       g = f)Nz
dtype of `z` must be compatiblearyr`   r_   )r   	TypeErrorr   )r    rl   prependappendexpectedmsgs         r&   !test_ediff1d_forbidden_type_casts,TestSetOps.test_ediff1d_forbidden_type_casts   s9    : 8*$89 C0!$& 100s   ,
:zary,prepend,append,expectedi   i  )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rt   c                 ~    [         R                  " UUUS9n[        XT5        UR                  UR                  :X  d   eg )Nrk   )r   r   r   r0   )r    rl   rn   ro   rp   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ry   )r   r   )r!   r"   xy	isin_slowry   s       r&   assert_isin_equal/TestSetOps.test_isin.<locals>.assert_isin_equal   s     Q%A!Aq$r)      r   r   r   )rE         )r   r   r   )      !   )rG   rC   )r   rA   )rG   r   r   r   rA   r{   rg   TFF)r   	vectorizeboolr/   reshaper   int64float64)r    ry   r   r   r!   r"   r$   dfr   r0   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   rE   r   r   TFTTT)r   ry   rC   r   )FFTT)r   rC   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>   Nrz   r   r   r   r   )r    ry   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   rX   s        r&   test_isin_char_arrayTestSetOps.test_isin_char_arrayQ  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invertry   >   Nrz   rg   N)r   r   r   r   r   float32)r    ry   r   r!   r"   s        r&   test_isin_invertTestSetOps.test_isin_invertZ  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       eArg   )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"   rp   r#   r$   s         r&   !test_isin_hit_alternate_algorithm,TestSetOps.test_isin_hit_alternate_algorithmo  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    ry   r!   r"   rp   s        r&   test_isin_booleanTestSetOps.test_isin_boolean  sj     HHdE]#HH*+88UDM*840	2299X.T=	?r)   rz   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   rE   )sizetimedelta64[s]r   N)r   randomRandomStaterandintr   astyper   )r    ry   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   rg   r{   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   rg   )ir      )r   r      )TTFFr{   zexceed the maximummatchr   N)r   
issubdtypesignedintegerr   int16int8r   r   RuntimeErrorr   r   )	r    dtype1dtype2ry   is_dtype2_signedar1ar2rp   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    ry   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   rg   r   r   r   r   )FTTr   )TTTTN)r   	typecodesr   r   r   r   )r    ry   r0   r!   r"   rp   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   rE   Fr   r    r   r   rp   results        r&   test_isin_first_array_is_object*TestSetOps.test_isin_first_array_is_object  sC    fhhsRx 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v{#88UG$"6,r)   c                     S /n[         R                  " S /S-  5      n[         R                  " S/5      n[         R                  " X5      n[        XC5        g )NrE   Tr   r   s        r&    test_isin_both_arrays_are_object+TestSetOps.test_isin_both_arrays_are_object  sC    fhhv{#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   Nrg   rE   T)r   r0   intobjectr   r   r   )r    dtr   r   rp   r   s         r&   +test_isin_both_arrays_have_structured_dtype6TestSetOps.test_isin_both_arrays_have_structured_dtype  so     XX#6(:;<hh	{"-hh	{R'r2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   rg   Tr   )r  )r   r   r   ra   )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   rA   rC   rE   	quicksortr   )r   r!   r   r"   r   rg   r{   )ra   r   r   r   r   ra   NTFr   rz   )r   r   r   r   r   r   r   r   iinfomaxr   r   )r    r   r   obj_ar1obj_ar2r0   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)rA   r   r   r   r   r   r   r   r  rA   r         r   r4   )r   r   r   r   r/   uint32r   r0   rX   s        r&   test_setdiff1dTestSetOps.test_setdiff1dO  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"   rp   rv   s        r&   test_setdiff1d_unique TestSetOps.test_setdiff1d_uniquea  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_arrayh  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   rC   )rG   rC   r   r   r   r   r   )r   r   r   r   r   r   r   )r    r!   r"   c1aux1aux2c2s          r&   test_manywaysTestSetOps.test_manywaysm  sM    HH_%HH*+a^1 q}t"2"r)   r4   )2r5   r6   r7   r8   r'   r=   rQ   rY   r\   re   r   markparametrizer   r   r   nanr   r   rr   r   r   r   rw   r   r   r   r   r   r   r   r   uint8uint16uint64r   r   r   r   r   r   r   r  r  r  r  r  r!  r(  r9   r4   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
%#2995
&*%RXX6&  [[V%<=	0 >	
	0 [[V%<=
@ >
@----8B =D0$8$'=
#r)   r   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS r\R                  R!                  S/ SQ5      S 5       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\R                  R!                  S/ S Q/ S Q// S!QS"/5      \R                  R!                  S#S$S%/5      \R                  R!                  S&\R>                  \R@                  /5      S' 5       5       5       r!S( r"S) r#S* r$\R                  R!                  S+\RJ                  " S,5      \RJ                  " S-5      /5      \R                  R!                  S.\&" S/S5      \&" S0S5      S/S1\&" S1S05      S/S2S3S4\&" S2S05      S5//5      S6 5       5       r'S7r(g8)9
TestUniqueix  c                    SnUR                  SU5      n[        U5      n	[        XU5        [        U	5      [        U5      :X  d   eUR                  SU5      n[        USSS5      u  p[        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  SU5      n[        USSS5      u  p[        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  SU5      n[        USSS5      u  p[        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  SU5      n[        USSS5      u  pn[        XU5        [        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  S	U5      n[        USSS5      u  pn[        XU5        [        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  S
U5      n[        USSS5      u  pn[        XU5        [        XU5        [        XU5        [        U	5      [        U5      :X  d   eUR                  SU5      n[        USSS5      u  pp[        XU5        [        XU5        [        XU5        [        XU5        [        U	5      [        U5      :X  d   e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)formatr	   r   type)r    r!   r"   rJ   rK   r$   r   base_msgrq   vjj1j2j3s                 r&   	check_allTestUnique.check_allz  s   2ooh+1I1%Aw$q'!!!oonb1aue,1%1#&Aw$q'!!!oo.3ae,1%1#&Aw$q'!!!ooor2at,1%1%Aw$q'!!!oo?D1dD%0	r1%23'23'Aw$q'!!!oo>C1dE40	r1%23'2#&Aw$q'!!!oo@"E1eT40	r1%23'2#&Aw$q'!!!oo  468:q$d3r1%23'23'2#&Aw$q'!!!r)   c                     / nUR                  [        R                  S   5        UR                  [        R                  S   5        UR                  S5        UR                  S5        U$ )Nr   AllFloatdatetime64[D]timedelta64[D])extendr   r   ro   )r    typess     r&   	get_typesTestUnique.get_types  sO    R\\,/0R\\*-._%%&r)   c           	         / SQS-  n/ SQn/ SQn/ SQS-  n[         R                  " / SQS5      nU R                  5       nU HB  n[         R                  " X5      n[         R                  " X'5      n	U R	                  XX4XW5        MD     Sn[         R
                  " [        U5      U5      nXS S & [         R
                  " [        U5      U5      n	X)S S & U R	                  XX4XW5        SS/n[         R                  " [        [        X5      5      U5      n[         R                  " [        [        X"5      5      U5      n	U R	                  XX4XW5        / S	Qn[        [         R                  " [         R                  " U5      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                  " [         R                  " U5      5      [         R                  " U5      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                  " [         R                  " U5      5      [         R                  " U5      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 )*Nr   r   r   r   r   r   r   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   O) i)y      ?              ?      r   rR  rh   )r   r   rS  r  r;   r   r   r   Tr5  r   rP  .)r4  )r4  r5  g       @)r   r   r   )r   r   r   r   )r   r   r   )r6  y       @      y      ?      ?        )r   r   r   )r   r   r   r   r   )r   r   r   natz
2020-12-26z
2020-12-24Dhr   r   )r   multiplyrG  r   r?  emptylenlistzipr   rz   r	   char	chararrayzerosr   r0   intpr,  complex
datetime64timedelta64)r    r!   r"   rJ   rK   r$   rF  r   aabbunqinva1a2a2_inva1_idxa3_idxa3_invuaua_idxua_invua_cntrV  all_nanss                           r&   test_unique_1dTestUnique.test_unique_1d  s   !B&"R'KKb)  B!B!BNN2211  XXc!fb!1XXc!fb!1rrq- #XXd3q9or*XXd3q9or*rrq- $GGBIIbM"rN	
 %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RWWRYYq\*BGGBK8RYYqt4r6lCRYYq6VERYYq5F|D rvvxbff)=wsBFF?ST'#rvv"67 RWWRYYq\*BGGBK8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       nUR                  S5        U H  n[        R                  " / U5      n[        R                  " / U5      n[        R                  " / [        R                  5      n[        R                  " / [        R                  5      n[        R                  " / [        R                  5      nU R                  X4XVXr5        M     g )NSU)rG  rE  r   r   r   r?  )r    rF  r   r!   r"   rJ   rK   r$   s           r&   test_unique_zero_sized!TestUnique.test_unique_zero_sized4  s     TBR AR A"bhh'B"bhh'BRXX&ANN1/ r)   c           	      |    " S S[         R                  5      n/ SQn/ SQS-  n[         R                  " / SQS5      nU R                  5       nU Hi  n[         R                  " / SQS-  US9n[         R                  " / S	QUS9nU" UR
                  XgS
9n	U" UR
                  XhS
9n
U R                  XX#XF5        Mk     g )Nc                       \ rS rSrSrg)1TestUnique.test_unique_subclass.<locals>.SubclassiA  r4   N)r5   r6   r7   r8   r9   r4   r)   r&   Subclassr|  A  s    r)   r}  rL  rM  rE   rN  rJ  rg   rK  )r0   buffer)r   ndarrayrY  rG  r   rI   r?  )r    r}  rJ   rK   r$   rF  r   r!   r"   re  rf  s              r&   test_unique_subclassTestUnique.test_unique_subclass@  s    	rzz 	 "R'KKb)  B.32>AR0A!''6B!''6BNN2211 r)   c                 n    / SQn/ SQn[        USS9n[        [        UR                  5       5      U5        g )N)applebananar  cherrydater  figgrape)r  r  r  r  r  r  Fsortedr	   r   r  r   r    arr
unq_sortedri  s       r&   "test_unique_byte_string_hash_based-TestUnique.test_unique_byte_string_hash_basedQ  s/    VJ
C& 	6"))+.
;r)   c                 n    / SQn/ SQn[        USS9n[        [        UR                  5       5      U5        g )N)	   cafécafer     naïvenaive   résumér  resumer  )r  r  r  r  r  r  Fr  r  r  s       r&   %test_unique_unicode_string_hash_based0TestUnique.test_unique_unicode_string_hash_based[  s4    
 P
C& 	6"))+.
;r)   c                     [         R                  " / SQ[        S S9S9n/ SQn[        USSS9n[	        S U 5       5      n[        US	5        [        S
 U 5       5      n[        XR5        g )N!   straßeNstrasser  N   niñonino   élèveelever  r  bbbbbbbbbbbbbbbbbbbb<   ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßN<   ééééééééééééééééééééééééééééééeeeeeeeeeeeeeeeeeeeer  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn(   ññññññññññññññññññññNr  r  ,  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb   ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßN   éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé,  eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeer    nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnX  ññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññNr  r  	na_objectrg   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  FTr  	equal_nanc              3   (   #    U  H  oS L v   M
     g 7fr~   r4   .0r   s     r&   	<genexpr>FTestUnique.test_unique_vstring_hash_based_equal_nan.<locals>.<genexpr>       /BqdB   r   c              3   .   #    U  H  oc  M  Uv   M     g 7fr~   r4   r  s     r&   r  r         ;r!AAr   	r   r   r
   r	   sumr   r  r   r    r!   unq_sorted_wo_noneri  
count_none
a1_wo_nones         r&   (test_unique_vstring_hash_based_equal_nan3TestUnique.test_unique_vstring_hash_based_equal_nanh  sn    HH %L -M'
P
* Aet4
 /B//
Z#;r;;
::r)   c                     [         R                  " / SQ[        S S9S9n/ SQn[        USSS9n[	        S U 5       5      n[        US5        [        S	 U 5       5      n[        XR5        g )
Nr  r  rg   r  Fr  c              3   (   #    U  H  oS L v   M
     g 7fr~   r4   r  s     r&   r  JTestUnique.test_unique_vstring_hash_based_not_equal_nan.<locals>.<genexpr>  r  r  rA   c              3   .   #    U  H  oc  M  Uv   M     g 7fr~   r4   r  s     r&   r  r    r  r  r  r  s         r&   ,test_unique_vstring_hash_based_not_equal_nan7TestUnique.test_unique_vstring_hash_based_not_equal_nan  sn    HH %L -M'
P
* Aeu5
 /B//
Z#;r;;
::r)   c                 n    [         R                  " / SQS-  [        S S9S9n[        [        [
        USS9  g )N)
r  r  r  Nr  r  r  r  Nr  r   r  rg   Fr  )r   r   r
   r   r   r	   )r    r!   s     r&   test_unique_vstring_errors%TestUnique.test_unique_vstring_errors  s9    HH  -
 	j&!u=r)   arg)r4  r5  r6  c                     [         R                  " / SQ5      n[         R                  " SS/4SS0US0D6n[         R                  " SS/4SS0US0D6n[        X45       H  u  pV[	        XV5        M     g)zThese currently never use the hash-based solution.  However,
it seems easier to just allow it.

When the hash-based solution is added, this test should fail and be
replaced with something more comprehensive.
)
r   r   r   r   r   rC      r   r   r   r   r  FTN)r   r   r	   r]  r   )r    r  r!   res_not_sorted
res_sortedr  rp   s          r&   test_unsupported_hash_based&TestUnique.test_unsupported_hash_based  sl     HH56Aq6G%GC;GYY1vBdBsDkB
 <MCs- =r)   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"   rE   r   axis)	r   rm   _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   r  r   )r   r   r   r	   )r    rq   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   rB  rC  rD  r!   r"   z&Non-bitwise-equal booleans test failedrE   rg   ra   r   FTr   r  z"Negative zero equality test failed       rU  )rE  r   r   ro   r   floatr  r/   r-  r   viewr   r   r   r	   )r    rF  r0   rq   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)   r  r   ra   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   r  r@   r   r   r	   r   )r    r  r   uniqs       r&   test_unique_1d_with_axis#TestUnique.test_unique_1d_with_axis;  s%    HH-.a#4.r)   )Nr   ra   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)r5  r  r   r  )r   r   r	   r   ndimr   take)r    r  r   r  rh  s        r&   test_unique_inverse_with_axis(TestUnique.test_unique_inverse_with_axisA  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   )rI   r0   r   Tr  r4  r5  r6  )r   r   )rI   r   r   )r   r   r   r   r   r   r   r  )r   rZ  r   r	   r   r0   r   r   ranger[  r\  )
r    single_zeror  idxrh  cntrI   multiple_zerosr  expected_shapes
             r&   test_unique_axis_zeros!TestUnique.test_unique_axis_zerosH  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-  rg   r   T)r4  r6  z6Unique returned different results when asked for index)r   r   mamasked_equalr	   r   r   mask)r    r   r   r:  v2rQ  r$   rq   s           r&   test_unique_maskedTestUnique.test_unique_maskedl  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'bhilqra   r   r  r  )r    fmtr   r!   r"   s        r&    test_unique_sort_order_with_axis+TestUnique.test_unique_sort_order_with_axisy  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 failedr  z&Unique with 2d array and axis=1 failed)r   r   r   r  z&Unique with 3d array and axis=2 failedr   Tr  z-Unique's return_index=True failed with axis=0z/Unique's return_inverse=True failed with axis=0z.Unique's return_counts=True failed with axis=0z-Unique's return_index=True failed with axis=1z/Unique's return_inverse=True failed with axis=1z.Unique's return_counts=True failed with axis=1)r   r   r   )r   r   r   r   r	   r  )
r    r0   r   rq   r   data3dr  r  rh  r  s
             r&   r  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   Fr  r   r   r,  r	   r   )r    r!   rg  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                 V   [         R                  " [         R                  SSS[         R                  * SSSS[         R                  SSS[         R                  * 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[        U[        5      (       d  U4n[        U[        5      (       d  U4n[        X#5       H9  u  pE[        [         R                  " U5      [         R                  " U5      5        M;     M     g )Nrh   rU  g      @r  ri   g      @Fr  T)r6  r  )r5  r  )r4  r5  r6  r  )r   r   r,  unique_valuesr	   unique_countsunique_inverse
unique_allr[  
isinstancetupler]  r   rz   )r    r  res_unique_array_api
res_uniquerv   rp   s         r&   test_unique_array_api_functions*TestUnique.test_unique_array_api_functions  si   hhS#wc3RVVT3
   %		#/
   %		#TUC
 !!#&		#deD
 c"		!%#'"&#	1
, 0 +,J???2E::(<'>$j%00(]
$'(<$I RWWV_bggh.?@ %J=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   TrT  )
r   r   r	   r   rI   r  r  r   r3  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)   r   )r   r   r   )r   r   r   r   	transposeFTr0   c                    [         R                  " U5      R                  U5      nU(       a  UR                  n[         R                  " U5      n[         R                  " [         R
                  " U5      5      n[        XVSS9  g )NT)strict)r   matrixr   Tr	   r   r   )r    r   r%  r0   maturp   s          r&   test_unique_with_matrix"TestUnique.test_unique_with_matrix  sU     iio$$U+%%CIIcN99RZZ_-1t4r)   c                     [         R                  " [         R                  SS[         R                  /5      n[         R                  " S[         R                  /5      n[         R                  " USSS9n[	        X25        g )Nr   rU  Tr  r  r  r    arr1drp   r   s       r&   'test_unique_axis0_equal_nan_on_1d_array2TestUnique.test_unique_axis0_equal_nan_on_1d_array  sQ    "&&!Q/088RL)5qD96,r)   c                     [         R                  " [         R                  SS[         R                  /5      n[         R                  " S[         R                  /5      n[         R                  " USSS9n[	        X25        g )Nr   rU  ra   Tr/  r  r0  s       r&   &test_unique_axis_minus1_eq_on_1d_array1TestUnique.test_unique_axis_minus1_eq_on_1d_array  sQ    "&&!Q/088RL)5rT:6,r)   c                    [         R                  " [         R                  SS[         R                  /5      n[        R                  " [
        SS9   [         R                  " USSS9  S S S 5        g ! , (       d  f       g = f)Nr   zinteger argument expectedr   rU  Fr/  )r   r   r,  r   r   rm   r	   )r    r1  s     r&   'test_unique_axis_float_raises_typeerror2TestUnique.test_unique_axis_float_raises_typeerror
  sM    "&&!Q/0]]9,GHIIe#7 IHHs   A00
A>r   FrW  r3  rU  r  i8ir   y             y              @c                     [         R                  " X!S9n[         R                  " U5      n[        U5      [        U5      S-
  :X  d   eg )Nrg   r   )r   r   r	   r[  )r    r   r3  r  r+  s        r&    test_unique_complex_signed_zeros+TestUnique.test_unique_complex_signed_zeros  s9    
 HHV&IIaL1vVq(((r)   r4   N))r5   r6   r7   r8   r?  rG  rt  rx  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,  r2  r5  r8  r0   rb  r<  r9   r4   r)   r&   r1  r1  x  s   6"pxLt
02"<<H;TH;T> [[U$WX. Y.AN>, [[VaW-/ ./
 [[V]3= 4="?H1/*:XK)AV	K [[


		
	 [[[5$-8[[Wrxx&<=5 > 95--8
 [[TBHHSM288C=#AB[[Xb)974;La(P)-wtT/BB(G),agc46H"(M(O P)P C)r)   r1  )__doc__r   numpyr   r   r   r   r   r   r   r	   numpy.dtypesr
   numpy.exceptionsr   numpy.testingr   r   r   r   r   r1  r4   r)   r&   <module>rC     sD      R R R $ & c	# c	#L^
) ^
)r)   