
    8`i                         d Z ddlZddlZddlmZmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZmZmZ  G d d          Z G d	 d
          ZdS )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                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d ej        g dej        	          d
ej        df ej        g dej        	           ej        g dej        	          d
df ej        g dej        	          ej        ej        dfg          d             Ze	j
                            d ej        g dej        	          dd ej        g dej        	          f ej        g dej        	           ej        dgej        	          d
 ej        g dej        	          f ej        g dej        	          dd ej        g dej        	          f ej        g dej        	          dd ej        g dej        	          fg          d             Ze	j
                            dg d          d             Ze	j
                            dg d          d             Zd  Ze	j
                            dg d          d!             Zd" Ze	j
                            dg d          d#             Ze	j
                            dd
d$g          d%             Zd& Ze	j
                            d'ej        ej        fej        ej        fej        ej         fej         ej        fej        ej        fej        ej        fej!        ej        fg          e	j
                            dg d          d(                         Z"e	j
                            d) ej        d*d+gej!        	           ej        d,d-gej        	          g          e	j
                            dg d          d.                         Z#e	j
                            dg d          d/             Z$d0 Z%d1 Z&d2 Z'd3 Z(d4 Z)d5 Z*d6 Z+d7 Z,d8 Z-d9 Z.d: Z/d
S );
TestSetOpsc                    t          j        g d          }t          j        g d          }t          j        g d          }t          ||d          }t          ||           t          j        g d          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          g t          g g                      d S )N            r         r   r   )r   r   r   Tassume_unique)r   r   r   r   r   )r   r   r   r   r   r   r   )nparrayr   r   )selfabecceds         \/root/collector_daemon/venv/lib/python3.11/site-packages/numpy/lib/tests/test_arraysetops.pytest_intersect1dzTestSetOps.test_intersect1d   s    H\\\""H___%%Xiii  1D1111b!!! H___%%H***++Xiii  11b!!!2{2r2233333    c                      G d d          } |            }t          ||          }t          ||           t          g dg d          }t          |g d           d S )Nc                       e Zd ZddZdS )4TestSetOps.test_intersect1d_array_like.<locals>.TestNc                 *    t          j        d          S )Nr   )r   arange)r   dtypecopys      r%   	__array__z>TestSetOps.test_intersect1d_array_like.<locals>.Test.__array__)   s    y||#r'   )NN)__name__
__module____qualname__r/    r'   r%   Testr*   (   s(        $ $ $ $ $ $r'   r4   r   r   r   )r   r   )r   r4   r    ress       r%   test_intersect1d_array_likez&TestSetOps.test_intersect1d_array_like&   s    	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ DFF!Q3""")))YYY//3			*****r'   c                 Z   t          j        g d          }t          j        g d          }t          ||dd          \  }}}t          j        g d          }t          ||           t          ||         |           t          ||         |           t          j        g d          }t          j        g d          }t          ||d          \  }}}t          j        g d          }t          ||           t          ||         |           t          ||         |           t          j        g d	g d
g          }t          j        g dg dg          }t          ||dd          \  }}}t          j        ||j                  }t          j        ||j                  }	t          j        g d          }
t          |
||                    t          |
||	                    t          j        g dg dg          }t          j        g dg dg          }t          ||d          \  }}}t          j        ||j                  }t          j        ||j                  }	t          j        g d          }
t          |
||                    t          |
||	                    d S )Nr   r   r   r   )r   r   r      T)r   return_indices)r   r   r   )r   r   r   r   r   r   r   )r      r   r   r   r   r   r   )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   unravel_indexshape)r   r    r!   r#   i1i2eeefui1ui2eas              r%   test_intersect1d_indicesz#TestSetOps.test_intersect1d_indices2   s   H\\\""H\\\""1DNNN	2rXiii  1b!!!1R5"%%%1R5"%%% H***++H---..1T:::	2rXlll##1b!!!1R5"%%%1R5"%%% HlllMMM233HlllNNN3441DNNN	2rr17++r17++Xlll##2qv&&&2qv&&& Hooo788HlllNNN3441T:::	2rr17++r17++Xiii  2qv&&&2qv&&&&&r'   c                    t          j        g d          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          j        g d          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          j        g d          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          g t          g g                      d S )	Nr   r   )r   r   r   r5   )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#   s        r%   test_setxor1dzTestSetOps.test_setxor1dY   s*   H\\\""H___%%Xiii  QNN1b!!!HYYYHYYYX((())QNN1b!!!H\\\""H\\\""X((())QNN1b!!!2xB//00000r'   c                    t          j        g d          }t          j        g d          }t          j        g d          }t          ||d          }t          ||           t          j        dgdgdgd	gg          }t          j        d
dgddgg          }t          j        g d          }t          ||d          }t          ||           d S )NrM   rN   rL   Tr   r   r<   r   r   r:   r   r   rO   rP   s        r%   test_setxor1d_uniquezTestSetOps.test_setxor1d_uniqueq   s    H\\\""H\\\""X((())Q...1b!!!HqcA3aS)**Hq!fq!f%&&X((())Q...1b!!!!!r'   c           	         t          j        g           }t          j        dg          }t          j        ddg          }t          g t          |                     t          dgt          |d                     t          dgt          |d                     t          ddgt          |dd                     t          g t          |                     t          dgt          |                     t          g dt          |d	d
                     t          g dt          |ddgd	dg                     t          dd
gt          |d
                     t          g dt          |d	dg                     t          d	dgt          |d	                     t          g dt          |ddg                     d S )Nr   r   r   )to_begin)to_end)rU   rV   )r   r   r@   r   r@   )r   r:   r   r   r<   r   r:   r<   )r   r   r<   )r   r:   r   )r   r   r   r   )r   	zero_elemone_elemtwo_elems       r%   test_ediff1dzTestSetOps.test_ediff1d   s   HRLL	8QC==8QF##2wy11222A3	A > > >???A3	! < < <===B7GI1$M$M$MNNN2wx00111A3 1 1222999gh1&M&M&MNNN???"8q!faVLLL	N 	N 	NAq678A#>#>#>???999gh1v&F&F&FGGGAq678a#@#@#@AAA999gh!Q&H&H&HIIIIIr'   zary, prepend, append, expectedr5   r-   NrV   )r   r   r   rU   )      ?      @g      "@c                     d| d}t          t          |          5  t          |||           d d d            d S # 1 swxY w Y   d S )Nz
dtype of `z` must be compatiblearyrV   rU   )r   	TypeErrorr   )r   ra   prependappendexpectedmsgs         r%   !test_ediff1d_forbidden_type_castsz,TestSetOps.test_ediff1d_forbidden_type_casts   s    : :8999 C00 	& 	&!$& & & &	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   <A A zary,prepend,append,expectedi   i  )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )r   r   r   rh   c                 x    t          j        |||          }t          ||           |j        |j        k    sJ d S )Nr`   )r   r   r   r-   )r   ra   rc   rd   re   actuals         r%   test_ediff1d_scalar_handlingz'TestSetOps.test_ediff1d_scalar_handling   sO    : #)%,. . . 	VX&&&|x~------r'   kind)Nsorttablec                    d }t          j        |t          gdh          fd}t          j        d                              g d          }t          j        g dg dg d	g          } |||           d
dg}d} |||           t          j        d          } |||            |||            |||            |d|            ||d            |dd           dk    r&g }	 ||	|            |||	            ||	|	           t          t           j        t           j        fD ]}
dk    r|
t           j        k    r|
t           j        t           j        hv rt          j        g d|
          }n |
