ó
\K]c           @   sn  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d d l m Z m Z m Z m 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 d „  Z d „  Z d „  Z  d „  Z! d „  Z" d e e f d „  ƒ  YZ# d e e f d „  ƒ  YZ$ e% d k rje j& ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   unittest_support(   t   jitt   typeoft   types(   t   compile_isolatedi   (   t   TestCaset   CompilationCachet   MemoryLeakMixint   tagc         C   s5   d } x( t  |  ƒ D] \ } } | | | 7} q W| S(   Ni    (   t	   enumerate(   t   arrt   totalt   it   v(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   array_iter   s    c         C   s9   d } x, t  |  | ƒ D] \ } } | | | 7} q W| S(   Ni    (   R
   (   R   t   idxR   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_view_iter   s    c         C   s.   x' t  |  j ƒ D] \ } } | | | <q Wd  S(   N(   R
   t   flat(   R   t   outR   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   array_flat   s    c         C   s   |  j  | S(   N(   R   (   R   t   ind(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_flat_getitem   s    c         C   s   | |  j  | <d  S(   N(   R   (   R   R   t   val(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_flat_setitem    s    c         C   s<   d } x/ t  |  j ƒ D] \ } } | | d | } q W| S(   Ni    i   (   R
   R   (   R   t   sR   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_flat_sum#   s    c         C   s   t  |  j ƒ S(   N(   t   lenR   (   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_flat_len)   s    c         C   sJ   d } x= t  j |  ƒ D], \ \ } } } | | d | d | } q W| S(   Ni    i   (   t   npt   ndenumerate(   R   R   R   t   jR   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_ndenumerate_sum,   s    "c          C   s<   d }  x/ t  j d ƒ D] } |  |  t | ƒ d 7}  q W|  S(   Ni    i   (    (   R   t   ndindexR   (   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   np_ndindex_empty2   s    c         C   sI   d } d } x6 t  j |  | ƒ D]" \ } } | | d | d } q W| S(   Ni    i   (   R   R!   (   t   xt   yR   t   nR   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   np_ndindex8   s
    c         C   s`   d } d } xM t  j |  j ƒ D]9 } x0 t | ƒ D]" \ } } | | d | d } q2 Wq W| S(   Ni    i   (   R   R!   t   shapeR
   (   R   R   R%   t   indicesR   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   np_ndindex_array?   s    c         C   s7   g  } x* t  j |  ƒ D] } | j | j ƒ  ƒ q W| S(   N(   R   t   nditert   appendt   item(   t   at   rest   u(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   np_nditer1G   s    c         C   sO   g  } xB t  j |  | f ƒ D]+ \ } } | j | j ƒ  | j ƒ  f ƒ q W| S(   N(   R   R*   R+   R,   (   R-   t   bR.   R/   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   np_nditer2M   s    "#c         C   s^   g  } xQ t  j |  | | f ƒ D]7 \ } } } | j | j ƒ  | j ƒ  | j ƒ  f ƒ q W| S(   N(   R   R*   R+   R,   (   R-   R1   t   cR.   R/   R   t   w(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt
   np_nditer3S   s    (,c         C   s7   t  |  ƒ } t  |  ƒ } t | ƒ t | ƒ t | ƒ f S(   N(   t   itert   next(   R   t   itt   it2(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt	   iter_nextY   s    c         C   sU   t  j |  ƒ } t  j | d t  j ƒ} x' t | j ƒ D] \ } } | | | <q7 W| S(   Nt   dtype(   R   t   aranget
   zeros_liket   intpR
   R   (   t   sizeR#   R.   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   array_flat_premature_freeh   s
    c         C   sU   t  j |  ƒ } t  j | d t  j ƒ} x' t  j | ƒ D] \ } } | | | <q7 W| S(   NR;   (   R   R<   R=   R>   R   (   R?   R#   R.   R   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt    array_ndenumerate_premature_freeo   s
    t   TestArrayIteratorsc           B   s  e  Z d  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z	 d „  Z
 e d ƒ d	 „  ƒ Z d
 „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z e d ƒ d „  ƒ Z RS(   s1   
    Test array.flat, np.ndenumerate(), etc.
    c         C   s#   t  t |  ƒ j ƒ  t ƒ  |  _ d  S(   N(   t   superRB   t   setUpR   t   ccache(   t   self(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyRD   |   s    c         C   sM   t  } t | t | ƒ g ƒ } | j } | | ƒ } |  j | | ƒ | ƒ d  S(   N(   R   R   R   t   entry_pointt   assertPreciseEqual(   RF   R   t   pyfunct   crest   cfunct   expected(    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_iter€   s
    	c         C   s\   t  } t | t | ƒ t | ƒ g ƒ } | j } | | | ƒ } |  j | | | ƒ | ƒ d  S(   N(   R   R   R   RG   RH   (   RF   R   t   indexRI   RJ   RK   RL   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_view_iter‡   s
    !	c         C   s”   t  j | j d | j ƒ} | j ƒ  } | d  k rB t | ƒ } n  t t | t | ƒ g ƒ } | j	 } t | | ƒ | | | ƒ |  j
 | | ƒ d  S(   NR;   (   R   t   zerosR?   R;   t   copyt   NoneR   R   R   RG   RH   (   RF   R   t   arrtyR   t   nb_outRJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_flatŽ   s    	c         C   s;   t  | | g ƒ } | j } |  j | | ƒ | | ƒ ƒ d  S(   N(   R   RG   RH   (   RF   R   RS   t   funcRJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_unaryœ   s    	c         C   s   |  j  | | t ƒ d  S(   N(   RW   R   (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_flat_sum¡   s    c         C   s   |  j  | | t ƒ d  S(   N(   RW   R    (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_array_ndenumerate_sum¤   s    t	   importantc         C   sŽ   t  j d ƒ } |  j | ƒ | d  d  d … } |  j | j j ƒ |  j | j j ƒ |  j | ƒ t  j d d d d g ƒ } |  j | ƒ d  S(   Ni   i   i   i    (   R   R<   RM   t   assertFalset   flagst   c_contiguoust   f_contiguoust   bool_(   RF   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_iter§   s    c         C   s–   t  j d ƒ j d ƒ } |  j | d ƒ |  j | j d ƒ | d  d  d … } |  j | d ƒ t  j d d d d g ƒ j d ƒ } |  j | d ƒ d  S(	   Ni   i   i   i   i   i    (   i   i   (   i   i   (   R   R<   t   reshapeRO   t   TR_   (   RF   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_view_iter³   s    $c         C   s`  t  j d ƒ j d d d ƒ } t | ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j j	 ƒ |  j
 | ƒ | j ƒ  } |  j | j j	 ƒ |  j | j j ƒ |  j t | ƒ j d ƒ |  j
 | ƒ | d  d  d … } |  j | j j	 ƒ |  j | j j ƒ |  j t | ƒ j d ƒ |  j
 | ƒ t  j d d	 d	 d g d ƒ j d
 ƒ } |  j
 | ƒ d  S(   Ni   i   i   i   t   Ct   Ft   Ai   i    (   i   i   i   (   R   R<   Ra   R   t   assertEqualt   ndimt   layoutt
   assertTrueR\   R]   RU   t	   transposeR[   R^   R_   (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_3d½   s$    (c         C   sB  t  j d d t  j ƒ} | j d d ƒ } t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ | j d d ƒ } t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ d  S(   Ni    R;   i   Ri   Rd   Re   Rf   (   R   RP   t   int32Ra   R   t   ArrayRX   (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_empty×   s    c            s‰  t  ‰  ‡  ‡ f d †  } t j d ƒ j d d d ƒ } x$ t | j ƒ D] } | | | ƒ qF W| j } x$ t | j ƒ D] } | | | ƒ qv W| d  d  d … } x$ t | j ƒ D] } | | | ƒ q° Wt j d g ƒ j d	 ƒ } x$ t | j ƒ D] } | | | ƒ qò Wt j d d d d g ƒ } x$ t | j ƒ D] } | | | ƒ q4W| d  d  d … } x$ t | j ƒ D] } | | | ƒ qnWd  S(
   Nc            sV   ˆ j  j ˆ  t |  ƒ t | ƒ f ƒ } ˆ  |  | ƒ } ˆ j | j |  | ƒ | ƒ d  S(   N(   RE   t   compileR   Rg   RG   (   R   R   t   crRL   (   RI   RF   (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   checkí   s    'i   i   i   i   i*   i   i    (    (	   R   R   R<   Ra   t   rangeR?   Rb   t   arrayR_   (   RF   Rr   R   R   (    (   RI   RF   s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_getitemê   s(    	c            s‰  t  ‰  ‡  ‡ f d †  } t j d ƒ j d d d ƒ } x$ t | j ƒ D] } | | | ƒ qF W| j } x$ t | j ƒ D] } | | | ƒ qv W| d  d  d … } x$ t | j ƒ D] } | | | ƒ q° Wt j d g ƒ j d	 ƒ } x$ t | j ƒ D] } | | | ƒ qò Wt j d d d d g ƒ } x$ t | j ƒ D] } | | | ƒ q4W| d  d  d … } x$ t | j ƒ D] } | | | ƒ qnWd  S(
   Nc            sˆ   t  |  ƒ } ˆ j j ˆ  | t  | ƒ | j f ƒ } t j |  ƒ } t j |  ƒ } ˆ  | | d ƒ | j | | d ƒ ˆ j | | ƒ d  S(   Ni{   (   R   RE   Rp   R;   R   RQ   RG   RH   (   R   R   RS   Rq   RL   t   got(   RI   RF   (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyRr   	  s    'i   i   i   i   i*   i   i    (    (	   R   R   R<   Ra   Rs   R?   Rb   Rt   R_   (   RF   Rr   R   R   (    (   RI   RF   s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_setitem  s(    
	c            s™   t  ‰  ‡  ‡ f d †  } t j d ƒ j d d d ƒ } | | ƒ | j } | | ƒ | d  d  d … } | | ƒ t j d g ƒ j d ƒ } | | ƒ d  S(   Nc            sG   ˆ j  j ˆ  t |  ƒ f ƒ } ˆ  |  ƒ } ˆ j | j |  ƒ | ƒ d  S(   N(   RE   Rp   R   RH   RG   (   R   Rq   RL   (   RI   RF   (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyRr   *  s    i   i   i   i   i*   (    (   R   R   R<   Ra   Rb   Rt   (   RF   Rr   R   (    (   RI   RF   s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_len'  s    
	

c         C   s]   t  t t j g ƒ } | j } t d ƒ } | d ƒ } |  j | j ƒ  ƒ |  j | | ƒ d  S(   Ni   (   R   R@   R   R>   RG   Rj   t   sumRH   (   RF   RJ   RK   t   expectRv   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_flat_premature_free8  s    	c         C   sw  t  j d ƒ j d d ƒ } t | ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j j	 ƒ |  j
 | | ƒ | j ƒ  } |  j | j j	 ƒ |  j | j j ƒ t | ƒ } |  j | j d ƒ |  j
 | | ƒ | d  d  d … } |  j | j j	 ƒ |  j | j j ƒ t | ƒ } |  j | j d ƒ |  j
 | | ƒ t  j d d	 d	 d g ƒ j d
 ƒ } |  j
 | t | ƒ ƒ d  S(   Ni   i   i   i   Rd   Re   Rf   i   i    (   i   i   (   R   R<   Ra   R   Rg   Rh   Ri   Rj   R\   R]   RY   Rk   R[   R^   R_   (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_ndenumerate_2d@  s(    $c         C   sB  t  j d d t  j ƒ} | j d d ƒ } t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ | j d d ƒ } t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ t j t j d d d ƒ} |  j | | ƒ d  S(   Ni    R;   i   Ri   Rd   Re   Rf   (   R   RP   Rm   Ra   R   Rn   RY   RX   (   RF   R   RS   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_array_ndenumerate_empty[  s    c         C   s]   t  t t j g ƒ } | j } t d ƒ } | d ƒ } |  j | j ƒ  ƒ |  j | | ƒ d  S(   Ni   (   R   RA   R   R>   RG   Rj   Ry   RH   (   RF   RJ   RK   Rz   Rv   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt%   test_array_ndenumerate_premature_freel  s    	c         C   s¶   t  } t | t j t j g ƒ } | j } |  j | d d ƒ | d d ƒ ƒ |  j | d d ƒ | d d ƒ ƒ |  j | d d ƒ | d d ƒ ƒ |  j | d d ƒ | d d ƒ ƒ d  S(   Ni   i   i    (   R&   R   R   Rm   RG   RH   (   RF   RV   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_np_ndindext  s    	"""c         C   s   t  } t j d d t j ƒd } |  j | t | ƒ | ƒ | j d ƒ } |  j | t | ƒ | ƒ | j d ƒ } |  j | t | ƒ | ƒ d  S(	   Ni   R;   i
   i   i   i   (   i   i   (   i   i   i   (   R)   R   R<   Rm   RW   R   Ra   (   RF   RV   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_np_ndindex_array}  s    c         C   s8   t  } t | g  ƒ } | j } |  j | ƒ  | ƒ  ƒ d  S(   N(   R"   R   RG   RH   (   RF   RV   RJ   RK   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_np_ndindex_empty‡  s    	c         C   s?   t  } t j d d t j ƒd } |  j | t | ƒ | ƒ d  S(   Ni   R;   i
   (   R:   R   R<   Rm   RW   R   (   RF   RV   R   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_iter_next  s    N(   t   __name__t
   __module__t   __doc__RD   RM   RO   RR   RU   RW   RX   RY   R	   R`   Rc   Rl   Ro   Ru   Rw   Rx   R{   R|   R}   R~   R   R€   R   R‚   (    (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyRB   w   s.   							
			!						
	t
   TestNdIterc           B   sY   e  Z d  Z d „  Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z	 d „  Z
 RS(	   s   
    Test np.nditer()
    c         c   s¶   t  j d ƒ Vt  j d d t  j ƒVt  j d ƒ j t  j ƒ Vt  j d ƒ d  d  d … Vt  j d ƒ j d ƒ } | V| j d	 d
 ƒ Vt  j d ƒ j d ƒ d  d  d … } | Vd  S(   Nid   if   R;   i   i   i   i   i   t   orderRe   i   i   (   i   i   (   i   i   (	   R   t   float32Rt   t   int16R<   t   astypet	   complex64Ra   RQ   (   RF   R-   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   inputsš  s    %c         c   sg   t  j d ƒ j t  j ƒ Vt  j d ƒ d  d  d … Vt  j d ƒ j d ƒ } | V| j d d ƒ Vd  S(	   Ni   i   i   i   i   R‡   Re   (   i   i   (   R   R<   RŠ   R‹   Ra   RQ   (   RF   R-   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   basic_inputs®  s
    c         C   s)   |  j  t | ƒ t | ƒ | | f ƒ d  S(   N(   Rg   t   set(   RF   Rv   RL   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_resultµ  s    c         C   s^   t  } t d t ƒ | ƒ } x< |  j ƒ  D]. } | | ƒ } | | ƒ } |  j | | ƒ q( Wd  S(   Nt   nopython(   R0   R   t   TrueRŒ   R   (   RF   RI   RK   R-   RL   Rv   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_nditer1¸  s    RZ   c         C   s|   t  } t d t ƒ | ƒ } xZ t j |  j ƒ  |  j ƒ  ƒ D]: \ } } | | | ƒ } | | | ƒ } |  j | | ƒ q: Wd  S(   NR   (   R2   R   R‘   t	   itertoolst   productRŒ   R   (   RF   RI   RK   R-   R1   RL   Rv   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_nditer2À  s    +c   	      C   sŽ   t  } t d t ƒ | ƒ } |  j } xc t j | ƒ  | ƒ  | ƒ  ƒ D]C \ } } } | | | | ƒ } | | | | ƒ } |  j | | ƒ qC Wd  S(   NR   (   R5   R   R‘   R   R“   R”   R   (	   RF   RI   RK   RŒ   R-   R1   R3   RL   Rv   (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_nditer3É  s    	.c            sŽ   t  } t d t ƒ | ƒ ‰  ˆ j ƒ  ‡  ‡ f d †  } | t j d ƒ t j d ƒ ƒ t j d ƒ j d ƒ } t j d ƒ } | | | ƒ d  S(   NR   c            sB   ˆ j  t ƒ  } ˆ  |  | ƒ Wd  QXˆ j d t | j ƒ ƒ d  S(   Ns(   operands could not be broadcast together(   t   assertRaisest
   ValueErrort   assertInt   strt	   exception(   R-   R1   t   raises(   RK   RF   (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   check_incompatibleÚ  s    	i   i   i   i   (   i   i   (   R2   R   R‘   t   disable_leak_checkR   R<   Ra   (   RF   RI   R   R-   R1   (    (   RK   RF   s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   test_errorsÓ  s    
(   Rƒ   R„   R…   RŒ   R   R   R’   R	   R•   R–   RŸ   (    (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyR†   •  s   						
t   __main__('   t
   __future__R    R“   t   numpyR   t   numbaR   t   unittestR   R   R   t   numba.compilerR   t   supportR   R   R   R	   R   R   R   R   R   R   R   R    R"   R&   R)   R0   R2   R5   R:   R@   RA   RB   R†   Rƒ   t   main(    (    (    s?   lib/python2.7/site-packages/numba/tests/test_array_iterators.pyt   <module>   s8   "																	ÿ Q