
    J/PhZ                        d dl Z d dlm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 d dl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 Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6d, Z7d- Z8 G d. d/ee          Z9 G d0 d1e9          Z: G d2 d3e9          Z; G d4 d5e;          Z< G d6 d7e;          Z= G d8 d9e;          Z> G d: d;e;          Z? G d< d=e;          Z@ G d> d?e9          ZA G d@ dAe9          ZB G dB dCe9          ZCeDdDk    r e jE                     dS dS )E    N)
namedtuple)TypingError)jitnjit)TestCaseenable_pyobj_flagsMemoryLeakMixin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     U/var/www/html/test/jupyter/venv/lib/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_usecaser-   '   s%    AEE!HHHq66Mr   c                 >    t          |           }t          |          S r   )r(   r*   r   r,   s     r   constructor_usecaser0   ,   s    CAq66Mr   c                 \    t          |           }g }|D ]}|                    |           |S r   r(   append)r   r,   lvs       r   iterator_usecaser6   0   s7    CA
A  	Hr   c                     t                      }|                    |            |                    |           |                    |           t          |          S r   )r(   updatelist)r   r   cr,   s       r   update_usecaser;   7   sC    AHHQKKKHHQKKKHHQKKK77Nr   c                 N    t          | dd                    }t          |          S r&   )r(   boolr/   s     r   bool_usecaser>   >   s     CGA77Nr   c                 r    t          |           }|D ]}|                    |           t          |          S r   )r(   remover9   r   r   r,   r5   s       r   remove_usecaserB   C   s8    AA  	77Nr   c                 r    t          |           }|D ]}|                    |           t          |          S r   )r(   discardr9   rA   s       r   discard_usecaserE   I   s8    AA  			!77Nr   c                     t          |           }t          d          D ],}|                    |           |                    |           -t	          |          S )Ni  )r(   ranger)   rD   r9   )r   ur5   r,   is        r   add_discard_usecaserJ   O   sM    AA4[[  	a			!77Nr   c                     t          |           }g }t          |          dk    r:|                    |                                           t          |          dk    :|S Nr   )r(   r*   r3   pop)r   r,   r4   s      r   pop_usecaserN   V   sQ    AA
A
a&&1**	 a&&1**Hr   c                 `    t          |           }g }|D ]}|                    ||v            |S r   r2   )r   r   r,   r4   r5   s        r   contains_usecaserP   ]   s?    AA
A  	aHr   c                     t          |           }|                    t          |                     t          |          S r   )r(   difference_updater9   r   r   r,   s      r   difference_update_usecaserT   d   s2    AAA77Nr   c                     t          |           }|                    t          |                     t          |          S r   )r(   intersection_updater9   rS   s      r   intersection_update_usecaserW   i   s2    AA#a&&!!!77Nr   c                     t          |           }|                    t          |                     t          |          S r   )r(   symmetric_difference_updater9   rS   s      r   #symmetric_difference_update_usecaserZ   n   s2    AA!!#a&&)))77Nr   c                 `    t          |                               t          |                    S r   )r(   
isdisjointr   s     r   isdisjoint_usecaser]   s   "    q66SVV$$$r   c                 `    t          |                               t          |                    S r   )r(   issubsetr   s     r   issubset_usecasera   v   s     q66??3q66"""r   c                 `    t          |                               t          |                    S r   )r(   
issupersetr   s     r   issuperset_usecaserd   y   r^   r   c                     t          |           }|                                 t          |          t          |          fS r   )r(   clearr*   r9   r   r,   s     r   clear_usecaserh   |   s0    AAGGIIIq66477?r   c                     t          |           }|                                }|                                 t          |          t	          |          fS r   )r(   copyrM   r*   r9   r   r,   sss      r   copy_usecaserm      s>    AA	
BEEGGGr77DHHr   c                     t          |           }|                                 |                                }|                    | d                    t	          |          t          |          fS rL   )r(   rf   rj   r)   r*   r9   rk   s      r   copy_usecase_emptyro      sQ    AAGGIII	
BEE!A$KKKr77DHHr   c                     t          |           }|                    |           |                                }|                                 t	          |          t          |          fS r   )r(   r@   rj   rM   r*   r9   )r   r   r,   rl   s       r   copy_usecase_deletedrq      sM    AAHHQKKK	
BEEGGGr77DHHr   c                     t          |           }|                    t          |                    }t          |          S r   )r(   
differencer9   r   r   sar,   s       r   difference_usecaserv      s/    	QB
c!ffA77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r(   intersectionr9   rt   s       r   intersection_usecasery      s/    	QB
AA77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r(   symmetric_differencer9   rt   s       r   symmetric_difference_usecaser|      s1    	QB
A''A77Nr   c                     t          |           }|                    t          |                    }t          |          S r   )r(   unionr9   rt   s       r   union_usecaser      s/    	QB
QA77Nr   c                 $    t          |           }|S r   )r(   rg   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   resr5   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   r5   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)   r8   r*   ru   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)   r8   rY   )ru   r   scs      r   reflect_conditionalr      su    
2ww{{%&&FF3KKKIIbMMM	ZB""2&&&s2wwBr   c                 :    |                      d           t          r   )r)   ZeroDivisionErrorr+   s    r   reflect_exceptionr      s    EE"III
r   c                 X    |                      |                                           | |u S r   )r)   rM   r   s     r   reflect_dualr      s%    FF266888Or   c                     t                      }g }| D ]0}||vr*|                    |           |                    |           1|S r   )r(   r)   r3   )srcseenr   r5   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                 h    t          j        t          |                                                    S r   )nparangeinttolist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   choicer9   )r   rI   r   seqs     r   
<listcomp>z+BaseTest._random_choice.<locals>.<listcomp>  s-    :::ATX__T#YY'':::r   dtype)rG   
isinstancer   ndarrayarrayr   )r   r   nr4   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_unorderedr9   assertPreciseEqualsorted)r   r   r   rH   r5   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d Zd ZefdZd ZdS )TestSetLiteralsc                 |    t          |          } |            } |            }|                     ||           ||fS r   )r   r   )r   r   r   r   r   s        r   r   zTestSetLiterals.check3  sC    V688egg#...H}r   c                 N    t          d          }|                     |           d S )N)r'         r   )r"   r   )r   r   s     r   test_build_setzTestSetLiterals.test_build_set:  s'    +L99

6r   c                 D   t          d          }|                     |           t          d          }|                     |          \  }}|                     t          |                                          t          |                                                     d S )N)r'          @y              @r   )r   r   )r"   r   assertIstyperM   )r   flagsr   r   r   s        r   test_build_heterogeneous_setz,TestSetLiterals.test_build_heterogeneous_set>  s{    +O<<

6+H55

6**Xd37799ootHLLNN';';<<<<<r   c                 "   t          |                     d                    }t          |          } t          d          |          } |            } |            }|                     t          |          t          |                     d S )N2   Tr   )r9   r   r$   r   r   r   )r   r   r   r   r   r   s         r   test_build_set_nopythonz'TestSetLiterals.test_build_set_nopythonE  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   r   1  s[             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>.checkX  s/    ##FF3KKs<<<<<r      )r-   r   r   r0   r   r   )r   r   r   r   s   ` @@r   test_constructorzTestSets.test_constructorQ  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   )r6   r   r   r   r   r   r   s      r   test_iteratorzTestSets.test_iteratore  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_updatel  sh    &&v..b!!!!"%%b!!aAr   c                     t           }|                     |          }|                     d          }|d d d         } |||           d S )Nr   
   )rB   r   r   r   r   r   r   r   s        r   test_removezTestSets.test_removeu  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_checkrB   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   )rE   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   )rJ   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   )rN   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   )rP   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  rT   r   s    r   test_difference_updatezTestSets.test_difference_update  s    788888r   c                 :    |                      t                     d S r   )r  rW   r  s    r   test_intersection_updatez!TestSets.test_intersection_update  s    9:::::r   c                 :    |                      t                     d S r   )r  rZ   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+  r]   r  s    r   test_isdisjointzTestSets.test_isdisjoint      011111r   c                 :    |                      t                     d S r   )r+  ra   r  s    r   test_issubsetzTestSets.test_issubset  s    ./////r   c                 :    |                      t                     d S r   )r+  rd   r  s    r   test_issupersetzTestSets.test_issuperset  r.  r   c                 z    t           }|                     |          } ||                     d                     d S r   )rh   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   )rm   r   r   ro   rq   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   )r>   r   r   r   s      r   	test_boolzTestSets.test_bool  s\    &&v..d""###d""#####r   c                     |                      |          }d\  }} |||           d}t          j        ||          D ];\  }}|                     |          }|                     |          } |||           <d S )N)r6  )r   r      r8  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   rA  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)
        r@  inplace_operator_usecaserC  rE  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)
        r@  comparison_usecaserC  rE  s      r   make_comparison_usecasez TestSets.make_comparison_usecase  4     bkkk   4dGIIFFFr   c                 :    |                      t                     d S r   )r>  rv   r  s    r   test_differencezTestSets.test_difference  s     233333r   c                 :    |                      t                     d S r   )r>  ry   r  s    r   test_intersectionzTestSets.test_intersection!  s     455555r   c                 :    |                      t                     d S r   )r>  r|   r  s    r   test_symmetric_differencez"TestSets.test_symmetric_difference$  s     <=====r   c                 :    |                      t                     d S r   )r>  r   r  s    r   
