ó
\K]c           @  s>  d  d l  m Z d  d l Z d  d l Z d  d l j Z d  d l m	 Z	 m
 Z
 d  d l m Z m Z m Z d d l m Z m Z m Z d  d l m Z d  d l m Z e
 ƒ  Z e j d	 ƒ e
 ƒ  Z e j d
 ƒ e
 ƒ  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d d e" d „ Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d e e f d „  ƒ  YZ, d e e f d  „  ƒ  YZ- d! „  Z. d" „  Z/ d# e e f d$ „  ƒ  YZ0 d% e f d& „  ƒ  YZ1 d' e e f d( „  ƒ  YZ2 d) e ƒ  f d* „  ƒ  YZ3 e4 d+ k r:e j5 ƒ  n  d S(,   iÿÿÿÿ(   t   print_functionN(   t   compile_isolatedt   Flags(   t   jitt   njitt   typesi   (   t   TestCaset   MemoryLeakMixint   tag(   t   testing(   t   test_factoryt   enable_pyobjectt   force_pyobjectc           s   ‡  f d †  } | S(   Nc           s+   d } x ˆ  |  ƒ D] } | | 7} q W| S(   Ng        (    (   t   xt   rest   y(   t   gen_func(    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   consumer   s    (    (   R   R   (    (   R   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   make_consumer   s    c         c  s    x t  |  ƒ D] } | Vq Wd  S(   N(   t   range(   R   t   i(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen1!   s    c         c  sC   x< t  |  ƒ D]. } | Vx  t  d d ƒ D] } | | Vq( Wq Wd  S(   Ni   i   (   R   (   R   R   t   j(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen2&   s    c         c  s   |  V|  d V|  d Vd  S(   Ng      ø?y              ð?(    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen3-   s    	c         c  s.   x" t  d ƒ D] } | V| | Vq Wd  S|  V(   Ni   (   R   (   R   R   t   zR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen44   s
    c           c  s   d  S(   N(    (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen5<   s    c         c  s.   |  d } x t  r) | d } | | Vq Wd  S(   Ni   i   (   t   True(   t   at   bR   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen6D   s    
	
c         c  s'   x  t  |  j ƒ D] } |  | Vq Wd  S(   N(   R   t   size(   t   arrR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen7L   s    i   c         c  s0   | } |  V| r | Vn  | r, |  | Vn  d  S(   N(    (   R   R   R   t   bb(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen8S   s    c         c  s   t  ƒ  |  Vd  S(   N(   t   object(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   genobj\   s    c         C  s   d „  |  Dƒ S(   Nc         s  s   |  ] } | d  Vq d S(   i   N(    (   t   .0R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pys	   <genexpr>b   s    (    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   return_generator_expra   s    c         c  s#   x t  j |  ƒ D] } | Vq Wd  S(   N(   t   npt   ndindex(   t   shapet   ind(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen_ndindexe   s    c         c  s   x |  j  D] } | Vq
 Wd  S(   N(   t   flat(   R!   t   val(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen_flatj   s    c         c  s#   x t  j |  ƒ D] } | Vq Wd  S(   N(   R)   t   ndenumerate(   R!   t   tup(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen_ndenumerateo   s    c           c  s	   t  Vd  S(   N(   R   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen_boolt   s    c           c  s   d  Vd Vd  S(   Ny              ð?(   t   None(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen_unification_errorx   s    c          c  s#   d }  d Vx t  r |  V}  q Wd  S(   Ni    y              ð?(   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt'   gen_optional_and_type_unification_error}   s    	t   TestGeneratorsc           B  s   e  Z d  „  Z e d „ Z e d ƒ d „  ƒ Z d „  Z e d „ Z e d ƒ d „  ƒ Z	 d „  Z
 e d „ Z e d ƒ d	 „  ƒ Z d
 „  Z e d „ Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z e d „ Z e d ƒ d „  ƒ Z d „  Z e d „ Z e d ƒ d „  ƒ Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z e d „ Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z  d „  Z! e d ƒ d „  ƒ Z" e d  „ Z# d! „  Z$ d" „  Z% e d# „ Z& d$ „  Z' d% „  Z( d& „  Z) d' „  Z* d( „  Z+ d) „  Z, RS(*   c         C  s‚   |  j  t | ƒ t | ƒ ƒ g  | D] } | ^ q# } g  | D] } | ^ q< } |  j  | | ƒ |  j t ƒ  t | ƒ Wd  QXd  S(   N(   t   assertEqualt   nextt   assertRaisest   StopIteration(   t   selft   pygent   cgenR   t   expectedt   got(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   check_generator†   s    c         C  sP   t  } t | t j f d | ƒ} | d ƒ } | j d ƒ } |  j | | ƒ d  S(   Nt   flagsi   (   R   R   R   t   int32t   entry_pointRB   (   R=   RC   t   pyfunct   crR>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen1   s
    t	   importantc         C  s   |  j  ƒ  d  S(   N(   RH   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen1—   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   RH   t   forceobj_flags(   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen1_objmode›   s    c         C  sP   t  } t | t j f d | ƒ} | d ƒ } | j d ƒ } |  j | | ƒ d  S(   NRC   i   (   R   R   R   RD   RE   RB   (   R=   RC   RF   RG   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen2ž   s
    c         C  s   |  j  ƒ  d  S(   N(   RM   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen2¥   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   RM   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen2_objmode©   s    c         C  sP   t  } t | t j f d | ƒ} | d ƒ } | j d ƒ } |  j | | ƒ d  S(   NRC   i   (   R   R   R   RD   RE   RB   (   R=   RC   RF   RG   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen3¬   s
    c         C  s   |  j  ƒ  d  S(   N(   RP   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen3³   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   RP   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen3_objmode·   s    c         C  s`   t  } t | t j f d d | ƒ} | d d d ƒ } | j d d d ƒ } |  j | | ƒ d  S(   Ni   RC   i   i   i   (   R   R   R   RD   RE   RB   (   R=   RC   RF   RG   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen4º   s
    c         C  s   |  j  ƒ  d  S(   N(   RS   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen4Á   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   RS   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen4_objmodeÅ   s    c         C  s?   |  j  ƒ   } t t d ƒ Wd  QX|  j d t | j ƒ ƒ d  S(   Ns2   Cannot type generator: it does not yield any value(    (   t   assertTypingErrorR   R   t   assertInt   strt	   exception(   R=   t   cm(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen5È   s    	c         C  s[   t  t d d t ƒ} | j ƒ  } |  j t | ƒ g  ƒ |  j t ƒ  t | ƒ Wd  QXd  S(   NRC   (    (	   R   R   RK   RE   R9   t   listR;   R<   R:   (   R=   RG   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen5_objmodeÎ   s
    c         C  s‚   t  } t | t j f d d | ƒ} | j d d ƒ } g  } x' t d ƒ D] } | j t | ƒ ƒ qJ W|  j | d g d ƒ d  S(   Ni   RC   i   i   i   i   (	   R   R   R   RD   RE   R   t   appendR:   R9   (   R=   RC   RF   RG   R?   t   lR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen6Õ   s    c         C  s   |  j  ƒ  d  S(   N(   R`   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen6Þ   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   R`   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen6_objmodeâ   s    c         C  sz   t  } t | t j t j d d ƒ f d | ƒ} t j d d d ƒ } | | j ƒ  ƒ } | j | ƒ } |  j	 | | ƒ d  S(   Ni   t   CRC   i
   i   (
   R"   R   R   t   Arrayt   float64R)   t   linspacet   copyRE   RB   (   R=   RC   RF   RG   R!   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen7å   s    !	c         C  s   |  j  ƒ  d  S(   N(   Rh   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen7î   s    c         C  s   |  j  d t ƒ d  S(   NRC   (   Rh   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen7_objmodeò   s    c           sh   t  ‰ t |   ˆ ƒ ‰  ‡  ‡ ‡ f d †  } | d d ƒ | d ƒ | d d ƒ | d d d	 t ƒ d  S(
   Nc            s&   ˆ j  ˆ |  | Ž  ˆ  |  | Ž  ƒ d  S(   N(   RB   (   t   argst   kwargs(   t   cfuncRF   R=   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   checkù   s    i   i   i   R   i   R   i   R   (   R$   R   R   (   R=   t   jit_argsRn   (    (   Rm   RF   R=   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen8õ   s    
c         C  s   |  j  d t ƒ d  S(   Nt   nopython(   Rp   R   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen8  s    c         C  s   |  j  d t ƒ d  S(   Nt   forceobj(   Rp   R   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen8_objmode  s    c         C  sD   t  } t | d d | ƒ} | ƒ  } | j ƒ  } |  j | | ƒ d  S(   NRC   (    (   R4   R   RE   RB   (   R=   RC   RF   RG   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt
   check_gen9	  s
    	c         C  s   |  j  d t ƒ d  S(   NRC   (   Ru   t   no_pyobj_flags(   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   test_gen9  s    c         C  s   |  j  d t ƒ d  S(   NRC   (   Ru   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_gen9_objmode  s    c         C  sh   t  d t ƒ | ƒ } t  d t ƒ t | ƒ ƒ } t | ƒ } | d ƒ } | d ƒ } |  j | | ƒ d  S(   NRq   i   (   R   R   R   t   assertPreciseEqual(   R=   R   R?   Rm   RF   R@   RA   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   check_consume_generator  s    c         C  s   |  j  t ƒ d  S(   N(   Rz   R   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_consume_gen1  s    c         C  s   |  j  t ƒ d  S(   N(   Rz   R   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_consume_gen2"  s    c         C  s   |  j  t ƒ d  S(   N(   Rz   R   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_consume_gen3%  s    c         C  sb   t  } t | t j t j d ƒ f d | ƒ} d } | | ƒ } | j | ƒ } |  j | | ƒ d  S(   Ni   RC   i   (   i   i   (   R-   R   R   t   UniTuplet   intpRE   RB   (   R=   RC   RF   RG   R+   R>   R?   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   check_ndindex+  s    	c         C  s   |  j  ƒ  d  S(   N(   R€   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_ndindex4  s    c         C  s   |  j  d t ƒ d  S(   NRC   (   R€   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_ndindex_objmode7  s    c         C  sÀ   t  | t j t j d d ƒ f d | ƒ} t j d d t j ƒj d ƒ } |  j | | ƒ | j | ƒ ƒ t  | t j t j d d ƒ f d | ƒ} | j	 } |  j | | ƒ | j | ƒ ƒ d  S(	   Ni   Rc   RC   i   t   dtypei   t   A(   i   i   (
   R   R   Rd   RD   R)   t   aranget   reshapeRB   RE   t   T(   R=   RF   RC   RG   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   check_np_flat:  s    !	!!		c         C  s   |  j  t ƒ d  S(   N(   Rˆ   R0   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_np_flatD  s    c         C  s   |  j  t d t ƒd  S(   NRC   (   Rˆ   R0   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_np_flat_objmodeG  s    c         C  s   |  j  t ƒ d  S(   N(   Rˆ   R3   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_ndenumerateJ  s    c         C  s   |  j  t d t ƒd  S(   NRC   (   Rˆ   R3   RK   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_ndenumerate_objmodeM  s    c      	   C  sQ   t  } |  j ƒ   } t | d d t ƒWd  QXd } |  j | t | j ƒ ƒ d  S(   NRC   sA   Can't unify yield type from the following types: complex128, none(    (   R6   RV   R   Rv   RW   RX   RY   (   R=   RF   t   et   msg(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_type_unification_errorP  s
    c      	   C  s[   t  } |  j ƒ   } t | d d t ƒWd  QXd } |  j | t j j t | j	 ƒ ƒ d  S(   NRC   sH   Can't unify yield type from the following types: complex128, int%s, none(    (
   R7   RV   R   Rv   RW   R   R   t   bitwidthRX   RY   (   R=   RF   R   RŽ   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt.   test_optional_expansion_type_unification_errorY  s
    (-   t   __name__t
   __module__RB   Rv   RH   R   RJ   RL   RM   RN   RO   RP   RQ   RR   RS   RT   RU   R[   R]   R`   Ra   Rb   Rh   Ri   Rj   Rp   Rr   Rt   Ru   Rw   Rx   Rz   R{   R|   R}   R€   R   R‚   Rˆ   R‰   RŠ   R‹   RŒ   R   R‘   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR8   …   sR   	
																			
						t   TestGenExprsc           B  s   e  Z e j d  „  ƒ Z RS(   c         C  s\   t  } t | d ƒ } | j } |  j t | d d d g ƒ ƒ t | d d d g ƒ ƒ ƒ d  S(   Ni   i   i   (    (   R(   R   RE   R9   t   sum(   R=   RF   RG   Rm   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_return_generator_exprd  s    	(   R’   R“   R	   t   allow_interpreter_modeR–   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR”   c  s   c         c  s   x |  D] } | Vq Wd  S(   N(    (   t   aryt   elem(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   nrt_gen0l  s    c         c  s.   x' t  |  | ƒ D] \ } } | V| Vq Wd  S(   N(   t   zip(   t   ary1t   ary2t   e1t   e2(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   nrt_gen1q  s    t   TestNrtArrayGenc           B  s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  s£   t  } t d t ƒ | ƒ } t j d ƒ } | j ƒ  } t | | ƒ ƒ } t | | ƒ ƒ } t j j | | ƒ |  j	 | | ƒ |  j	 t
 j | ƒ t
 j | ƒ ƒ d  S(   NRq   i
   (   Rš   R   R   R)   R…   Rg   R\   R	   t   assert_equalR9   t   syst   getrefcount(   R=   R>   R?   t   py_aryt   c_aryt   py_rest   c_res(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_gen0x  s    c   	      C  sô   t  } t d t ƒ | ƒ } t j d ƒ } | d } | j ƒ  } | j ƒ  } t | | | ƒ ƒ } t | | | ƒ ƒ } t j j | | ƒ t j j | | ƒ |  j	 | | ƒ |  j	 t
 j | ƒ t
 j | ƒ ƒ |  j	 t
 j | ƒ t
 j | ƒ ƒ d  S(   NRq   i
   id   (   R    R   R   R)   R…   Rg   R\   R	   R¢   R9   R£   R¤   (	   R=   R>   R?   t   py_ary1t   py_ary2t   c_ary1t   c_ary2R§   R¨   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_gen1ˆ  s    
c         C  s   |  j  ƒ  |  j ƒ  d S(   s2  
        Issue #1163 is observed when two generator with NRT object arguments
        is ran in sequence.  The first one does a invalid free and corrupts
        the NRT memory subsystem.  The second generator is likely to segfault
        due to corrupted NRT data structure (an invalid MemInfo).
        N(   R©   R®   (   R=   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_combine_gen0_gen1ž  s    
c   	      C  sù   t  } t d t ƒ | ƒ } t j d ƒ } | j ƒ  } | | ƒ } | | ƒ } t | ƒ } t | ƒ } |  j t ƒ  t | ƒ } Wd QX|  j t ƒ  t | ƒ } Wd QX~ ~ t j	 j
 | | ƒ |  j | | ƒ |  j t j | ƒ t j | ƒ ƒ d S(   s/   
        Test cleanup on StopIteration
        Rq   i   N(   Rš   R   R   R)   R…   Rg   R:   R;   R<   R	   R¢   R9   R£   R¤   (	   R=   R>   R?   R¥   R¦   t   py_itert   c_iterR§   R¨   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_gen0_stop_iteration¨  s$    c         C  s   t  } t d t ƒ | ƒ } t j d ƒ } | j ƒ  } | | ƒ } | | ƒ } ~ ~ t j j | | ƒ |  j t	 j
 | ƒ t	 j
 | ƒ ƒ d S(   sj   
        Test cleanup for a initialized but never iterated (never call next())
        generator.
        Rq   i   N(   Rš   R   R   R)   R…   Rg   R	   R¢   R9   R£   R¤   (   R=   R>   R?   R¥   R¦   R°   R±   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_gen0_no_iterÇ  s    (   R’   R“   R©   R®   R¯   R²   R³   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR¡   w  s
   			
	t   TestNrtNestedGenc           B  s,   e  Z d  „  Z e j d „  ƒ Z d „  Z RS(   c   
      C  sê   d „  } d „  } t  j d ƒ } | j ƒ  } | | ƒ | ƒ \ } } t d t ƒ | t d t ƒ | ƒ ƒ ƒ } | | ƒ \ } }	 |  j | | ƒ |  j | | ƒ |  j |	 | ƒ t  j j | | ƒ |  j	 t
 j | ƒ t
 j | ƒ ƒ d  S(   Nc         s  s#   x t  |  j ƒ D] } |  Vq Wd  S(   N(   R   R    (   R!   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   gen0ã  s    c           s   ‡  f d †  } | S(   Nc           s:   t  j |  ƒ } x ˆ  |  ƒ D] } | | } q W| |  f S(   N(   R)   t
   zeros_like(   R!   t   outR   (   Rµ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR   è  s    (    (   Rµ   R   (    (   Rµ   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   factoryç  s    i
   Rq   (   R)   R…   Rg   R   R   t   assertIsNott   assertIsR	   R¢   R9   R£   R¤   (
   R=   Rµ   R¸   t   py_arrt   c_arrR§   t   py_oldt   c_genR¨   t   c_old(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_nested_gená  s    			*c         C  sË   d „  } d „  } t  j d ƒ } | j ƒ  } | | ƒ | ƒ } t d t ƒ | t d t ƒ | ƒ ƒ ƒ } | | ƒ } |  j | | ƒ |  j | | ƒ |  j | | ƒ |  j t j	 | ƒ t j	 | ƒ ƒ d  S(   Nc         s  s	   |  Vd  S(   N(    (   R!   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyRµ     s    c           s   ‡  f d †  } | S(   Nc           s   x ˆ  |  ƒ D] } | SWd  S(   N(    (   R!   R·   (   Rµ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR     s    (    (   Rµ   R   (    (   Rµ   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR¸   
  s    i
   Rq   (
   R)   R…   Rg   R   R   R¹   Rº   R9   R£   R¤   (   R=   Rµ   R¸   R»   R¼   R½   R¾   R¿   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_nested_gen_refct  s    		*c         C  se   d „  d „ } | ƒ  } | t  d t ƒ ƒ } t | d ƒ ƒ } t | d ƒ ƒ } |  j | | ƒ d S(   s/   
        Test nesting three generators
        c         S  s   |  S(   N(    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   <lambda>#  t    c           s=   |  d „  ƒ ‰ |  ‡ f d †  ƒ ‰  |  ‡  f d †  ƒ } | S(   Nc         s  s4   x- t  | ƒ D] } |  | V|  | c | 7<q Wd  S(   N(   R   (   R   t   nR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   foo$  s    	c         3  sY   t  j |  ƒ } x  ˆ  | |  ƒ D] } | d Vq Wx  t | j ƒ D] } | | VqB Wd  S(   Ni   (   R)   R…   R   R    (   RÄ   R   R   (   RÅ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   bar*  s
    c         3  s$   x ˆ  |  ƒ D] } | | Vq Wd  S(   N(    (   RÄ   R   (   RÆ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   cat2  s    (    (   t   decorRÇ   (    (   RÆ   RÅ   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR¸   #  s    Rq   i
   N(   R   R   R\   R9   (   R=   R¸   t   py_genR¾   R§   R¨   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_nrt_nested_nopython_gen  s    	(   R’   R“   RÀ   t   unittestt   expectedFailureRÁ   RÊ   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyR´   à  s   	$t   TestGeneratorWithNRTc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s~   t  d t ƒ d „  ƒ } t | d ƒ ƒ } |  j t | ƒ d ƒ t j d ƒ } d | (x! | D] } t j j | | ƒ q] Wd S(   s9   
        Missing environment for returning array
        Rq   c         s  s6   x/ t  |  ƒ D]! } t j d ƒ } d | (| Vq Wd  S(   Ni   i   (   R   R)   t   empty(   RÄ   R   t   vec(    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   random_directionsH  s    i   i   i   N(	   R   R   R\   R9   t   lenR)   RÎ   R	   R¢   (   R=   RÐ   t   outputst   expectRA   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_issue_1254C  s    c           sÏ   d „  ‰ t  d t ƒ ˆ ƒ ‰  t ˆ d d d ƒ ƒ } t ˆ  d d d ƒ ƒ } |  j | | ƒ ‡ f d †  } t  d t ƒ ‡  f d †  ƒ } d } d d | f } | | ƒ } | | ƒ } t j j | | ƒ d	 S(
   sM   
        Double-free for locally allocated, non escaping NRT objects
        c         s  s+   t  j |  | | ƒ } | d V| d Vd  S(   Ni    i   (   R)   Rf   (   t   rmint   rmaxt   nrR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyRÉ   \  s    	Rq   iþÿÿÿi   id   c           s^   |  \ } } } t  j | d t  j ƒ} x0 t ˆ  | | | ƒ ƒ D] \ } } | | | <q@ W| S(   NRƒ   (   R)   RÎ   t
   complex128t	   enumerate(   Rk   RÕ   RÖ   R×   t   pointsR   t   c(   RÉ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   py_driverh  s
    %c           s^   |  \ } } } t  j | d t  j ƒ} x0 t ˆ  | | | ƒ ƒ D] \ } } | | | <q@ W| S(   NRƒ   (   R)   RÎ   RØ   RÙ   (   Rk   RÕ   RÖ   R×   RÚ   R   RÛ   (   R¾   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   c_driverp  s
    %iÿÿÿÿN(   R   R   R\   R9   R)   R	   R¢   (   R=   R§   R¨   RÜ   RÝ   RÄ   t   patches(    (   R¾   RÉ   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_issue_1265W  s    		c           s\   d ‰ t  ‡ f d †  ƒ ‰  t  ‡  f d †  ƒ ‰ t  ‡ f d †  ƒ } |  j | ƒ  ˆ ƒ d S(   s-   
        Incorrect return data model
        Iï¾­Þ    c           3  s	   ˆ  Vd  S(   N(    (    (   t   magic(    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt	   generatorˆ  s    c             s   ˆ  ƒ  S(   N(    (    (   Rá   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   get_generatorŒ  s    c            s(   d }  x ˆ  ƒ  D] } |  | 7}  q W|  S(   Ni    (    (   R·   R   (   Râ   (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   main  s    N(   R   R9   (   R=   Rã   (    (   Rá   Râ   Rà   s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   test_issue_1808‚  s
    (   R’   R“   RÔ   Rß   Rä   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyRÍ   B  s   		+t   TestGeneratorModelc           B  sZ   e  Z e j d  d d e j d e j e j g d e j e j d d d … g d e	 ƒ Z
 RS(   R   t
   yield_typet	   arg_typest   state_typesNi   t   has_finalizer(   R’   R“   R   t	   GeneratorR5   RD   t   int64t   float32R   t   Falset   fe_type(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyRå   ›  s   t   __main__(6   t
   __future__R    R£   t   numpyR)   t   numba.unittest_supportt   unittest_supportRË   t   numba.compilerR   R   t   numbaR   R   R   t   supportR   R   R   R	   t   numba.datamodel.testingR
   t   enable_pyobj_flagst   setRK   Rv   R   R   R   R   R   R   R   R"   Rí   R$   R&   R(   R-   R0   R3   R4   R6   R7   R8   R”   Rš   R    R¡   R´   RÍ   Rå   R’   Rã   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_generators.pyt   <module>   sP   				
																Þ			ibY