t          hv rt          j        g d          }t          j        g |
          } |||            |||            |||           d S )Nc                 z    t          j        |                                                                          }| |v S N)r   asarrayflattentolist)r    r!   s     r%   
_isin_slowz(TestSetOps.test_isin.<locals>._isin_slow   s0    
1%%''..00A6Mr'   r   )otypesexcludedc                 d    t          | |          } | |          }t          ||           d S )Nrl   )r   r   )r    r!   xy	isin_slowrl   s       r%   assert_isin_equalz/TestSetOps.test_isin.<locals>.assert_isin_equal   s<    Q%%%A	!QAq!$$$$$r'      r   r   r   )r>         )r   r   r   )      !   )r@   r<   )r   r:   )r@   r   r   r   r:   rn   r\   TFF)r   	vectorizeboolr,   reshaper   int64float64)r   rl   ru   r}   r    r!   r#   dfrz   r-   arempty_arrayr|   s    `           @r%   	test_isinzTestSetOps.test_isin   sr   	 	 	 LTFaSIII		% 	% 	% 	% 	% 	% IbMM!!))),,HlllIII|||<==!Q V!Q HQKK!Q!Q!Q 	!Q!Q!Q 7?? Aa###a###a### BHbj1 	8 	8Ew5BJ#6#62:...Xlll%8884&X22233(2U333Kk2...b+...k;7777	8 	8r'   c                    dD ]q}g d}g d|z  }t          j        g d          }t          ||d|          }t          ||           d|d<   t          j        g d	          }t          ||d|          }t          ||           d
\  |d<   |d<   t          j        g d          }t          ||d|          }t          ||           t          j        g d          }g d|z  }g d}t          |||          }t          ||           |g d|z  z   }g d}t          |||          }t          ||           t          j        g d          }t          j        g d|z            }t          j        g d          }t          |||          }t          ||           t          j        g d          }t          j        g d|z            }t          j        g d          }t          |||          }t          ||           t          j        ddg          }t          j        ddg|z            }t          j        ddg          }t          |||          }t          ||           st          j        dg          }t          j        dg          }t          j        dg          }t          |||          }t          ||           |dv r"t          t          g g |          g            d S d S )Nr   r>   r   r   TFTTT)r   rl   r<   r   )FFTT)r   r<   r   )TFTFr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )FTFTTTTTTFTFFFry   )r   r   r   )TTTTTTTTTTTFTT)r   r   r   r   r   )r   r   r   r   r   r   )TFTTTr   r   F>   Nrm   r   r   r   r   )r   rl   multr    r!   r"   r#   s          r%   test_isin_additionalzTestSetOps.test_isin_additional  sU     /	& /	&DA$&A33344BQD999Aq"%%%AaD44455BQD999Aq"%%%JAaD!A$44455BQD999Aq"%%%CCCDDA		D A4 4 4BQ%%%Aq"%%%III$$A+ + +BQ%%%Aq"%%%&&A4/00A33344BQ%%%Aq"%%%))A+++d233A999::BQ%%%Aq"%%%!Q  A!Q$''A5%.))BQ%%%Aq"%%%%HaSMMHaSMMXugAD!!!1b!!!>!!tB666;;;;; "!r'   c                     t          j        g d          }t          j        ddg          }t          j        g d          }t          ||          }t          ||           d S )N)r    r!   r#   r   er#   r   r!   r    r#   )TFTFFTFFr   rP   s        r%   test_isin_char_arrayzTestSetOps.test_isin_char_arrayQ  sd    H===>>Hc3Z  XKKKLLAJJ1b!!!!!r'   c           
         dD ]b}t          j        g d          }g d|z  }t          t          j        t	          |||                    t	          ||d|                     c|dv rdD ]}t          j        g dt           j                  }g d|z  }t          j        |t           j                  }t          t          j        t	          |||                    t	          ||d|                     d	S d	S )
