ó
\K]c           @  s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l j Z d  d l	 m
 Z
 m Z d  d l m Z m Z m Z m Z m Z m Z d d l 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   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- e d    Z. e d    Z/ d    Z0 d!   Z1 d"   Z2 d# e f d$     YZ3 d% e f d&     YZ4 d' e f d(     YZ5 e6 d) k re j7   n  d S(*   i˙˙˙˙(   t   print_functionN(   t   compile_isolatedt   Flags(   t   typest   utilst   njitt   errorst   typeoft   numpy_supporti   (   t   TestCaset   tagt   enable_pyobjectt   nrtc         C  s   |  | | |  S(   N(    (   t   at   startt   stopt   step(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase   s    c         C  sQ   |  | | |  } d } x1 t  | j d  D] } | | | | d 7} q- W| S(   Ni    i   (   t   ranget   shape(   R   R   R   R   t   bt   totalt   i(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase2   s
    c         C  sK   |  | | !} d } x1 t  | j d  D] } | | | | d 7} q' W| S(   Ni    i   (   R   R   (   R   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase3   s
    c         C  sE   |  } d } x1 t  | j d  D] } | | | | d 7} q! W| S(   Ni    i   (   R   R   (   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase4&   s
    c         C  sH   |  | } d } x1 t  | j d  D] } | | | | d 7} q$ W| S(   Ni    i   (   R   R   (   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase5-   s
    
c         C  sH   |  |  } d } x1 t  | j d  D] } | | | | d 7} q$ W| S(   Ni    i   (   R   R   (   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase64   s
    
c         C  sQ   |  | d  d  } d } x1 t  | j d  D] } | | | | d 7} q- W| S(   Niţ˙˙˙i    i   (   R   R   (   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase7;   s
    c         C  sQ   |  d  d  d  } d } x1 t  | j d  D] } | | | | d 7} q- W| S(   Niţ˙˙˙i    i   (   R   R   (   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase8C   s
    c         C  s    |  | | |  | | |  f S(   N(    (   R   t   start1t   stop1t   step1t   start2t   stop2t   step2(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_2d_usecaseL   s    c         C  s   |  | | |  | f S(   N(    (   R   R   R   R    t   index(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_2d_usecase3P   s    c         C  sW   |  | | d   | f } d } x1 t  | j d  D] } | | | | d 7} q3 W| S(   Ni    i   (   R   R   (   R   t   index0R   t   index2R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_3d_usecaseT   s
    c         C  sW   |  | d  |  | f } d } x1 t  | j d  D] } | | | | d 7} q3 W| S(   Ni    i   (   R   R   (   R   R'   R   R(   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_3d_usecase2[   s
    c         C  sH   |  | } d } x1 t  | j d  D] } | | | | d 7} q$ W| S(   Ni    i   (   R   R   (   R   R%   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   partial_1d_usecaseb   s
    
c         C  s   |  | S(   N(    (   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   integer_indexing_1d_usecasei   s    c         C  s   |  | | f S(   N(    (   R   t   i1t   i2(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   integer_indexing_2d_usecasel   s    c         C  s   |  | | S(   N(    (   R   R-   R.   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   integer_indexing_2d_usecase2o   s    c         C  s   |  | |  d f S(   N.(    (   R   R   t   j(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   ellipsis_usecase1r   s    c         C  s   |  d | |  f S(   N.(    (   R   R   R1   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   ellipsis_usecase2u   s    c         C  s   |  | d | f S(   N.(    (   R   R   R1   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   ellipsis_usecase3x   s    c         C  s   |  d  S(   N(   t   None(   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   none_index_usecase{   s    c         C  s   |  d S(   N(    (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   empty_tuple_usecase~   s    c         C  s   | |  | <d  S(   N(    (   R   R%   t   value(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   setitem_usecase   s    c         C  s   | |  (d  S(   N(    (   R   R8   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   setitem_broadcast_usecase   s    c         C  s   | |  | | |  <|  S(   N(    (   R   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase_set   s    c         C  s   |  | | c !| 7+|  S(   N(    (   R   R   R   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_1d_usecase_add   s    c         C  s&   | |  | | |  | | |  f <|  S(   N(    (   R   R   R   R   R   R!   R"   R#   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   slicing_2d_usecase_set   s    "t   TestGetItemc           B  s<  e  Z d  Z e d  Z d   Z e d  Z d   Z e d  Z d   Z	 e d  Z
 d   Z d	   Z e d
  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z d   Z e d  Z e d  d    Z e d  Z d   Z e d  Z  d   Z! e d  Z" e d  d     Z# e e$ d!  Z% e d  d"    Z& d#   Z' d$   Z( e d%  Z) e d&  Z* d'   Z+ e d(  Z, d)   Z- e d*  Z. d+   Z/ e d,  Z0 d-   Z1 d.   Z2 d/   Z3 e d0  Z4 d1   Z5 e d2  Z6 d3   Z7 RS(4   s   
    Test basic indexed load from an array (returning a view or a scalar).
    Note fancy indexing is tested in test_fancy_indexing.
    c   
   
   C  sÁ   t  } t j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d } xN d d d d d d d d g D]. } | | |  }	 |  j | | |  |	  q Wd  S(   Ni   t   Ct   flagsi
   t   dtypet   i4i    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   t   Arrayt   int32R   t   entry_pointt   npt   aranget   assertPreciseEqual(
   t   selfR@   t   pyfunct	   arraytypet   argtyst   crt   cfuncR   t   indicest   expected(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicingĄ   s     	c         C  s   |  j  d t  d  S(   NR@   (   RQ   t   Noflags(   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_npmľ   s    c   
      C  s  t  } t j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d } d d d d d g } x0 | D]( }	 |  j | | |	  | | |	   q Wt j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d d  d  d  } |  j	 | j
 d  |  j	 | j
 d  d d d d d g } x0 | D]( }	 |  j | | |	  | | |	   qkWd  S(   Ni   R?   R@   i
   RA   RB   i    i   i   i˙˙˙˙t   Ai   t   C_CONTIGUOUSt   F_CONTIGUOUS(   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   RC   RD   R   RE   RF   RG   t   assertEqualt   assertFalseR@   (
   RI   R@   RJ   RK   RL   RM   RN   R   t   argst   arg(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing2¸   s6    		&	"	c         C  s   |  j  d t  d  S(   NR@   (   R[   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing2_npmŢ   s    c   
      C  sz  t  } t j t j d d  } | t j t j f } t | | d | } | j } t j d d d } d d d d d g } x0 | D]( }	 |  j | | |	  | | |	   q Wt j t j d d  } | t j t j f } t | | d | } | j } t j d d d d  d  d  } |  j	 | j
 d  |  j	 | j
 d  x0 | D]( }	 |  j | | |	  | | |	   qJWd  S(   Ni   R?   R@   i
   RA   RB   i   i   i    i   RT   i   RU   RV   (   i   i
   (   i   i   (   i
   i    (   i    i
   (   i   i
   (   R   R   RC   RD   R   RE   RF   RG   RW   RX   R@   (
   RI   R@   RJ   RK   RL   RM   RN   R   RY   RZ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing3á   s,    		&	"c         C  s   |  j  d t  d  S(   NR@   (   R]   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing3_npm  s    c         C  s  t  } t j t j d d  } | f } t | | d | } | j } t j d d d } |  j | |  | |   t j t j d d  } | f } t | | d | } | j } t j d d d d  d  d	  } |  j	 | j
 d
  |  j	 | j
 d  |  j | |  | |   d  S(   Ni   R?   R@   i
   RA   RB   RT   i   i   RU   RV   (   R   R   RC   RD   R   RE   RF   RG   RW   RX   R@   (   RI   R@   RJ   RK   RL   RM   RN   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing4  s    				"c         C  s   |  j  d t  d  S(   NR@   (   R_   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing4_npm  s    c   
      C  sh  t  t d d   } t j t j d d  } | t j f } t | | d | } | j } t j d d d } x0 | D]( }	 |  j	 | | |	  | | |	   qv Wt j t j d d  } | t j f } t | | d | } | j } t j d	 d d d  d  d
  } |  j
 | j d  |  j
 | j d  x0 | D]( }	 |  j	 | | |	  | | |	   q8Wd  S(   Ni÷˙˙˙i
   i   R?   R@   RA   RB   RT   i   i   RU   RV   (   t   listR   R   RC   RD   R   RE   RF   RG   RW   RX   R@   (
   RI   RJ   R@   RY   RK   RL   RM   RN   R   RZ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   check_1d_slicing_with_arg  s"    	&	"c         C  s   t  } |  j | |  d  S(   N(   R   Rb   (   RI   R@   RJ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing54  s    c         C  s   |  j  d t  d  S(   NR@   (   Rc   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing5_npm8  s    c         C  s   t  } |  j | |  d  S(   N(   R   Rb   (   RI   R@   RJ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing6;  s    c         C  s   |  j  d t  d  S(   NR@   (   Re   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing6_npm?  s    c         C  s   t  } |  j | |  d  S(   N(   R   Rb   (   RI   R@   RJ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing7B  s    c         C  s   |  j  d t  d  S(   NR@   (   Rg   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing7_npmF  s    c         C  s   t  } |  j | |  d  S(   N(   R   Rb   (   RI   R@   RJ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing8I  s    c         C  s   |  j  d t  d  S(   NR@   (   Ri   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing8_npmM  s    c   	      C  sË   t  } t j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d j d d  } xL d d d d d g D]5 } |  j	 | | |  | | |  d d | f q Wd S(   s   
        arr_2d[a:b:c]
        i   R?   R@   id   RA   RB   i
   i    i   i   i˙˙˙˙t   msgs   for args %sN(   i    i
   i   (   i   i   i   (   i
   i    i   (   i    i
   i˙˙˙˙(   i    i
   i   (
   R   R   RC   RD   R   RE   RF   RG   t   reshapeRH   (	   RI   R@   RJ   RK   RL   RM   RN   R   RY   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicingP  s    	!!c         C  s   |  j  d t  d  S(   NR@   (   Rm   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing_npm`  s    c         C  sđ  t  } t j t j d d  } | t j t j t j t j t j t j f } t | | d | } | j } t j d d d j d d  } d d d d d d d d d g	 } g  t	 j
 | |  D] \ }	 }
 |	 |
 ^ qž } x6 | D]. } | | |  } |  j | | |  |  qá Wt j t j d d  } | t j t j t j t j t j t j f } t | | d | } | j } t j d d d j d d  d d d  d d d  f } x6 | D]. } | | |  } |  j | | |  |  qşWd S(   s&   
        arr_2d[a:b:c, d:e:f]
        i   R?   R@   id   RA   RB   i
   i    i   i   i˙˙˙˙i	   iţ˙˙˙iű˙˙˙RT   i  i   N(   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   RC   RD   R   RE   RF   RG   Rl   t	   itertoolst   productRH   (   RI   R@   RJ   RK   RL   RM   RN   R   RO   t   tup1t   tup2RY   RZ   RP   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing2c  s<    	!	,	=c         C  s   |  j  d t  d  S(   NR@   (   Rs   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing2_npm  s    c      	   C  s   t  } t j t j d d  } | t j t j t j t j f } t | | d | } | j } t j d d d j d d  } d d d d d d g } x6 | D]. }	 | | |	  }
 |  j	 | | |	  |
  q Wt j t j d d  } | t j t j t j t j f } t | | d | } | j } t j d d d j d d  d d d  d d d  f } x6 | D]. }	 | | |	  }
 |  j	 | | |	  |
  qjWd S(   s"   
        arr_2d[a:b:c, d]
        i   R?   R@   id   RA   RB   i
   i    i   i   i˙˙˙˙i   i	   iţ˙˙˙i   RT   i  i   N(   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   RC   RD   R   RE   RF   RG   Rl   RH   (   RI   R@   RJ   RK   RL   RM   RN   R   RY   RZ   RP   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing3  s2    	!		=c         C  s   |  j  d t  d  S(   NR@   (   Ru   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing3_npm¸  s    c   
      C  s|  t  } t j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d j d d d  } d d d d d g } x0 | D]( }	 |  j	 | | |	  | | |	   q Wt j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d d  d  d  j d d d  } x0 | D]( }	 |  j	 | | |	  | | |	   qLWd  S(   Ni   R?   R@   ič  RA   RB   i
   i    i	   i   i   i˙˙˙˙RT   iĐ  (   i    i	   i   (   i   i   i   (   i	   i    i   (   i    i	   i˙˙˙˙(   i    i	   i   (
   R)   R   RC   RD   R   RE   RF   RG   Rl   RW   (
   RI   R@   RJ   RK   RL   RM   RN   R   RY   RZ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_3d_slicingť  s(    	$	&	1t	   importantc         C  s   |  j  d t  d  S(   NR@   (   Rw   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_3d_slicing_npmÚ  s    c   
      C  s|  t  } t j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d j d d d  } d d d d d g } x0 | D]( }	 |  j	 | | |	  | | |	   q Wt j t j d d  } | t j t j t j f } t | | d | } | j } t j d d d d  d  d  j d d d  } x0 | D]( }	 |  j	 | | |	  | | |	   qLWd  S(   Ni   R?   R@   ič  RA   RB   i
   i    i	   i   i   i˙˙˙˙RT   iĐ  (   i    i	   i   (   i   i   i   (   i	   i    i   (   i    i	   i˙˙˙˙(   i    i	   i   (
   R*   R   RC   RD   R   RE   RF   RG   Rl   RW   (
   RI   R@   RJ   RK   RL   RM   RN   R   RY   RZ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_3d_slicing2Ţ  s(    	$	&	1c         C  s   |  j  d t  d  S(   NR@   (   Rz   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_3d_slicing2_npmý  s    c   
      C  s  t  } t j t j d d  } t | | t j f d | } | j } t j d d d } |  j | | d  | | d   |  j | | d  | | d   |  j | | d	  | | d	   t j t j d d
  } t | | t j f d | } | j } t j d d d d  d  d  } |  j	 | j
 d  |  j	 | j
 d  |  j | | d  | | d   |  j | | d  | | d   |  j | | d	  | | d	   t j t j d d  } t j t j d d  } t | | | f d | } | j } t j d d d t j } x` d D]X } t j |  j t j  }	 |	 j d k s[t  |  j | | |	  | | |	   q%Wd  S(   Ni   R?   R@   i
   RA   RB   i    i	   i˙˙˙˙RT   i   RU   RV   i   i   iţ˙˙˙(   i    i	   iţ˙˙˙(   R,   R   RC   RD   R   RE   RF   RG   RW   RX   R@   t   int16t   arrayt   astypet   ndimt   AssertionError(
   RI   R@   RJ   RK   RM   RN   R   t	   indextypeR   t   idx(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_integer_indexing   s4    	"""	""""	c         C  s   |  j  d t  d  S(   NR@   (   R   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_integer_indexing_npm$  s    c         C  s_  t  } t j t j d d  } t | | t j f d | } | j } t j d d d j d d  } |  j	 | | d  | | d   |  j	 | | d	  | | d	   |  j	 | | d
  | | d
   t j t j d d  } t | | t j f d | } | j } t j d d d j d d  d  d  d  } |  j	 | | d  | | d   d  S(   Ni   R?   R@   id   RA   RB   i
   i    i	   i˙˙˙˙RT   i   i   i   (
   R,   R   RC   RD   R   RE   RF   RG   Rl   RH   (   RI   R@   RJ   RK   RM   RN   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_integer_indexing_1d_for_2d'  s    	!"""	.c         C  s   |  j  d t  d  S(   NR@   (   R   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt#   test_integer_indexing_1d_for_2d_npm:  s    c   
      C  sú  t  j d d d j d d  } t j t j d d  } t | | t j t j f d | } | j } |  j | | d d	  | | d d	   |  j | | d
 d
  | | d
 d
   |  j | | d d  | | d d   t  j d d d j d d  d  d  d  d  d  d  f } |  j	 | j
 d  |  j	 | j
 d  t j t j d d  } t | | t j t j f d | } | j } |  j | | d d  | | d d   |  j | | d d  | | d d   |  j | | d d  | | d d   t  j d d d j d d  } t j t j d d  } t j t j d d  } t | | | | f d | } | j } x{ d d d g D]j \ } }	 t  j |  j t  j  } t  j |	  j t  j  }	 |  j | | | |	  | | | |	   qWd  S(   Nid   RA   RB   i
   i   R?   R@   i    i   i	   iţ˙˙˙i˙˙˙˙RU   RV   RT   i   i   (   i    i   (   i   i	   (   iţ˙˙˙i˙˙˙˙(   RF   RG   Rl   R   RC   RD   R   RE   RW   RX   R@   R}   R~   (
   RI   R@   RJ   R   RK   RM   RN   R   R   R1   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_integer_indexing>  s8    !		(((=		(((!		c         C  s   |  j  d t  d  S(   NR@   (   R   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_integer_indexing_npmf  s    c         C  s*   |  j  d t  |  j  d t d t  d  S(   NRJ   R@   (   R   R0   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_integer_indexing2j  s    c           sŻ   t  d      t    f d    } t j d  j d d  } |  j | | d d  | d d  |  j | | d d  | d d  |  j | | d d  | d d  d  S(	   Nc         S  s   |  | S(   N(    (   t   Xt   i0(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   index1p  s    c           s     |  | |  S(   N(    (   R   R   R-   (   R   (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyR(   s  s    i
   i   i   i    i   i˙˙˙˙(   R   RF   RG   Rl   RW   (   RI   R(   R   (    (   R   s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt!   test_2d_integer_indexing_via_callo  s    $$c         C  sč   t  j d d d j d d  } t } t j t j d d  } t | | t j t j f d | } | j	 } |  j
 | | d d  | | d d   |  j
 | | d	 d	  | | d	 d	   |  j
 | | d
 d
  | | d
 d
   d  S(   Nid   RA   RB   i
   i   R?   R@   i    i	   i˙˙˙˙(   RF   RG   Rl   R/   R   RC   RD   R   t   float32RE   RW   (   RI   R@   R   RJ   RK   RM   RN   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_float_indexing{  s    !		((c           sř   t       f d   } t j d d d j d  } t j t j d d  } | | |  t j d d d j d  j } t j t j d d	  } | | |  t j d d d j d  d  d  d  } t j t j d d
  } | | |  d  S(   Nc           s˘   t   | t j f d   } | j }  j  |  d  | |  d   |  j d d }  j  |  |  | |  |    j  |  d  | |  d   d  S(   NR@   i    i   i˙˙˙˙(   R   R   RD   RE   RW   R   (   t   arrRK   RM   RN   t   n(   R@   RJ   RI   (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   check  s    		""i   RA   RB   i   i   i   R?   t   FRT   (   i   i   (   i   i   (   i   i   (   R+   RF   RG   Rl   R   RC   RD   t   T(   RI   R@   R   R   RK   (    (   R@   RJ   RI   s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_partial_1d_indexing  s    	!+c           su     f d        f d   } | t  j d d d j d d   | t  j d d d j d d d   d  S(	   Nc           s1   t   t |   t j t j f d   } | j S(   NR@   (   R   R   R   t   intpRE   (   R   RM   (   R@   RJ   (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   compile_func   s    !	c           sv   d }   |   } x] t  j | |  D]I \ } } | |  | |  } t j j  |  | |  | |  | |   q% Wd  S(   Ni    i   i   i˙˙˙˙iţ˙˙˙(   i    i   i   i˙˙˙˙iţ˙˙˙(   Ro   Rp   RF   t   testingt   assert_equal(   R   t   boundsRN   R   R1   t   x(   R   RJ   (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   runĽ  s
    i   RA   RB   i   i   i   (   RF   RG   Rl   (   RI   RJ   R@   R   (    (   R   R@   RJ   s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   check_ellipsis  s    %c         C  s   |  j  t |  d  S(   N(   R   R2   (   RI   R@   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis1Ż  s    c         C  s   |  j  d t  d  S(   NR@   (   R   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis1_npm˛  s    c         C  s   |  j  t |  d  S(   N(   R   R3   (   RI   R@   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis2ľ  s    c         C  s   |  j  d t  d  S(   NR@   (   R    RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis2_npm¸  s    c         C  s   |  j  t |  d  S(   N(   R   R4   (   RI   R@   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis3ť  s    c         C  s   |  j  d t  d  S(   NR@   (   R˘   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis3_npmž  s    c         C  sr   t  d    } | j } d } d } t j | |  j | |  } | |  } | |  } t j j | |  d  S(   Nc         S  sQ   t  j |   } d } x5 t  j |  d | f  D] \ } } | | | | <q/ W| S(   Ni    .(   RF   t
   zeros_liket   ndenumerate(   R   t   outR   R%   t   val(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   udtÄ  s
    &i   (   R   t   py_funcRF   RG   Rl   R   R   (   RI   R¨   RŠ   t	   outersizet	   innersizeR   t   gotRP   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis_issue1498Á  s    		c         C  sP   t  d    } t j d  } | |  } | j |  } t j j | |  d  S(   Nc         S  s   |  d S(   N.i    (   .i    (    (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyR¨   Ů  s    i   (   R   RF   RG   RŠ   R   R   (   RI   R¨   R   RŹ   RP   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_ellipsis_issue1499Ö  s
    c         C  s   t  } t j t j d d  } t | | f d | } | j } t j d d d j d d  } |  j	 | |  | |   d  S(   Ni   R?   R@   id   RA   RB   i
   (
   R6   R   RC   RD   R   RE   RF   RG   Rl   RH   (   RI   R@   RJ   RK   RM   RN   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_none_indexâ  s    	!c         C  s'   |  j     |  j d t  Wd  QXd  S(   NR@   (   t   assertTypingErrorRŻ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_none_index_npmě  s    c         C  s}   t  } t j t j d d  } t | | f d | } | j } t j d d d j d  } |  j	 | |  | |   d  S(   Ni    R?   R@   i   RA   RB   (    (
   R7   R   RC   RD   R   RE   RF   RG   Rl   RH   (   RI   R@   RJ   RK   RM   RN   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_empty_tuple_indexingđ  s    	c         C  s   |  j  d t  d  S(   NR@   (   R˛   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_empty_tuple_indexing_npmů  s    (8   t   __name__t
   __module__t   __doc__t   enable_pyobj_flagsRQ   RS   R[   R\   R]   R^   R_   R`   Rb   Rc   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rm   Rn   Rs   Rt   Ru   Rv   Rw   R
   Ry   Rz   R{   R   R   R   R   R/   R   R   R   R   R   R   R   R   R   R    RĄ   R˘   RŁ   R­   RŽ   RŻ   Rą   R˛   Rł   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyR>      sh   	&	 								+	'		$	'								
		t   TestSetItemc           B  sď   e  Z d  Z e d  Z e d  Z d   Z e d  Z e d  Z e d  Z	 e d  Z
 d   Z d	   Z d
   Z d   Z d   Z e d  e d   Z e d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sk   
    Test basic indexed store into an array.
    Note fancy indexing is tested in test_fancy_indexing.
    c         C  st   d d l  m } d   } | d  |  } t j d d d } | j   } | |  | |  |  j | |  d S(	   s9    this used to work, and was used in one of the tutorials i˙˙˙˙(   t   jitc         S  s8   x1 t  t |    D] } | t j d  |  | <q Wd  S(   Nid   (   R   t   lent   decimalt   Decimal(   R}   R%   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyRJ     s    s   void(i8[:])id   RA   R-   N(   t   numbaRš   RF   RG   t   copyRH   (   RI   R@   Rš   RJ   RN   R¨   t   control(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_conversion_setitem  s    	

c           sś  t  } t j t j d d  } t j t j d d  } | | t j t j t j f } t | | d | } | j } d } t j | d d d   d	 d
 | d
 | | d | d d | d
 | | d | d g }	   f d   }
 x t	 j
 |	 |	  D]z \ } } xk d D]c } | | | f } t |   } | |
     | |  } | |
     | |  } |  j | |  q	Wqö W|  j t  - | t j   d t j   d	 d	 d  Wd QXd S(   s+   
        1d to 1d slice assignment
        i   R?   RT   R@   i
   RA   R.   i(   i    i   i   iţ˙˙˙c             s   t  j   d d S(   NRA   RB   (   RF   R¤   (    (   RZ   (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt	   make_dest$  s    i˙˙˙˙N(   i   i   i˙˙˙˙iţ˙˙˙(   R;   R   RC   RD   R|   R   RE   RF   RG   Ro   Rp   t   sliceRH   t   assertRaisest
   ValueErrorR¤   (   RI   R@   RJ   t	   dest_typet   src_typeRL   RM   RN   t   NR   RÁ   R   R   R   RY   R%   t   pyleftt   cleft(    (   RZ   s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set  s(    	%c         C  s1  t  } t j t j d d  } | | t j t j t j f } t | | d | } | j } d }	 t |  }
 t j |	 d t j } | d |	 |
 d d f } | | j	   |  } | | j	   |  } |  j
 | |  t j d k r-| d |	 |
 d f } |  j t   } | | j	   |  Wd QXn  d S(	   s9   
        Generic sequence to 1d slice assignment
        i   R?   R@   i
   RA   i   N(   i   i   (   R;   R   RC   RD   R   RE   Rş   RF   RG   Rž   RH   R   t   versionRĂ   RÄ   (   RI   R@   t   seqtyt   seqRJ   RĹ   RL   RM   RN   RÇ   t   kRZ   RY   RP   RŹ   t   raises(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   check_1d_slicing_set_sequence2  s     	c         C  s&   |  j  | t j t j d  d  d S(   s.   
        Tuple to 1d slice assignment
        i   i   iÖ˙˙˙N(   i   iÖ˙˙˙(   RĐ   R   t   UniTupleR|   (   RI   R@   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set_tupleJ  s    c         C  s)   |  j  | t j t j  d d g  d S(   s-   
        List to 1d slice assignment
        i   iÖ˙˙˙N(   RĐ   R   t   ListR|   (   RI   R@   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set_listQ  s    c         C  sE  t  } t j t j d d  } | t j t j t j t j f } t | | d | } | j } d } t j | d d } d }	 d d	 | d	 | | d | d
 d | d	 | | d | d
 g }
 x} t	 j
 |
 |
  D]i \ } } xZ d D]R } |	 | | | f } | | j   |  } | | j   |  } |  j | |  qç WqÔ Wd S(   s/   
        scalar to 1d slice assignment
        i   R?   R@   i
   RA   RB   i*   i    i   i   iţ˙˙˙i˙˙˙˙N(   i   i   i˙˙˙˙iţ˙˙˙(   R;   R   RC   RD   R|   R   RE   RF   RG   Ro   Rp   Rž   RH   (   RI   R@   RJ   RK   RL   RM   RN   RÇ   RZ   R§   R   R   R   R   RY   RČ   RÉ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_broadcastX  s     !	%c         C  sŢ   t  } t j t j d d  } | | t j t j f } t | | d | } | j } t j d d d } xn d
 d f D]` } | t j |  | t	 |   |  }	 | t j |  | t	 |   |  }
 |  j
 |	 |
  qv Wd  S(   Ni   R?   R@   i
   RA   RB   i    i   i   (   i    i
   (   i   i   (   R<   R   RC   RD   R   RE   RF   RG   R¤   RÂ   RH   (   RI   R@   RJ   RK   RL   RM   RN   RZ   t   testRČ   RÉ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_addp  s    	%%c         C  s   |  j  d t  d  S(   NR@   (   RĘ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set_npm}  s    c         C  s   |  j  d t  d  S(   NR@   (   RÔ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set_list_npm  s    c         C  s   |  j  d t  d  S(   NR@   (   RŇ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_set_tuple_npm  s    c         C  s   |  j  d t  d  S(   NR@   (   RŐ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_broadcast_npm  s    c         C  s   |  j  d t  d  S(   NR@   (   R×   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_1d_slicing_add_npm  s    Rx   c      
   C  sE  t  } t j t j d d  } | | t j t j t j t j t j t j f } t | | d | } | j } t j d d d j d d  } d d d d d g } x | D] }	 | t j	 |  | t
 |	 d d	 !  t
 |	 d	 d !  f |	  }
 | t j	 |  | t
 |	 d d	 !  t
 |	 d	 d !  f |	  } |  j | |
  qŠ Wd S(   s+   
        2d to 2d slice assignment
        i   RT   R@   i
   RA   RB   i    i   i   i˙˙˙˙i   Nid   (   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   RC   RD   R   RE   RF   RG   Rl   R¤   RÂ   RH   (   RI   R@   RJ   RK   RL   RM   RN   RZ   t   testsRÖ   RČ   RÉ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing_set  s     	!	??c      
   C  s   t  } t j t j d d  } | t j t j t j t j t j t j t j f } t | | d | } | j } t j d d d j	 d d  } d } d d d d d g }	 xN |	 D]F }
 | | j
   | |
  } | | j
   | |
  } |  j | |  q˛ Wd S(   s/   
        scalar to 2d slice assignment
        i   R?   R@   i
   RA   RB   i*   i    i   i   i˙˙˙˙Nid   (   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   RC   RD   R|   R   RE   RF   RG   Rl   Rž   RH   (   RI   R@   RJ   RK   RL   RM   RN   RZ   R§   RÝ   RÖ   RČ   RÉ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing_broadcastĽ  s"    	!	c         C  s   |  j  d t  d  S(   NR@   (   RŢ   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing_set_npmŔ  s    c         C  s   |  j  d t  d  S(   NR@   (   Rß   RR   (   RI   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_2d_slicing_broadcast_npmĂ  s    c         C  s÷   t  j d  } t | d d  |  j | j   d d d d d g  t | t  j d  j t  j  d  |  j | j   d d d d d g  t  j d	  j d d  } t | d d  |  j | j   d d d g d d d g d
 d d g g  d S(   s+   
        scalar indexed assignment
        i   i   i*   i    i   i   i   i   i	   i   i   N(	   RF   RG   R9   RW   t   tolistR}   R~   t   uint16Rl   (   RI   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_setitemĆ  s    %%%c         C  se  t  j d  } t | d  |  j | j   d g d  t  j d  j d d  } t | t  j d d   |  j | j   d d d g d d d g g  t  j d  j d d  } t | t  j d d  j d d   |  j | j   d d d g d d d g g  t  j d  j d d d d  } t | t  j d d  j d d   d d d g d d d g g } |  j | j   | g g d  t  j d  } t | t  j d d  j d d   |  j | j   d d d d d g  t  j d  j d d  } t | t  j d d | j  j d d d d   |  j | j   d d d g d d d g g  d	 S(
   s.   
        broadcasted array assignment
        i   i*   i   i   i   i   i   i   N(   RF   RG   R:   RW   Râ   Rl   t   size(   RI   t   dstt   inner2(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_setitem_broadcastŐ  s&    .%.!% %%2c      	   C  s]  t  j d  } t  j d  j d d  } |  j t   } t | |  Wd  QXt | j  } |  j d |  t  j d  j d d  } t  j d  j d d d  } |  j t   } t | |  Wd  QXt | j  } |  j d |  t  j d  j d d  } t  j d  } |  j t   } t | |  Wd  QXt | j  } |  j d |  d  S(   Ni   i
   i   s,   cannot broadcast source array for assignmenti   s0   cannot assign slice from input of different sizei   (	   RF   RG   Rl   RĂ   RÄ   R:   t   strt	   exceptionRW   (   RI   Rć   t   srcRĎ   t   errmsg(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_setitem_broadcast_erroró  s*    			c         C  sl  t  j d  j d d  } t  j d d  } t | | d d d  |  j | j   d d g d d g d d g g  t  j d  j d d  } t  j d d  } t | | d d  d  |  j | j   d d g d d g d d g g  t  j d  j d d  } t  j d d  j d d  } t | | d  d d  |  j | j   d d g d d g d d g g  d  S(   Ni   i   i   i   i    i   i   (   RF   RG   Rl   R;   RW   Râ   R5   (   RI   Rć   Rë   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_slicing_1d_broadcast  s    11c         C  si   t  j d  } t | j _ |  j t t j f   } t	 | d d  Wd  QX|  j
 d t | j   d  S(   Ni   i   i*   s*   Cannot modify value of type readonly array(   RF   RG   t   FalseR@   t	   writeableRĂ   t	   TypeErrorR   t   TypingErrorR9   t   assertInRé   Rę   (   RI   R   RĎ   (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_setitem_readonly   s    	(   R´   Rľ   Rś   Rˇ   RŔ   RĘ   RĐ   RŇ   RÔ   RŐ   R×   RŘ   RŮ   RÚ   RŰ   RÜ   R
   RŢ   Rß   Rŕ   Rá   Rä   Rč   Rí   Rî   Rô   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyR¸   ý  s.   													t
   TestTypingc           B  s   e  Z d  Z d   Z RS(   s3   
    Check typing of basic indexing operations
    c         C  sí  d d l  m } d d l m } m } m } m } | j } t j	 t j
 d d  } t j	 t j
 d d  } t j	 t j
 d d  }	 d	 t t f | f t t f | f t t f | f t t f | | f t t f | | f t t f | | f t t f | | f t t f | f t t f | | f t t f | | f t t f | | | f t t f | | | f t t f | | | f t t f | | f t t f | | | f t t f | | | f t t f | | | f t t f | | | f t t f | | | | f t t f | | | f t t f | | | | f t t f | | | f t t f | | | f t t f | | | f t t f g }
 x |
 D]{ \ } } } t j |  } | | |  } |  j t | j  |  |  j | j j | rÎd n d |  |  j | j  qmWx |
 D]{ \ } } } t j |  } | | |  } |  j t | j  |  |  j | j j | rTd n d |  |  j | j  qóWxt |
 D]l \ } } } t j |  } | |	 |  } |  j t | j  |  |  j | j j d  |  j | j  qyWd S(
   sc   
        Check an appropriate layout is inferred for the result of array
        indexing.
        i˙˙˙˙(   t	   arraydecl(   R   t   ellipsist   slice2_typet   slice3_typei   R?   R   RT   N(    (   t   numba.typingRö   t   numba.typesR   R÷   Rř   Rů   t   get_array_index_typeR   RC   t   float64t   TrueRď   t   TupleRW   t   tupleR%   t   resultt   layoutRX   t   advanced(   RI   Rö   R   R÷   Rř   Rů   t   funct   ctyt   ftyt   atyRO   t   index_tuplet   keep_ct   _R%   t   rt   keep_f(    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   test_layout.  sf    "	(   R´   Rľ   Rś   R  (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyRő   )  s   t   __main__(8   t
   __future__R    Rť   Ro   t   numpyRF   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   R˝   R   R   R   R   R   R   t   supportR	   R
   Rˇ   t   setRR   R   R   R   R   R   R   R   R   R$   R&   R)   R*   R+   R,   R/   R0   R2   R3   R4   R6   R7   R9   R:   R;   R<   R=   R>   R¸   Rő   R´   t   main(    (    (    s8   lib/python2.7/site-packages/numba/tests/test_indexing.pyt   <module>   sZ   .																											˙ ˙ d˙ -Q