ó
\K]c           @` s÷  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z m	 Z
 d  d l m Z d  d l m Z m Z d  d l m Z d  d l m Z d d	 l m Z m Z d
 „  Z d „  Z d „  Z d „  Z e d e ƒ d „  ƒ Z e d g d e ƒd „  ƒ Z d „  Z d „  Z d d( d „  ƒ  YZ  d „  Z! d „  Z" d e# f d „  ƒ  YZ$ d „  Z% d e f d „  ƒ  YZ& d e& f d „  ƒ  YZ' d e f d  „  ƒ  YZ( 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_functiont   absolute_importt   divisionN(   t   configt   unittest_support(   t   GUFuncBuilder(   t	   vectorizet   guvectorize(   t   PyUFunc_One(   t   DUFunci   (   t   tagt   TestCasec         C` s   |  | S(   s   An addition(    (   t   at   b(    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   add   s    c         C` s
   |  | k S(   N(    (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   equals   s    c         C` s   |  | S(   s   A multiplication(    (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   mul   s    c         C` si   | j  \ } } xS t | ƒ D]E } x< t | ƒ D]. } |  | | f | | | f | | | f <q/ Wq Wd S(   s   A generalized additionN(   t   shapet   range(   R   R   t   ct   xt   yt   it   j(    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   guadd   s    t   nopythonc         C` s   |  | S(   N(    (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   inner!   s    s   int64(int64, int64)c         C` s   |  | S(   N(    (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   inner_explicit%   s    c         C` s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   outer)   s    c         C` s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   outer_explicit,   s    t   Dummyc           B` s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR   0   s    c         C` sp   t  ƒ  | j \ } } xS t | ƒ D]E } x< t | ƒ D]. } |  | | f | | | f | | | f <q6 Wq# Wd  S(   N(   R   R   R   (   R   R   R   R   R   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt	   guadd_obj3   s
    c         C` sf   t  ƒ  | j \ } } xI t | ƒ D]; } x2 t | ƒ D]$ } |  | | f | | | | f <q6 Wq# Wd  S(   N(   R   R   R   (   R   R   R   R   R   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   guadd_scalar_obj:   s
    t   MyExceptionc           B` s   e  Z RS(    (   R   R    (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR#   B   s   c         C` s
   t  ‚ d  S(   N(   R#   (   R   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   guerrorF   s    t   TestUfuncBuildingc           B` sA   e  Z e d  ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z RS(   t	   importantc         ` sç   t  t ƒ } | j d ƒ } ˆ  j | j ƒ | j d ƒ } ˆ  j | j ƒ | j ƒ  ‰ ‡  ‡ f d †  } t j d d d ƒ} | | ƒ | d  d  d … } | | ƒ | j d ƒ } | | ƒ ˆ  j ˆ j	 d	 ƒ ˆ  j
 d
 ˆ j ƒ d  S(   Ns   int32(int32, int32)s   int64(int64, int64)c         ` s=   ˆ |  |  ƒ } ˆ  j  |  |  | ƒ ˆ  j | j |  j ƒ d  S(   N(   t   assertPreciseEqualt   assertEqualt   dtype(   R   R   (   t   selft   ufunc(    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   checkU   s    i   R)   t   int32i   i   R   s   An addition(   i   i   (   t   UFuncBuilderR   t   assertFalset
   objectmodet   build_ufunct   npt   aranget   reshapeR(   R   t   assertInt   __doc__(   R*   t   ufbt   cresR,   R   (    (   R*   R+   sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_basic_ufuncL   s    


c         ` s¦   t  t ƒ } | j d ƒ } ˆ  j | j ƒ | j ƒ  ‰ ‡  ‡ f d †  } t j d d d ƒd } | | ƒ | d  d  d … } | | ƒ | j d	 ƒ } | | ƒ d  S(
   Ns   complex64(complex64, complex64)c         ` s=   ˆ |  |  ƒ } ˆ  j  |  |  | ƒ ˆ  j | j |  j ƒ d  S(   N(   R'   R(   R)   (   R   R   (   R*   R+   (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR,   l   s    i   R)   t	   complex64y              ð?i   i   (   i   i   (   R.   R   R/   R0   R1   R2   R3   R4   (   R*   R7   R8   R,   R   (    (   R*   R+   sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_ufunc_structf   s    

c         C` s€   t  t d i t d 6ƒ} | j d ƒ } |  j | j ƒ | j ƒ  } t j d d d ƒ} | | | ƒ } |  j | | | ƒ d  S(   Nt   targetoptionst   forceobjs   int32(int32, int32)i
   R)   R-   (	   R.   R   t   Truet
   assertTrueR0   R1   R2   R3   R'   (   R*   R7   R8   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_ufunc_forceobjy   s    c         C` sO   t  t d i t d 6ƒ} | j d ƒ | j ƒ  } |  j | d d ƒ d ƒ d S(   sA   
        Check nested call to an implicitly-typed ufunc.
        R<   R   s   (int64, int64)iÿÿÿÿi   i   N(   R.   R   R>   R   R1   R(   (   R*   t   builderR+   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_nested_callƒ   s
    	c         C` sO   t  t d i t d 6ƒ} | j d ƒ | j ƒ  } |  j | d d ƒ d ƒ d S(   sA   
        Check nested call to an explicitly-typed ufunc.
        R<   R   s   (int64, int64)iÿÿÿÿi   i   N(   R.   R   R>   R   R1   R(   (   R*   RA   R+   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_nested_call_explicit   s
    	(   R   R    R
   R9   R;   R@   RB   RC   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR%   J   s
   		
	
t   TestUfuncBuildingJitDisabledc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   t  j |  _ t t  _ d  S(   N(   R   t   DISABLE_JITt   old_disable_jitt   False(   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   setUpš   s    c         C` s   |  j  t _ d  S(   N(   RF   R   RE   (   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   tearDownž   s    (   R   R    RH   RI   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRD   ˜   s   	t   TestGUfuncBuildingc           B` s/   e  Z d  „  Z e d ƒ d „  ƒ Z d „  Z RS(   c         C` sÄ   t  t d ƒ } | j d ƒ } |  j | j ƒ | j ƒ  } t j d d d ƒj d d ƒ } | | | ƒ } |  j	 | | | ƒ |  j
 | j t j d ƒ ƒ |  j
 | j d ƒ |  j d	 | j ƒ d  S(
   Ns   (x, y),(x, y)->(x, y)s(   void(int32[:,:], int32[:,:], int32[:,:])i
   R)   R-   i   i   R   s   A generalized addition(   R   R   R   R/   R0   R1   R2   R3   R4   R'   R(   R)   R   R5   R6   (   R*   t   gufbR8   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_basic_gufunc¤   s    !R&   c         C` s†   t  t d ƒ } | j d ƒ } |  j | j ƒ | j ƒ  } t j d d d ƒj d d ƒ d } | | | ƒ } |  j	 | | | ƒ d  S(	   Ns   (x, y),(x, y)->(x, y)s4   void(complex64[:,:], complex64[:,:], complex64[:,:])i
   R)   R:   i   i   y              ð?(
   R   R   R   R/   R0   R1   R2   R3   R4   R'   (   R*   RK   R8   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_gufunc_struct´   s    %c         C` s•   t  t d d t d t ƒ ƒ} | j d ƒ } |  j | j ƒ | j ƒ  } t j	 d d d ƒj
 d d	 ƒ d
 } | | | ƒ } |  j | | | ƒ d  S(   Ns   (x, y),(x, y)->(x, y)R<   R=   s4   void(complex64[:,:], complex64[:,:], complex64[:,:])i
   R)   R:   i   i   y              ð?(   R   R   t   dictR>   R   R?   R0   R1   R2   R3   R4   R'   (   R*   RK   R8   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_gufunc_struct_forceobjÀ   s    %(   R   R    RL   R
   RM   RO   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRJ   ¢   s   	t   TestGUfuncBuildingJitDisabledc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   t  j |  _ t t  _ d  S(   N(   R   RE   RF   RG   (   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRH   Ð   s    c         C` s   |  j  t _ d  S(   N(   RF   R   RE   (   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRI   Ô   s    (   R   R    RH   RI   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRP   Î   s   	t   TestVectorizeDecorc           B` sÔ   e  Z d  d d d g Z d „  Z d „  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z d „  Z	 d	 „  Z
 d
 „  Z e d ƒ d „  ƒ Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z RS(   i    i   t   reorderablec         C` sQ   t  d g ƒ t ƒ } t j d d d ƒ} | | | ƒ } |  j | | | ƒ d  S(   Ns   int32(int32, int32)i
   R)   R-   (   R   R   R2   R3   R'   (   R*   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorizeÜ   s    c         C` sW   t  d g d t ƒt ƒ } t j d d d ƒ} | | | ƒ } |  j | | | ƒ d  S(   Ns   int32(int32, int32)R=   i
   R)   R-   (   R   R>   R   R2   R3   R'   (   R*   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_objmodeâ   s    R&   c         C` sb   t  d g ƒ t ƒ } t j d d d ƒ} | | | ƒ } |  j | t j | j d t j ƒƒ d  S(   Ns   bool_(int32, int32)i
   R)   R-   (   R   R   R2   R3   R'   t   onesR   t   bool_(   R*   R+   R   t   r(    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_bool_returnè   s    c      	   C` sê   d } xW |  j  D]L } t | g d | ƒt ƒ } | d k rC d  n | } |  j | j | ƒ q Wt | g ƒ t ƒ } |  j | j d  ƒ |  j t ƒ  t | g d d ƒt ƒ Wd  QX|  j t ƒ  t | g d d ƒt ƒ Wd  QXd  S(   Ns   int32(int32, int32)t   identityRR   t   nonei   (	   t   _supported_identitiesR   R   t   NoneR(   RY   t   assertIst   assertRaisest
   ValueError(   R*   t   sigRY   R+   t   expected(    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_identityï   s    c         C` s–   t  j d d d ƒ } t  j d d d ƒ } t t ƒ } |  j | | | ƒ | | ƒ t t ƒ } t  j d ƒ } | | | | ƒ |  j | | | ƒ d  S(   Ni    i   i
   i   (   R2   t   linspaceR   R   R'   t   empty(   R*   R   R   R+   t   ufunc2R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_no_argsÿ   s    c         C` sf   t  j d d d ƒ } t  j d d d ƒ } t d t d t ƒ t ƒ } |  j | | | ƒ | | ƒ d  S(   Ni    i   i
   i   RY   R   (   R2   Rc   R   R   R>   R   R'   (   R*   R   R   R+   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_only_kws	  s    c         ` sa   ‡  f d †  } t  d g d t ƒt ƒ } | | ƒ t  d t ƒ t ƒ } | | ƒ | | ƒ d S(   sO   
        Passing the output array as a keyword argument (issue #1867).
        c      	   ` s   t  j d d d d ƒ} t  j | ƒ } |  | | d | ƒ} ˆ  j | | ƒ ˆ  j | | | ƒ ˆ  j t ƒ  |  | | d | ƒWd  QXd  S(   Ni
   i   R)   R-   t   outt   zzz(   R2   R3   t
   zeros_likeR]   R'   R^   t	   TypeError(   R+   R   Rh   t   got(   R*   (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR,     s    s   int32(int32, int32)R   N(   R   R>   R   (   R*   R,   R+   (    (   R*   sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_vectorize_output_kwarg  s    


c         C` s`   t  d g d ƒ t ƒ } t j d d d ƒj d d ƒ } | | | ƒ } |  j | | | ƒ d  S(   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   (x,y),(x,y)->(x,y)i
   R)   R-   i   i   (   R   R   R2   R3   R4   R'   (   R*   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_guvectorize$  s
    	!c         C` sp   t  d g d ƒ t ƒ } t j d d d ƒj d d ƒ } t j | ƒ } | | | | ƒ |  j | | | ƒ d  S(   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   (x,y),(x,y),(x,y)i
   R)   R-   i   i   (   R   R   R2   R3   R4   Rj   R'   (   R*   R+   R   Rh   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_guvectorize_no_output,  s    	!c         C` s`   t  d g d ƒ t ƒ } t j d d d ƒj d d ƒ } | | | ƒ } |  j | | | ƒ d  S(   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   (x,y),(x,y)->(x,y)i
   R)   R-   i   i   (   R   R!   R2   R3   R4   R'   (   R*   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_guvectorize_objectmode5  s
    	!c         C` s`   t  d g d ƒ t ƒ } t j d d d ƒj d d ƒ } | | d ƒ } |  j | d | ƒ d	 S(
   sA   
        Test passing of scalars to object mode gufuncs.
        s   (int32[:,:], int32, int32[:,:])s   (x,y),()->(x,y)i
   R)   R-   i   i   i   N(   R   R"   R2   R3   R4   R'   (   R*   R+   R   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt"   test_guvectorize_scalar_objectmode<  s
    	!c         C` sf   t  d g d d t ƒt ƒ } t j d d d ƒj d d ƒ } |  j t ƒ  | | | ƒ Wd  QXd  S(	   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   (x,y),(x,y)->(x,y)R=   i
   R)   R-   i   i   (   R   R>   R$   R2   R3   R4   R^   R#   (   R*   R+   R   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt$   test_guvectorize_error_in_objectmodeF  s
    	!c      	   C` sç   d g d f } xT |  j  D]I } t d | | Œ t ƒ } | d k rI d  n | } |  j | j | ƒ q Wt | Œ  t ƒ } |  j | j d  ƒ |  j t ƒ  t d d | Œ t	 ƒ Wd  QX|  j t ƒ  t d d | Œ t	 ƒ Wd  QXd  S(   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   (x,y),(x,y)->(x,y)RY   RR   RZ   i   (
   R[   R   R   R\   R(   RY   R]   R^   R_   R   (   R*   t   argsRY   R+   Ra   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_guvectorize_identityM  s    c      	   C` sÀ   d g } |  j  t ƒ  } t | d ƒ t ƒ Wd  QX|  j d t | j ƒ ƒ |  j  t ƒ  } t | d ƒ t ƒ Wd  QX|  j t | j ƒ d ƒ |  j  t ƒ  } t | d ƒ t ƒ Wd  QXd  S(   Ns$   (int32[:,:], int32[:,:], int32[:,:])s   )-:s   bad token in signatures   (x,y),(x,y)->(x,z,v)s   undefined output symbols: v,zs   (x,y),(x,y),(x,y)->(	   R^   R_   R   R   R5   t   strt	   exceptiont	   NameErrorR(   (   R*   t   sigst   raises(    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   test_guvectorize_invalid_layout]  s    	N(   R   R    R\   R[   RS   RT   R
   RX   Rb   Rf   Rg   Rm   Rn   Ro   Rp   Rq   Rr   Rt   Rz   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRQ   Ø   s   			
					
	t   TestVectorizeDecorJitDisabledc           B` s   e  Z d  „  Z d „  Z RS(   c         C` s   t  j |  _ t t  _ d  S(   N(   R   RE   RF   RG   (   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRH   p  s    c         C` s   |  j  t _ d  S(   N(   RF   R   RE   (   R*   (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyRI   t  s    (   R   R    RH   RI   (    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyR{   n  s   	t   __main__(    (.   t
   __future__R    R   R   t   syst   numpyR2   t   numbaR   R   t   unittestt   numba.npyufunc.ufuncbuilderR   R   R   t   numba.npyufuncR   t   numba.npyufunc.dufuncR	   R.   t   supportR
   R   R   R   R   R   R>   R   R   R   R   R   R!   R"   t	   ExceptionR#   R$   R%   RD   RJ   RP   RQ   R{   R   t   main(    (    (    sF   lib/python2.7/site-packages/numba/tests/npyufunc/test_ufuncbuilding.pyt   <module>   s:   									N
,
–