zTest isin's invert parameterr   r   r   ry   Tinvertrl   >   Nrm   r\   N)r   r   r   r   r   float32)r   rl   r   r    r!   s        r%   test_isin_invertzTestSetOps.test_isin_invertZ  sG   
  	C 	CDCCCDDA		D Arya)>)>)>??#AqDAAAC C C C >!! G GHGGG"$*. . .II$HQbj111"29T!QT-B-B-B#C#C#'1T#E#E#EG G G G "!G Gr'   c                 `   t          j        g dt           j                  }t          j        g dt           j                  }t          j        g dt                    }t	          |t          ||                     t	          t          j        |          t          ||d                     t          j        g dt           j                  }t          j        g dt           j                  }t          j        g d	          }t          ||d
          }t	          ||           dS )z(Hit the standard isin code with integers)r   r   r   r   r   r       eAr\   )r   r   r   r   )r   r   r   r   r   r   r   Tr   r   )r   r   r   r   r   r   r   r   N)r   r   r   r   r   r   r   )r   r    r!   re   r"   r#   s         r%   !test_isin_hit_alternate_algorithmz,TestSetOps.test_isin_hit_alternate_algorithmo  s    H,,,BH===H^^^284448111>>>8T!QZZ00029X..Q$0G0G0GHHHH\\\222H))):::X///00AT***1b!!!!!r'   c           	      0   t          j        ddg          }t          j        g d          }t          j        ddg          }t          |t          |||                     t          t          j        |          t          ||d|                     dS )z&Test that isin works for boolean inputTF)FFFry   r   N)r   r   r   r   r   )r   rl   r    r!   re   s        r%   test_isin_booleanzTestSetOps.test_isin_boolean  s     HdE]##H***++8UDM**814000	2 	2 	229X..1T===	? 	? 	? 	? 	?r'   rm   c                 X   t           j                            d          }|                    ddd          }|                    ddd          }t	          ||          }|                    d          }|                    d          }t          |t	          |||                     dS )z(Test that isin works for timedelta inputr   d   r>   )sizetimedelta64[s]ry   N)r   randomRandomStaterandintr   astyper   )r   rl   rstater    r!   trutha_timedeltab_timedeltas           r%   test_isin_timedeltazTestSetOps.test_isin_timedelta  s     &&q))NN1cN++NN1cN++Q

hh/00hh/005${Kd"K"K"KLLLLLr'   c                     t          j        g dd          }|}t          j        t                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r\   rn   ry   )r   r   pytestraises
ValueErrorr   r   r    r!   s      r%   test_isin_table_timedelta_failsz*TestSetOps.test_isin_table_timedelta_fails  s    HYYY&6777]:&& 	% 	%AG$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAAzdtype1,dtype2c                 &   t          j        |t           j                  }t          j        g d|          }|rt          j        g d|          }nt          j        g d|          }t          j        g d          }|dk    o|t           j        k    o|t           j        k    }|rHt          j        t          d          5  t          |||	           d
d
d
           d
S # 1 swxY w Y   d
S t          t          |||	          |           d
S )z7Test that isin works as expected for mixed dtype input.)r   r   r   r   r\   )ir      )r   r      )TTFFrn   zexceed the maximummatchry   N)r   
issubdtypesignedintegerr   int16int8r   r   RuntimeErrorr   r   )	r   dtype1dtype2rl   is_dtype2_signedar1ar2re   expect_failures	            r%   test_isin_mixed_dtypez TestSetOps.test_isin_mixed_dtype  si    =1ABBh|||6222 	8(>>>888CC(===777C866677 6bh46RW#4 	  	D|3GHHH * *S#D))))* * * * * * * * * * * * * * * * * * tC4888(CCCCCs   C$$C(+C(datal            l           l         l        c                     |d         }t          j        |||          }t          |ddg           |                    t           j                  }t          j        |||          }t          |ddg           dS )z>Test values outside intp range (negative ones if 32bit system)r   ry   FTN)r   r   r   r   int32)r   rl   r   queryr6   s        r%   test_isin_mixed_huge_valsz$TestSetOps.test_isin_mixed_huge_vals  s|     QgdE---3... {{28$$gdE---3/////r'   c                    t           j        d         D ]}t          j        g dt                    }t          j        g d|          }t          j        g dt                    }t	          t          |||          |           ||}}t          j        g dt                    }t	          t          |||          |           dS )	z4Test that isin works as expected for bool/int input.
AllIntegerr   r\   r   r   r   r   )FTTry   )TTTTN)r   	typecodesr   r   r   r   )r   rl   r-   r    r!   re   s         r%   test_isin_mixed_booleanz"TestSetOps.test_isin_mixed_boolean  s     \,/ 	@ 	@E---T:::AU333Ax 3 3 34@@@HtAqt444h???aqAx 8 8 8EEEHtAqt444h????	@ 	@r'   c                     d g}t          j        dgdz            }t          j        dg          }t          j        ||          }t          ||           d S Nr   r>   Fr   r   r   r   re   results        r%   test_isin_first_array_is_objectz*TestSetOps.test_isin_first_array_is_object  sV    fhsRx  8UG$$c""68,,,,,r'   c                     d}t          j        d gdz            }t          j        dg          }t          j        ||          }t          ||           d S r   r   r   s        r%    test_isin_second_array_is_objectz+TestSetOps.test_isin_second_array_is_object  sT    hv{##8UG$$c""68,,,,,r'   c                     d g}t          j        d gdz            }t          j        dg          }t          j        ||          }t          ||           d S )Nr>   Tr   r   s        r%    test_isin_both_arrays_are_objectz+TestSetOps.test_isin_both_arrays_are_object  sV    fhv{##8TF##c""68,,,,,r'   c                 $   t          j        dt          fdt          fg          }t          j        dg|          }t          j        dgdz  |          }t          j        dg          }t          j        ||          }t          ||           d S )Nfield1field2)r   Nr\   r>   T)r   r-   intobjectr   r   r   )r   dtr   r   re   r   s         r%   +test_isin_both_arrays_have_structured_dtypez6TestSetOps.test_isin_both_arrays_have_structured_dtype  s     X#6(:;<<h	{"---h	{R'r2228TF##c""68,,,,,r'   c                 V   t          j        ddgt                    }t          j        ddgt                    }t          j        ddg          }t          j        ||          }t	          ||           t          j        ||d          }t	          |t          j        |                     t          j        g dt                    }|d d         }t          j        g dt                    }|d d         }t          j        ddg          }t          j        ||          }t	          ||           t          j        ||d          }t	          |t          j        |                     t          j        g dt                    }|d d         }t          j        ddgt                    }t          j        dd	g          }t          j        ||          }t	          ||           t          j        ||d          }t	          |t          j        |                     d S )
Nr   r   r\   Tr   )r   )r   r   r   rW   )r   r   r   r   F)r   r   r   r   r   r   r   s        r%   'test_isin_with_arrays_containing_tuplesz2TestSetOps.test_isin_with_arrays_containing_tuples  s   hay///hay///8T4L))c""68,,,c$///629X#6#6777 h(((777#2#hh(((777#2#h8T4L))c""68,,,c$///629X#6#6777h(((777#2#hhay///8T5M**c""68,,,c$///629X#6#677777r'   c                    t          j        g d          }t          j        g d          }t          t          t          ||d           t          j        g dt
                    }t          j        g dt
                    }t          t          t          ||d           t           j        t           j        fD ]}t          j        g d|          }t          j        d	t          j        |          j	        g|          }t          t          t          ||d           t          j        ||d
          }t          |dgdgdz  z              t          j        ||d          }t          |dgdgdz  z              d
