
    shZ                        S SK r S SKJr  S SKrS SKrS SKrS SKJr  S SKr	S SK
JrJr  S SKJrJrJrJr  \" SS5      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S 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+S! r,S" r-S# r.S$ r/S% r0S& r1S' r2S( r3S) r4S* r5S+ r6S, r7S- r8 " S. S/\\5      r9 " S0 S1\95      r: " S2 S3\95      r; " S4 S5\;5      r< " S6 S7\;5      r= " S8 S9\;5      r> " S: S;\;5      r? " S< S=\;5      r@ " S> S?\95      rA " S@ SA\95      rB " SB SC\95      rC\DSD:X  a  \ R                  " 5         gg)E    N)
namedtuple)TypingError)jitnjit)TestCaseenable_pyobj_flagsMemoryLeakMixincompile_functionPointabc                 f    U SSR                  S U 5       5      0-  n [        SU [        5       5      $ )Ninitializerz, c              3   8   #    U  H  n[        U5      v   M     g 7fN)repr).0args     i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_sets.py	<genexpr>-_build_set_literal_usecase.<locals>.<genexpr>   s     +F#DIIs   	build_set)joinr
   globals)codeargss     r   _build_set_literal_usecaser      s1    =$))+F+F"FGGDKwy99    c                     Sn[        X5      $ )Nz@if 1:
    def build_set():
        return {%(initializer)s}
    r   r   r   s     r   set_literal_return_usecaser#      s    D &d11r   c                     Sn[        X5      $ )Nz^if 1:
    def build_set():
        my_set = {%(initializer)s}
        return list(my_set)
    r!   r"   s     r   set_literal_convert_usecaser%      s    D
 &d11r   c                  N    [        5       n U R                  S5        [        U 5      $ N   )setaddlenss    r   empty_constructor_usecaser.   '   s    AEE!Hq6Mr   c                 .    [        U 5      n[        U5      $ r   )r)   r+   r   r-   s     r   constructor_usecaser1   ,   s    CAq6Mr   c                 T    [        U 5      n/ nU H  nUR                  U5        M     U$ r   r)   append)r   r-   lvs       r   iterator_usecaser7   0   s*    CA
A	 Hr   c                     [        5       nUR                  U 5        UR                  U5        UR                  U5        [        U5      $ r   )r)   updatelist)r   r   cr-   s       r   update_usecaser<   7   s3    AHHQKHHQKHHQK7Nr   c                 4    [        U SS  5      n[        U5      $ r'   )r)   boolr0   s     r   bool_usecaser?   >   s    CGA7Nr   c                 b    [        U 5      nU H  nUR                  U5        M     [        U5      $ r   )r)   remover:   r   r   r-   r6   s       r   remove_usecaserC   C   s)    AA	 7Nr   c                 b    [        U 5      nU H  nUR                  U5        M     [        U5      $ r   )r)   discardr:   rB   s       r   discard_usecaserF   I   s)    AA			! 7Nr   c                     [        U 5      n[        S5       H%  nUR                  U5        UR                  U5        M'     [	        U5      $ )Ni  )r)   ranger*   rE   r:   )r   ur6   r-   is        r   add_discard_usecaserK   O   s:    AA4[	a			!  7Nr   c                     [        U 5      n/ n[        U5      S:  a0  UR                  UR                  5       5        [        U5      S:  a  M0  U$ Nr   )r)   r+   r4   pop)r   r-   r5   s      r   pop_usecaserO   V   s?    AA
A
a&1*	 a&1*Hr   c                 X    [        U 5      n/ nU H  nUR                  XB;   5        M     U$ r   r3   )r   r   r-   r5   r6   s        r   contains_usecaserQ   ]   s-    AA
A	 Hr   c                 b    [        U 5      nUR                  [        U5      5        [        U5      $ r   )r)   difference_updater:   r   r   r-   s      r   difference_update_usecaserU   d   s&    AAA7Nr   c                 b    [        U 5      nUR                  [        U5      5        [        U5      $ r   )r)   intersection_updater:   rT   s      r   intersection_update_usecaserX   i   s&    AA#a&!7Nr   c                 b    [        U 5      nUR                  [        U5      5        [        U5      $ r   )r)   symmetric_difference_updater:   rT   s      r   #symmetric_difference_update_usecaser[   n   s&    AA!!#a&)7Nr   c                 H    [        U 5      R                  [        U5      5      $ r   )r)   
isdisjointr   s     r   isdisjoint_usecaser^   s       q6SV$$r   c                 H    [        U 5      R                  [        U5      5      $ r   )r)   issubsetr   s     r   issubset_usecaserb   v   s    q6??3q6""r   c                 H    [        U 5      R                  [        U5      5      $ r   )r)   
issupersetr   s     r   issuperset_usecasere   y   r_   r   c                 d    [        U 5      nUR                  5         [        U5      [        U5      4$ r   )r)   clearr+   r:   r   r-   s     r   clear_usecaseri   |   s&    AAGGIq647?r   c                     [        U 5      nUR                  5       nUR                  5         [        U5      [	        U5      4$ r   )r)   copyrN   r+   r:   r   r-   sss      r   copy_usecasern      s2    AA	
BEEGr7DHr   c                     [        U 5      nUR                  5         UR                  5       nUR                  U S   5        [	        U5      [        U5      4$ rM   )r)   rg   rk   r*   r+   r:   rl   s      r   copy_usecase_emptyrp      sA    AAGGI	
BEE!A$Kr7DHr   c                     [        U 5      nUR                  U5        UR                  5       nUR                  5         [	        U5      [        U5      4$ r   )r)   rA   rk   rN   r+   r:   )r   r   r-   rm   s       r   copy_usecase_deletedrr      s=    AAHHQK	
BEEGr7DHr   c                 b    [        U 5      nUR                  [        U5      5      n[        U5      $ r   )r)   
differencer:   r   r   sar-   s       r   difference_usecaserw      s&    	QB
c!fA7Nr   c                 b    [        U 5      nUR                  [        U5      5      n[        U5      $ r   )r)   intersectionr:   ru   s       r   intersection_usecaserz      s&    	QB
AA7Nr   c                 b    [        U 5      nUR                  [        U5      5      n[        U5      $ r   )r)   symmetric_differencer:   ru   s       r   symmetric_difference_usecaser}      s(    	QB
A'A7Nr   c                 b    [        U 5      nUR                  [        U5      5      n[        U5      $ r   )r)   unionr:   ru   s       r   union_usecaser      s&    	QB
QA7Nr   c                     [        U 5      nU$ r   )r)   rh   s     r   set_return_usecaser      s    AAHr   c                     g r    )xs    r   noopr      s    r   c                 $    SnU  H  nX-  nM	     U$ )z
Expect a set of numbers
r   r   r   resr6   s      r   unbox_usecaser      s     C Jr   c                 8    SnU  H  nU[        U5      -  nM     U$ )z
Expect a set of tuples
r   r+   r   s      r   unbox_usecase2r      s%     Cs1v Jr   c                 ,    U u  pUnU H  nX4-  nM	     U$ )z*
Expect a (number, set of numbers) tuple.
r   r   r   r   r   r6   s        r   unbox_usecase3r      s&     DA
C Jr   c                 @    U u  pUnU H  nU[        U5      -  nM     U$ )z)
Expect a (number, set of tuples) tuple.
r   r   s        r   unbox_usecase4r      s,     DA
Cs1v Jr   c                 t    U R                  S5        U R                  U5        U [        U 5      [        U5      4$ N*   )r*   r9   r+   rv   sbs     r   reflect_simpler      s-    FF2JIIbMs2wBr   c                     [        U5      S:  a  [        S5      n U R                  S5        U R                  U5        [        S5      nU R	                  U5        U [        U 5      [        U5      4$ )Nr(   )g      &@g      6@g     @@g      F@g      E@)g     K@g     P@)r+   r)   r*   r9   rZ   )rv   r   scs      r   reflect_conditionalr      sZ    
2w{%&FF3KIIbM	ZB""2&s2wBr   c                 0    U R                  S5        [        er   )r*   ZeroDivisionErrorr,   s    r   reflect_exceptionr      s    EE"I
r   c                 F    U R                  UR                  5       5        XL $ r   )r*   rN   r   s     r   reflect_dualr      s    FF26688Or   c                     [        5       n/ nU  H,  nX1;  d  M
  UR                  U5        UR                  U5        M.     U$ r   )r)   r*   r4   )srcseenr   r6   s       r   unique_usecaser      s:    5D
C=HHQKJJqM  Jr   c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )
BaseTest   c                 `   > [         [        U ]  5         [        R                  " S5      U l        g r   )superr   setUprandomRandomrnd)self	__class__s    r   r   BaseTest.setUp   s     h#%==$r   c                 \    [         R                  " [        U5      5      R                  5       $ r   )nparangeinttolistr   stops     r   _rangeBaseTest._range  s    yyT#**,,r   c                    [        U5       Vs/ s H&  o0R                  R                  [        U5      5      PM(     nn[	        U[
        R                  5      (       a  [
        R                  " XAR                  S9$ U$ s  snf )z4
Choose *n* possibly duplicate items from sequence.
dtype)	rH   r   choicer:   
isinstancer   ndarrayarrayr   )r   seqnrJ   r5   s        r   _random_choiceBaseTest._random_choice  sY     27q:AXX__T#Y':c2::&&88AYY//H	 ;s   -A<c                 n    U R                  [        R                  " U5      5      nU R                  X!5      $ )z,
Get a 1d array with many duplicate values.
)r   r   sqrtr   r   r   r   s      r   duplicates_arrayBaseTest.duplicates_array  s+     KK
#""1((r   c                 L    U R                  US-  5      nU R                  X!5      $ )z+
Get a 1d array with values spread around.
g?)r   r   r   s      r   sparse_arrayBaseTest.sparse_array  s'    
 KKS!""1((r   c                 h   [        U[        5      (       a<  U R                  U[        5        [        X5       H  u  p4U R	                  X45        M     g [        U[
        5      (       a;  U R                  U[
        5        U R                  [        U5      [        U5      5        g U R                  X5        g r   )r   tupleassertIsInstancezip_assert_equal_unorderedr:   assertPreciseEqualsorted)r   r   r   rI   r6   s        r   r    BaseTest._assert_equal_unordered  s    a!!!U+A	,,Q2 "4  !!!T*##F1Ivay9##A)r   c                 :   ^ ^^ [        SS9" T5      mUUU 4S jnU$ )NTnopythonc                  <   > T" U 6 nT" U 6 nTR                  X5        g r   )r   )r   expectedgotcfuncpyfuncr   s      r   check)BaseTest.unordered_checker.<locals>.check*  s#    t}H,C((7r   r   r   r   r   r   s   `` @r   unordered_checkerBaseTest.unordered_checker(  s    T"6*	8 r   )r   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   __static_attributes____classcell__)r   s   @r   r   r      s+    %-))	* r   r   c                   2    \ rS rSrS rS r\4S jrS rSr	g)TestSetLiteralsi1  c                 \    [        U5      nU" 5       nU" 5       nU R                  X45        XC4$ r   )r   r   )r   r   r   r   r   s        r   r   TestSetLiterals.check3  s/    V8g.}r   c                 <    [        S5      nU R                  U5        g )N)r(         r   )r#   r   )r   r   s     r   test_build_setTestSetLiterals.test_build_set:  s    +L9

6r   c                     [        S5      nU R                  U5        [        S5      nU R                  U5      u  p4U R                  [        UR	                  5       5      [        UR	                  5       5      5        g )N)r(          @y              @r   )r   r   )r#   r   assertIstyperN   )r   flagsr   r   r   s        r   test_build_heterogeneous_set,TestSetLiterals.test_build_heterogeneous_set>  sU    +O<

6+H5

6*d3779otHLLN';<r   c                     [        U R                  S5      5      n[        U5      n[        SS9" U5      nU" 5       nU" 5       nU R	                  [        U5      [        U5      5        g )N2   Tr   )r:   r   r%   r   r   r   )r   r   r   r   r   r   s         r   test_build_set_nopython'TestSetLiterals.test_build_set_nopythonE  sW    4$$R(),S1T"6*8gx 0&+>r   r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   1  s     2D =?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S 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S 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'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S-r/g.)/TestSetsiO  c                   ^ ^^ [         m[        SS9" T5      mT R                  T" 5       T" 5       5        [        m[        SS9" T5      mUUU 4S jnU" T R	                  S5      5        U" T R                  S5      5        g )NTr   c                 B   > TR                  T" U 5      T" U 5      5        g r   r   )r   r   r   r   s    r   r   (TestSets.test_constructor.<locals>.checkX  s    ##F3Ks<r      )r.   r   r   r1   r   r   )r   r   r   r   s   ` @@r   test_constructorTestSets.test_constructorQ  sl    *T"6*2$T"6*	= 	d##C()d$%r   c                     [         n[        SS9" U5      nU R                  S5      nU R                  U" U5      [	        U5      5        g )NTr   r  )r   r   r   assertEqualr)   )r   r   r   r   s       r   test_set_returnTestSets.test_set_return^  s>    #T"6*##C(sSX.r   c                     [         nU R                  U5      nU" U R                  S5      5        U" U R                  S5      5        g Nr  )r7   r   r   r   r   r   r   s      r   test_iteratorTestSets.test_iteratore  s=    !&&v.d##C()d$%r   c                     [         nU R                  U5      nU R                  S5      nU R                  S5      nU R                  S5      nU" X4U5        g Nr   )r<   r   r   r   )r   r   r   r   r   r;   s         r   test_updateTestSets.test_updatel  sP    &&v.b!!!"%b!aAr   c                 t    [         nU R                  U5      nU R                  S5      nUS S S2   nU" X45        g )Nr   
   )rC   r   r   r   r   r   r   r   s        r   test_removeTestSets.test_removeu  s;    &&v.b!ddGar   c                    U R                  5         [        n[        SS9" U5      n[        [	        U R                  S5      5      5      nUSS  nUS   4nU R                  [        5         U" XE5        S S S 5        g ! , (       d  f       g = f)NTr   r   r(   r   )disable_leak_checkrC   r   r   r)   r   assertRaisesKeyError)r   r   r   itemsr   r   s         r   test_remove_errorTestSets.test_remove_error}  su    !T"6* c$++A./0!"I1XKx(!K )((s   )	A;;
B	c                     [         nU R                  U5      nU R                  S5      nU R                  S5      nU" X45        g r  )rF   r   r   r  s        r   test_discardTestSets.test_discard  s>     &&v.b!b!ar   c                     [         nU R                  U5      nS=p4X4:X  a  U R                  S5      u  p4X4:X  a  M  U" U4XD5        g)z
Check that the insertion logic does not create an infinite lookup
chain with deleted entries (insertion should happen at the first
deleted entry, not at the free entry at the end of the chain).
See issue #1913.
Nr   )rK   r   r   r  s        r   test_add_discardTestSets.test_add_discard  sL     %&&v. f$$Q'DA fqdAr   c                 `    [         nU R                  U5      nU" U R                  S5      5        g r  )rO   r   r   r  s      r   test_popTestSets.test_pop  s*    &&v.d#$r   c                    ^ ^^ [         m[        SS9" T5      mUUU 4S jnT R                  S5      nT R                  S5      nU" X#5        g )NTr   c                 B   > TR                  T" X5      T" X5      5        g r   r  r   r   r   r   r   s     r   r   %TestSets.test_contains.<locals>.check      ##F1L%+>r   r   )rQ   r   r   )r   r   r   r   r   r   s   `   @@r   test_containsTestSets.test_contains  sE    !T"6*	? b!b!ar   c                     U R                  U5      nSn[        R                  " X35       H/  u  pEU R                  U5      nU R                  U5      nU" Xg5        M1     g )Nr(   r   i  r   	itertoolsproductr   )r   r   r   sizesnanbr   r   s           r   _test_xxx_updateTestSets._test_xxx_update  sU    &&v.''5FB!!"%A!!"%A!K 6r   c                 .    U R                  [        5        g r   )r7  rU   r   s    r   test_difference_updateTestSets.test_difference_update  s    78r   c                 .    U R                  [        5        g r   )r7  rX   r:  s    r   test_intersection_update!TestSets.test_intersection_update  s    9:r   c                 .    U R                  [        5        g r   )r7  r[   r:  s    r    test_symmetric_difference_update)TestSets.test_symmetric_difference_update  s    ABr   c                 F  ^ ^^ [        SS9" T5      mUUU 4S jn[        [        T R                  S5      T R                  S5      /5      u  p4X4-  X4-
  X4-  X4-  /nU Vs/ s H  n[	        U5      PM     nn[
        R                  " XU5       H  u  p4U" X45        M     g s  snf )NTr   c                 B   > TR                  T" X5      T" X5      5        g r   r  r*  s     r   r   (TestSets._test_comparator.<locals>.check  r,  r   r     )r   mapr)   r   r   r2  r3  )r   r   r   r   r   r   r   r   s   ``     @r   _test_comparatorTestSets._test_comparator  s    T"6*	? 3**2.0A0A"0EFGquaeQU+"&'$Qa$'%%d1DA!K 2 (s   Bc                 .    U R                  [        5        g r   )rH  r^   r:  s    r   test_isdisjointTestSets.test_isdisjoint      01r   c                 .    U R                  [        5        g r   )rH  rb   r:  s    r   test_issubsetTestSets.test_issubset  s    ./r   c                 .    U R                  [        5        g r   )rH  re   r:  s    r   test_issupersetTestSets.test_issuperset  rM  r   c                 `    [         nU R                  U5      nU" U R                  S5      5        g r  )ri   r   r   r  s      r   
