ó
\K]c           @` s,  d  d l  m Z m Z 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 m Z d  d l m Z d d l m Z d d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ 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_importt   divisionN(   t   unittest_support(   t   configi   (   t   capture_cache_log(   t   BaseCacheTestt   UfuncCacheTestc           B` s˜   e  Z d  Z e Z e j j e ƒ Z	 e j j
 e	 d ƒ Z d Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z d „  Z d „  Z d	 „  Z RS(
   sg   
    Since the cache stats is not exposed by ufunc, we test by looking at the
    cache debug log.
    s   cache_usecases.pyt   ufunc_caching_test_fodders   \[cache\] data saved tos   \[cache\] index saved tos   \[cache\] data loaded froms   \[cache\] index loaded fromc         C` sT   |  j  j | ƒ } |  j j | ƒ } |  j t | ƒ | ƒ |  j t | ƒ | ƒ d S(   s8   
        Check number of cache-save were issued
        N(   t   regex_data_savedt   findallt   regex_index_savedt   assertEqualt   len(   t   selft   cachelogt   countt
   data_savedt   index_saved(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   check_cache_saved"   s    c         C` sT   |  j  j | ƒ } |  j j | ƒ } |  j t | ƒ | ƒ |  j t | ƒ | ƒ d S(   s8   
        Check number of cache-load were issued
        N(   t   regex_data_loadedR
   t   regex_index_loadedR   R   (   R   R   R   t   data_loadedt   index_loaded(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   check_cache_loaded+   s    c   
      K` sŸ   |  j  ƒ  } t | | ƒ } t ƒ   } | |   } Wd QX| j ƒ  } |  j | d | ƒt ƒ   } | |   }	 Wd QX| j ƒ  } |  j | d | ƒ| |	 f S(   sf   
        Check number of cache load/save.
        There should be one per overloaded version.
        NR   (   t   import_modulet   getattrR   t   getvalueR   R   (
   R   t   usecase_namet   n_overloadst   kwargst   modt   usecaset   outt	   new_ufuncR   t   cached_ufunc(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   check_ufunc_cache4   s    (   t   __name__t
   __module__t   __doc__t   Falset   _numba_parallel_test_t   ost   patht   dirnamet   __file__t   heret   joint   usecases_filet   modnamet   ret   compileR	   R   R   R   R   R   R$   (    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyR      s   				t   TestUfuncCacheTestc           B` s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         K` s–   |  j  d d d | \ } } t j j d ƒ j t j ƒ } t j j | | ƒ | | ƒ ƒ t j d d t j ƒ} t j j | | ƒ | | ƒ ƒ d  S(   Nt   direct_ufunc_cache_usecaseR   i   i
   t   dtype(	   R$   t   npt   randomt   astypet   float64t   testingt   assert_equalt   aranget   intp(   R   R   R"   R#   t   inp(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_direct_ufunc_cacheL   s    c         C` s   |  j  d t ƒ d  S(   Nt   forceobj(   R@   t   True(   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_direct_ufunc_cache_objmodeU   s    c         C` s   |  j  d d ƒ d  S(   Nt   targett   parallel(   R@   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt    test_direct_ufunc_cache_parallelX   s    c         K` s–   |  j  d d d | \ } } t j j d ƒ j t j ƒ } t j j | | ƒ | | ƒ ƒ t j d d t j ƒ} t j j | | ƒ | | ƒ ƒ d  S(   Nt   indirect_ufunc_cache_usecaseR   i   i
   R6   (	   R$   R7   R8   R9   R:   R;   R<   R=   R>   (   R   R   R"   R#   R?   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_indirect_ufunc_cache[   s    c         C` s   |  j  d d ƒ d  S(   NRD   RE   (   RH   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt"   test_indirect_ufunc_cache_paralleld   s    (   R%   R&   R@   RC   RF   RH   RI   (    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyR4   J   s
   						t   TestDUfuncCacheTestc           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c      	   C` sñ   |  j  ƒ  } t | | ƒ } t ƒ   } | ƒ  } Wd  QX|  j | j ƒ  d d ƒt ƒ   } | t j d ƒ ƒ Wd  QX|  j | j ƒ  d d ƒ|  j | j ƒ  d d ƒt ƒ  # } | ƒ  } | t j d ƒ ƒ Wd  QX|  j | j ƒ  d d ƒd  S(   NR   i    i
   i   (   R   R   R   R   R   R7   R=   R   (   R   R   R   R    R!   t   ufunc(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   check_dufunc_usecasek   s    	c         C` s   |  j  d ƒ d  S(   Nt   direct_dufunc_cache_usecase(   RL   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_direct_dufunc_cache}   s    c         C` s   |  j  d ƒ d  S(   Nt   indirect_dufunc_cache_usecase(   RL   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_indirect_dufunc_cache   s    (   R%   R&   RL   RN   RP   (    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyRJ   h   s   		c         C` s"   t  j r |  j d d ƒ }  n  |  S(   Nt   /s   \\\\(   R   t   IS_WIN32t   replace(   t   rstr(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   _fix_raw_path…   s    	t   TestGUfuncCacheTestc           B` s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c   	      C` sÊ   |  j  ƒ  } t | d ƒ } t ƒ   } | ƒ  Wd  QX| j ƒ  } t d ƒ } t j | j |  j ƒ | ƒ } t d ƒ } t j | j |  j ƒ | ƒ } |  j	 t
 | ƒ d ƒ |  j t
 | ƒ t
 | ƒ ƒ d  S(   Nt   direct_gufunc_cache_usecases   /__pycache__/guf-{}s   /__pycache__/{}i   (   R   R   R   R   RU   R2   R
   t   formatR1   t   assertGreaterR   R   (	   R   R   R    R!   R   t   fmt1t   prefixedt   fmt2t   normal(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_filename_prefix   s    c         K` s–   |  j  d d d | \ } } t j j d ƒ j t j ƒ } t j j | | ƒ | | ƒ ƒ t j d d t j ƒ} t j j | | ƒ | | ƒ ƒ d  S(   NRW   R   i   i
   R6   i   (	   R$   R7   R8   R9   R:   R;   R<   R=   R>   (   R   R   R"   R#   R?   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_direct_gufunc_cache   s    c         C` s   |  j  d t ƒ d  S(   NRA   (   R_   RB   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt    test_direct_gufunc_cache_objmode¨   s    c         C` s   |  j  d d ƒ d  S(   NRD   RE   (   R_   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt!   test_direct_gufunc_cache_parallel«   s    c         K` s–   |  j  d d d | \ } } t j j d ƒ j t j ƒ } t j j | | ƒ | | ƒ ƒ t j d d t j ƒ} t j j | | ƒ | | ƒ ƒ d  S(   Nt   indirect_gufunc_cache_usecaseR   i   i
   R6   (	   R$   R7   R8   R9   R:   R;   R<   R=   R>   (   R   R   R"   R#   R?   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_indirect_gufunc_cache®   s    c         K` s   |  j  d d ƒ d  S(   NRD   RE   (   Rc   (   R   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt#   test_indirect_gufunc_cache_parallel¹   s    (   R%   R&   R^   R_   R`   Ra   Rc   Rd   (    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyRV   ‹   s   					t   TestCacheSpecificIssuec           B` s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C` s™   d t  d |  j d |  j d | ƒ } t j t j d | g d t j d t j ƒ} | j ƒ  \ } } | j	 d k r• t
 d	 | j	 | j ƒ  f ƒ ‚ n  d  S(
   Nsœ   if 1:
            import sys

            sys.path.insert(0, %(tempdir)r)
            mod = __import__(%(modname)r)
            mod.%(runcode)s
            t   tempdirR1   t   runcodes   -ct   stdoutt   stderri    s/   process failed with code %s: stderr follows
%s
(   t   dictRf   R1   t
   subprocesst   Popent   syst
   executablet   PIPEt   communicatet
   returncodet   AssertionErrort   decode(   R   Rg   t   codet   popenR!   t   err(    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   run_in_separate_process¿   s    	
c         C` s   |  j  d ƒ |  j  d ƒ d  S(   Ns   direct_ufunc_cache_usecase()(   Rw   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_first_load_cached_ufunc×   s    c         C` s   |  j  d ƒ |  j  d ƒ d  S(   Ns   direct_gufunc_cache_usecase()(   Rw   (   R   (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   test_first_load_cached_gufuncÞ   s    (   R%   R&   Rw   Rx   Ry   (    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyRe   ½   s   		t   __main__(   t
   __future__R    R   R   Rm   t   os.pathR*   R2   Rk   t   numpyR7   t   numbaR   t   unittestR   t   supportR   t   test_dispatcherR   R   R4   RJ   RU   RV   Re   R%   t   main(    (    (    s@   lib/python2.7/site-packages/numba/tests/npyufunc/test_caching.pyt   <module>   s"   9	2)