S )z&Test that isin raises expected errors.)r   r   r   r   r   )r   r   r:   r<   r>   	quicksortry   )r   r    r   r!   r   r\   rn   )rW   r   r   r   r   rW   NTFr   rm   )r   r   r   r   r   r   r   r   iinfomaxr   r   )r   r   r   obj_ar1obj_ar2r-   overflow_ar2r   s           r%   test_isin_errorszTestSetOps.test_isin_errors  s    h''h'''((j$S{CCCC (...f===(...f===j$wGGGGh) 	= 	=E(+++5999C8R%)<$=UKKKL
 c<g    WS,T:::Fvv!';<<<WS,V<<<Fvv!';<<<<'	= 	=r'   c                    t          j        g d          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          j        g dg dg          }t          j        g d          }t          j        g d          }t          ||          }t          ||           t          g t          g g                      d S )N)r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )	r   r    r!   r"   r#   rz   r{   ezzs	            r%   test_union1dzTestSetOps.test_union1d=  s    H___%%H***++X((())AqMM1b!!! Hiii+,,H___%%X((())AqMM1b!!!2wr2/////r'   c                 Z   t          j        g d          }t          j        g d          }t          j        ddg          }t          ||          }t          ||           t          j        d          }t          j        d          }t          j        ddg          }t          ||          }t          ||           t          g t          g g                      t          j        dt           j                  }t          t          |g           j        t           j                   d S )	N)r:   r   r   r   r   r   r   r   r   r:   r         r   r3   )r   r   r   r   r,   uint32r   r-   rP   s        r%   test_setdiff1dzTestSetOps.test_setdiff1dO  s    H---..H***++Xq!faOO1b!!!IbMMIbMMXr2haOO1b!!!2yR00111HR##Yq"%%+RY77777r'   c                     t          j        g d          }t          j        g d          }t          j        ddg          }t          ||d          }t          ||           d S )N)r   r   r   )r   r   r   r   r   Tr   )r   r   r   r   )r   r    r!   re   rj   s        r%   test_setdiff1d_uniquez TestSetOps.test_setdiff1d_uniquea  se    HYYYHYYY8QF##1at444VX&&&&&r'   c                     t          j        g d          }t          j        g d          }t          t          ||          t          j        dg                     d S )N)r    r!   r#   )r    r!   sr#   )r   r   r   r   r   s      r%   test_setdiff1d_char_arrayz$TestSetOps.test_setdiff1d_char_arrayh  sP    H___%%H___%%9Q??BHcUOO<<<<<r'   c                     t          j        g d          }t          j        g d          }t          ||          }t          ||          }t	          ||          }t          ||          }t          ||           d S )N)r   r   r   r   r<   )r@   r<   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r    r!   c1aux1aux2c2s          r%   test_manywayszTestSetOps.test_manywaysm  sy    H___%%H***++a^^1a  q!}}tT""2r"""""r'   )0r0   r1   r2   r&   r7   rJ   rQ   rS   r[   r   markparametrizer   r   r   nanr   r   rg   r   r   r   rk   r   r   r   r   r   r   r   r   uint8uint16uint64r   r   r   r   r   r   r   r   r   r   r   r   r   r  r3   r'   r%   r   r      s       4 4 4$
+ 
+ 
+%' %' %'N1 1 10" " "J J J& [= 
)))28	,	,	,				 
)))28	,	,	,	)))2:	.	.	.			 
,,,bg	.	.	.				%@  .
& 
&/ .
& [%
"(999BH
-
-
-


"(<<<rx
0
0
0
2 "(999BJ
/
/
/
"(A3bj
)
)
)

"(999BJ
/
/
/
1 "(999BH
-
-
-


"(<<<rx
0
0
0
2 "(999BH
-
-
-


"(===
1
1
1
3	
 *. .+ *. [V%<%<%<==78 78 >=78r [V%<%<%<==;< ;< >=;<z" " " [V%<%<%<==G G >=G(" " "  [V%<%<%<==? ? >=? [VdF^44M M 54M% % % [WbhXrwXry!Y!Xrx Xrx Y!	
  [V%<%<%<==D D >= D* [V%#29555&*%RX666&   [V%<%<%<==	0 	0 >=	 
	0 [V%<%<%<==
@ 
@ >=
@- - -- - -- - -- - -8 8 8B =  =  =D0 0 0$8 8 8$' ' '= = =
# # # # #r'   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zej                            dg d          d             Zd Zd Zd Zej                            dddg          d             Zej                            dg d          d             Zd Zd Zd Zd Zd Zd Zd Zej                            dg dg dgg d d!g          ej                            d"d#d$g          ej                            d%ej        ej        g          d&                                     Z d' Z!d( Z"d) Z#ej                            d* ej$        d+           ej$        d,          g          ej                            d- e%d.d           e%d/d          dgd0 e%d0d/          dgd1d2d3 e%d1d/          d4gg          d5                         Z&d6S )7
TestUniquec                    d}|                     d|          }t          |          }	t          |	||           t          |	          t          |          k    sJ |                     d|          }t          |ddd          \  }	}
t          |	||           t          |
||           t          |	          t          |          k    sJ |                     d|          }t          |ddd          \  }	}
t          |	||           t          |
||           t          |	          t          |          k    sJ |                     d|          }t          |ddd          \  }	}
t          |	||           t          |
||           t          |	          t          |          k    sJ |                     d|          }t          |ddd          \  }	}}t          |	||           t          |||           t          |||           t          |	          t          |          k    sJ |                     d	|          }t          |ddd          \  }	}}t          |	||           t          |||           t          |||           t          |	          t          |          k    sJ |                     d
|          }t          |ddd          \  }	}}t          |	||           t          |||           t          |||           t          |	          t          |          k    sJ |                     d|          }t          |ddd          \  }	}}}t          |	||           t          |||           t          |||           t          |||           t          |	          t          |          k    sJ d S )Nzcheck {0} failed for type {1}valuesreturn_indexTFreturn_inversereturn_countszreturn_index and return_inversezreturn_index and return_countsz return_inverse and return_countsz.return_index, return_inverse and return_counts)formatr	   r   type)r   r    r!   rC   rD   r#   r   base_msgrf   vjj1j2j3s                 r%   	check_allzTestUnique.check_allz  s   2ooh++1II1a%%%Aww$q''!!!!oonb11aue,,11a%%%1b#&&&Aww$q''!!!!oo.33ae,,11a%%%1b#&&&Aww$q''!!!!ooor22at,,11a%%%1a%%%Aww$q''!!!!oo?DD1dD%00	2r1a%%%2r3'''2r3'''Aww$q''!!!!oo>CC1dE400	2r1a%%%2r3'''2q#&&&Aww$q''!!!!oo@"EE1eT400	2r1a%%%2r3'''2q#&&&Aww$q''!!!!oo  468: :q$d332r21a%%%2r3'''2r3'''2q#&&&Aww$q''!!!!!!r'   c                     g }|                     t          j        d                    |                     t          j        d                    |                    d           |                    d           |S )Nr   AllFloatdatetime64[D]timedelta64[D])extendr   r   rd   )r   typess     r%   	get_typeszTestUnique.get_types  sc    R\,/000R\*-..._%%%%&&&r'   c           	      X   g ddz  }g d}g d}g ddz  }t          j        g dd          }|                                 }|D ]F}t          j        ||          }t          j        ||          }	|                     ||	||||           Gd}t          j        t          |          |          }||d d <   t          j        t          |          |          }	||	d d <   |                     ||	||||           ddg}t          j        t          t          ||                    |          }t          j        t          t          ||                    |          }	|                     ||	||||           g d	}t          t          j
        t          j        |                    d