test_clearTestSets.test_clear  s*    &&v.d#$r   c                 P   [         nU R                  U5      nU" U R                  S5      5        [        nU R                  U5      nU R                  S5      nU" U5        [        nU R                  U5      nU" SS5        U R                  S5      nU" X3[        U5      S-     5        g )Nr   r(   r(   r         r   )rn   r   r   rp   rr   r+   )r   r   r   r   s       r   	test_copyTestSets.test_copy  s    &&v.d#$#&&v.a a &&&v.mQb!a3q6Q; r   c                     [         nU R                  U5      nU" U R                  S5      5        U" U R                  S5      5        g )Nr(   r   )r?   r   r   r  s      r   	test_boolTestSets.test_bool  s=    &&v.d"#d"#r   c                     U R                  U5      nSu  p4U" X45        Sn[        R                  " XU5       H/  u  pgU R                  U5      nU R                  U5      nU" X45        M1     g )N)rX  )r   r      rZ  r   r0  r1  )r   r   r   r   r   r4  r5  r6  s           r   _test_set_operatorTestSets._test_set_operator  sc    &&v./a''5FB!!"%A!!"%A!K 6r   c                 D    S[        US9-  n[        SU[        5       5      $ )Nzrif 1:
        def operator_usecase(a, b):
            s = set(a) %(op)s set(b)
            return list(s)
        opoperator_usecasedictr
   r   r   rf  r   s      r   make_operator_usecaseTestSets.make_operator_usecase  +     bk	
   2D')DDr   c                 D    S[        US9-  n[        SU[        5       5      $ )Nzif 1:
        def inplace_operator_usecase(a, b):
            sa = set(a)
            sb = set(b)
            sc = sa
            sc %(op)s sb
            return list(sc), list(sa)
        re  inplace_operator_usecaserh  rj  s      r   make_inplace_operator_usecase&TestSets.make_inplace_operator_usecase  +     bk   :D')LLr   c                 D    S[        US9-  n[        SU[        5       5      $ )Nz\if 1:
        def comparison_usecase(a, b):
            return set(a) %(op)s set(b)
        re  comparison_usecaserh  rj  s      r   make_comparison_usecase TestSets.make_comparison_usecase  +     bk   4dGIFFr   c                 .    U R                  [        5        g r   )rb  rw   r:  s    r   test_differenceTestSets.test_difference  s     23r   c                 .    U R                  [        5        g r   )rb  rz   r:  s    r   test_intersectionTestSets.test_intersection!  s     45r   c                 .    U R                  [        5        g r   )rb  r}   r:  s    r   test_symmetric_difference"TestSets.test_symmetric_difference$  s     <=r   c                 .    U R                  [        5        g r   )rb  r   r:  s    r   
