σ
\K]c           @@ sε   d  d l  m Z m Z d  d l Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l m
 Z
 m Z d d l m Z d e f d	     YZ d
   Z d   Z d e f d     YZ d e f d     YZ e d k rα e j   n  d S(   i    (   t   print_functiont   absolute_importN(   t   unittest_support(   t   IS_PY3(   t   jitt   typesi   (   t   TestCaset   Dummyc           B@ s   e  Z d    Z RS(   c         C@ s   | d S(   Ni   (    (   t   selft   other(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   __add__   s    (   t   __name__t
   __module__R
   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyR      s   c         C@ s   |  d S(   Ni   (    (   t   x(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   global_usecase1   s    c           C@ s   t  d S(   Ni   (   t
   global_obj(    (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   global_usecase2   s    t   TestFuncLifetimec           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 e j e d  d    Z d   Z RS(   sP   
    Test the lifetime of compiled function objects and their dependencies.
    c         C@ s9   |  j  t | j  d  t | j j    d } | j S(   sV   
        Get the single implementation (a C function object) of a dispatcher.
        i   i    (   t   assertEqualt   lent	   overloadst   listt   valuest   entry_point(   R   t
   dispatchert   cres(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   get_impl   s    c         K@ sΔ   d   } t  d |  |  } |  j | d  d  |  j |  } g  | | | j f D] } t j |  ^ qV } d  } } } } t j   |  j	 g  | D] } |   ^ q d  g t
 |   d  S(   Nc         S@ s   |  d S(   Ni   (    (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   f(   s    s   int32(int32)i   i   (   R   t   assertPreciseEqualR   t   __self__t   weakreft   reft   Nonet   gct   collectR   R   (   R   t   jitargsR   t   c_ft   cfunct   objt   refst   wr(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   check_local_func_lifetime'   s    	.
c         C@ s   |  j  d t  d  S(   Nt   forceobj(   R)   t   True(   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_local_func_lifetime9   s    c         C@ s   |  j  d t  d  S(   Nt   nopython(   R)   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_local_func_lifetime_npm<   s    c         K@ sΐ   t  |   t  } |  j | d  d  |  j |  } t j |  } g  | | j f D] } t j |  ^ qV } d  } } } t j	   |  j
 g  | D] } |   ^ q d  g t |   d  S(   Ni   i   (   R   R   R   R   R   R   R   R    R!   R"   R   R   (   R   R#   R$   R%   R(   R&   R'   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   check_global_func_lifetime?   s    +
c         C@ s   |  j  d t  d  S(   NR*   (   R/   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_global_func_lifetimeK   s    c         C@ s   |  j  d t  d  S(   NR-   (   R/   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_global_func_lifetime_npmN   s    c         K@ s₯   t    a t |   t  } |  j |   d  g  | t f D] } t j |  ^ q; } d  } } a t j	   |  j
 g  | D] } |   ^ q{ d  g t |   d  S(   Ni   (   R   R   R   R   R   R   R   R    R!   R"   R   R   (   R   R#   R$   R&   R'   R(   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   check_global_obj_lifetimeQ   s    	(
c         C@ s   |  j  d t  d  S(   NR*   (   R2   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_global_obj_lifetime`   s    c         @ s  d   } t  d |  |      j     f d   } t  d |  |  } | j   |  j | d  d  g  |   | | |  j    j |  j |  j f D] } t j |  ^ q } d } }   } } t j	   |  j g  | D] } |   ^ qε d g t
 |   d S(   s   
        When a jitted function calls into another jitted function, check
        that everything is collected as desired.
        c         S@ s   |  d S(   Ni
   (    (   t   a(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   mult_10h   s    s
   intp(intp)c         @ s     |  d  S(   Ni   (    (   R   (   t	   c_mult_10(    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   do_mathn   s    i   i2   N(   R   t   disable_compileR   R   R   R   R   R    R!   R"   R   (   R   R#   R5   R7   t	   c_do_mathR&   t   wrst   w(    (   R6   s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   check_inner_function_lifetimec   s    	

.
s   py3 only; known leak in py2c         C@ s   |  j  d t  d  S(   NR*   (   R<   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_inner_function_lifetime   s    c         C@ s   |  j  d t  d  S(   NR-   (   R<   R+   (   R   (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt    test_inner_function_lifetime_npm   s    (   R   R   t   __doc__R   R)   R,   R.   R/   R0   R1   R2   R3   R<   t   unittestt
   skipUnlessR   R=   R>   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyR      s   										t   TestLifeTimeIssuec           B@ s   e  Z d    Z RS(   c   	      @ s΄   d d l  m } d d  l   | d    } |   f d    }   j d d g g g  }   j d d g g  } |   } | | d |  |   } | | d |  |   } d  S(   Ni    (   t   njitc         S@ s*   | j  d } | d k r& | d } n  d S(   Ni    (   t   shape(   t   pointt   polygonst   num_polygonst   intentionally_unused_variable(    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   is_point_in_polygons   s    c           @ s     j  d d   j S(   Ni
   t   dtype(   t   emptyt   int64(    (   t   np(    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   dummy   s    i   g      ψΏg      ΰ?(   t   numbaRC   t   numpyt   array(	   R   RC   RI   RN   RF   t   pointsR4   t   bt   c(    (   RM   s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   test_double_free   s    		(   R   R   RU   (    (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyRB      s   t   __main__(   t
   __future__R    R   R!   R   RO   R   R@   t   numba.utilsR   R   R   t   supportR   t   objectR   R   R   R   RB   R   t   main(    (    (    s=   lib/python2.7/site-packages/numba/tests/test_func_lifetime.pyt   <module>   s   		m 