dg           g d}g d}
ddgddgddgg}t          |          }t          ||
           t          |d          \  }}t          ||
           t          ||           t           j                            d          }d|d<   t          j        |d          \  }}t          |t          j        d                     g }t          j        |d          d         }t          j        |d          d         }t          j        |dd          dd          \  }}t          |j        t           j                   t          |j        t           j                   t          |j        t           j                   t          |j        t           j                   dt           j        dt           j        g}ddt           j        g}g d}g d}g d}t          t          j
        t          j        |                    t          j
        |                     t          t          j        |d          ||f           t          t          j        |d          ||f           t          t          j        |d          ||f           dt           j        dt'          dt           j                  t'          dt           j                  g}ddt'          dt           j                  g}g d }g d!}g d"}t          t          j
        t          j        |                    t          j
        |                     t          t          j        |d          ||f           t          t          j        |d          ||f           t          t          j        |d          ||f           t          j        d#          }t          j        d$          |t          j        d%          |g}t          j        d%          t          j        d$          |g}g d}g d}g d}t          t          j        |          |           t          t          j        |d          ||f           t          t          j        |d          ||f           t          t          j        |d          ||f           t          j        d#          }t          j        dd&          |t          j        dd'          |g}t          j        dd'          t          j        dd&          |g}g d}g d}g d}t          t          j        |          |           t          t          j        |d          ||f           t          t          j        |d          ||f           t          t          j        |d          ||f           t           j        gd(z  }t           j        g}dg}g d)}d(g}t          t          j        |          |           t          t          j        |d          ||f           t          t          j        |d          ||f           t          t          j        |d          ||f           d S )*Nr   r   r   r   r   r   r   r>   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   O) i)y      ?              ?      r   r+  r]   )r   r   r,  r   r5   r   r   r   Tr  r   r)  .)r  )r  r  g       @)r   r   r   )r   r   r   r   )r   r   r   )r  y       @      y      ?      ?        )r   r   r   )r   r   r   r   r   )r   r   r   natz
2020-12-26z
2020-12-24Dhr   r   )r   multiplyr!  r   r  emptylenlistzipr   rm   r	   char	chararrayzerosr   r-   intpr  complex
datetime64timedelta64)r   r    r!   rC   rD   r#   r   r   aabbunqinva1a2a2_inva1_idxa3_idxa3_invuaua_idxua_invua_cntr/  all_nanss                           r%   test_unique_1dzTestUnique.test_unique_1d  s   !!!B&LL\\"""R'Kb))    	2 	2B!RB!RBNN2r2r1b1111 Xc!ffb!!111Xc!ffb!!111r2r2q"--- #Xd3q!99oor**Xd3q!99oor**r2r2q"--- $##GBIbMM""rN	
 	
 	
 %$$ii1v1v1v&AYY2s###Ad333
F2s###63''' Ga  #Yq666
F628A;;/// 1400031T2221514268 8 889<V\27+++V\27+++V\27+++V\27+++ "&#rv&3RWRYq\\**BGBKK888RYqt444r6lCCCRYq666VEEERYq555F|DDD rvxbf)=)=wsBF?S?ST'#rv"6"67 RWRYq\\**BGBKK888RYqt444r6lCCCRYq666VEEERYq555F|DDD mE""]<((#r}\/J/JCPmL))2=+F+FLRYq\\2&&&RYqt444r6lCCCRYq666VEEERYq555F|DDD nU##^As##S".C*@*@#FnQ$$bnQ&<&<cBRYq\\2&&&RYqt444r6lCCCRYq666VEEERYq555F|DDD F8a<fXRYx(("---RYxd;;;b&\JJJRYx===F|LLLRYxt<<<r6lKKKKKr'   c           	         |                                  }|                    d           |D ]}t          j        g |          }t          j        g |          }t          j        g t          j                  }t          j        g t          j                  }t          j        g t          j                  }|                     ||||||           d S )NSU)r!  r  r   r   r   r  )r   r   r   r    r!   rC   rD   r#   s           r%   test_unique_zero_sizedz!TestUnique.test_unique_zero_sized4  s      T 	0 	0BR  AR  A"bh''B"bh''BRX&&ANN1aRB////	0 	0r'   c           	          G d dt           j                  }g d}g ddz  }t          j        g dd          }|                                 }|D ]u}t          j        g ddz  |          }t          j        g d	|          } ||j        ||
          }	 ||j        ||
          }
