
    ܙd[                        d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
Zd dlmZmZmZ d dlmZ d dlmZ d dl Z d dlmZmZmZmZmZ  edd	          Zd
 Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5d% Z6d& Z7d' Z8d( Z9d) Z:d* Z;d+ Z<d, Z=d- Z>d. Z?d/ Z@ G d0 d1ee          ZA G d2 d3eA          ZB G d4 d5eA          ZC G d6 d7eC          ZD G d8 d9eC          ZE G d: d;eC          ZF G d< d=eC          ZG G d> d?eC          ZH G d@ dAeA          ZI G dB dCeA          ZJ G dD dEeA          ZKeLdFk    r e jM                     dS dS )G    N)
namedtuple)TypingError)compile_isolatedFlagserrorsjit)types)TestCaseenable_pyobj_flagsMemoryLeakMixintagcompile_functionPointabc                     | dd                     d |D                       iz  } t          d| t                                S )Ninitializerz, c              3   4   K   | ]}t          |          V  d S N)repr).0args     5lib/python3.11/site-packages/numba/tests/test_sets.py	<genexpr>z-_build_set_literal_usecase.<locals>.<genexpr>   s(      +F+F#DII+F+F+F+F+F+F    	build_set)joinr   globals)codeargss     r   _build_set_literal_usecaser#      sB    =$))+F+F+F+F+F"F"FGGDKwyy999r   c                 &    d}t          ||           S )Nz@if 1:
    def build_set():
        return {%(initializer)s}
    r#   r"   r!   s     r   set_literal_return_usecaser'      s    D &dD111r   c                 &    d}t          ||           S )Nz^if 1:
    def build_set():
        my_set = {%(initializer)s}
        return list(my_set)
    r%   r&   s     r   set_literal_convert_usecaser)   #   s    D
 &dD111r   c                  f    t                      } |                     d           t          |           S N   )setaddlenss    r   empty_constructor_usecaser2   ,   s%    AEE!HHHq66Mr   c                 >    t          |           }t          |          S r   )r-   r/   r   r1   s     r   constructor_usecaser5   1   s    CAq66Mr   c                 \    t          |           }g }|D ]}|                    |           |S r   r-   append)r   r1   lvs       r   iterator_usecaser;   5   s7    CA