test_unionTestSets.test_union'  s    .r   c                 D    U R                  U R                  S5      5        g )N&rb  rk  r:  s    r   test_andTestSets.test_and*       : :3 ?@r   c                 D    U R                  U R                  S5      5        g )N|r  r:  s    r   test_orTestSets.test_or-  r  r   c                 D    U R                  U R                  S5      5        g )N-r  r:  s    r   test_subTestSets.test_sub0  r  r   c                 D    U R                  U R                  S5      5        g )N^r  r:  s    r   test_xorTestSets.test_xor3  r  r   c                 D    U R                  U R                  S5      5        g )Nz==rb  ru  r:  s    r   test_eqTestSets.test_eq6       < <T BCr   c                 D    U R                  U R                  S5      5        g )Nz!=r  r:  s    r   test_neTestSets.test_ne9  r  r   c                 D    U R                  U R                  S5      5        g )Nz<=r  r:  s    r   test_leTestSets.test_le<  r  r   c                 D    U R                  U R                  S5      5        g )N<r  r:  s    r   test_ltTestSets.test_lt?       < <S ABr   c                 D    U R                  U R                  S5      5        g )Nz>=r  r:  s    r   test_geTestSets.test_geB  r  r   c                 D    U R                  U R                  S5      5        g )N>r  r:  s    r   test_gtTestSets.test_gtE  r  r   c                 D    U R                  U R                  S5      5        g )Nz&=rb  rp  r:  s    r   	test_iandTestSets.test_iandH       B B4 HIr   c                 D    U R                  U R                  S5      5        g )Nz|=r  r:  s    r   test_iorTestSets.test_iorK  r  r   c                 D    U R                  U R                  S5      5        g )Nz-=r  r:  s    r   	test_isubTestSets.test_isubN  r  r   c                 D    U R                  U R                  S5      5        g )Nz^=r  r:  s    r   	test_ixorTestSets.test_ixorQ  r  r   r   N)0r   r   r   r   r  r  r  r  r  r  r   r#  r&  r-  r7  r;  r>  rA  rH  rK  rO  rR  rU  r[  r^  rb  rk  rp  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r   O  s    &/& %9;C	202%!$$
E	MG46>/AAAADDDCDCJJJJr   r   c                       \ rS rSrSrS rSrg)TestFloatSetsiU  z%
Test sets with floating-point keys.
c                 v    [         R                  " U[         R                  S9[         R                  " S5      -  $ )Nr   g?)r   r   float32r   s     r   r   TestFloatSets._range\  s$    yyRZZ02::c?BBr   r   Nr   r   r   r   __doc__r   r   r   r   r   r  r  U  s    Cr   r  c                       \ rS rSrSrS rSrg)TestTupleSetsi`  z
Test sets with tuple keys.
c                 
   [         R                  " U[         R                  S9nUS-  nUS-  R                  [         R                  5      nUS-	  S-  R                  [         R
                  5      n[        [        X4U5      5      $ )Nr   l   UU*UU* l   *UU     r(   )r   r   int64astypeint32bool_r:   r   )r   r   r   r   r;   ds         r   r   TestTupleSets._ranged  sf    IId"((+""^##BHH-2g]""288,CaL!!r   r   Nr  r   r   r   r  r  `  s    "r   r  c                       \ rS rSrSrS rSrg)TestUnicodeSetsil  zJ