|                     |	|
||||           vd S )Nc                       e Zd ZdS )1TestUnique.test_unique_subclass.<locals>.SubclassN)r0   r1   r2   r3   r'   r%   SubclassrS  A  s        Dr'   rT  r%  r&  r>   r'  r#  r\   r$  )r-   buffer)r   ndarrayr2  r!  r   rB   r  )r   rT  rC   rD   r#   r   r   r    r!   r>  r?  s              r%   test_unique_subclasszTestUnique.test_unique_subclass@  s   	 	 	 	 	rz 	 	 	 \\"""R'Kb))    	2 	2B...32>>>AR000A!'A666B!'A666BNN2r2r1b1111	2 	2r'   c                     g d}g d}t          |d          }t          t          |                                          |           d S )N)applebananarY  cherrydaterZ  figgrape)rY  rZ  r[  r\  r]  r^  Fsortedr	   r   r`  rt   r   arr
unq_sortedrB  s       r%   "test_unique_byte_string_hash_basedz-TestUnique.test_unique_byte_string_hash_basedQ  sR    VVVJJJ
C&&& 	6"))++..
;;;;;r'   c                     g d}g d}t          |d          }t          t          |                                          |           d S )N)	   cafécaferg     naïvenaive   résuméri  resumerk  )rh  rg  rj  ri  rl  rk  Fr_  ra  rb  s       r%   %test_unique_unicode_string_hash_basedz0TestUnique.test_unique_unicode_string_hash_based[  s[    
 
 
 POO
C&&& 	6"))++..
;;;;;r'   c                 "   t          j        g dt          d                     }g d}t          |dd          }t	          d |D                       }t          |d	           t          d
 |D                       }t          ||           d S )N!   straßeNstrasserp  N   niñonino   élèveeleverr  rt  bbbbbbbbbbbbbbbbbbbb<   ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßN<   ééééééééééééééééééééééééééééééeeeeeeeeeeeeeeeeeeeerw  nnnnnnnnnnnnnnnnnnnnnnnnnnnnnn(   ññññññññññññññññññññNry  r{  ,  bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb   ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßN   éééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééééé,  eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeer}    nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnX  ññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññññNr  r  	na_objectr\   rv  r|  ry  r  ru  rs  rr  rz  r  rq  rp  rw  r}  rt  rx  r~  r{  r  FTr`  	equal_nanc              3      K   | ]}|d u V  	d S rq   r3   .0rz   s     r%   	<genexpr>zFTestUnique.test_unique_vstring_hash_based_equal_nan.<locals>.<genexpr>  &      //qd//////r'   r   c              3      K   | ]}||V  	d S rq   r3   r  s     r%   r  zFTestUnique.test_unique_vstring_hash_based_equal_nan.<locals>.<genexpr>  "      ;;!Q]A]]]];;r'   r   r   r
   r	   sumr   r`  r   r   r    unq_sorted_wo_nonerB  
count_none
a1_wo_nones         r%   (test_unique_vstring_hash_based_equal_nanz3TestUnique.test_unique_vstring_hash_based_equal_nanh  s    H % % %L ---M'
 '
 '
P
 
 
* Aet444
 //B/////
Z###;;r;;;;;
:'9:::::r'   c                 "   t          j        g dt          d                     }g d}t          |dd          }t	          d |D                       }t          |d           t          d	 |D                       }t          ||           d S )
Nro  r  r\   r  Fr  c              3      K   | ]}|d u V  	d S rq   r3   r  s     r%   r  zJTestUnique.test_unique_vstring_hash_based_not_equal_nan.<locals>.<genexpr>  r  r'   r:   c              3      K   | ]}||V  	d S rq   r3   r  s     r%   r  zJTestUnique.test_unique_vstring_hash_based_not_equal_nan.<locals>.<genexpr>  r  r'   r  r  s         r%   ,test_unique_vstring_hash_based_not_equal_nanz7TestUnique.test_unique_vstring_hash_based_not_equal_nan  s    H % % %L ---M'
 '
 '
P
 
 
* Aeu555
 //B/////
Z###;;r;;;;;
:'9:::::r'   c                     t          j        g ddz  t          d                     }t          t          t
          |d           d S )N)
rY  rZ  rY  Nr[  r\  rZ  r]  Nr^  r   r  r\   Fr  )r   r   r
   r   r   r	   )r   r    s     r%   test_unique_vstring_errorsz%TestUnique.test_unique_vstring_errors  s`    H    ---
 
 
 	j&!u======r'   arg)r  r  r  c                     t          j        g d          }t          j        ddgfddi|di}t          j        ddgfddi|di}t          ||          D ]\  }}t	          ||           dS )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   r<      r   r   r   r   r`  FTN)r   r   r	   r6  r   )r   r  r    res_not_sorted
