ó
\K]c           @  s  d  d l  m Z d  d l m Z d  d l m Z d  d l j Z d  d l	 Z	 d  d l
 Z d  d l m Z d  d l m Z m Z d  d l m Z m Z m Z m Z m Z d  d l m Z d	 d
 l m Z m Z m Z m Z e ƒ  Z e j  d ƒ e ƒ  Z! e! j  d ƒ 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 „  Z0 d „  Z1 d „  Z2 d „  Z3 d „  Z4 d  „  Z5 d! „  Z6 e7 d" „ Z8 d# „  Z9 d$ „  Z: d% e e f d& „  ƒ  YZ; e< d' k re j= ƒ  n  d S((   iÿÿÿÿ(   t   print_function(   t   partial(   t   permutationsN(   t   version(   t   compile_isolatedt   Flags(   t   jitt   typest
   from_dtypet   errorst   typeof(   t   TypingErrori   (   t   TestCaset   MemoryLeakMixint   CompilationCachet   tagt   enable_pyobjectt   nrtc           s   ‡  f d †  } | S(   sP  Decorator for generic check functions.
        Iterates over 'pyfuncs_to_use', calling 'func' with the iterated
        item as first argument. Example:

        @from_generic(numpy_array_reshape, array_reshape)
        def check_only_shape(pyfunc, arr, shape, expected_shape):
            # Only check Numba result to avoid Numpy bugs
            self.memory_leak_setup()
            got = generic_run(pyfunc, arr, shape)
            self.assertEqual(got.shape, expected_shape)
            self.assertEqual(got.size, arr.size)
            del got
            self.memory_leak_teardown()
    c           s   ‡  ‡ f d †  } | S(   Nc            s   ‡  ‡ ‡ f d †  ˆ Dƒ S(   Nc         3  s!   |  ] } ˆ | ˆ  ˆ Ž Vq d  S(   N(    (   t   .0t   pyfunc(   t   argst   funct   kwargs(    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pys	   <genexpr>(   s    (    (   R   R   (   R   t   pyfuncs_to_use(   R   R   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   result'   s    (    (   R   R   (   R   (   R   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt	   decorator&   s    (    (   R   R   (    (   R   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   from_generic   s    c         C  s   |  j  | ƒ S(   N(   t   reshape(   t   arrt   newshape(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   array_reshape-   s    c         C  s   t  j |  | ƒ S(   N(   t   npR   (   R   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_array_reshape1   s    c         C  s
   |  j  ƒ  S(   N(   t   flatten(   t   a(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   flatten_array5   s    c         C  s
   |  j  ƒ  S(   N(   t   ravel(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   ravel_array9   s    c         C  s   |  j  ƒ  j S(   N(   R$   t   size(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   ravel_array_size=   s    c         C  s   t  j |  ƒ S(   N(   R   R$   (   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_ravel_arrayA   s    c         C  s
   |  j  ƒ  S(   N(   t	   transpose(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   transpose_arrayE   s    c         C  s   t  j |  ƒ S(   N(   R   R)   (   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_transpose_arrayI   s    c         C  s   t  j |  d | ƒS(   Nt   axes(   R   R)   (   R   R,   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt    numpy_transpose_array_axes_kwargL   s    c         C  s   |  j  | ƒ S(   N(   R)   (   R   R,   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   array_transpose_axesO   s    c         C  s
   |  j  ƒ  S(   N(   t   squeeze(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   squeeze_arrayR   s    c         C  s   t  j |  | ƒ S(   N(   R   t   expand_dims(   R"   t   axis(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyR1   V   s    c          G  s   t  j |  Œ  S(   N(   R   t
   atleast_1d(   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyR3   Z   s    c          G  s   t  j |  Œ  S(   N(   R   t
   atleast_2d(   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyR4   ^   s    c          G  s   t  j |  Œ  S(   N(   R   t
   atleast_3d(   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyR5   b   s    c         C  s8   |  j  d d f |  j  d } t j j j |  d | ƒS(   Ni    i   i   t   strides(   R6   R   t   libt   stride_trickst
   as_strided(   R"   R6   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   as_strided1f   s    c         C  sb   d } |  j  d  |  j  d | d | f } |  j |  j d f } t j j j |  d | d | ƒS(   Ni   iÿÿÿÿi   t   shapeR6   (   R;   R6   R   R7   R8   R9   (   R"   t   windowR;   R6   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   as_strided2l   s    &c         C  s   |  t  j d  d  … f S(   N(   R   t   newaxis(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt	   add_axis2t   s    c         C  s)   |  j  f } |  j } d | | | f <d  S(   Ng      ð?(   t   xt   y(   R   t   arr2dR@   RA   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt	   bad_indexx   s    	c         C  s   |  d S(   Ni   g       @(   i   g       @(    (   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   bad_float_index   s    c         C  s   t  j |  | | ƒ S(   N(   R   t   fill_diagonal(   R   t   valt   wrap(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_fill_diagonal…   s    c         C  s   t  j |  ƒ S(   N(   R   R;   (   R   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_shape‰   s    c         C  s   t  j |  ƒ S(   N(   R   t   flatnonzero(   R"   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   numpy_flatnonzero   s    t   TestArrayManipulationc           B  sˆ  e  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 d „  Z e d d „ Z d „  Z e d „ Z e d „ Z d „  Z d „  Z e d „ Z d „  Z e d „ Z d „  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  e! d „  ƒ Z" e# j$ e% d& k d" ƒ d# „  ƒ Z& e# j$ e% d' k  d$ ƒ d% „  ƒ Z' RS((   s4   
    Check shape-changing operations on arrays.
    c         C  s#   t  t |  ƒ j ƒ  t ƒ  |  _ d  S(   N(   t   superRL   t   setUpR   t   ccache(   t   self(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRN   –   s    t	   importantc      	     sõ  t  t g } d „  ‰ t | ƒ ‡ ‡ f d †  ƒ ‰  t | ƒ ‡ ‡ f d †  ƒ ‰ t | ƒ ‡ ‡ f d †  ƒ } t | ƒ ‡ ‡ f d †  ƒ ‰ t | ƒ ‡ ‡ f d †  ƒ } t j d ƒ } ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ t j d ƒ j d ƒ } ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ ˆ  | d ƒ ˆ | d  ƒ ˆ | d! ƒ ˆ | d" ƒ t j d ƒ j d# ƒ } ˆ  | d$ ƒ ˆ  | d% ƒ ˆ  | d& ƒ ˆ  | d' ƒ t j d ƒ j d( ƒ j } ˆ  | d) ƒ ˆ  | d* ƒ | | d+ ƒ | | d, ƒ | | d- ƒ t j d ƒ j d d ƒ } ˆ  | d ƒ ˆ  | d. ƒ ˆ  | d/ ƒ ˆ  | d0 ƒ ˆ  | d1 ƒ ˆ | d2 ƒ | | d3 ƒ | | d4 ƒ ‡  ‡ ‡ f d †  } t j g  ƒ } | | ƒ | | j d5 ƒ ƒ ˆ j ƒ  d  S(6   Nc         S  s1   t  |  t | ƒ t | ƒ f ƒ } | j | | ƒ S(   N(   R   R
   t   entry_point(   R   R   R;   t   cres(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   generic_runž   s    !c           sL   |  | | ƒ } ˆ j  ƒ  ˆ  |  | | ƒ } ˆ j | | ƒ ~ ˆ j ƒ  d  S(   N(   t   memory_leak_setupt   assertPreciseEqualt   memory_leak_teardown(   R   R   R;   t   expectedt   got(   RT   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check¢   s    
c           sV   ˆ j  ƒ  ˆ  |  | | ƒ } ˆ j | j | ƒ ˆ j | j | j ƒ ~ ˆ j ƒ  d  S(   N(   RU   t   assertEqualR;   R&   RW   (   R   R   R;   t   expected_shapeRY   (   RT   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_only_shape«   s    
c           sE   ˆ j  t ƒ  } ˆ  |  | | ƒ Wd  QXˆ j t | j ƒ d ƒ d  S(   Ns   incompatible shape for array(   t   assertRaisest   NotImplementedErrorR[   t   strt	   exception(   R   R   R;   t   raises(   RT   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_shapeµ   s    c           sE   ˆ j  t ƒ  } ˆ  |  | | ƒ Wd  QXˆ j t | j ƒ d ƒ d  S(   Ns)   total size of new array must be unchanged(   R^   t
   ValueErrorR[   R`   Ra   (   R   R   R;   Rb   (   RT   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_size¼   s    c           sE   ˆ j  t ƒ  } ˆ  |  | | ƒ Wd  QXˆ j t | j ƒ d ƒ d  S(   Ns   multiple negative shape values(   R^   Rd   R[   R`   Ra   (   R   R   R;   Rb   (   RT   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_multiple_negativeÃ   s    i   i   i   i   i   i   i   i   i   i   iÿÿÿÿiþÿÿÿc           s¯   ˆ  |  d ƒ ˆ  |  d ƒ ˆ  |  d ƒ ˆ  |  d	 ƒ ˆ |  d d
 ƒ ˆ |  d d ƒ ˆ |  d d ƒ ˆ |  d d ƒ ˆ |  d d ƒ ˆ |  d ƒ ˆ |  d ƒ ˆ |  d ƒ d  S(   Ni    i   i   i7   iÿÿÿÿi   (   i    (   i   i    i   (   i    i7   i   i    i   (   i    (   iÿÿÿÿ(   i    (   i    iÿÿÿÿ(   i    i    (   i   iÿÿÿÿ(   i   i    (   iÿÿÿÿi    i   (   i    i    i   (    (   i   i   (    (   R   (   RZ   Re   R]   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_emptyõ   s    i    (   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   i   i   i   (   i   i   i   (   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   i   i   i   (    (   i   (   i   i   (   i   i   i   i   i   i   (   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   i   i   (   i   i   i   (   i   i   (   i   i   (   iÿÿÿÿ(   iÿÿÿÿi   (   i   iÿÿÿÿi   (   i   i   iÿÿÿÿ(   iÿÿÿÿi   (   iÿÿÿÿiþÿÿÿi   i   (   i   i   iÿÿÿÿiÿÿÿÿ(   i   i   i    (	   R   R    R   R   t   arangeR   t   Tt   arrayt   disable_leak_check(   RP   R   Rc   Rf   R   Rg   (    (   RZ   Re   R]   RT   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_array_reshapeš   s^    		
	
c      	     sY  t  t g } ‡ f d †  ‰  t | ƒ ‡  ‡ f d †  ƒ } t | ƒ ‡  ‡ f d †  ƒ } t | ƒ ‡  ‡ f d †  ƒ } t | ƒ ‡  ‡ f d †  ƒ } t j d ƒ t j d ƒ j d d ƒ t j d ƒ j d	 d
 d ƒ t j d ƒ j d d	 d
 d ƒ t j d ƒ j d d d	 ƒ d  d  d
 … d  d  d	 … d  d  … f g } x¦ t t | ƒ ƒ D]’ } | | | d  ƒ xx t	 t
 t | | j ƒ ƒ ƒ D]W } t | ƒ }	 t
 g  | D] }
 |
 |	 ^ qœƒ } | | | | ƒ | | | | ƒ q€WqIWˆ j ƒ  | | d d ƒ | | d d ƒ | | d d ƒ | | d	 d ƒ | | d d ƒ | | d	 d ƒ | | d
 d ƒ | | d d ƒ | | d d ƒ | | d d  ƒ | | d d! ƒ | | d d" ƒ | | d	 d# ƒ | | d	 d$ ƒ | | d
 d% ƒ | | d
 d& ƒ ˆ j t ƒ 2 } t d t ƒ t ƒ t j d d g ƒ f ƒ Wd  QXˆ j d t | j ƒ ƒ d  S('   Nc           s7   ˆ  j  j |  t | ƒ t | ƒ f ƒ } | j | | ƒ S(   N(   RO   t   compileR
   RR   (   R   R   R,   RS   (   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   run  s    'c           sm   |  | | ƒ } ˆ  |  | | ƒ } ˆ j  | | ƒ ˆ j | j j | j j ƒ ˆ j | j j | j j ƒ d  S(   N(   RV   R[   t   flagst   f_contiguoust   c_contiguous(   R   R   R,   RX   RY   (   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ     s    c           sE   ˆ j  t ƒ  } ˆ  |  | | ƒ Wd  QXˆ j t | j ƒ d ƒ d  S(   Ns   repeated axis in transpose(   R^   Rd   R[   R`   Ra   (   R   R   R,   Rb   (   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_axis_repeated  s    c           sE   ˆ j  t ƒ  } ˆ  |  | | ƒ Wd  QXˆ j t | j ƒ d ƒ d  S(   Ns2   axis is out of bounds for array of given dimension(   R^   Rd   R[   R`   Ra   (   R   R   R,   Rb   (   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_axis_oob$  s    c           s0   ˆ j  t t f ƒ  ˆ  |  | | ƒ Wd  QXd  S(   N(   R^   t	   TypeErrorR   (   R   R   R,   (   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_err_invalid_args+  s    i   i   i   i   i   i   i@   i   t   foog333333@g333333ó?i   i    iþÿÿÿiýÿÿÿiüÿÿÿiûÿÿÿt   nopythons#   np.transpose does not accept tuples(   Rv   (   g333333ó?i   (   i    i    (   i   i    i    (   i   i   i   i   (   i   (   iþÿÿÿ(   i    i   (   iýÿÿÿi   (   i    iýÿÿÿ(   i   i   i   (   iüÿÿÿi   i   (   i   i   i   i   (   i   i   i   iûÿÿÿ(   R-   R.   R   R   Rh   R   t   ranget   lent   NoneR   t   tuplet   ndimRk   R^   R   R   t   TrueR+   Rj   t   assertInR`   Ra   (   RP   R   RZ   Rr   Rs   Ru   t   arrst   iR,   R|   R@   t   neg_axest   e(    (   Rn   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_array_transpose_axes  sP    	
F&#
1	c           s¸   t  ‰ ‡ ‡ f d †  ‰ ‡ ‡ ‡ f d †  ‰  ‡  f d †  } t j d ƒ } | | ƒ t j d ƒ j d ƒ } | | ƒ | | j ƒ | | d  d  d	 … ƒ t j d
 ƒ } | | ƒ d  S(   Nc           s7   ˆ j  j ˆ  t |  ƒ t | ƒ f ƒ } | j |  | ƒ S(   N(   RO   Rm   R
   RR   (   R   R2   RS   (   R   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRn   _  s    'c           sI   ˆ  |  | ƒ } ˆ j  ƒ  ˆ |  | ƒ } ˆ j | | ƒ ~ ˆ j ƒ  d  S(   N(   RU   RV   RW   (   R   R2   RX   RY   (   R   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ   c  s    
c           s:   x3 t  |  j d |  j d ƒ D] } ˆ  |  | ƒ q Wd  S(   Ni   (   Rx   R|   (   R   R2   (   RZ   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_all_axesk  s    %i   i   i   i   i   iÿÿÿÿi*   (   i   i   i   (   R1   R   Rh   R   Ri   Rj   (   RP   R„   R   (    (   RZ   R   Rn   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_expand_dims[  s    

c           s•  ‡ f d †  ‰ ‡  ‡ ‡ f d †  } ‡  ‡ ‡ ‡ f d †  } t  j d ƒ } t  j d ƒ } | | ƒ | | | ƒ t  j d ƒ } t  j d ƒ d } | d  d  d	 … }	 | | ƒ | | | |	 ƒ t  j d ƒ j d ƒ }
 |
 j } |
 d  d  d	 … } | |
 ƒ | |
 | | ƒ t  j d ƒ j d ƒ } | j } | d  d  d	 … } | | ƒ | | | | ƒ t  j d ƒ j d ƒ } | | ƒ | | | | | ƒ d  S(   Nc           s0   ˆ  j  |  | ƒ ˆ  j |  j ƒ  | j ƒ  ƒ d  S(   N(   t   assertStridesEqualRV   R!   (   RY   RX   (   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_result|  s    c           s   ˆ ˆ  |  ƒ ˆ |  ƒ ƒ d  S(   N(    (   t   arg(   t   cfuncR‡   R   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_singleƒ  s    c            se   ˆ |  Œ  } ˆ  |  Œ  } ˆ j  t | ƒ t | ƒ ƒ x* t | | ƒ D] \ } } ˆ | | ƒ qD Wd  S(   N(   R[   Ry   t   zip(   R   t   expected_tuplet	   got_tupleRY   RX   (   R‰   R‡   R   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_tuple†  s
    i*   y              @i   i   y              ð?iÿÿÿÿi   i   i   i   i   (   i   i   (   i   i   i   (   i   i   i   i   (   R   Rj   Rh   R   Ri   (   RP   R   R‰   RŠ   RŽ   t   a1t   a2t   b1t   b2t   b3t   c1t   c2t   c3t   d1t   d2t   d3R‚   (    (   R‰   R‡   R   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_atleast_nd{  s2    

	
	

c         C  s/   t  } t d t ƒ | ƒ } |  j | | ƒ d  S(   NRw   (   R3   R   R}   Rš   (   RP   R   R‰   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_atleast_1dª  s    c         C  s/   t  } t d t ƒ | ƒ } |  j | | ƒ d  S(   NRw   (   R4   R   R}   Rš   (   RP   R   R‰   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_atleast_2d¯  s    c         C  s/   t  } t d t ƒ | ƒ } |  j | | ƒ d  S(   NRw   (   R5   R   R}   Rš   (   RP   R   R‰   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_atleast_3d´  s    c           sj   ‡  ‡ f d †  ‰ ‡  ‡ ‡ f d †  } t  j d ƒ } | | ƒ | | j d ƒ ƒ | | j d ƒ ƒ d  S(	   Nc           s+   ˆ j  j ˆ  t |  ƒ f ƒ } | j |  ƒ S(   N(   RO   Rm   R
   RR   (   R   RS   (   R   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRn   º  s    c           s,   ˆ  |  ƒ } ˆ |  ƒ } ˆ j  | | ƒ d  S(   N(   RV   (   R   RX   RY   (   R   Rn   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ   ½  s    i   i   i   i   (   i   i   (   i   i   i   (   R   Rh   R   (   RP   R   RZ   R   (    (   R   Rn   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   check_as_strided¹  s    
c         C  s   |  j  t ƒ |  j  t ƒ d  S(   N(   Rž   R:   R=   (   RP   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_as_stridedÇ  s    t   Cc   
      C  sÉ   t  j d ƒ j d d ƒ } | d k r3 | j } n  t } t | ƒ } | d k rf | j d d ƒ } n  |  j | j | ƒ t	 | | f d | ƒ} | j
 } | | ƒ } | | ƒ }	 t  j j | |	 ƒ d  S(   Ni	   i   t   Ft   At   layoutRo   (   R   Rh   R   Ri   R#   R
   t   copyR[   R£   R   RR   t   testingt   assert_equal(
   RP   Ro   R£   R"   R   t
   arraytype1t   crR‰   RX   RY   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_flatten_arrayË  s    	c         C  s@   |  j  d t ƒ |  j  d t d d ƒ |  j  d t d d ƒ d  S(   NRo   R£   R¡   R¢   (   R©   t   no_pyobj_flags(   RP   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_flatten_array_npmÞ  s    c           sz  ‡ ‡ f d †  } t  | t ƒ ‰ t  | t ƒ ‰  ‡  ‡ f d †  } | t j d ƒ j d d ƒ d d ƒ| t j d ƒ j d d d d ƒd d ƒ| t j d	 ƒ j d d d
 ƒ d  d  … d  d  … d f d d ƒ| t j d	 ƒ j d
 d d ƒ d d ƒ| t j d	 ƒ j d
 d d d d ƒd d ƒ| t j d ƒ j d
 d d d
 ƒ d  d  … d  d  … d  d  … d f d d ƒd  S(   Nc   
        sÅ   t  | ƒ } ˆ j | j | ƒ t |  | f d ˆ  ƒ} | j } |  | ƒ } | | ƒ } t j j | | ƒ | j j	 | j j	 k } | j j	 | j j	 k }	 ˆ j | | d k ƒ ˆ j | |	 ƒ d  S(   NRo   R    (
   R
   R[   R£   R   RR   R   R¥   R¦   t   ctypest   data(
   R   R"   t   assume_layoutR§   R¨   R‰   RX   RY   t	   py_copiedt	   nb_copied(   Ro   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   generic_checkä  s    	c            s   ˆ |  | Ž  ˆ  |  | Ž  d  S(   N(    (   R   R   (   t   check_functiont   check_method(    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ   ø  s    i	   i   R®   R    t   orderR¡   i   i   i    R¢   i$   (   R   R%   R(   R   Rh   R   (   RP   Ro   R±   RZ   (    (   R²   R³   Ro   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_ravel_arrayã  s    %+A(.c   	      C  s}   t  j d ƒ j d d ƒ } t } t | ƒ } t | | f d | ƒ} | j } | | ƒ } | | ƒ } t  j j | | ƒ d  S(   Ni	   i   Ro   (	   R   Rh   R   R'   R
   R   RR   R¥   R¦   (	   RP   Ro   R"   R   R§   R¨   R‰   RX   RY   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_ravel_array_size  s    	c         C  s   |  j  d t ƒ d  S(   NRo   (   Rµ   Rª   (   RP   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_ravel_array_npm  s    c         C  s   |  j  d t ƒ d  S(   NRo   (   R¶   Rª   (   RP   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_ravel_array_size_npm  s    c           s,   t  t t g ƒ ‡  f d †  ƒ } | ƒ  d  S(   Nc           sw   t  j d ƒ j d d ƒ } t | ƒ } t |  | f d ˆ  ƒ} | j } |  | ƒ } | | ƒ } t  j j | | ƒ d  S(   Ni	   i   Ro   (   R   Rh   R   R
   R   RR   R¥   R¦   (   R   R"   R§   R¨   R‰   RX   RY   (   Ro   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ     s    	(   R   R*   R+   (   RP   Ro   RZ   (    (   Ro   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_transpose_array  s    !c         C  s   |  j  d t ƒ d  S(   NRo   (   R¹   Rª   (   RP   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_transpose_array_npm'  s    c   	      C  s†   t  j d	 ƒ j d d d d d ƒ } t } t | ƒ } t | | f d | ƒ} | j } | | ƒ } | | ƒ } t  j j | | ƒ d  S(
   Ni   i   i   i   Ro   i   i   i   i   (	   R   Rh   R   R0   R
   R   RR   R¥   R¦   (	   RP   Ro   R"   R   R§   R¨   R‰   RX   RY   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_squeeze_array*  s    $	c         C  sH   |  j  t j ƒ  } |  j d t ƒ Wd  QX|  j d t | j ƒ ƒ d  S(   NRo   R/   (   R^   R	   R   R»   Rª   R~   R`   Ra   (   RP   Rb   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_squeeze_array_npm6  s    c   	      C  s}   t  j d ƒ j d d ƒ } t } t | ƒ } t | | f d | ƒ} | j } | | ƒ } | | ƒ } t  j j | | ƒ d  S(   Ni	   i   Ro   (	   R   Rh   R   R?   R
   R   RR   R¥   R¦   (	   RP   Ro   R"   R   R§   R¨   R‰   RX   RY   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_add_axis2<  s    	c         C  sB   |  j  ƒ   } |  j d t ƒ Wd  QX|  j d t | j ƒ ƒ d  S(   NRo   s$   unsupported array index type none in(   t   assertTypingErrorR½   Rª   R~   R`   Ra   (   RP   Rb   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_add_axis2_npmH  s    	c      	   C  s   |  j  ƒ  e } t t j d t j f d t j f g ƒ ƒ } t j t j d d ƒ } t t | | f d t	 ƒWd  QX|  j
 d t | j ƒ ƒ d  S(   NR@   RA   i   R    Ro   s   unsupported array index type(   R¾   R   R   t   dtypet   int32R   t   ArrayR   RC   Rª   R~   R`   Ra   (   RP   Rb   R§   t
   arraytype2(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_bad_index_npmN  s    c      
   C  sT   |  j  ƒ  ) } t t t j t j d d ƒ f ƒ Wd  QX|  j d t | j ƒ ƒ d  S(   Ni   R    s$   unsupported array index type float64(	   R¾   R   RD   R   RÂ   t   float64R~   R`   Ra   (   RP   Rb   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_bad_float_index_npmW  s
    "	c           s8  t  ‰ t d t ƒ ˆ ƒ ‰ d „  ‰  d „  } ‡  f d †  } ‡  f d †  } ‡ ‡ ‡ f d †  } x5 | d ƒ D]' } x | ƒ  D] } | | | ƒ q} Wqm Wx5 | d ƒ D]' } x | ƒ  D] } | | | ƒ qµ Wq¥ Wt j t g d ƒ j d d ƒ } | | t ƒ | | t t t g ƒ | | t j t t t g ƒ ƒ d  S(	   NRw   c         s  s^   |  |  f Vd |  |  f V|  d |  f Vd |  d d |  d f V|  |  |  |  f Vd Vd  S(   Ni   i   (   i   i   i   (    (   t   n(    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   _shape_variationsb  s    c           s  s¬   d Vd Vt  j Vt  j Vt Vt  j d ƒ Vd
 Vd d g Vt  j d ƒ j d d d d ƒ Vt  j t  j d ƒ j d d ƒ ƒ Vt  j d ƒ j d d ƒ d  d  d	 … Vd  S(   Ni   g‰A`åÐ"	@i   i   i	   i6   i   i   iÿÿÿÿ(   i   (   R   t   nant   infR}   Rh   R   t   asfortranarray(    (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   _val_variationsp  s    	 #c         3  sR   xK ˆ  |  ƒ D]= } t  j | d t  j ƒVt  j t  j | d t  j ƒƒ Vq Wd  S(   NRÀ   (   R   t   zerosRÅ   RË   t   ones(   RÇ   R;   (   RÈ   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt#   _multi_dimensional_array_variations~  s    c         3  so   xh ˆ  |  ƒ D]Z } t  j t g  | D] } | d ^ q# ƒ d t  j ƒ} t d „  | Dƒ ƒ } | | Vq Wd  S(   Ni   RÀ   c         s  s%   |  ] } t  d  | d d ƒ Vq d S(   i    i   N(   t   slice(   R   R@   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pys	   <genexpr>‡  s    (   R   RÍ   R{   RÅ   (   RÇ   R;   R@   t   tmpt   slicer(   RÈ   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt+   _multi_dimensional_array_variations_strided„  s    5c           sˆ   x d  t t f D]p } |  j ƒ  } |  j ƒ  } | d  k rC i  } n i | d 6} ˆ | | |  ˆ  | | |  ˆ j | | ƒ q Wd  S(   NRG   (   Rz   R}   t   FalseR¤   RV   (   R   RF   RG   R"   t   bt   params(   R‰   R   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   _check_fill_diagonalŠ  s    	i   i	   (   RH   R   R}   R   Rj   R   RÔ   (   RP   RÌ   RÏ   RÓ   R×   R   RF   (    (   RÈ   R‰   R   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_fill_diagonal_basic^  s"    		"c           sÕ  t  } t d t ƒ | ƒ ‰  d } ˆ j ƒ  xf t j g  ƒ t j d ƒ f D]F } ˆ j t ƒ  } ˆ  | | ƒ Wd  QXd t	 | j
 ƒ k sJ t ‚ qJ Wˆ j t ƒ < } t j d ƒ } ˆ  | | ƒ ˆ j d t	 | j
 ƒ ƒ Wd  QX‡  ‡ f d †  } t j d d	 t j ƒ} t j } | | | ƒ d
 t j g } | | | ƒ t j d d d g d	 t j ƒ} | | | ƒ t j d d	 t j ƒ} d d d g } | | | ƒ d } | | | ƒ t j d g ƒ } | | | ƒ d  S(   NRw   i   i   s'   The first argument must be at least 2-Di   i   s/   All dimensions of input must be of equal lengthc           sB   ˆ j  t ƒ  } ˆ  |  | ƒ Wd  QXˆ j d t | j ƒ ƒ d  S(   Ns'   Unable to safely conform val to a.dtype(   R^   Rd   R[   R`   Ra   (   R   RF   Rb   (   R‰   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   _assert_raises»  s    RÀ   gffffff
@i   g    _ Bgffffffö?gÍÌÌÌÌÌ@g}Ã”%­I²Ôgp=½Ø´T(   i   i   i   (   i   i   (   i   i   (   RH   R   R}   Rk   R   Rj   RÎ   R^   R   R`   Ra   t   AssertionErrorRd   RÍ   R[   RÁ   RÉ   RÊ   t   int64t   float32(   RP   R   RF   R"   Rb   RÙ   R   (    (   R‰   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt"   test_fill_diagonal_exception_cases¦  s6    
%	!c           sç   t  ‰ t d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } x3 d d d d g D] } t j | ƒ } | | ƒ qC Wx? d t d g d d g d d g g d d g D] } | | ƒ q” Wˆ j t ƒ  } ˆ  d	 ƒ Wd  QXˆ j d
 t	 | j
 ƒ ƒ d  S(   NRw   c           s,   ˆ |  ƒ } ˆ  |  ƒ } ˆ j  | | ƒ d  S(   N(   RV   (   R@   RX   RY   (   R‰   R   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRZ   Ù  s    i   i   i   i   i   i   R"   s+   The argument to np.shape must be array-like(    (   i   (   i   i   (   i   i   i   (   i   (   i   i   i   (   RI   R   R}   R   t   emptyRÔ   R^   R   R~   R`   Ra   (   RP   RZ   t   tR   Rb   (    (   R‰   R   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt
   test_shapeÕ  s    4	c           sj   t  } t d t ƒ | ƒ } ‡  f d †  } x9 | ƒ  D]. } | | ƒ } | | ƒ } ˆ  j | | ƒ q4 Wd  S(   NRw   c          3  s¹   t  j d d ƒ Vt  j d d d ƒVt  j g  ƒ Vˆ  j j d ƒ }  d |  t  j |  ƒ d k <|  V|  j d d d ƒ V|  j d	 d
 d d ƒV|  j d d ƒ d d  d
 … V|  d Vd  S(   Niûÿÿÿi   t
   fill_valuei    id   g        gš™™™™™É?i   i2   i   R´   R¡   i   i   y              ð?(   R   Rh   t   fullRj   t   randomt   randnt   absR   (   R"   (   RP   (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   a_variationsò  s    (   RK   R   R}   RV   (   RP   R   R‰   Ræ   R"   RX   RY   (    (   RP   sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   test_flatnonzero_basicí  s    c           c  sy   d d d f Vd Vd
 d g d d g f Vd Vt  j Vd
 Vd Vt Vt t t f Vd Vd  Vt j d k  su d Vn  d  S(   Ngš™™™™™ñ?gš™™™™™@gffffff
@gš™™™™™@g      @gffffff@g        g      ð?g      Ài    i   i   i   y              ð?t   a_string(   gš™™™™™ñ?gš™™™™™@(   gffffff
@gš™™™™™@(   g      @gffffff@(   g        g      ð?g        g      À(    y       @      ð?(   i   (   R   RÉ   RÔ   R}   Rz   t   syst   version_info(    (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   array_like_variations  s    i   i   s)   flatnonzero array-like handling per 1.15+c         C  s^   t  } t d t ƒ | ƒ } x< |  j ƒ  D]. } | | ƒ } | | ƒ } |  j | | ƒ q( Wd  S(   NRw   (   RK   R   R}   Rë   RV   (   RP   R   R‰   R"   RX   RY   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt&   test_flatnonzero_array_like_115_and_on  s    s(   flatnonzero array-like handling pre 1.15c         C  s©   t  } t d t ƒ | ƒ } x‡ |  j ƒ  D]y } |  j ƒ   } | | ƒ Wd  QX|  j d t | j ƒ ƒ |  j t	 ƒ  } | | ƒ Wd  QX|  j d t | j ƒ ƒ q( Wd  S(   NRw   s   Argument 'a' must be an arrays   object has no attribute 'ravel'(
   RK   R   R}   Rë   R¾   R~   R`   Ra   R^   t   AttributeError(   RP   R   R‰   R"   R‚   (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt#   test_flatnonzero_array_like_pre_115   s    (   i   i   (   i   i   ((   t   __name__t
   __module__t   __doc__RN   R   Rl   Rƒ   R…   Rš   R›   Rœ   R   Rž   RŸ   t   enable_pyobj_flagsR©   R«   Rµ   R¶   R·   R¸   R¹   Rº   R»   R¼   R½   R¿   RÄ   RÆ   RØ   RÝ   Rà   Rç   t   staticmethodRë   t   unittestt
   skipUnlesst
   np_versionRì   Rî   (    (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyRL   ‘   sD   	q	P 	/						#									H	/		t   __main__(>   t
   __future__R    t	   functoolsR   t	   itertoolsR   t   numba.unittest_supportt   unittest_supportRô   Ré   t   numpyR   t   numba.numpy_supportR   Rö   t   numba.compilerR   R   t   numbaR   R   R   R	   R
   t   numba.errorsR   t   supportR   R   R   R   Rò   t   setRª   R   R   R    R#   R%   R'   R(   R*   R+   R-   R.   R0   R1   R3   R4   R5   R:   R=   R?   RC   RD   RÔ   RH   RI   RK   RL   Rï   t   main(    (    (    sB   lib/python2.7/site-packages/numba/tests/test_array_manipulation.pyt   <module>   sV   ("																									ÿ ÿ ¦