ó
\K]c           @  sX  d  d l  m Z d  d l j 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 Z d  d l m Z m Z d  d l m Z m Z d  d l j Z d d l m Z m Z m Z m Z m Z e d dI ƒ 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  „  Z0 d! „  Z1 d" „  Z2 d# „  Z3 d$ „  Z4 d% „  Z5 d& „  Z6 d' „  Z7 d( „  Z8 d) „  Z9 d* „  Z: d+ „  Z; d, „  Z< d- „  Z= d. „  Z> d/ „  Z? d0 „  Z@ d1 „  ZA d2 „  ZB e jC e jD dJ k  d5 ƒ ZE d6 e e f d7 „  ƒ  YZF d8 eF f d9 „  ƒ  YZG d: eF f d; „  ƒ  YZH d< eI f d= „  ƒ  YZJ d> eJ eF f d? „  ƒ  YZK d@ eJ eF f dA „  ƒ  YZL dB eF f dC „  ƒ  YZM dD eF f dE „  ƒ  YZN dF eF f dG „  ƒ  YZO eP dH k rTe jQ ƒ  n  d S(K   iÿÿÿÿ(   t   print_functionN(   t
   namedtuple(   t   compile_isolatedt   Flags(   t   jitt   typesi   (   t   TestCaset   enable_pyobj_flagst   MemoryLeakMixint   tagt   compile_functiont   Pointt   at   bc         C  s7   |  i d j  d „  | Dƒ ƒ d 6}  t d |  t ƒ  ƒ S(   Ns   , c         s  s   |  ] } t  | ƒ Vq d  S(   N(   t   repr(   t   .0t   arg(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pys	   <genexpr>   s    t   initializert	   build_set(   t   joinR
   t   globals(   t   codet   args(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _build_set_literal_usecase   s    $c         C  s   d } t  | |  ƒ S(   Ns@   if 1:
    def build_set():
        return {%(initializer)s}
    (   R   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   set_literal_return_usecase   s    c         C  s   d } t  | |  ƒ S(   Ns^   if 1:
    def build_set():
        my_set = {%(initializer)s}
        return list(my_set)
    (   R   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   set_literal_convert_usecase#   s    c          C  s    t  ƒ  }  |  j d ƒ t |  ƒ S(   Ni   (   t   sett   addt   len(   t   s(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   empty_constructor_usecase,   s    	c         C  s   t  |  ƒ } t | ƒ S(   N(   R   R   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   constructor_usecase1   s    c         C  s4   t  |  ƒ } g  } x | D] } | j | ƒ q W| S(   N(   R   t   append(   R   R   t   lt   v(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   iterator_usecase5   s
    c         C  s:   t  ƒ  } | j |  ƒ | j | ƒ | j | ƒ t | ƒ S(   N(   R   t   updatet   list(   R   R   t   cR   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   update_usecase<   s
    	c         C  s4   t  |  ƒ } x | D] } | j | ƒ q Wt | ƒ S(   N(   R   t   removeR%   (   R   R   R   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   remove_usecaseC   s    c         C  s4   t  |  ƒ } x | D] } | j | ƒ q Wt | ƒ S(   N(   R   t   discardR%   (   R   R   R   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   discard_usecaseI   s    c         C  sG   t  |  ƒ } x. t d ƒ D]  } | j | ƒ | j | ƒ q Wt | ƒ S(   Niè  (   R   t   rangeR   R*   R%   (   R   t   uR"   R   t   i(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   add_discard_usecaseO   s
    c         C  sB   t  |  ƒ } g  } x) t | ƒ d k r= | j | j ƒ  ƒ q W| S(   Ni    (   R   R   R    t   pop(   R   R   R!   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   pop_usecaseV   s
    c         C  s:   t  |  ƒ } g  } x! | D] } | j | | k ƒ q W| S(   N(   R   R    (   R   R   R   R!   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   contains_usecase]   s
    c         C  s)   t  |  ƒ } | j t  | ƒ ƒ t | ƒ S(   N(   R   t   difference_updateR%   (   R   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   difference_update_usecased   s    c         C  s)   t  |  ƒ } | j t  | ƒ ƒ t | ƒ S(   N(   R   t   intersection_updateR%   (   R   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   intersection_update_usecasei   s    c         C  s)   t  |  ƒ } | j t  | ƒ ƒ t | ƒ S(   N(   R   t   symmetric_difference_updateR%   (   R   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt#   symmetric_difference_update_usecasen   s    c         C  s   t  |  ƒ j t  | ƒ ƒ S(   N(   R   t
   isdisjoint(   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   isdisjoint_usecases   s    c         C  s   t  |  ƒ j t  | ƒ ƒ S(   N(   R   t   issubset(   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   issubset_usecasev   s    c         C  s   t  |  ƒ j t  | ƒ ƒ S(   N(   R   t
   issuperset(   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   issuperset_usecasey   s    c         C  s,   t  |  ƒ } | j ƒ  t | ƒ t | ƒ f S(   N(   R   t   clearR   R%   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   clear_usecase|   s    
c         C  s8   t  |  ƒ } | j ƒ  } | j ƒ  t | ƒ t | ƒ f S(   N(   R   t   copyR0   R   R%   (   R   R   t   ss(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   copy_usecase   s    
c         C  sE   t  |  ƒ } | j ƒ  | j ƒ  } | j d ƒ t | ƒ t | ƒ f S(   Ni*   (   R   R?   RA   R   R   R%   (   R   R   RB   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   copy_usecase_empty‡   s
    
c         C  sE   t  |  ƒ } | j | ƒ | j ƒ  } | j ƒ  t | ƒ t | ƒ f S(   N(   R   R(   RA   R0   R   R%   (   R   R   R   RB   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   copy_usecase_deletedŽ   s
    
c         C  s+   t  |  ƒ } | j t  | ƒ ƒ } t | ƒ S(   N(   R   t
   differenceR%   (   R   R   t   saR   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   difference_usecase•   s    c         C  s+   t  |  ƒ } | j t  | ƒ ƒ } t | ƒ S(   N(   R   t   intersectionR%   (   R   R   RG   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   intersection_usecaseš   s    c         C  s+   t  |  ƒ } | j t  | ƒ ƒ } t | ƒ S(   N(   R   t   symmetric_differenceR%   (   R   R   RG   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   symmetric_difference_usecaseŸ   s    c         C  s+   t  |  ƒ } | j t  | ƒ ƒ } t | ƒ S(   N(   R   t   unionR%   (   R   R   RG   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   union_usecase¤   s    c         C  s   t  |  ƒ } | S(   N(   R   (   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   set_return_usecase©   s    c         C  s&   d t  d |  ƒ } t d | t ƒ  ƒ S(   Nsb   if 1:
    def operator_usecase(a, b):
        s = set(a) %(op)s set(b)
        return list(s)
    t   opt   operator_usecase(   t   dictR
   R   (   RP   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   make_operator_usecase®   s    c         C  s&   d t  d |  ƒ } t d | t ƒ  ƒ S(   Ns¡   if 1:
    def inplace_operator_usecase(a, b):
        sa = set(a)
        sb = set(b)
        sc = sa
        sc %(op)s sb
        return list(sc), list(sa)
    RP   t   inplace_operator_usecase(   RR   R
   R   (   RP   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   make_inplace_operator_usecase¶   s    c         C  s&   d t  d |  ƒ } t d | t ƒ  ƒ S(   NsP   if 1:
    def comparison_usecase(a, b):
        return set(a) %(op)s set(b)
    RP   t   comparison_usecase(   RR   R
   R   (   RP   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   make_comparison_usecaseÁ   s    c         C  s   d  S(   N(    (   t   x(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   noopÉ   s    c         C  s%   d } x |  D] } | | 7} q W| S(   s!   
    Expect a set of numbers
    i    (    (   RX   t   resR"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unbox_usecaseÌ   s    c         C  s+   d } x |  D] } | t  | ƒ 7} q W| S(   s    
    Expect a set of tuples
    i    (   R   (   RX   RZ   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unbox_usecase2Õ   s    c         C  s1   |  \ } } | } x | D] } | | 7} q W| S(   s2   
    Expect a (number, set of numbers) tuple.
    (    (   RX   R   R   RZ   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unbox_usecase3Þ   s
    c         C  s7   |  \ } } | } x | D] } | t  | ƒ 7} q W| S(   s1   
    Expect a (number, set of tuples) tuple.
    (   R   (   RX   R   R   RZ   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unbox_usecase4è   s
    c         C  s3   |  j  d ƒ |  j | ƒ |  t |  ƒ t | ƒ f S(   Ni*   (   R   R$   R   (   RG   t   sb(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   reflect_simpleó   s    c         C  sm   t  | ƒ d k r! t d	 ƒ }  n  |  j d ƒ |  j | ƒ t d
 ƒ } |  j | ƒ |  t  |  ƒ t  | ƒ f S(   Ni   g      &@g      6@g     €@@g      F@g      E@g     €K@g     €P@(   g      &@g      6@g     €@@g      F@(   g     €K@g     €P@(   R   R   R   R$   R7   (   RG   R_   t   sc(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   reflect_conditionalø   s    c         C  s   |  j  d ƒ t ‚ d  S(   Ni*   (   R   t   ZeroDivisionError(   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   reflect_exception  s    c         C  s   |  j  | j ƒ  ƒ |  | k S(   N(   R   R0   (   RG   R_   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   reflect_dual  s    c         C  sM   t  ƒ  } g  } x7 |  D]/ } | | k r | j | ƒ | j | ƒ q q W| S(   N(   R   R   R    (   t   srct   seenRZ   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unique_usecase  s    	i   i   s*   set literals unavailable before Python 2.7t   BaseTestc           B  sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s)   t  t |  ƒ j ƒ  t j d ƒ |  _ d  S(   Ni*   (   t   superRi   t   setUpt   randomt   Randomt   rnd(   t   self(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRk     s    c         C  s   t  j t | ƒ ƒ S(   N(   t   npt   aranget   int(   Ro   t   stop(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _range   s    c         C  sa   g  t  | ƒ D] } |  j j t | ƒ ƒ ^ q } t | t j ƒ rY t j | d | j ƒS| Sd S(   sD   
        Choose *n* possibly duplicate items from sequence.
        t   dtypeN(	   R,   Rn   t   choiceR%   t
   isinstanceRp   t   ndarrayt   arrayRu   (   Ro   t   seqt   nR.   R!   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _random_choice#  s    1c         C  s(   |  j  t j | ƒ ƒ } |  j | | ƒ S(   s<   
        Get a 1d array with many duplicate values.
        (   Rt   Rp   t   sqrtR|   (   Ro   R{   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   duplicates_array-  s    c         C  s#   |  j  | d ƒ } |  j | | ƒ S(   s;   
        Get a 1d array with values spread around.
        gÍÌÌÌÌÌô?(   Rt   R|   (   Ro   R{   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   sparse_array4  s    c         C  s¤   t  | t ƒ rR |  j | t ƒ x~ t | | ƒ D] \ } } |  j | | ƒ q/ WnN t  | t ƒ r |  j | t ƒ |  j t | ƒ t | ƒ ƒ n |  j | | ƒ d  S(   N(   Rw   t   tuplet   assertIsInstancet   zipt   _assert_equal_unorderedR%   t   assertPreciseEqualt   sorted(   Ro   R   R   R-   R"   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRƒ   <  s    c           s.   t  d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } | S(   Nt   nopythonc            s,   ˆ |  Œ  } ˆ  |  Œ  } ˆ j  | | ƒ d  S(   N(   Rƒ   (   R   t   expectedt   got(   t   cfunct   pyfuncRo   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   checkI  s    (   R   t   True(   Ro   RŠ   R‹   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   unordered_checkerG  s    (	   t   __name__t
   __module__Rk   Rt   R|   R~   R   Rƒ   R   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRi     s   			
			t   TestSetLiteralsc           B  sG   e  Z e e d  „ ƒ Z e e d „ ƒ Z e d ƒ e d „  ƒ ƒ Z RS(   c         C  s#   t  d ƒ } |  j | d | ƒd  S(   Ni   i   i   t   flags(   i   i   i   i   (   R   t   run_nullary_func(   Ro   R‘   RŠ   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_build_setR  s    c         C  sÔ   t  d ƒ } |  j | d | ƒt  d ƒ } |  j | d | ƒ\ } } t j d  d k rl t j d d k s¥ t j d  d k r’ t j d d k s¥ t j d  d k rÐ |  j t | j ƒ  ƒ t | j ƒ  ƒ ƒ n  d  S(   Ni   g       @y              @i   R‘   i   i   i   i   i   (   i   g       @y              @i   (   g       @i   (   i   i   (   i   i   (   i   i   (   R   R’   t   syst   version_infot   assertIst   typeR0   (   Ro   R‘   RŠ   Rˆ   R‡   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_build_heterogeneous_setW  s    &&t	   importantc         C  sh   t  |  j d ƒ ƒ } t | ƒ } t d t ƒ | ƒ } | ƒ  } | ƒ  } |  j t | ƒ t | ƒ ƒ d  S(   Ni2   R†   (   R%   R   R   R   RŒ   R„   R…   (   Ro   R   RŠ   R‰   R‡   Rˆ   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_build_set_nopythong  s    		(   RŽ   R   t   needs_set_literalsR   R“   R˜   R	   Rš   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR   P  s   	t   TestSetsc           B  s¯  e  Z d  „  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z d „  Z d „  Z e d ƒ d „  ƒ Z	 d „  Z
 e d ƒ d	 „  ƒ 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) RS((   c           s•   t  ‰ t d t ƒ ˆ ƒ ‰  ˆ j ˆ  ƒ  ˆ ƒ  ƒ t ‰ t d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } | d ƒ | ˆ j d ƒ ƒ | ˆ j d ƒ ƒ d  S(	   NR†   c           s    ˆ j  ˆ |  ƒ ˆ  |  ƒ ƒ d  S(   N(   R„   (   R   (   R‰   RŠ   Ro   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR‹   |  s    i   i   i   i   iÈ   (   i   i   i   i   i   (   R   R   RŒ   R„   R   R~   R   (   Ro   R‹   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_constructoru  s    
R™   c         C  sA   t  } t d t ƒ | ƒ } d } |  j | | ƒ t | ƒ ƒ d  S(   NR†   i   i   i   i   (   i   i   i   i   i   (   RO   R   RŒ   t   assertEqualR   (   Ro   RŠ   R‰   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_set_returnƒ  s    c         C  sI   t  } |  j | ƒ } | d ƒ | |  j d ƒ ƒ | |  j d ƒ ƒ d  S(   Ni   i   i   i   iÈ   (   i   i   i   i   i   (   R#   R   R~   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_iterator‹  s
    
c         C  sz   t  } |  j | ƒ } d d d } } } | | | | ƒ |  j d
 ƒ } |  j d
 ƒ } |  j d
 ƒ } | | | | ƒ d  S(   Ni   i   i   i	   i   i   i   i*   i   i2   (   i   i   i   i	   (   i   i   i   i   i*   (   i   i   i   i*   (   R'   R   R   R~   (   Ro   RŠ   R‹   R   R   R&   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_update”  s    c         C  s2   t  } |  j | ƒ } d } d } | | | ƒ d  S(	   Ni   i   i   i   i   i*   (   i   i   i   i   i   i*   (   i   i   i   (   R)   R   (   Ro   RŠ   R‹   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_remove¡  s
    c         C  sN   |  j  ƒ  t } t d t ƒ | ƒ } |  j t ƒ  } | d d ƒ Wd  QXd  S(   NR†   i   i   i   i   (   i   i   i   (   i   (   t   disable_leak_checkR)   R   RŒ   t   assertRaisest   KeyError(   Ro   RŠ   R‰   t   raises(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_remove_error©  s
    
c         C  s]   t  } |  j | ƒ } d } d	 } | | | ƒ |  j d ƒ } |  j d ƒ } | | | ƒ d  S(
   Ni   i   i   i   i   i*   i2   (   i   i   i   i   i   i*   (   i   i   i   (   R+   R   R   (   Ro   RŠ   R‹   R   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_discard²  s    c         C  s)   t  } |  j | ƒ } | d d d ƒ d S(   sü   
        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.
        i   i   N(   i   (   R/   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_add_discard¾  s    c         C  s6   t  } |  j | ƒ } | d ƒ | |  j d ƒ ƒ d  S(	   Ni   i   i7   i   i   i*   i2   (   i   i   i7   i   i   i*   (   R1   R   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_popÉ  s    
c           sM   t  ‰ t d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } d	 } d
 } | | | ƒ d  S(   NR†   c           s&   ˆ j  ˆ |  | ƒ ˆ  |  | ƒ ƒ d  S(   N(   R„   (   R   R   (   R‰   RŠ   Ro   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR‹   Õ  s    i   i   i   i   i*   i   (   i   i   i   i   i*   (   i   i   i   i   (   R2   R   RŒ   (   Ro   R‹   R   R   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_containsÑ  s    c         C  s   |  j  | ƒ } d d } } | | | ƒ d } xK t j | | ƒ D]7 \ } } |  j | ƒ } |  j | ƒ } | | | ƒ qB Wd  S(   Ni   i   i   i   i   i   i*   i    i2   iô  (   i   i   i   i   (   i   i   i   i   i*   (   i    i2   iô  (   R   t	   itertoolst   productR   (   Ro   RŠ   R‹   R   R   t   sizest   nat   nb(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _test_xxx_updateÜ  s    c         C  s   |  j  t ƒ d  S(   N(   R±   R4   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_difference_updateè  s    c         C  s   |  j  t ƒ d  S(   N(   R±   R6   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_intersection_updateë  s    c         C  s   |  j  t ƒ d  S(   N(   R±   R8   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt    test_symmetric_difference_updateî  s    c           sº   t  d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } t t d
 d g ƒ \ } } | | @| | | | B| | Ag } g  | D] } t | ƒ ^ qn } x- t j | | ƒ D] \ } } | | | ƒ q™ Wd  S(   NR†   c           s&   ˆ j  ˆ |  | ƒ ˆ  |  | ƒ ƒ d  S(   N(   R„   (   R   R   (   R‰   RŠ   Ro   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR‹   ó  s    i   i   i   i   i   i   i*   (   i   i   i   i   (   i   i   i   i   i*   (   R   RŒ   t   mapR   R€   R¬   R­   (   Ro   RŠ   R‹   R   R   R   RX   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _test_comparatorñ  s    "c         C  s   |  j  t ƒ d  S(   N(   R¶   R:   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_isdisjointü  s    c         C  s   |  j  t ƒ d  S(   N(   R¶   R<   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_issubsetÿ  s    c         C  s   |  j  t ƒ d  S(   N(   R¶   R>   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_issuperset  s    c         C  s6   t  } |  j | ƒ } | d ƒ | |  j d ƒ ƒ d  S(   Ni   i   i   i   i2   (   i   i   i   i   (   R@   R   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt
   test_clear  s    
c         C  s¡   t  } |  j | ƒ } | d ƒ | |  j d ƒ ƒ t } |  j | ƒ } | d ƒ t } |  j | ƒ } | d d ƒ |  j d ƒ } | | | t | ƒ d ƒ d  S(	   Ni   i   i   i   i2   (   i   i   i   i   (   i   (   i   i   i   i   (   RC   R   R   RD   RE   R   (   Ro   RŠ   R‹   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt	   test_copy  s    

c         C  s   |  j  | ƒ } d d } } | | | ƒ d } xK t j | | ƒ D]7 \ } } |  j | ƒ } |  j | ƒ } | | | ƒ qB Wd  S(   Ni   i   i   i   i   i   i*   i    i2   iô  (   i   i   i   i   (   i   i   i   i   i*   (   i    i2   iô  (   R   R¬   R­   R   (   Ro   RŠ   R‹   R   R   R®   R¯   R°   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   _test_set_operator  s    c         C  s   |  j  t ƒ d  S(   N(   R¼   RH   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_difference*  s    c         C  s   |  j  t ƒ d  S(   N(   R¼   RJ   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_intersection-  s    c         C  s   |  j  t ƒ d  S(   N(   R¼   RL   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_symmetric_difference0  s    c         C  s   |  j  t ƒ d  S(   N(   R¼   RN   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt
   test_union3  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   &(   R¼   RS   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_and6  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   |(   R¼   RS   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_or9  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   -(   R¼   RS   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_sub<  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   ^(   R¼   RS   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_xor?  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   ==(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_eqB  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   !=(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_neE  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   <=(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_leH  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   <(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_ltK  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   >=(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_geN  s    c         C  s   |  j  t d ƒ ƒ d  S(   Nt   >(   R¼   RW   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_gtQ  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   &=(   R¼   RU   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt	   test_iandT  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   |=(   R¼   RU   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_iorW  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   -=(   R¼   RU   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt	   test_isubZ  s    c         C  s   |  j  t d ƒ ƒ d  S(   Ns   ^=(   R¼   RU   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt	   test_ixor]  s    (*   RŽ   R   R   R	   RŸ   R    R¡   R¢   R§   R¨   R©   Rª   R«   R±   R²   R³   R´   R¶   R·   R¸   R¹   Rº   R»   R¼   R½   R¾   R¿   RÀ   RÂ   RÄ   RÆ   RÈ   RÉ   RÊ   RË   RÍ   RÎ   RÐ   RÑ   RÒ   RÓ   RÔ   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRœ   s  sN   																																		t   OtherTypesTestc           B  s/   e  Z d  „  Z d „  Z e d ƒ d „  ƒ Z RS(   c           s‹   t  ‰ t d t ƒ ˆ ƒ ‰  ˆ j ˆ  ƒ  ˆ ƒ  ƒ t ‰ t d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } | ˆ j d ƒ ƒ | ˆ j d ƒ ƒ d  S(   NR†   c           s    ˆ j  ˆ |  ƒ ˆ  |  ƒ ƒ d  S(   N(   R„   (   R   (   R‰   RŠ   Ro   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR‹   j  s    iÈ   (   R   R   RŒ   R„   R   R~   R   (   Ro   R‹   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR   c  s    c         C  s?   t  } |  j | ƒ } | |  j d ƒ ƒ | |  j d ƒ ƒ d  S(   NiÈ   (   R#   R   R~   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR    p  s    R™   c         C  sV   t  } |  j | ƒ } |  j d ƒ } |  j d ƒ } |  j d ƒ } | | | | ƒ d  S(   Ni2   (   R'   R   R   R~   (   Ro   RŠ   R‹   R   R   R&   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR¡   w  s    (   RŽ   R   R   R    R	   R¡   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRÕ   a  s   		t   TestFloatSetsc           B  s   e  Z d  Z d „  Z RS(   s-   
    Test sets with floating-point keys.
    c         C  s#   t  j | d t  j ƒt  j d ƒ S(   NRu   gš™™™™™¹?(   Rp   Rq   t   float32(   Ro   Rs   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRt   ‰  s    (   RŽ   R   t   __doc__Rt   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRÖ   ‚  s   t   TestTupleSetsc           B  s   e  Z d  Z d „  Z RS(   s$   
    Test sets with tuple keys.
    c         C  sh   t  j | d t  j ƒ} | d @} | d @j t  j ƒ } | d ?d @j t  j ƒ } t t | | | ƒ ƒ S(   NRu   IUUUUUUUUIªªªª    i    i   (   Rp   Rq   t   int64t   astypet   int32t   bool_R%   R‚   (   Ro   Rs   R   R   R&   t   d(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRt   ‘  s
    
(   RŽ   R   RØ   Rt   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRÙ     s   t   TestUnboxingc           B  sn   e  Z d  Z e j d „  ƒ Z d „  Z e d ƒ d „  ƒ Z d „  Z	 e d ƒ d „  ƒ Z
 d „  Z d „  Z RS(	   s>   
    Test unboxing of Python sets into native Numba sets.
    c         c  sI   |  j  t ƒ  } d  VWd  QX| d  k	 rE |  j t | j ƒ | ƒ n  d  S(   N(   R¤   t	   TypeErrort   Nonet   assertRegexpMatchest   strt	   exception(   Ro   t   msgR¦   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   assert_type_errorž  s    c           s.   t  d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } | S(   NR†   c           s,   ˆ |  ƒ } ˆ  |  ƒ } ˆ j  | | ƒ d  S(   N(   R„   (   R   R‡   Rˆ   (   R‰   RŠ   Ro   (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR‹   §  s    (   R   RŒ   (   Ro   RŠ   R‹   (    (   R‰   RŠ   Ro   s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   check_unary¥  s    R™   c         C  sU   |  j  t ƒ } | t d d g ƒ ƒ | t d d g ƒ ƒ | t t d ƒ ƒ ƒ d  S(   Ni   i   y              ð?y              @id   (   Rç   R[   R   R,   (   Ro   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_numbers­  s    c         C  s?   |  j  t ƒ } | t d d g ƒ ƒ | t d	 d
 g ƒ ƒ d  S(   Ni   i   i   i   y               @y              @(   i   i   (   i   i   (   i   y               @(   i   y              @(   Rç   R\   R   (   Ro   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_tuplesµ  s    c         C  s2   |  j  t ƒ } | d t d d d g ƒ f ƒ d  S(   Ni   i   i   i   (   Rç   R]   R   (   Ro   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_set_inside_tupleº  s    c         C  s/   |  j  t ƒ } | d t d d g ƒ f ƒ d  S(   Ni   i   i   (   i   (   i   (   Rç   R^   R   (   Ro   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_set_of_tuples_inside_tuple¿  s    c         C  s@  d } t  } t d t ƒ | ƒ } t d d g ƒ } |  j | ƒ  | | ƒ Wd  QX|  j | t d d g ƒ ƒ |  j | ƒ  | t d d g ƒ ƒ Wd  QX|  j | ƒ ! | d t d d g ƒ f ƒ Wd  QX|  j | ƒ $ | t d t d d g ƒ ƒ ƒ Wd  QXt d d	 g ƒ } |  j t t	 f ƒ  } | | ƒ Wd  QXd  S(
   Ns   can't unbox heterogeneous setR†   i   g      @y               @i   i   (   i   (   i   i   (
   RY   R   RŒ   R   Ræ   Rž   R   R¤   t
   IndexErrort
   ValueError(   Ro   Rå   RŠ   R‰   t   valt   lstR¦   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_errorsÃ  s     "%(   RŽ   R   RØ   t
   contextlibt   contextmanagerRæ   Rç   R	   Rè   Ré   Rê   Rë   Rð   (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRß   ™  s   			t   TestSetReflectionc           B  sP   e  Z d  Z d „  Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z	 RS(   sE   
    Test reflection of native Numba sets on Python set objects.
    c   
   	   C  s#  t  d t ƒ | ƒ } t d d d d g ƒ t d g ƒ f t d d d d g ƒ t d d d	 d
 d g ƒ f g } x­ | D]¥ \ } } t | ƒ } t | ƒ } | | | ƒ } |  j | | ƒ ^ | | | ƒ }	 |  j |	 | ƒ |  j | | ƒ |  j | d | k |	 d | k ƒ ~ ~	 Wd  QXqv Wd  S(   NR†   g      ð?g       @g      @g      @g        g      @g      @g      @g       @g      "@i    (   R   RŒ   R   t   assertRefCountR„   Rž   (
   Ro   RŠ   R‰   t   samplest   destRf   R‡   Rˆ   t   pyrest   cres(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   check_reflectionâ  s    $6$c         C  s   |  j  t ƒ d  S(   N(   Rù   R`   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_reflect_simpleò  s    c         C  s   |  j  t ƒ d  S(   N(   Rù   Rb   (   Ro   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_reflect_conditionalõ  s    c         C  sŒ   t  } t d t ƒ | ƒ } t d d d g ƒ } |  j | ƒ G |  j t ƒ  | | ƒ Wd QX|  j | t d d d d g ƒ ƒ Wd QXd S(   sd   
        When the function exits with an exception, sets should still be
        reflected.
        R†   i   i   i   Ni*   (   Rd   R   RŒ   R   Rô   R¤   Rc   R„   (   Ro   RŠ   R‰   R   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_reflect_exceptionø  s    R™   c         C  s    t  } t d t ƒ | ƒ } t d d d g ƒ } | j ƒ  } | | | ƒ } | | | ƒ } |  j | | ƒ |  j | | ƒ |  j t j | ƒ t j | ƒ ƒ d S(   sf   
        When the same set object is reflected twice, behaviour should
        be consistent.
        R†   i   i   i   N(   Re   R   RŒ   R   RA   R„   R”   t   getrefcount(   Ro   RŠ   R‰   t   pysett   csetR‡   Rˆ   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_reflect_same_set  s    c         C  sz   t  d t ƒ t ƒ } t d g ƒ } g  | D] } t | ƒ ^ q+ } | | ƒ |  j g  | D] } t | ƒ ^ qZ | ƒ d S(   sO   
        When the set wasn't mutated, no reflection should take place.
        R†   y              )@N(   R   RŒ   RY   R   t   idRž   (   Ro   R‰   R   RX   t   ids(    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_reflect_clean  s
    
(
   RŽ   R   RØ   Rù   Rú   Rû   Rü   R	   R   R  (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyRó   Ý  s   				t   TestExamplesc           B  s#   e  Z d  Z e d ƒ d „  ƒ Z RS(   s!   
    Examples of using sets.
    R™   c         C  s?   t  } |  j | ƒ } | |  j d ƒ ƒ | |  j d ƒ ƒ d  S(   NiÈ   (   Rh   R   R~   R   (   Ro   RŠ   R‹   (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   test_unique&  s    (   RŽ   R   RØ   R	   R  (    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyR  !  s   t   __main__(   R   R   (   i   i   (R   t
   __future__R    t   numba.unittest_supportt   unittest_supportt   unittestt   collectionsR   Rñ   R¬   t   mathRl   R”   t   numpyRp   t   numba.compilerR   R   t   numbaR   R   t   supportR   R   R   R	   R
   R   R   R   R   R   R   R#   R'   R)   R+   R/   R1   R2   R4   R6   R8   R:   R<   R>   R@   RC   RD   RE   RH   RJ   RL   RN   RO   RS   RU   RW   RY   R[   R\   R]   R^   R`   Rb   Rd   Re   Rh   t   skipIfR•   R›   Ri   R   Rœ   t   objectRÕ   RÖ   RÙ   Rß   Ró   R  RŽ   t   main(    (    (    s4   lib/python2.7/site-packages/numba/tests/test_sets.pyt   <module>   s„   (																																					
						
	6#î!DD