res_sortedrc  re   s          r%   test_unsupported_hash_basedz&TestUnique.test_unsupported_hash_based  s     H55566Aq6GG%GC;GGY1vBBdBsDkBB
 << 	. 	.MCsH----	. 	.r'   c                 X   t          t          | j        t                     t          t          | j        dt          fdt          fg           t          t
          t          t          j        d          d           t          t
          t          t          j        d          d           d S )Nr    r!   r>   r   axis)	r   rb   _run_axis_testsr   r   r   r	   r   r,   )r   s    r%   test_unique_axis_errorsz"TestUnique.test_unique_axis_errors  s    i!5v>>>i!5SzC=1	3 	3 	3 	i2Q????i2R@@@@@@r'   c                     d}g dg dg}t          j        |          }t          t          |d          t          |d          |           t          t          |d          t          |d          |           d S )NzUnique failed on list of listsr   r   r   r   r  r   )r   rr   r   r	   )r   rf   inpinp_arrs       r%   test_unique_axis_listz TestUnique.test_unique_axis_list  s    .yy)))$*S//6#A...wQ0G0G0GMMM6#A...wQ0G0G0GMMMMMr'   c                    g }|                     t          j        d                    |                     t          j        d                    |                    d           |                    d           |                    dt          fdt          fg           |                    dt          fdt
          fg           |D ]}|                     |           d}t          j        dt          j        	          	                    d
d          
                    t                    }t          j        ddgddggt          	          }t          t          |d          ||           d}t          j        ddgddgddgddgg          }t          j        ddgg          }t          t          |d          ||           d S )Nr   r  r  r  r    r!   z&Non-bitwise-equal booleans test failedr>   r\   rW   r   FTr   r  z"Negative zero equality test failed       r.  )r  r   r   rd   r   floatr  r,   r  r   viewr   r   r   r	   )r   r   r-   rf   r   r   s         r%   test_unique_axiszTestUnique.test_unique_axis%  s   R\,/000R\*-..._%%%%&&&sCj3*-...sCj3,/000 	( 	(E  ''''6y28,,,44R;;@@FFE4=4,7tDDD6$Q///===2x$sDkD#;dLMMD#;-((6$Q///=====r'   r  r   rW   c                 x    t          j        g d          }t          ||          }t          |g d           d S )N)r   r   r   r   r   r   r   r   r  r9   r   r   r	   r   )r   r  rz   uniqs       r%   test_unique_1d_with_axisz#TestUnique.test_unique_1d_with_axis;  sD    H---..ad###4.....r'   )Nr   rW   c                     t          j        g dg dg dg dg          }t          |d|          \  }}t          |j        ||j        nd           t          |t          j        |||                     d S )N)r   r   r   )r   r   r   T)r  r  r   r  )r   r   r	   r   ndimr   take)r   r  rz   r  rA  s        r%   test_unique_inverse_with_axisz(TestUnique.test_unique_inverse_with_axisA  s    HiiiIIIyyyABB1T===	cSXqvv1===1bgdCd;;;<<<<<r'   c                 Z   t          j        dt           j                  }t          |dddd          \  }}}}t	          |j        |j                   t          |t          j        d                     t          |t          j        dg                     t          |t          j        ddg                     t          |t          j        dg                     t          |d	ddd          \  }}}}t	          |j        |j                   t          |t          j        d                     t          |t          j        g                      t          |t          j        g                      t          |t          j        g                      d
}t          j        |          }t          t          |                    D ]Z}t          |          }	||         dk    rd|	|<   nd	|	|<   t          t          ||          t          j        |	                     [d S )N)r   r   )rB   r-   r   Tr  r  r  r  )r   r   )rB   r   r   )r   r   r   r   r   r   r   r  )r   r3  r   r	   r   r-   r   r   ranger4  r5  )
r   single_zeror  idxrA  cntrB   multiple_zerosr  expected_shapes
             r%   test_unique_axis_zerosz!TestUnique.test_unique_axis_zerosH  s   hV27;;;$[qt48N N Nc3 	TZ!23334!7!7!78883!...3!Q 0 01113!... %[qt48N N Nc3 	TZ!23334!7!7!78883---3---3--- &...#e**%% 	? 	?D!%[[NT{a'(t$$'(t$vn4@@@!xn===? ? ? ?	? 	?r'   c                 D   t          j        g dd          }t           j                            |d          }t          j        |          }t          j        |dd          \  }}}d}t          |j        |j        |           t          |j        |j        |           d S )N)@   r   r   r   r   ?   r  r   r   r   r   r   r   r  r   r  r\   r   T)r  r  z6Unique returned different results when asked for index)r   r   mamasked_equalr	   r   r   mask)r   rz   r{   r  v2r*  r#   rf   s           r%   test_unique_maskedzTestUnique.test_unique_maskedl  s    HFFF"$ $ $Eq!$$IaLL9QTFFFAqF1627C0001627C00000r'   c                     d}dD ]E}t          j        dgdgg|          }t          j        |d          }t          ||||z             Fd S )Nz*sort order incorrect for integer type '%s'bhilqrW   r   r  r  )r   fmtr   r    r!   s        r%    test_unique_sort_order_with_axisz+TestUnique.test_unique_sort_order_with_axisy  sh     ; 	/ 	/B2$b))A	!!$$$Aq!S2X....	/ 	/r'   c                 ,   t          j        g dg dg dg dg                              |          }d}t          j        ddg          }t          t	          |          |                    |          |           d}t          j        g dg dg          }t          t	          |d          |                    |          |           d}t          j        g d	g d
g d	g d
g          }t          t	          |d          |                    |          |           d}t          j        ddgddggddgddggg                              |          }t          j        |ddgd          }t          t	          |d          ||           t	          |dddd          \  }}}}	d}t          ||         ||           d}t          t          j        ||d          |           d}t          |	t          j        ddg          |           t	          |dddd          \  }}}}	d}t          |d d |f         |           d}t          t          j        ||d          |           d}t          |	t          j        g d          |           d S )N)r   r   r   r   )r   r   r   r   z&Unique with 1d array and axis=0 failedr   r   z&Unique with 2d array and axis=0 failedr  z&Unique with 2d array and axis=1 failed)r   r   r   r  z&Unique with 3d array and axis=2 failedr   Tr  z-Unique's return_index=True failed with axis=0z/Unique's return_inverse=True failed with axis=0z.Unique's return_counts=True failed with axis=0z-Unique's return_index=True failed with axis=1z/Unique's return_inverse=True failed with axis=1z.Unique's return_counts=True failed with axis=1)r   r   r   )r   r   r   r   r	   r  )
r   r-   r   rf   r   data3dr  r  rA  r  s
             r%   r  zTestUnique._run_axis_tests  s   x%%%' ( ( )/u 	
 71a&!!6$<<u)=)=sCCC6<<<6776$Q///u1E1EsKKK6999iiiIIIFGG6$Q///u1E1EsKKK6QFF$FF$% & & '-fUmm 	 !Qa0006&q11163???$T48N N Nc3=49dC000?2741555t<<<>3!Q 0 0#666$T48N N Nc3=43<...?2741555t<<<>3 3 3S99999r'   c           	         t          j        ddt           j        t           j        t           j        g          }t          j        |          }t          j        |d          }t	          |t          j        dt           j        g                     t	          |t          j        dt           j        t           j        t           j        g                     d S )Nr   Fr  r   r   r  r	   r   )r   r    r@  not_unqs       r%   test_unique_nanequalsz TestUnique.test_unique_nanequals  s    HaBFBFBF344ill)A///3!RV 5 56667BHa-H$I$IJJJJJr'   c                 :   t          j        t           j        dddt           j         ddddt           j        dddt           j         dg          }t          j        |          t          j        |d          ft          j        |          t          j        |d	d
          ft          j        |          t          j        |d	d          ft          j        |          t          j        |d	d	d	d          ffD ]\  }}t          |          t          |          k    sJ t          |t                    s|f}t          |t                    s|f}t          ||          D ]9\  }}t          t          j        |          t          j        |                     :d S )Nr]   r.  g      @r  r^   g      @Fr  T)r  r  )r  r  )r  r  r  r  )r   r   r  unique_valuesr	   unique_countsunique_inverse