Test sets with unicode keys. For the purpose of testing refcounted sets.
c                 t    [        [        U5      5       Vs/ s H  nSR                  U5      PM     sn$ s  snf )NzA{})rH   r   format)r   r   rJ   s      r   r   TestUnicodeSets._rangep  s-    ).s4y)9:)9AQ)9:::s   5r   Nr  r   r   r   r  r  l  s    ;r   r  c                       \ rS rSrS rSrg)TestSetsInvalidDtypeit  c                     [        SS9" U5      n[        / SQ5      n[        / SQ5      nSnU R                  [        U5         U" X45        S S S 5        g ! , (       d  f       g = f)NTr   rX  )r   r   r;   z!All Sets must be of the same typer   r)   assertRaisesRegexr   r   r   r   r   r   msgs         r   rb  'TestSetsInvalidDtype._test_set_operatorv  sO     T"6* 1##K5!K 655s   	A
A"r   N)r   r   r   r   rb  r   r   r   r   r  r  t  s    	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S rS rSrg)TestSetsInvalidi  c                 :    U R                  U5      n[        U5      $ r   )r|   r:   rT   s      r   r}   ,TestSetsInvalid.symmetric_difference_usecase  s    ""1%Awr   c                 :    U R                  U5      n[        U5      $ r   )rt   r:   rT   s      r   rw   "TestSetsInvalid.difference_usecase  s    LLOAwr   c                 :    U R                  U5      n[        U5      $ r   )ry   r:   rT   s      r   rz   $TestSetsInvalid.intersection_usecase  s    NN1Awr   c                 :    U R                  U5      n[        U5      $ r   )r   r:   rT   s      r   r   TestSetsInvalid.union_usecase  s    GGAJAwr   c                     [        SS9" U5      n[        / SQ5      nSnSnU R                  [        U5         U" X45        S S S 5        g ! , (       d  f       g = f)NTr   rX  r(   r   r   zAll arguments must be Setsr  r  s         r   rb  "TestSetsInvalid._test_set_operator  sJ     T"6**##K5!K 655s   	A		
Ac                 B    U R                  [        R                  5        g r   )rb  r  rw   r:  s    r   ry  TestSetsInvalid.test_difference  s     B BCr   c                 B    U R                  [        R                  5        g r   )rb  r  rz   r:  s    r   r|  !TestSetsInvalid.test_intersection  s     D DEr   c                 B    U R                  [        R                  5        g r   )rb  r  r}   r:  s    r   r  )TestSetsInvalid.test_symmetric_difference  s     L LMr   c                 B    U R                  [        R                  5        g r   )rb  r  r   r:  s    r   r  TestSetsInvalid.test_union  s     = =>r   c                 D    S[        US9-  n[        SU[        5       5      $ )Nzhif 1:
        def operator_usecase(a, b):
            s = a %(op)s b
            return list(s)
        re  rg  rh  rj  s      r   rk  %TestSetsInvalid.make_operator_usecase  rm  r   c                 D    S[        US9-  n[        SU[        5       5      $ )Nzif 1:
        def inplace_operator_usecase(a, b):
            sa = a
            sb = b
            sc = sa
            sc %(op)s sb
            return list(sc), list(sa)
        re  ro  rh  rj  s      r   rp  -TestSetsInvalid.make_inplace_operator_usecase  rr  r   c                 D    S[        US9-  n[        SU[        5       5      $ )NzWif 1:
        def comparison_usecase(a, b):
            return set(a) %(op)s b
        re  rt  rh  rj  s      r   ru  'TestSetsInvalid.make_comparison_usecase  rw  r   r   N)r   r   r   r   r}   rw   rz   r   rb  ry  r|  r  r  rk  rp  ru  r   r   r   r   r  r    sD    	DFN?E	MGr   r  c                   `    \ rS rSrSr\R                  S 5       rS rS r	S r
S rS rS	 rS
rg)TestUnboxingi  z6
Test unboxing of Python sets into native Numba sets.
c              #      #    U R                  [        5       nS v   S S S 5        Ub&  U R                  [        WR                  5      U5        g g ! , (       d  f       N8= f7fr   )r  	TypeErrorassertRegexstr	exception)r   r  raisess      r   assert_type_errorTestUnboxing.assert_type_error  sJ     y)V *?S!1!12C8  *)s   A A2A 
AA c                 :   ^ ^^ [        SS9" T5      mUUU 4S jnU$ )NTr   c                 H   > T" U 5      nT" U 5      nTR                  X!5        g r   r  )r   r   r   r   r   r   s      r   r   'TestUnboxing.check_unary.<locals>.check  s#    c{H*C##C2r   r   r   s   `` @r   check_unaryTestUnboxing.check_unary  s    T"6*	3 r   c                     U R                  [        5      nU" [        SS/5      5        U" [        SS/5      5        U" [        [        S5      5      5        g )Nr(   r   y              ?y              @d   )r  r   r)   rH   r   r   s     r   test_numbersTestUnboxing.test_numbers  sB      /c1a&kc2t*oc%*or   c                 z    U R                  [        5      nU" [        SS/5      5        U" [        SS/5      5        g )N)r(   r   )r   rY  )r(                  @)r   y              @)r  r   r)   r  s     r   test_tuplesTestUnboxing.test_tuples  s6      0c66"#$c7G$%&r   c                 X    U R                  [        5      nU" S[        / SQ5      45        g )Nr(   )r   r   rY  )r  r   r)   r  s     r   test_set_inside_tuple"TestUnboxing.test_set_inside_tuple  s#      0q#i.!"r   c                 X    U R                  [        5      nU" S[        SS/5      45        g )Nr(   )r   )r   )r  r   r)   r  s     r   test_set_of_tuples_inside_tuple,TestUnboxing.test_set_of_tuples_inside_tuple  s(      0q#tTl#$%r   c           
         Sn[         n[        SS9" U5      n[        SS/5      nU R                  U5         U" U5        S S S 5        U R	                  U[        SS/5      5        U R                  U5         U" [        SS/5      5        S S S 5        U R                  U5         U" S[        SS/5      45        S S S 5        U R                  U5         U" [        S[        SS/5      5      5        S S S 5        [        SS/5      nU R                  [        [        45       nU" U5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       g = f)	Nzcan't unbox heterogeneous setTr   r(   g      @r	  )r(   )r   r   )	r   r   r)   r  r  r   r  
IndexError
ValueError)r   r  r   r   vallstr  s          r   test_errorsTestUnboxing.test_errors  s4   -T"6*1c(m##C(#J ) 	c1c(m,##C(#q"g, ) ##C(1c1b'l#$ )##C(%32w<() ) 4.! 
J78F#J 98! )( )( )((( 98s;   	D15E"EE$	E51
D?
E
E!$
E25
Fr   N)r   r   r   r   r  
contextlibcontextmanagerr  r  r  r
  r  r  r  r   r   r   r   r  r    s?     9 9'
#&r   r  c                   <    \ rS rSrSrS rS rS rS rS r	S r
S	rg
)TestSetReflectioni  z=
Test reflection of native Numba sets on Python set objects.
c                    [        SS9" U5      n[        / SQ5      [        S/5      4[        / SQ5      [        / SQ5      4/nU H  u  pE[        U5      n[        U5      nU" Xe5      nU R                  Xu5         U" Xu5      n	U R                  X5        U R                  Xg5        U R	                  US   UL U	S   UL 5        AA	S S S 5        M     g ! , (       d  f       M  = f)NTr   )g      ?r   g      @g      @g        )g      @g      @g      @g       @g      "@r   )r   r)   assertRefCountr   r  )
r   r   r   samplesdestr   r   r   pyrescress
             r   check_reflection"TestSetReflection.check_reflection  s    T"6*()3t95()3/C+DE !ID4yHd)C8)E$$S.S''4''6  qX!5tAw#~F4 /.	 ! /.s   9A	C
C	c                 .    U R                  [        5        g r   )r#  r   r:  s    r   test_reflect_simple%TestSetReflection.test_reflect_simple  s    n-r   c                 .    U R                  [        5        g r   )r#  r   r:  s    r   test_reflect_conditional*TestSetReflection.test_reflect_conditional   s    12r   c                 F   [         n[        SS9" U5      n[        / SQ5      nU R                  U5         U R	                  [
        5         U" U5        SSS5        U R                  U[        / SQ5      5        SSS5        g! , (       d  f       N4= f! , (       d  f       g= f)zL
When the function exits with an exception, sets should still be
reflected.
Tr   r  N)r(   r   r   r   )r   r   r)   r  r  r   r   )r   r   r   r-   s       r   test_reflect_exception(TestSetReflection.test_reflect_exception#  sw    
 #T"6*	N  #""#45a 6##As='9: $#55 $#s#   B
	B%B
B	B
B c                     [         n[        SS9" U5      n[        / SQ5      nUR                  5       nU" X35      nU" XD5      nU R	                  XV5        U R	                  X45        U R                  X45        g)zN
When the same set object is reflected twice, behaviour should
be consistent.
Tr   r  N)r   r   r)   rk   r   assertRefCountEqual)r   r   r   pysetcsetr   r   s          r   test_reflect_same_set'TestSetReflection.test_reflect_same_set0  sj    
 T"6*Izz|%'D.,  -r   c                     [        SS9" [        5      n[        S/5      nU Vs/ s H  n[        U5      PM     nnU" U5        U R	                  U Vs/ s H  n[        U5      PM     snU5        gs  snf s  snf )z?
When the set wasn't mutated, no reflection should take place.
Tr   y              )@N)r   r   r)   idr  )r   r   r-   r   idss        r   test_reflect_clean$TestSetReflection.test_reflect_clean?  sh     T"4(L ar!ua a+A"Q%+S1 !+s   A0A5r   N)r   r   r   r   r  r#  r&  r)  r,  r2  r7  r   r   r   r   r  r    s%      .3;.	2r   r  c                   $    \ rS rSrSrS rS rSrg)TestExamplesiK  z
Examples of using sets.
c                     [         nU R                  U5      nU" U R                  S5      5        U" U R                  S5      5        g r  )r   r   r   r   r  s      r   test_uniqueTestExamples.test_uniqueP  s=    &&v.d##C()d$%r   c                 :    S nU R                  U5      nU" 5         g )Nc                      [         R                  " S5      n [        5       nUR                  1 Sk5        UR	                  U 5        U$ )Nr(   >   r(   r   r   )r   uint64r)   r9   r*   )rJ   Rs     r   impl9TestExamples.test_type_coercion_from_update.<locals>.implY  s2    		!AAHHYEE!HHr   )r   )r   rB  r   s      r   test_type_coercion_from_update+TestExamples.test_type_coercion_from_updateW  s    	 &&t,r   r   N)r   r   r   r   r  r<  rD  r   r   r   r   r:  r:  K  s    &	r   r:  __main__)Funittestcollectionsr   r  r2  r   numba.core.errorsr   numpyr   numbar   r   numba.tests.supportr   r   r	   r
   r   r   r#   r%   r.   r1   r7   r<   r?   rC   rF   rK   rO   rQ   rU   rX   r[   r^   rb   re   ri   rn   rp   rr   rw   rz   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   mainr   r   r   <module>rN     s    "    )  3 3 	7J':22




%#%





	 
	 
3 3l?h ?<CJx CJLCH C	"H 	";h ;8 AGh AGH?8 ?D@2 @2F8 0 zMMO r   