test_unionzTestSets.test_union'  s    .....r   c                 V    |                      |                     d                     d S )N&r>  rF  r  s    r   test_andzTestSets.test_and*  *     : :3 ? ?@@@@@r   c                 V    |                      |                     d                     d S )N|rZ  r  s    r   test_orzTestSets.test_or-  r\  r   c                 V    |                      |                     d                     d S )N-rZ  r  s    r   test_subzTestSets.test_sub0  r\  r   c                 V    |                      |                     d                     d S )N^rZ  r  s    r   test_xorzTestSets.test_xor3  r\  r   c                 V    |                      |                     d                     d S )Nz==r>  rN  r  s    r   test_eqzTestSets.test_eq6  *     < <T B BCCCCCr   c                 V    |                      |                     d                     d S )Nz!=rg  r  s    r   test_nezTestSets.test_ne9  ri  r   c                 V    |                      |                     d                     d S )Nz<=rg  r  s    r   test_lezTestSets.test_le<  ri  r   c                 V    |                      |                     d                     d S )N<rg  r  s    r   test_ltzTestSets.test_lt?  *     < <S A ABBBBBr   c                 V    |                      |                     d                     d S )Nz>=rg  r  s    r   test_gezTestSets.test_geB  ri  r   c                 V    |                      |                     d                     d S )N>rg  r  s    r   test_gtzTestSets.test_gtE  rq  r   c                 V    |                      |                     d                     d S )Nz&=r>  rJ  r  s    r   	test_iandzTestSets.test_iandH  *     B B4 H HIIIIIr   c                 V    |                      |                     d                     d S )Nz|=rx  r  s    r   test_iorzTestSets.test_iorK  rz  r   c                 V    |                      |                     d                     d S )Nz-=rx  r  s    r   	test_isubzTestSets.test_isubN  rz  r   c                 V    |                      |                     d                     d S )Nz^=rx  r  s    r   	test_ixorzTestSets.test_ixorQ  rz  r   N).r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r   r"  r$  r+  r-  r0  r2  r4  r9  r;  r>  rF  rJ  rN  rQ  rS  rU  rW  r[  r_  rb  re  rh  rk  rm  rp  rs  rv  ry  r|  r~  r  r   r   r   r   r   O  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  U  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_r9   r   )r   r   r   r   r:   ds         r   r   zTestTupleSets._ranged  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   rI   s     r   r   z*TestUnicodeSets._range.<locals>.<listcomp>q  s"    :::AQ:::r   )rG   r   r   s     r   r   zTestUnicodeSets._rangep  s$    ::s4yy)9)9::::r   Nr  r   r   r   r  r  l  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   r6  )r   r   r:   z!All Sets must be of the same typer   r(   assertRaisesRegexr   r   r   r   r   r   msgs         r   r>  z'TestSetsInvalidDtype._test_set_operatorv  s     #T"""6**  1##K55 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A33A7:A7N)r   r   r   r>  r   r   r   r  r  t  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{   r9   rS   s      r   r|   z,TestSetsInvalid.symmetric_difference_usecase  s     ""1%%Awwr   c                 J    |                      |          }t          |          S r   )rs   r9   rS   s      r   rv   z"TestSetsInvalid.difference_usecase  s    LLOOAwwr   c                 J    |                      |          }t          |          S r   )rx   r9   rS   s      r   ry   z$TestSetsInvalid.intersection_usecase  s    NN1Awwr   c                 J    |                      |          }t          |          S r   )r~   r9   rS   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   r6  r'   r   r   zAll arguments must be Setsr  r  s         r   r>  z"TestSetsInvalid._test_set_operator  s     #T"""6***##K55 	 	E!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
A$$A(+A(c                 D    |                      t          j                   d S r   )r>  r  rv   r  s    r   rQ  zTestSetsInvalid.test_difference  s     BCCCCCr   c                 D    |                      t          j                   d S r   )r>  r  ry   r  s    r   rS  z!TestSetsInvalid.test_intersection  s     DEEEEEr   c                 D    |                      t          j                   d S r   )r>  r  r|   r  s    r   rU  z)TestSetsInvalid.test_symmetric_difference  s     LMMMMMr   c                 D    |                      t          j                   d S r   )r>  r  r   r  s    r   rW  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)
        r@  rB  rC  rE  s      r   rF  z%TestSetsInvalid.make_operator_usecase  rG  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)
        r@  rI  rC  rE  s      r   rJ  z-TestSetsInvalid.make_inplace_operator_usecase  rK  r   c                 b    dt          |          z  }t          d|t                                S )NzWif 1:
        def comparison_usecase(a, b):
            return set(a) %(op)s b
        r@  rM  rC  rE  s      r   rN  z'TestSetsInvalid.make_comparison_usecase  rO  r   N)r   r   r   r|   rv   ry   r   r>  rQ  rS  rU  rW  rF  rJ  rN  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assertRegexstr	exception)r   r  raisess      r   assert_type_errorzTestUnboxing.assert_type_error  s      y)) 	VEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	?S!122C88888 ?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(   rG   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   r7  )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   r7  )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          9 9 9    ' ' '