A  	Hr   c                     t                      }|                    |            |                    |           |                    |           t          |          S r   )r-   updatelist)r   r   cr1   s       r   update_usecaser@   <   sC    AHHQKKKHHQKKKHHQKKK77Nr   c                 N    t          | dd                    }t          |          S r+   )r-   boolr4   s     r   bool_usecaserC   C   s     CGA77Nr   c                 r    t          |           }|D ]}|                    |           t          |          S r   )r-   remover>   r   r   r1   r:   s       r   remove_usecaserG   H   s8    AA  	77Nr   c                 r    t          |           }|D ]}|                    |           t          |          S r   )r-   discardr>   rF   s       r   discard_usecaserJ   N   s8    AA  			!77Nr   c                     t          |           }t          d          D ],}|                    |           |                    |           -t	          |          S )Ni  )r-   ranger.   rI   r>   )r   ur:   r1   is        r   add_discard_usecaserO   T   sM    AA4[[  	a			!77Nr   c                     t          |           }g }t          |          dk    r:|                    |                                           t          |          dk    :|S Nr   )r-   r/   r8   pop)r   r1   r9   s      r   pop_usecaserS   [   sQ    AA
A
a&&1**	 a&&1**Hr   c                 `    t          |           }g }|D ]}|                    ||v            |S r   r7   )r   r   r1   r9   r:   s        r   contains_usecaserU   b   s?    AA
A  	aHr   c                     t          |           }|                    t          |                     t          |          S r   )r-   difference_updater>   r   r   r1   s      r   difference_update_usecaserY   i   s2    AAA77Nr   c                     t          |           }|                    t          |                     t          |          S r   )r-   intersection_updater>   rX   s      r   intersection_update_usecaser\   n   s2    AA#a&&!!!77Nr   c                     t          |           }|                    t          |                     t          |          S r   )r-   symmetric_difference_updater>   rX   s      r   #symmetric_difference_update_usecaser_   s   s2    AA!!#a&&)))77Nr   c                 `    t          |                               t          |                    S r   )r-   
isdisjointr   s     r   isdisjoint_usecaserb   x   "    q66SVV$$$r   c                 `    t          |                               t          |                    S r   )r-   issubsetr   s     r   issubset_usecaserf   {   s     q66??3q66"""r   c                 `    t          |                               t          |                    S r   )r-   
issupersetr   s     r   issuperset_usecaseri   ~   rc   r   c                     t          |           }|                                 t          |          t          |          fS r   )r-   clearr/   r>   r   r1   s     r   clear_usecaserm      s0    AAGGIIIq66477?r   c                     t          |           }|                                }|                                 t          |          t	          |          fS r   )r-   copyrR   r/   r>   r   r1   sss      r   copy_usecaserr      s>    AA	
BEEGGGr77DHHr   c                     t          |           }|                                 |                                }|                    | d                    t	          |          t          |          fS rQ   )r-   rk   ro   r.   r/   r>   rp   s      r   copy_usecase_emptyrt      sQ    AAGGIII	
BEE!A$KKKr77DHHr   c                     t          |           }|                    |           |                                }|                                 t	          |          t          |          fS r   )r-   rE   ro   rR   r/   r>   )r   r   r1   rq   s       r   copy_usecase_deletedrv      sM    AAHHQKKK	
BEEGGGr77DHHr   c                     t          |           }|                    t          |                    }t          |          S r   )r-   
differencer>   r   r   sar1   s       r   difference_usecaser{      s/    	QB
c!ffA77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r-   intersectionr>   ry   s       r   intersection_usecaser~      s/    	QB
AA77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r-   symmetric_differencer>   ry   s       r   symmetric_difference_usecaser      s1    	QB
A''A77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r-   unionr>   ry   s       r   union_usecaser      s/    	QB
QA77Nr   c                 $    t          |           }|S r   )r-   rl   s     r   set_return_usecaser      s    AAHr   c                     d S r    )xs    r   noopr      s    Dr   c                     d}| D ]}||z  }|S )z!
    Expect a set of numbers
    r   r   r   resr:   s      r   unbox_usecaser      s(     C  qJr   c                 8    d}| D ]}|t          |          z  }|S )z 
    Expect a set of tuples
    r   r/   r   s      r   unbox_usecase2r      s.     C  s1vvJr   c                 (    | \  }}|}|D ]}||z  }|S )z2
    Expect a (number, set of numbers) tuple.
    r   r   r   r   r   r:   s        r   unbox_usecase3r      s1     DAq
C  qJr   c                 B    | \  }}|}|D ]}|t          |          z  }|S )z1
    Expect a (number, set of tuples) tuple.
    r   r   s        r   unbox_usecase4r      s7     DAq
C  s1vvJr   c                     |                      d           |                     |           | t          |           t          |          fS N*   )r.   r=   r/   rz   sbs     r   reflect_simpler      s9    FF2JJJIIbMMMs2wwBr   c                     t          |          dk    rt          d          } |                     d           |                     |           t          d          }|                     |           | t          |           t          |          fS )Nr,   )g      &@g      6@g     @@g      F@g      E@)g     K@g     P@)r/   r-   r.   r=   r^   )rz   r   scs      r   reflect_conditionalr      su    
2ww{{%&&FF3KKKIIbMMM	ZB""2&&&s2wwBr   c                 :    |                      d           t          r   )r.   ZeroDivisionErrorr0   s    r   reflect_exceptionr      s    EE"III
r   c                 X    |                      |                                           | |u S r   )r.   rR   r   s     r   reflect_dualr      s%    FF266888Or   c                     t                      }g }| D ]0}||vr*|                    |           |                    |           1|S r   )r-   r.   r8   )srcseenr   r:   s       r   unique_usecaser      sL    55D
C  D==HHQKKKJJqMMMJr   c                   B     e Zd Z fdZd Zd Zd Zd Zd Zd Z	 xZ
S )BaseTestc                     t          t          |                                            t          j        d          | _        d S r   )superr   setUprandomRandomrnd)self	__class__s    r   r   zBaseTest.setUp  s4    h##%%%=$$r   c                 D    t          j        t          |                    S r   )nparangeintr   stops     r   _rangezBaseTest._range  s    yT###r   c                       fdt          |          D             }t          t          j                  rt          j        |j                  S |S )zD
        Choose *n* possibly duplicate items from sequence.
        c                 ^    g | ])}j                             t                              *S r   )r   choicer>   )r   rN   r   seqs     r   
<listcomp>z+BaseTest._random_choice.<locals>.<listcomp>  s-    :::ATX__T#YY'':::r   dtype)rL   
isinstancer   ndarrayarrayr   )r   r   nr9   s   ``  r   _random_choicezBaseTest._random_choice	  sX     ;::::q:::c2:&& 	8ASY////Hr   c                 |    |                      t          j        |                    }|                     ||          S )z<
        Get a 1d array with many duplicate values.
        )r   r   sqrtr   r   r   r   s      r   duplicates_arrayzBaseTest.duplicates_array  s3     KK

##""1a(((r   c                 ^    |                      |dz            }|                     ||          S )z;
        Get a 1d array with values spread around.
        g?)r   r   r   s      r   sparse_arrayzBaseTest.sparse_array  s/    
 KKS!!""1a(((r   c                    t          |t                    rI|                     |t                     t          ||          D ]\  }}|                     ||           d S t          |t
                    rM|                     |t
                     |                     t          |          t          |                     d S |                     ||           d S r   )r   tupleassertIsInstancezip_assert_equal_unorderedr>   assertPreciseEqualsorted)r   r   r   rM   r:   s        r   r   z BaseTest._assert_equal_unordered"  s    a 	*!!!U+++Aq		 3 31,,Q22223 34   	*!!!T***##F1IIvayy99999##Aq)))))r   c                 L      t          d                     fd}|S )NTnopythonc                  H     |  } |  }                     ||           d S r   )r   )r"   expectedgotcfuncpyfuncr   s      r   checkz)BaseTest.unordered_checker.<locals>.check/  s5    vt}H%,C((377777r   r   r   r   r   r   s   `` @r   unordered_checkerzBaseTest.unordered_checker-  sI    "T"""6**	8 	8 	8 	8 	8 	8 	8 r   )__name__
__module____qualname__r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r      s        % % % % %$ $ $  ) ) )) ) )	* 	* 	*      r   r   c                   (    e Zd ZefdZefdZd ZdS )TestSetLiteralsc                 R    t          d          }|                     ||           d S )N)r,         r   flags)r'   run_nullary_func)r   r   r   s      r   test_build_setzTestSetLiterals.test_build_set8  s.    +L99fE22222r   c                 L   t          d          }|                     ||           t          d          }|                     ||          \  }}|                     t          |                                          t          |                                                     d S )N)r,          @y              @r   r   )r   r   )r'   r   assertIstyperR   )r   r   r   r   r   s        r   test_build_heterogeneous_setz,TestSetLiterals.test_build_heterogeneous_set<  s    +O<<fE222+H55--fE-BBXd37799ootHLLNN';';<<<<<r   c                 "   t          |                     d                    }t          |          } t          d          |          } |            } |            }|                     t          |          t          |                     d S )N2   Tr   )r>   r   r)   r	   r   r   )r   r   r   r   r   r   s         r   test_build_set_nopythonz'TestSetLiterals.test_build_set_nopythonD  s    4$$R(()),S11"T"""6**688eggx 0 0&++>>>>>r   N)r   r   r   r   r   r   r   r   r   r   r   r   6  sT        #5 3 3 3 3 2D = = = =? ? ? ? ?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d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d,S )-TestSetsc                 ^    t            t          d                                                                              t           t          d                     fd} |                     d                      |                     d                     d S )NTr   c                 X                          |            |                      d S r   r   )r   r   r   r   s    r   r   z(TestSets.test_constructor.<locals>.checkW  s/    ##FF3KKs<<<<<r      )r2   r	   r   r5   r   r   )r   r   r   r   s   ` @@r   test_constructorzTestSets.test_constructorP  s    *"T"""6**222$"T"""6**	= 	= 	= 	= 	= 	= 	= 	d##C(()))d$$%%%%%r   c                     t           } t          d          |          }|                     d          }|                      ||          t	          |                     d S )NTr   r   )r   r	   r   assertEqualr-   )r   r   r   r   s       r   test_set_returnzTestSets.test_set_return]  s^    #"T"""6**##C((sSXX.....r   c                     t           }|                     |          } ||                     d                      ||                     d                     d S Nr   )r;   r   r   r   r   r   r   s      r   test_iteratorzTestSets.test_iteratord  s\    !&&v..d##C(()))d$$%%%%%r   c                     t           }|                     |          }|                     d          }|                     d          }|                     d          } ||||           d S Nr   )r@   r   r   r   )r   r   r   r   r   r?   s         r   test_updatezTestSets.test_updatek  sh    &&v..b!!!!"%%b!!aAr   c                     t           }|                     |          }|                     d          }|d d d         } |||           d S )Nr   
   )rG   r   r   r   r   r   r   r   s        r   test_removezTestSets.test_removet  sO    &&v..b!!dddGar   c                 p   |                                   t          } t          d          |          }t          t	          |                     d                              }|dd          }|d         f}|                     t                    5   |||           d d d            d S # 1 swxY w Y   d S )NTr   r   r,   r   )disable_leak_checkrG   r	   r   r-   r   assertRaisesKeyError)r   r   r   itemsr   r   s         r   test_remove_errorzTestSets.test_remove_error|  s    !!!"T"""6** c$++A..//00!""I1XKx(( 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B++B/2B/c                     t           }|                     |          }|                     d          }|                     d          } |||           d S r  )rJ   r   r   r  s        r   test_discardzTestSets.test_discard  sS     &&v..b!!b!!ar   c                     t           }|                     |          }dx}}||k    r|                     d          \  }}||k     ||f||           dS )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   )rO   r   r   r  s        r   test_add_discardzTestSets.test_add_discard  sn     %&&v.. A1ff$$Q''DAq 1ffqdAqr   c                 z    t           }|                     |          } ||                     d                     d S r  )rS   r   r   r   s      r   test_popzTestSets.test_pop  s>    &&v..d##$$$$$r   c                      t            t          d                     fd}                     d          }                     d          } |||           d S )NTr   c                 \                          | |           | |                     d S r   r   r   r   r   r   r   s     r   r   z%TestSets.test_contains.<locals>.check  3    ##FF1aLL%%1++>>>>>r   r   )rU   r	   r   )r   r   r   r   r   r   s   `   @@r   test_containszTestSets.test_contains  s    !"T"""6**	? 	? 	? 	? 	? 	? 	? b!!b!!ar   c                     |                      |          }d}t          j        ||          D ];\  }}|                     |          }|                     |          } |||           <d S )Nr,   r   i  r   	itertoolsproductr   )r   r   r   sizesnanbr   r   s           r   _test_xxx_updatezTestSets._test_xxx_update  s{    &&v..'u55 	 	FB!!"%%A!!"%%AE!QKKKK	 	r   c                 :    |                      t                     d S r   )r!  rY   r   s    r   test_difference_updatezTestSets.test_difference_update  s    788888r   c                 :    |                      t                     d S r   )r!  r\   r#  s    r   test_intersection_updatez!TestSets.test_intersection_update  s    9:::::r   c                 :    |                      t                     d S r   )r!  r_   r#  s    r    test_symmetric_difference_updatez)TestSets.test_symmetric_difference_update  s    ABBBBBr   c                 V     t          d                     fd}t          t                               d                               d          g          \  }}||z  ||z
  ||z  ||z  g}d |D             }t	          j        ||          D ]\  }} |||           d S )NTr   c                 \                          | |           | |                     d S r   r   r  s     r   r   z(TestSets._test_comparator.<locals>.check  r  r   r     c                 ,    g | ]}t          |          S r   )r   r   r   s     r   r   z-TestSets._test_comparator.<locals>.<listcomp>  s    '''Qa'''r   )r	   mapr-   r   r  r  )r   r   r   r   r   r"   r   s   ``    @r   _test_comparatorzTestSets._test_comparator  s    "T"""6**	? 	? 	? 	? 	? 	? 	? 3**2..0A0A"0E0EFGG1Aq1ua!eQU+''$'''%dD11 	 	DAqE!QKKKK	 	r   c                 :    |                      t                     d S r   )r/  rb   r#  s    r   test_isdisjointzTestSets.test_isdisjoint      011111r   c                 :    |                      t                     d S r   )r/  rf   r#  s    r   test_issubsetzTestSets.test_issubset  s    ./////r   c                 :    |                      t                     d S r   )r/  ri   r#  s    r   test_issupersetzTestSets.test_issuperset  r2  r   c                 z    t           }|                     |          } ||                     d                     d S r  )rm   r   r   r   s      r   
test_clearzTestSets.test_clear  s>    &&v..d##$$$$$r   c                    t           }|                     |          } ||                     d                     t          }|                     |          }|                     d          } ||           t          }|                     |          } |dd           |                     d          } |||t          |          dz                      d S )Nr   r,   r,   r         r   )rr   r   r   rt   rv   r/   )r   r   r   r   s       r   	test_copyzTestSets.test_copy  s    &&v..d##$$$#&&v..a  a &&&v..mQb!!a3q66Q;     r   c                     t           }|                     |          } ||                     d                      ||                     d                     d S )Nr,   r   )rC   r   r   r   s      r   	test_boolzTestSets.test_bool  s\    &&v..d""###d""#####r   c                     |                      |          }d\  }} |||           d}t          j        ||          D ];\  }}|                     |          }|                     |          } |||           <d S )N)r:  )r   r      r<  r   r  r  )r   r   r   r   r   r  r  r   s           r   _test_set_operatorzTestSets._test_set_operator  s    &&v../1a'u55 	 	FB!!"%%A!!"%%AE!QKKKK	 	r   c                 b    dt          |          z  }t          d|t                                S )Nzrif 1:
        def operator_usecase(a, b):
            s = set(a) %(op)s set(b)
            return list(s)
        opoperator_usecasedictr   r    r   rE  r!   s      r   make_operator_usecasezTestSets.make_operator_usecase  4     bkkk	
   2D'))DDDr   c                 b    dt          |          z  }t          d|t                                S )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)
        rD  inplace_operator_usecaserG  rI  s      r   make_inplace_operator_usecasez&TestSets.make_inplace_operator_usecase  4     bkkk   :D'))LLLr   c                 b    dt          |          z  }t          d|t                                S )Nz\if 1:
        def comparison_usecase(a, b):
            return set(a) %(op)s set(b)
        rD  comparison_usecaserG  rI  s      r   make_comparison_usecasez TestSets.make_comparison_usecase  4     bkkk   4dGIIFFFr   c                 :    |                      t                     d S r   )rB  r{   r#  s    r   test_differencezTestSets.test_difference  s     233333r   c                 :    |                      t                     d S r   )rB  r~   r#  s    r   test_intersectionzTestSets.test_intersection   s     455555r   c                 :    |                      t                     d S r   )rB  r   r#  s    r   test_symmetric_differencez"TestSets.test_symmetric_difference#  s     <=====r   c                 :    |                      t                     d S r   )rB  r   r#  s    r   
test_unionzTestSets.test_union&  s    .....r   c                 V    |                      |                     d                     d S )N&rB  rJ  r#  s    r   test_andzTestSets.test_and)  *     : :3 ? ?@@@@@r   c                 V    |                      |                     d                     d S )N|r^  r#  s    r   test_orzTestSets.test_or,  r`  r   c                 V    |                      |                     d                     d S )N-r^  r#  s    r   test_subzTestSets.test_sub/  r`  r   c                 V    |                      |                     d                     d S )N^r^  r#  s    r   test_xorzTestSets.test_xor2  r`  r   c                 V    |                      |                     d                     d S )Nz==rB  rR  r#  s    r   test_eqzTestSets.test_eq5  *     < <T B BCCCCCr   c                 V    |                      |                     d                     d S )Nz!=rk  r#  s    r   test_nezTestSets.test_ne8  rm  r   c                 V    |                      |                     d                     d S )Nz<=rk  r#  s    r   test_lezTestSets.test_le;  rm  r   c                 V    |                      |                     d                     d S )N<rk  r#  s    r   test_ltzTestSets.test_lt>  *     < <S A ABBBBBr   c                 V    |                      |                     d                     d S )Nz>=rk  r#  s    r   test_gezTestSets.test_geA  rm  r   c                 V    |                      |                     d                     d S )N>rk  r#  s    r   test_gtzTestSets.test_gtD  ru  r   c                 V    |                      |                     d                     d S )Nz&=rB  rN  r#  s    r   	test_iandzTestSets.test_iandG  *     B B4 H HIIIIIr   c                 V    |                      |                     d                     d S )Nz|=r|  r#  s    r   test_iorzTestSets.test_iorJ  r~  r   c                 V    |                      |                     d                     d S )Nz-=r|  r#  s    r   	test_isubzTestSets.test_isubM  r~  r   c                 V    |                      |                     d                     d S )Nz^=r|  r#  s    r   	test_ixorzTestSets.test_ixorP  r~  r   N).r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r$  r&  r(  r/  r1  r4  r6  r8  r=  r?  rB  rJ  rN  rR  rU  rW  rY  r[  r_  rc  rf  ri  rl  ro  rq  rt  rw  rz  r}  r  r  r  r   r   r   r   r   N  s       & & &/ / /& & &           % % %    9 9 9; ; ;C C C	 	 	2 2 20 0 02 2 2% % %! ! !$$ $ $
 
 
E E E	M 	M 	MG G G4 4 46 6 6> > >/ / /A A AA A AA A AA A AD D DD D DD D DC C CD D DC C CJ J JJ J JJ J JJ J J J Jr   r   c                       e Zd ZdZd ZdS )TestFloatSetsz-
    Test sets with floating-point keys.
    c                 l    t          j        |t           j                  t          j        d          z  S )Nr   g?)r   r   float32r   s     r   r   zTestFloatSets._range[  s&    yRZ0002:c??BBr   Nr   r   r   __doc__r   r   r   r   r  r  T  s2         C C C C Cr   r  c                       e Zd ZdZd ZdS )TestTupleSetsz$
    Test sets with tuple keys.
    c                    t          j        |t           j                  }|dz  }|dz                      t           j                  }|dz	  dz                      t           j                  }t          t          |||                    S )Nr   l   UU*UU* l   *UU     r,   )r   r   int64astypeint32bool_r>   r   )r   r   r   r   r?   ds         r   r   zTestTupleSets._rangec  sq    Id"(+++""^##BH--2g]""28,,C1aLL!!!r   Nr  r   r   r   r  r  _  s-         " " " " "r   r  c                       e Zd ZdZd ZdS )TestUnicodeSetszR
    Test sets with unicode keys. For the purpose of testing refcounted sets.
    c                 N    d t          t          |                    D             S )Nc                 8    g | ]}d                      |          S )zA{})format)r   rN   s     r   r   z*TestUnicodeSets._range.<locals>.<listcomp>p  s"    :::AQ:::r   )rL   r   r   s     r   r   zTestUnicodeSets._rangeo  s$    ::s4yy)9)9::::r   Nr  r   r   r   r  r  k  s-         ; ; ; ; ;r   r  c                       e Zd Zd ZdS )TestSetsInvalidDtypec                      t          d          |          }t          g d          }t          g d          }d}|                     t          |          5   |||           d d d            d S # 1 swxY w Y   d S )NTr   r:  )r   r   r?   z!All Sets must be of the same typer	   r-   assertRaisesRegexr   r   r   r   r   r   msgs         r   rB  z'TestSetsInvalidDtype._test_set_operatoru  s     #T"""6**  1##K55 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A33A7:A7N)r   r   r   rB  r   r   r   r  r  s  s#        	 	 	 	 	r   r  c                   V    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd ZdS )TestSetsInvalidc                 J    |                      |          }t          |          S r   )r   r>   rX   s      r   r   z,TestSetsInvalid.symmetric_difference_usecase  s     ""1%%Awwr   c                 J    |                      |          }t          |          S r   )rx   r>   rX   s      r   r{   z"TestSetsInvalid.difference_usecase  s    LLOOAwwr   c                 J    |                      |          }t          |          S r   )r}   r>   rX   s      r   r~   z$TestSetsInvalid.intersection_usecase  s    NN1Awwr   c                 J    |                      |          }t          |          S r   )r   r>   rX   s      r   r   zTestSetsInvalid.union_usecase  s    GGAJJAwwr   c                      t          d          |          }t          g d          }d}d}|                     t          |          5   |||           d d d            d S # 1 swxY w Y   d S )NTr   r:  r,   r   r   zAll arguments must be Setsr  r  s         r   rB  z"TestSetsInvalid._test_set_operator  s     #T"""6***##K55 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
