ó
\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	 m
 Z
 m Z d  d l m Z m Z m Z d d l m Z m Z d  d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ e d k rö e j ƒ  n  d S(   iÿÿÿÿ(   t   print_functionN(   t   njitt   jitt   testingt   utils(   t   TypingErrort   LoweringErrort   UnsupportedErrori   (   t   TestCaset   tag(   t   exec_t   TestClosurec           B  s†   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 e j d „  ƒ Z RS(   c           s`   d ‰  ‡  f d †  } t  d |  | ƒ } |  j | d ƒ d ƒ d ‰  |  j | d ƒ d ƒ d  S(   Ni
   c           s   |  ˆ  S(   N(    (   t   x(   t   Y(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   add_Y   s    s   i4(i4)i   i   i   (   R   t   assertEqual(   t   selft   jitargsR   t   c_add_Y(    (   R   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   run_jit_closure_variable   s    c         C  s   |  j  d t ƒ d  S(   Nt   forceobj(   R   t   True(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_jit_closure_variable   s    c         C  s   |  j  d t ƒ d  S(   Nt   nopython(   R   R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_jit_closure_variable_npm!   s    c           s§   d ‰  ‡  f d †  } t  d |  | ƒ } |  j | d ƒ d ƒ d ‰  t  d |  | ƒ } |  j | d ƒ d ƒ d ‰  |  j | d ƒ d ƒ |  j | d ƒ d ƒ d  S(   Ni
   c           s   |  ˆ  S(   N(    (   R   (   R   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR   '   s    s   i4(i4)i   i   i   i   (   R   R   (   R   R   R   R   t	   c_add_Y_2(    (   R   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   run_rejitting_closure$   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R   R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_rejitting_closure6   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R   R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_rejitting_closure_npm9   s    c           sM   d ‰  d ‰ ‡  ‡ f d †  } t  d |  | ƒ } |  j | d ƒ d ƒ d  S(   Ni
   i   c           s   |  ˆ  ˆ S(   N(    (   R   (   R   t   Z(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   add_Y_mult_Z@   s    s   i4(i4)i   i   (   R   R   (   R   R   R   t   c_add_Y_mult_Z(    (   R   R   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt"   run_jit_multiple_closure_variables<   s
    c         C  s   |  j  d t ƒ d  S(   NR   (   R    R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt#   test_jit_multiple_closure_variablesF   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R    R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt'   test_jit_multiple_closure_variables_npmI   s    c           s‰   d „  } t  d |  | ƒ ‰  ˆ  j ƒ  ‡  f d †  } t  d |  | ƒ } | j ƒ  |  j | ˆ  ƒ  |  j | d ƒ d ƒ Wd  QXd  S(   Nc         S  s   |  d S(   Ni
   (    (   t   a(    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   mult_10M   s    s
   intp(intp)c           s   ˆ  |  d ƒ S(   Ni   (    (   R   (   t	   c_mult_10(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   do_mathS   s    i   i2   (   R   t   disable_compilet   assertRefCountR   (   R   R   R$   R&   t	   c_do_math(    (   R%   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   run_jit_inner_functionL   s    	

c         C  s   |  j  d t ƒ d  S(   NR   (   R*   R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_jit_inner_function\   s    c         C  s   |  j  d t ƒ d  S(   NR   (   R*   R   (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_jit_inner_function_npm_   s    c         C  s;   d „  } t  | ƒ } |  j | d ƒ ƒ  | d ƒ ƒ  ƒ d  S(   Nc           s   ‡  f d †  } | S(   Nc             s   ˆ  d S(   Ni   (    (    (   R   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   innerg   s    (    (   R   R-   (    (   R   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outere   s    i
   (   R   R   (   R   R.   t   cfunc(    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_return_closureb   s    	(   t   __name__t
   __module__R   R   R   R   R   R   R    R!   R"   R*   R+   R,   R   t   allow_interpreter_modeR0   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR      s   							
					t   TestInlinedClosurec           B  s›   e  Z d  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z e j e	 j
 d k  d ƒ d „  ƒ Z e d ƒ d	 „  ƒ Z e d ƒ d
 „  ƒ Z RS(   sª   
    Tests for (partial) closure support in njit. The support is partial
    because it only works for closures that can be successfully inlined
    at compile time.
    t	   importantc         C  s5   d „  } t  | ƒ } |  j | d ƒ | d ƒ ƒ d  S(   Nc         S  s   d „  } | |  ƒ | |  ƒ S(   Nc         S  s   |  |  S(   N(    (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   |   s    (    (   R   R-   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR.   z   s    	i
   (   R   R   (   R   R.   R/   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_inner_functionw   s    	c         C  s5   d „  } t  | ƒ } |  j | d ƒ | d ƒ ƒ d  S(   Nc           s-   |  d ‰  ‡  f d †  } | |  ƒ | |  ƒ S(   Ni   c           s   |  |  ˆ  S(   N(    (   R   (   t   y(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   Š   s    (    (   R   R-   (    (   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR.   ‡   s    
i
   (   R   R   (   R   R.   R/   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt    test_inner_function_with_closure„   s    	c         C  s5   d „  } t  | ƒ } |  j | d ƒ | d ƒ ƒ d  S(   Nc           s3   |  d ‰  ‡  f d †  } | |  ƒ ‰  ˆ  | |  ƒ S(   Ni   c           s   |  ˆ  S(   N(    (   R   (   R7   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ˜   s    (    (   R   R-   (    (   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR.   •   s    
i
   (   R   R   (   R   R.   R/   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt"   test_inner_function_with_closure_2’   s    		i   i    s   needs Python 3c         C  sS   d } i  } t  | j ƒ  | ƒ t | d ƒ } |  j | d ƒ | d d ƒ ƒ d  S(   Ns  
            def outer(x):
                y = x + 1
                z = 0

                def inner(x):
                    nonlocal z
                    z += x * x
                    return z + y

                return inner(x) + inner(x) + z
        R.   i
   (   R
   t   stripR   R   (   R   t   codet   nsR/   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt"   test_inner_function_with_closure_3¡   s
    c         C  s5   d „  } t  | ƒ } |  j | d ƒ | d ƒ ƒ d  S(   Nc           s   ‡  f d †  } | ˆ  ˆ  ƒ S(   Nc           sC   ‡ ‡  f d †  } d } x$ t  ˆ  ƒ D] } | | | ƒ 7} q% W| S(   Nc           s   ˆ  ˆ |  S(   N(    (   t   z(   R   R7   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt	   innermost½   s    i    (   t   range(   R7   R?   t   st   i(   R   (   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   »   s
    (    (   R   R-   (    (   R   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR.   ¹   s    
i
   (   R   R   (   R   R.   R/   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_inner_function_nested¶   s    	c           sy  t  ‡ f d †  ƒ ‰ ‡ f d †  } ‡ f d †  } d „  } d „  } d „  } d „  } d ‰  ‡  f d	 †  } d ‰  ‡  f d
 †  } d „  }	 d „  }
 d „  } d „  } d d „ } d d „ } d d „ } d „  } d „  } d „  } d „  } d „  } d „  } | | | | | | |	 |
 | | | | | | | g } x< | D]4 } t  | ƒ } d } |  j | | ƒ | | ƒ ƒ q9W|  j t ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd } |  j | t | j ƒ ƒ |  j t ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd } |  j | t | j ƒ ƒ |  j t	 ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd } |  j | t | j ƒ ƒ |  j t
 ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd } |  j | t | j ƒ ƒ |  j t ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd } |  j | t | j ƒ ƒ |  j t
 ƒ & } t d t ƒ | ƒ } | | ƒ Wd QXd  } |  j | t | j ƒ ƒ d S(!   s3    Tests the large number of use cases defined below c           s,   |  d k  r |  Sˆ  |  d ƒ ˆ  |  d ƒ S(   Ni   i   (    (   t   n(   t   fib3(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyRE   Ï   s    c           s   ‡  f d †  } | |  ƒ S(   s,    Test calling recursive function from inner c           s
   ˆ  |  ƒ S(   N(    (   R   (   RE   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ×   s    (    (   R   R-   (   RE   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer1Õ   s    c           s&   |  d ‰  ‡ ‡  f d †  } | |  ƒ S(   s.    Test calling recursive function from closure i   c           s   |  ˆ  ˆ ƒ S(   N(    (   R   (   RE   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ß   s    (    (   R   R-   (   RE   (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer2Û   s    
c           s   ‡  f d †  ‰  ˆ  |  ƒ S(   s    Test recursive inner c           s"   |  d k  r d Sˆ  |  d ƒ d  S(   Ni   i
   i   (    (   R   (   R-   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   å   s    (    (   R   (    (   R-   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer3ã   s    c           s&   |  d ‰ ‡  ‡ f d †  ‰  ˆ  |  ƒ S(   s    Test recursive closure i   c           s&   |  ˆ d k  r d Sˆ  |  d ƒ d  S(   Ni   i
   i   (    (   R   (   R-   R7   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ð   s    (    (   R   (    (   R-   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer4ì   s    
c           s#   |  d ‰  ‡  f d †  } | |  ƒ S(   s    Test nested closure i   c           s+   ˆ |  d ‰  ‡  f d †  } | |  ƒ ˆ S(   Ni   c           s   |  ˆ  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   inner2þ   s    (    (   R   RJ   (   R7   (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   inner1û   s    (    (   R   RK   (    (   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer5÷   s    
c           s#   |  d ‰  ‡  f d †  } | |  ƒ S(   s.    Test closure with list comprehension in body i   c           s+   ˆ  |  d } g  t  | ƒ D] } | ^ q S(   Ni   (   R@   (   R   R>   t   t(   R7   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyRK   	  s    (    (   R   RK   (    (   R7   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer6  s    
i	   c           s   |  d } |  | ˆ  S(   s)    Test use of outer scope var, no closure i   (    (   R   R>   (   t   _OUTER_SCOPE_VAR(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer7  s    
c           s&   |  d ‰  ‡ ‡  f d †  } | |  ƒ S(   s+    Test use of outer scope var, with closure i   c           s   |  ˆ ˆ  S(   N(    (   R   (   RO   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-     s    (    (   R   R-   (   RO   (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer8  s    
c           s)   |  d ‰  ‡  f d †  } | } | |  ƒ S(   s    Test closure assignmenti   c           s   |  ˆ  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   #  s    (    (   R   R-   t   f(    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer9  s    
c           s2   |  d ‰ ‡ f d †  ‰  ‡  f d †  } | |  ƒ S(   s!    Test two inner, one calls other i   c           s   |  ˆ  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ,  s    c           s
   ˆ  |  ƒ S(   N(    (   R   (   R-   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyRJ   /  s    (    (   R   RJ   (    (   R-   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer10(  s    
c           s   |  d ‰  ‡  f d †  } | S(   s    return the closure i   c           s   |  ˆ  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   8  s    (    (   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer114  s    
c           s&   |  d ‰  d ‡  f d † } | |  ƒ S(   s    closure with kwargi   i   c           s   |  ˆ  | S(   N(    (   R   t   kw(   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   @  s    (    (   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer12<  s    
i   c         S  s   |  d | } | S(   s    outer with kwarg no closurei   (    (   R   RV   R>   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer13D  s    c           s&   |  d ‰ ‡  ‡ f d †  } | |  ƒ S(   s!    outer with kwarg used in closurei   c           s   |  ˆ ˆ  S(   N(    (   R   (   RV   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   M  s    (    (   R   RV   R-   (    (   RV   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer14I  s    
c           s&   |  d ‰  ‡  f d †  } | |  | ƒ S(   s#    outer with kwarg as arg to closurei   c           s   |  ˆ  | S(   N(    (   R   RV   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   U  s    (    (   R   RV   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer15Q  s    
c           s)   |  d ‰  ‡  f d †  } t  | |  ƒ ƒ S(   s(    closure is generator, consumed locally i   c         3  s   |  ˆ  Vd  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ]  s    (   t   list(   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer16Y  s    
c           s#   |  d ‰  ‡  f d †  } | |  ƒ S(   s     closure is generator, returned i   c         3  s   |  ˆ  Vd  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   f  s    (    (   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer17b  s    
c           s:   |  d ‰  ‡  f d †  } x | |  ƒ D] } | } q& W| S(   s(    closure is generator, consumed in loop i   c         3  s   |  ˆ  Vd  S(   N(    (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   o  s    (    (   R   R-   RB   RM   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer18k  s
    

c           s?   |  d ‰  |  d ‰ ‡  f d †  } ‡ f d †  } | | |  ƒ S(   s#    closure as arg to another closure i   i   c           s   |  ˆ  S(   N(    (   R   (   t   z1(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   |  s    c           s   |  | ƒ ˆ  S(   N(    (   RR   R   (   t   z2(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyRJ     s    (    (   R   R-   RJ   (    (   R_   R`   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer19w  s
    

c           s#   |  d ‰  ‡  f d †  } | |  ƒ S(   Ni   c           s   |  t  j ˆ  ƒ S(   N(   t   numpyt   cos(   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-   ˆ  s    (    (   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer20„  s    
c           s#   |  d ‰  ‡  f d †  } | |  ƒ S(   Ni   c           s   |  t  j ˆ  ƒ S(   N(   t   npRc   (   R   (   R>   (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR-     s    (    (   R   R-   (    (   R>   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   outer21Œ  s    
i
   R   Ns.   Unsupported use of op_LOAD_CLOSURE encounteredt   make_functions#   with argument(s) of type(s): (none)s1   'NoneType' object has no attribute 'yield_points's-   Invalid use of getiter with parameters (none)(   R   R   t   assertRaisest   NotImplementedErrorR   R   t   assertInt   strt	   exceptionR   R   R   (   R   RF   RG   RH   RI   RL   RN   RP   RQ   RS   RT   RU   RW   RX   RY   RZ   R\   R]   R^   Ra   Rd   Rf   RR   t   refR/   t   vart   raisest   msg(    (   RO   RE   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_bulk_use_casesÊ   sz    																				 (   i   i    (   R1   R2   t   __doc__R	   R6   R8   R9   t   unittestt   skipIfR   t	   PYVERSIONR=   RC   Rq   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR4   p   s   $t   TestObjmodeFallbackc           B  sS   e  Z e e d  e ƒ g Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   R   c         C  st   d „  } t  j j d ƒ } t  j t  j j d d ƒ d ƒ j t  j ƒ } x$ |  j D] } | | ƒ | | ƒ qS Wd  S(   Nc         S  s~   |  j  \ } } xh t | ƒ D]Z } |  | } t t | ƒ d t ƒ} g  | D]' } t t j | | k ƒ j ƒ  ƒ ^ qK q Wd  S(   Nt   reverse(   t   shapeR@   t   sortedt   setR   Re   t   argwheret   flatten(   t   scorest   cooct   rowst   colsRB   t   coxvt   groupsR   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   numbaFailureÍ  s
    
i
   gƒÀÊ¡E¶û?(   i
   i
   (   Re   t   randomt   abst   randnt   astypet   intt
   decorators(   R   Rƒ   R   R7   t   d(    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue2955Ë  s
    	.c         C  s¬   d „  } xœ |  j  D]‘ } | | ƒ t j d ƒ j d d ƒ t j d ƒ j d d ƒ ƒ } | t j d ƒ j d d ƒ t j d ƒ j d d ƒ ƒ } t j j | | ƒ q Wd  S(   Nc         S  sÖ   t  |  ƒ t j k	 r' t j |  ƒ }  n  t  | ƒ t j k	 rN t j | ƒ } n  |  j \ } } t j t j g  t | ƒ D] } d g ^ qv ƒ |  f ƒ }  t j t j |  |  j ƒ | ƒ } | d } | d } | | f S(   Ni   i    (	   t   typeRe   t   ndarrayt   arrayRx   t   hstackR@   t   dott   T(   t   XR7   t   mt   _t   rest	   interceptt   coefs(    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   fitÛ  s    (!

i
   i   (   R‰   Re   t   aranget   reshapeR   t   assert_equal(   R   R˜   RŠ   R•   t   exp(    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue3239Ù  s    	!c           s@   d d g ‰  ‡  f d †  } x |  j  D] } | | ƒ ƒ  q% Wd  S(   Ni   i|   i4   c            s<   g  d d g D] }  ˆ  |  ^ q x t  d ƒ D] } q. Wd  S(   Ni    i   i   (   R@   (   t   indexR   (   t   b(    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyR#   ÷  s    !(   i   i|   (   i4   i   (   R‰   (   R   R#   RŠ   (    (   RŸ   s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue3289ô  s    c         C  sx   d „  } i t  j d ƒ d 6d g d d g g d 6} x< |  j D]1 } | | ƒ | ƒ } t  j j | | | ƒ ƒ q? Wd  S(   Nc         S  sX   t  g  |  d D] } t | ƒ ^ q ƒ } |  d d k } t | ƒ rN d } n  | | f S(   NR7   R   i    i   (   t   maxt   lent   any(   t   dataR“   RM   t   maskR>   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   foo   s
    )	i   R   i   i   i   R7   (   Re   R™   R‰   R   t   assert_allclose(   R   R¦   R¤   RŠ   R•   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue3413þ  s
    		,c         C  sF   d „  } x6 |  j  D]+ } | | ƒ ƒ  } t j j | | ƒ  ƒ q Wd  S(   Nc          S  s5   t  j d d f ƒ }  t  j g  |  D] } | ^ q" ƒ S(   Ni   i   i   i   (   i   i   (   i   i   (   Re   RŽ   (   R#   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   main  s    (   R‰   Re   R   R§   (   R   R©   RŠ   R•   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue3659  s    	c         C  s[   d „  } t  j d ƒ } x< |  j D]1 } | | ƒ | ƒ } t  j j | | | ƒ ƒ q" Wd  S(   Nc         S  s\   t  j g  |  j D] } t  j | ƒ ^ q ƒ t  j g  |  j D] } t  j d ƒ ^ q< ƒ |  S(   Ni   (   Re   RŽ   R‘   t   float_(   R’   R   R”   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   center  s    ,,i
   (   i
   (   Re   t   zerosR‰   R   R§   (   R   R¬   R’   RŠ   R•   (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   test_issue3803  s
    	(   R1   R2   R   R   R‰   R‹   R   R    R¨   Rª   R®   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyRv   Ã  s   			
			t   __main__(   t
   __future__R    Rb   Re   t   numba.unittest_supportt   unittest_supportRs   t   numbaR   R   R   R   t   numba.errorsR   R   R   t   supportR   R	   t	   numba.sixR
   R   R4   Rv   R1   R©   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_closure.pyt   <module>   s   "bÿ Ta