# # #& & &    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   r,   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(   rj   r   assertRefCountEqual)r   r   r   pysetcsetr   r   s          r   test_reflect_same_setz'TestSetReflection.test_reflect_same_set0  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>F  s       r!uu   r   c                 ,    g | ]}t          |          S r   r  r)  s     r   r   z8TestSetReflection.test_reflect_clean.<locals>.<listcomp>H  s    +++A"Q%%+++r   N)r   r   r(   r   )r   r   r,   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_uniqueP  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(   r8   r)   )rI   Rs     r   implz9TestExamples.test_type_coercion_from_update.<locals>.implY  sB    	!AAHHYYYEE!HHHHr   )r   )r   r  r   s      r   test_type_coercion_from_updatez+TestExamples.test_type_coercion_from_updateW  s5    	 	 	 &&t,,r   N)r   r   r   r  r  r  r   r   r   r  r  K  s<         & & &	 	 	 	 	r   r  __main__)Funittestcollectionsr   r  r  r   numba.core.errorsr   numpyr   numbar   r   numba.tests.supportr   r   r	   r
   r   r   r"   r$   r-   r0   r6   r;   r>   rB   rE   rJ   rN   rP   rT   rW   rZ   r]   ra   rd   rh   rm   ro   rq   rv   ry   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     s+    " " " " " "          ) ) ) ) ) )            3 3 3 3 3 3 3 3 3 3 3 3 	
7J'': : :2 2 22 2 2  
        
            
  
  
% % %# # #% % %  
        
  
  
  
  
	 	 	             
	  	  	     
  3 3 3 3 3 3 3 3l? ? ? ? ?h ? ? ?<C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   