A$$A(+A(c                 D    |                      t          j                   d S r   )rB  r  r{   r#  s    r   rU  zTestSetsInvalid.test_difference  s     BCCCCCr   c                 D    |                      t          j                   d S r   )rB  r  r~   r#  s    r   rW  z!TestSetsInvalid.test_intersection  s     DEEEEEr   c                 D    |                      t          j                   d S r   )rB  r  r   r#  s    r   rY  z)TestSetsInvalid.test_symmetric_difference  s     LMMMMMr   c                 D    |                      t          j                   d S r   )rB  r  r   r#  s    r   r[  zTestSetsInvalid.test_union  s     =>>>>>r   c                 b    dt          |          z  }t          d|t                                S )Nzhif 1:
        def operator_usecase(a, b):
            s = a %(op)s b
            return list(s)
        rD  rF  rG  rI  s      r   rJ  z%TestSetsInvalid.make_operator_usecase  rK  r   c                 b    dt          |          z  }t          d|t                                S )Nzif 1:
        def inplace_operator_usecase(a, b):
            sa = a
            sb = b
            sc = sa
            sc %(op)s sb
            return list(sc), list(sa)
        rD  rM  rG  rI  s      r   rN  z-TestSetsInvalid.make_inplace_operator_usecase  rO  r   c                 b    dt          |          z  }t          d|t                                S )NzWif 1:
        def comparison_usecase(a, b):
            return set(a) %(op)s b
        rD  rQ  rG  rI  s      r   rR  z'TestSetsInvalid.make_comparison_usecase  rS  r   N)r   r   r   r   r{   r~   r   rB  rU  rW  rY  r[  rJ  rN  rR  r   r   r   r  r    s                	 	 	D D DF F FN N N? ? ?E E E	M 	M 	MG G G G Gr   r  c                   V    e Zd ZdZej        d             Zd Zd Zd Z	d Z