unique_allr4  
isinstancetupler6  r   rm   )r   rc  res_unique_array_api
res_uniquerj   re   s         r%   test_unique_array_api_functionsz*TestUnique.test_unique_array_api_functions  s   hS#wc3RVT3
 
  %%	#///
  %%	#TUCCC
 !#&&	#deDDD
 c""	!%#'"&#  	1
  	A  	A, *0 +,,J????2E:: ?(<'>$j%00 +(]
$'(<j$I$I A A RWV__bgh.?.?@@@@A= 	A  	Ar'   c                    t          j        g dg dg          }t          j        |d          \  }}|                    |j                  }t           j        t           j        fD ]W} ||          }t          ||j                   t          ||j	                   t          ||j        |j	                            Xd S )Nr5   )r   r   r   Tr-  )
r   r   r	   r   rB   r  r  r   r  inverse_indices)r   rc  expected_valuesexpected_inversefuncr   s         r%   test_unique_inverse_shapez$TestUnique.test_unique_inverse_shape  s    h			999-..,.Ic$,O,O,O))+33CI>>%r}4 	K 	KDT#YYF>>>/1GHHHsFM&2H$IJJJJ		K 	Kr'   r   )r   r   r   )r   r   r   r   	transposeFTr-   c                     t          j        |                              |          }|r|j        }t          j        |          }t          j        t          j        |                    }t          ||d           d S )NT)strict)r   matrixr   Tr	   rr   r   )r   r   r  r-   mature   s          r%   test_unique_with_matrixz"TestUnique.test_unique_with_matrix  sm     ioo$$U++ 	%CIcNN9RZ__--1ht444444r'   c                     t          j        t           j        ddt           j        g          }t          j        dt           j        g          }t          j        |dd          }t	          ||           d S )Nr   r.  Tr  r  r  r   arr1dre   r   s       r%   'test_unique_axis0_equal_nan_on_1d_arrayz2TestUnique.test_unique_axis0_equal_nan_on_1d_array  s_    "&!Q/008RL))5qD99968,,,,,r'   c                     t          j        t           j        ddt           j        g          }t          j        dt           j        g          }t          j        |dd          }t	          ||           d S )Nr   r.  rW   Tr  r  r  s       r%   &test_unique_axis_minus1_eq_on_1d_arrayz1TestUnique.test_unique_axis_minus1_eq_on_1d_array  s_    "&!Q/008RL))5rT:::68,,,,,r'   c                     t          j        t           j        ddt           j        g          }t          j        t
          d          5  t          j        |dd           d d d            d S # 1 swxY w Y   d S )Nr   zinteger argument expectedr   r.  Fr  )r   r   r  r   r   rb   r	   )r   r  s     r%   'test_unique_axis_float_raises_typeerrorz2TestUnique.test_unique_axis_float_raises_typeerror
  s    "&!Q/00]9,GHHH 	8 	8Ie#7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   A--A14A1r   Fr0  r  r.  r  i8ir   y             y              @c                     t          j        ||          }t          j        |          }t          |          t          |          dz
  k    sJ d S )Nr\   r   )r   r   r	   r4  )r   r   r  r   r  s        r%    test_unique_complex_signed_zerosz+TestUnique.test_unique_complex_signed_zeros  sL    
 HV2&&&IaLL1vvVq((((((r'   N)'r0   r1   r2   r  r!  rM  rP  rW  re  rm  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  r3   r'   r%   r  r  x  s       6" 6" 6"p  xL xL xLt
0 
0 
02 2 2"< < << < <H; H; H;TH; H; H;T> > > [U$W$W$WXX. . YX.A A AN N N> > >, [VaW--/ / .-/
 [V]]]33= = 43="? "? "?H1 1 1/ / /*: *: *:XK K K)A )A )AV	K 	K 	K [
))
))
		
	  [[5$-88[Wrx&<==5 5 >= 98 5- - -- - -8 8 8
 [THBHSMM828C==#ABB[Xb)9)9774;L;La(P)-wwtT/B/BB(G),aggc46H6H"(M(O P P) )P P CB) ) )r'   r  )__doc__r   numpyr   r   r   r   r   r   r   r	   numpy.dtypesr
   numpy.exceptionsr   numpy.testingr   r   r   r   r   r  r3   r'   r%   <module>r     s)         R R R R R R R R R R R R R R R R R R $ $ $ $ $ $ & & & & & &           c	# c	# c	# c	# c	# c	# c	# c	#L^
) ^
) ^
) ^
) ^
) ^
) ^
) ^
) ^
) ^
)r'   