ó
\K]c           @  sÙ   d  d l  m Z d  d l Z d  d l Z d  d l j Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z d d l m Z m Z m Z d „  Z d „  Z d	 „  Z d
 „  Z d e e f d „  ƒ  YZ e d k rÕ e j ƒ  n  d S(   iÿÿÿÿ(   t   print_functionN(   t   typest   jitt   typeof(   t   TypingErrori   (   t   MemoryLeakMixint   TestCaset   tagc         C  s   |  | S(   N(    (   t   at   b(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   getitem_usecase   s    c         C  s   | |  | <d  S(   N(    (   R   t   idxR	   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   setitem_usecase   s    c         C  s   t  j |  | ƒ S(   N(   t   npt   take(   t   At   indices(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   np_take   s    c         C  s   t  j |  | d | ƒS(   Nt   axis(   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   np_take_kws   s    t   TestFancyIndexingc           B  sž   e  Z e d  „ Z e d „ Z e d „ Z e d „ Z d „  Z d „  Z d „  Z	 d „  Z
 e d ƒ d	 „  ƒ Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sg   t  j d | d d g ƒ g } | rc | t  j d d | d g ƒ t  j d d d d g ƒ g 7} n  | S(   Ni    i   iþÿÿÿ(   R   t   int16t   uint16t   bool_(   t   selft   Nt   manyt   choices(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   generate_advanced_indices   s
    "c      	   c  sä   | rw t  d d d ƒ t  d | d d ƒ t  d d d ƒ t  | d d d ƒ t  | d d d ƒ t  d | d ƒ g } n) t  d | d d ƒ t  d | d ƒ g } x= t | d ƒ D]+ } x" t j | d | ƒD] } | VqÍ Wq± Wd S(   sG   
        Generate basic index tuples with 0 to *maxdim* items.
        i   i    i   iþÿÿÿiÿÿÿÿt   repeatN(   t   slicet   Nonet   ranget	   itertoolst   product(   R   R   t   maxdimR   R   t   ndimt   tup(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   generate_basic_index_tuples"   s    c         c  s‡   t  |  j | d | ƒƒ } xe t | d ƒ D]S } xJ |  j | | d | ƒ D]/ } x& | D] } | |  | f | | VqY WqL Wq, Wd S(   s‚   
        Generate advanced index tuples by generating basic index tuples
        and adding a single advanced index item.
        R   i   N(   t   listR   R    R&   (   R   R   R#   R   R   t   iR%   t   adv(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   generate_advanced_index_tuples9   s
     c         c  s]   xV |  j  | | | ƒ D]? } x6 t t | ƒ d ƒ D] } | |  t f | | Vq3 Wq Wd S(   sr   
        Same as generate_advanced_index_tuples(), but also insert an
        ellipsis at various points.
        i   N(   R*   R    t   lent   Ellipsis(   R   R   R#   R   R%   R(   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt,   generate_advanced_index_tuples_with_ellipsisF   s    c   
      C  sé   t  } t d t ƒ | ƒ } | j ƒ  } | j p3 | } x¬ | D]¤ } | | | ƒ } | j | k	 sg t ‚ | | | ƒ }	 |  j |	 j | j ƒ |  j |	 j | j ƒ t	 j
 j |	 | ƒ |	 j r= |	 j d ƒ t	 j
 j | | ƒ q= q= Wd  S(   Nt   nopythoni*   (   R
   R   t   Truet   copyt   baset   AssertionErrort   assertEqualt   shapet   dtypeR   t   testingt   assert_equalt   sizet   fill(
   R   t   arrR   t   pyfunct   cfunct   origt	   orig_baset   indext   expectedt   got(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   check_getitem_indicesO   s    	c         C  sa   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ } |  j | | ƒ } |  j | | ƒ d  S(   Ni   i   (   R   t   aranget   reshapet   astypet   int32R*   RB   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_getitem_tuplee   s
    /c         C  sg   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ } |  j | | d t ƒ} |  j | | ƒ d  S(   Ni   i   R   (   R   RC   RD   RE   RF   R-   t   FalseRB   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_getitem_tuple_and_ellipsisn   s    /	c         C  sP   t  d t ƒ d „  ƒ } t j d ƒ } | | d ƒ |  j | d | d ƒ d  S(   NR.   c         S  s   |  d |  d <d  S(   N.i   i    (   .i   (   .i    (    (   R:   t   v(    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   fooz   s    i   i   i    (   R   R/   R   RC   R3   (   R   RK   R:   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_ellipsis_getsetitemx   s    t	   importantc         C  s^   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ } |  j | ƒ } |  j | | ƒ d  S(   Ni   i   (   R   RC   RD   RE   RF   R   RB   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_getitem_array‚   s
    /c   	      C  s·   t  } t d t ƒ | ƒ } x• | D] } | | } t j | ƒ } t j | ƒ } | | | | ƒ | | | | ƒ |  j | j | j ƒ |  j | j | j ƒ t j j	 | | ƒ q" Wd  S(   NR.   (
   R   R   R/   R   t
   zeros_likeR3   R4   R5   R6   R7   (	   R   R:   R   R;   R<   R?   t   srcR@   RA   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   check_setitem_indices‹   s    
c         C  sa   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ } |  j | | ƒ } |  j | | ƒ d  S(   Ni   i   (   R   RC   RD   RE   RF   R*   RQ   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_setitem_tuple›   s
    /c         C  sg   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ } |  j | | d t ƒ} |  j | | ƒ d  S(   Ni   i   R   (   R   RC   RD   RE   RF   R-   RH   RQ   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_setitem_tuple_and_ellipsis£   s    /	c         C  sb   d } d } t  j | | ƒ j | f | ƒ j t  j ƒ d } |  j | ƒ } |  j | | ƒ d  S(   Ni   i   i
   (   R   RC   RD   RE   RF   R   RQ   (   R   R   R$   R:   R   (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_setitem_array­   s
    3c   
        sZ  t  ‰ t d t ƒ ˆ ƒ ‰  ‡  ‡ ‡ f d †  } g  } | j d ƒ | j t j d d d d d g ƒ ƒ | j t j d g d g g d g d g g g ƒ ƒ | j d d d d d g ƒ | j d ƒ | j d d f ƒ xV t j t j g D]B } t j d d	 | ƒj	 d ƒ } x | D] } | | | ƒ qWqë W| j
 } | | d t j | ƒ t j | d ƒ | g | d g g } x1 | D]) } ˆ j t ƒ  ˆ  | | ƒ Wd  QXq€Wˆ j t ƒ  ˆ  | d g ƒ Wd  QXˆ j t ƒ * t d t ƒ t ƒ }	 |	 | d d ƒ Wd  QXˆ j t ƒ - t d t ƒ t ƒ }	 |	 | d d d ƒWd  QXˆ j ƒ  d  S(   NR.   c           s]   ˆ |  | ƒ } ˆ  |  | ƒ } ˆ j  | | ƒ t | d ƒ rY ˆ j | j | j k ƒ n  d  S(   Nt   order(   t   assertPreciseEqualt   hasattrR3   RU   (   R:   t   indR@   RA   (   R<   R;   R   (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   check»   s
    i   i   i   i   i   i   R5   i   g333333û?R   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   (   R   R   R/   t   appendR   t   arrayt   int64t
   complex128RC   RD   R8   t   assertRaisest
   IndexErrorR   R   t   disable_leak_check(
   R   RY   t   test_indicest   dtR   RX   t   szAt   illegal_indicest   xt   take_kws(    (   R<   R;   R   s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   test_np_take¶   s:    %4	((   t   __name__t
   __module__R/   R   R&   R*   R-   RB   RG   RI   RL   R   RN   RQ   RR   RS   RT   Rg   (    (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyR      s   					
	
				
		t   __main__(   t
   __future__R    R!   t   numpyR   t   numba.unittest_supportt   unittest_supportt   unittestt   numbaR   R   R   t   numba.errorsR   t   supportR   R   R   R
   R   R   R   R   Rh   t   main(    (    (    s>   lib/python2.7/site-packages/numba/tests/test_fancy_indexing.pyt   <module>   s   				×