d Zd Zd	S )
TestUnboxingz>
    Test unboxing of Python sets into native Numba sets.
    c              #      K   |                      t                    5 }d V  d d d            n# 1 swxY w Y   |*|                     t          |j                  |           d S d S r   )r
  	TypeErrorassertRegexpMatchesstr	exception)r   r  raisess      r   assert_type_errorzTestUnboxing.assert_type_error  s      y)) 	VEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?$$S)9%:%:C@@@@@ ?s   .22c                 L      t          d                     fd}|S )NTr   c                 `     |           } |           }                     ||           d S r   r   )r   r   r   r   r   r   s      r   r   z'TestUnboxing.check_unary.<locals>.check  s9    vc{{H%**C##C22222r   r   r   s   `` @r   check_unaryzTestUnboxing.check_unary  sI    "T"""6**	3 	3 	3 	3 	3 	3 	3 r   c                     |                      t                    } |t          ddg                      |t          ddg                      |t          t          d                               d S )Nr,   r   y              ?y              @d   )r  r   r-   rL   r   r   s     r   test_numberszTestUnboxing.test_numbers  sk      //c1a&kkc2t*ooc%**oor   c                     |                      t                    } |t          ddg                      |t          ddg                     d S )N)r,   r   )r   r;  )r,                  @)r   y              @)r  r   r-   r  s     r   test_tupleszTestUnboxing.test_tuples  sU      00c66"##$$$c7G$%%&&&&&r   c                 r    |                      t                    } |dt          g d          f           d S )Nr,   )r   r   r;  )r  r   r-   r  s     r   test_set_inside_tuplez"TestUnboxing.test_set_inside_tuple  s:      00q#iii..!"""""r   c                 r    |                      t                    } |dt          ddg          f           d S )Nr,   )r   )r   )r  r   r-   r  s     r   test_set_of_tuples_inside_tuplez,TestUnboxing.test_set_of_tuples_inside_tuple  s<      00q#tTl##$%%%%%r   c           
         d}t           } t          d          |          }t          ddg          }|                     |          5   ||           d d d            n# 1 swxY w Y   |                     |t          ddg                     |                     |          5   |t          ddg                     d d d            n# 1 swxY w Y   |                     |          5   |dt          ddg          f           d d d            n# 1 swxY w Y   |                     |          5   |t          dt          ddg                               d d d            n# 1 swxY w Y   t          ddg          }|                     t          t          f          5 } ||           d d d            d S # 1 swxY w Y   d S )	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_errorszTestUnboxing.test_errors  s   -"T"""6**1c(mm##C(( 	 	E#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	c1c(mm,,,##C(( 	  	 E#q"g,,	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ##C(( 	% 	%E1c1b'll#$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%##C(( 	* 	*E%32w<<(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 4.!! 
J788 	FE#JJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sZ   	A!!A%(A%&CCC-DDD6)E++E/2E/(GGGN)r   r   r   r  
contextlibcontextmanagerr  r  r  r  r  r  r  r   r   r   r  r    s          A A A    ' ' '
# # #& & &    r   r  c                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestSetReflectionzE
    Test reflection of native Numba sets on Python set objects.
    c                 >    t          d          |          }t          g d          t          dg          ft          g d          t          g d          fg}|D ]\  }}t          |          }t          |          } |||          }|                     ||          5   |||          }	|                     |	|           |                     ||           |                     |d         |u |	d         |u            ~~	d d d            n# 1 swxY w Y   d S )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_reflectionz"TestSetReflection.check_reflection  s   "T"""6**((())3t995((())3/C/C/C+D+DE ! 		  		 ID#4yyHd))CF8S))E$$S#..    uS#''e444''#666  qX!5tAw#~FFF4                             			  		 s   $A!DD	D	c                 :    |                      t                     d S r   )r  r   r#  s    r   test_reflect_simplez%TestSetReflection.test_reflect_simple  s    n-----r   c                 :    |                      t                     d S r   )r  r   r#  s    r   test_reflect_conditionalz*TestSetReflection.test_reflect_conditional  s    122222r   c                    t           } t          d          |          }t          g d          }|                     |          5  |                     t
                    5   ||           ddd           n# 1 swxY w Y   |                     |t          g d                     ddd           dS # 1 swxY w Y   dS )zd
        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   r1   s       r   test_reflect_exceptionz(TestSetReflection.test_reflect_exception"  sC   
 #"T"""6**			NN  ## 	; 	;""#455  a              ##As==='9'9:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s6   B7"A:.B7:A>	>B7A>	(B77B;>B;c                 D   t           } t          d          |          }t          g d          }|                                } |||          } |||          }|                     ||           |                     ||           |                     ||           dS )zf
        When the same set object is reflected twice, behaviour should
        be consistent.
        Tr   r  N)r   r	   r-   ro   r   assertRefCountEqual)r   r   r   pysetcsetr   r   s          r   test_reflect_same_setz'TestSetReflection.test_reflect_same_set/  s    
 "T"""6**IIIzz||6%''eD$#...t,,,  -----r   c                      t          d          t                    }t          dg          }d |D             } ||           |                     d |D             |           dS )zO
        When the set wasn't mutated, no reflection should take place.
        Tr   y              )@c                 ,    g | ]}t          |          S r   idr-  s     r   r   z8TestSetReflection.test_reflect_clean.<locals>.<listcomp>E  s       r!uu   r   c                 ,    g | ]}t          |          S r   r  r-  s     r   r   z8TestSetReflection.test_reflect_clean.<locals>.<listcomp>G  s    +++A"Q%%+++r   N)r	   r   r-   r   )r   r   r1   idss       r   test_reflect_cleanz$TestSetReflection.test_reflect_clean>  sv     #T"""4((LL  a   a+++++S11111r   N)
r   r   r   r  r  r  r  r  r  r  r   r   r   r  r    sx               . . .3 3 3; ; ;. . .	2 	2 	2 	2 	2r   r  c                       e Zd ZdZd Zd ZdS )TestExamplesz!
    Examples of using sets.
    c                     t           }|                     |          } ||                     d                      ||                     d                     d S r   )r   r   r   r   r   s      r   test_uniquezTestExamples.test_uniqueO  s\    &&v..d##C(()))d$$%%%%%r   c                 J    d }|                      |          } |             d S )Nc                      t          j        d          } t                      }|                    h d           |                    |            |S )Nr,   >   r,   r   r   )r   uint64r-   r=   r.   )rN   Rs     r   implz9TestExamples.test_type_coercion_from_update.<locals>.implX  sB    	!AAHHYYYEE!HHHHr   )r   )r   r  r   s      r   test_type_coercion_from_updatez+TestExamples.test_type_coercion_from_updateV  s5    	 	 	 &&t,,r   N)r   r   r   r  r  r  r   r   r   r  r  J  s<         & & &	 	 	 	 	r   r  __main__)Nunittestcollectionsr   r  r  mathr   sysnumba.core.errorsr   numpyr   numba.core.compilerr   r   r   numbar	   
numba.corer
   numba.tests.supportr   r   r   r   r   r   r#   r'   r)   r2   r5   r;   r@   rC   rG   rJ   rO   rS   rU   rY   r\   r_   rb   rf   ri   rm   rr   rt   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  r  r  r   mainr   r   r   <module>r     sz    " " " " " "           



 ) ) ) ) ) )     ? ? ? ? ? ? ? ? ? ?             8 8 8 8 8 8 8 8 8 8 8 8 8 8 	
7J'': : :2 2 22 2 2  
        
            
  
  
% % %# # #% % %  
        
  
  
  
  
	 	 	             
	  	  	     
  3 3 3 3 3 3 3 3l? ? ? ? ?h ? ? ?0CJ CJ CJ CJ CJx CJ CJ CJLC C C C CH C C C	" 	" 	" 	" 	"H 	" 	" 	"; ; ; ; ;h ; ; ;    8   AG AG AG AG AGh AG AG AGH? ? ? ? ?8 ? ? ?D@2 @2 @2 @2 @2 @2 @2 @2F    8   0 zHMOOOOO r   