ó
\K]c           @  sú  d  d l  m Z d  d l Z d  d l j Z d  d l m Z d  d l	 m
 Z
 d  d l m Z m Z m Z m Z d d l m Z m Z m Z m Z d  d l m Z d d	 l 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 „  Z* d „  Z+ d e e f d „  ƒ  YZ, d e e j f d  „  ƒ  YZ- d! e e j f d" „  ƒ  YZ. d# e e f d$ „  ƒ  YZ/ d% e e f d& „  ƒ  YZ0 e1 d' k röe j2 ƒ  n  d S((   iÿÿÿÿ(   t   print_functionN(   t   compile_isolated(   t
   from_dtype(   t   typest   njitt   typeoft   numpy_supporti   (   t   TestCaset   CompilationCachet   MemoryLeakMixint   tag(   t   TypingError(   t   skip_unsupportedc         C  s   |  j  S(   N(   t   dtype(   t   a(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_dtype   s    c         C  s   |  j  | j ƒ S(   N(   t   viewR   (   R   t   b(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt	   use_dtype   s    c         C  s   |  j  S(   N(   t   itemsize(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_itemsize   s    c         C  s   |  j  | S(   N(   t   shape(   R   t   i(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_shape   s    c         C  s   |  j  | S(   N(   t   strides(   R   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_strides   s    c         C  s   |  j  S(   N(   t   ndim(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   array_ndim"   s    c         C  s   |  j  S(   N(   t   size(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   array_size&   s    c         C  s
   |  j  j S(   N(   t   flagst
   contiguous(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_flags_contiguous*   s    c         C  s
   |  j  j S(   N(   R   t   c_contiguous(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_flags_c_contiguous-   s    c         C  s
   |  j  j S(   N(   R   t   f_contiguous(   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_flags_f_contiguous0   s    c         C  s
   |  j  j S(   N(   t   fR   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   nested_array_itemsize4   s    c         C  s
   |  j  j S(   N(   R%   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   nested_array_shape8   s    c         C  s
   |  j  j S(   N(   R%   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   nested_array_strides<   s    c         C  s
   |  j  j S(   N(   R%   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   nested_array_ndim@   s    c         C  s
   |  j  j S(   N(   R%   R   (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   nested_array_sizeD   s    c         C  s   |  | } | j  S(   N(   R   (   t   bufR   t   sliced(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   size_after_slicing_usecaseH   s    
c         C  s
   |  j  j S(   N(   t   ctypest   data(   t   arr(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   array_ctypes_dataN   s    c         C  s   |  j  S(   N(   t   real(   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   array_realR   s    c         C  s   |  j  S(   N(   t   imag(   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   array_imagV   s    t   TestArrayAttrc           B  s•   e  Z d  „  Z d „  Z e d „ Z d „  Z e d ƒ d „  ƒ Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sJ   t  t |  ƒ j ƒ  t ƒ  |  _ t j d d t j ƒj d d ƒ |  _	 d  S(   Ni   R   i   i   (
   t   superR6   t   setUpR   t   ccachet   npt   aranget   int32t   reshapeR   (   t   self(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyR8   \   s    c         C  s~   t  | ƒ } |  j | | f ƒ } | | ƒ } |  j | | ƒ | ƒ |  j | | j d d ƒ f ƒ } |  j | | ƒ | ƒ d  S(   Nt   layoutt   A(   R   t	   get_cfunct   assertPreciseEqualt   copy(   R>   t   pyfuncR0   t   arytyt   cfunct   expected(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   check_unarya   s    !c         C  s¹   |  j  | |  j ƒ |  j  | |  j j ƒ |  j  | |  j d  d  d … ƒ t j d g ƒ j d ƒ } |  j  | | ƒ t j d ƒ } |  j  | | ƒ | rµ |  j  | | j d ƒ ƒ n  d  S(   Ni   i*   i    i   (    (   i   i    i   (   RH   R   t   TR:   t   arrayR=   t   zeros(   R>   RD   t   use_reshaped_empty_arrayR0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   check_unary_with_arraysj   s     c         C  s   |  j  j | | ƒ } | j S(   N(   R9   t   compilet   entry_point(   R>   RD   t   argspect   cres(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRA   x   s    t	   importantc         C  sƒ   t  } |  j | t j d  d  … d  d  … f t j f ƒ } xB t |  j j ƒ D]. } |  j | |  j | ƒ | |  j | ƒ ƒ qM Wd  S(   N(   R   RA   R   R<   t   rangeR   R   t   assertEqual(   R>   RD   RF   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   test_shape|   s    4c         C  sƒ   t  } |  j | t j d  d  … d  d  … f t j f ƒ } xB t |  j j ƒ D]. } |  j | |  j | ƒ | |  j | ƒ ƒ qM Wd  S(   N(   R   RA   R   R<   RS   R   R   RT   (   R>   RD   RF   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_strides„   s    4c         C  s   |  j  t ƒ d  S(   N(   RM   R   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt	   test_ndim‹   s    c         C  s   |  j  t ƒ d  S(   N(   RM   R   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt	   test_sizeŽ   s    c         C  s   |  j  t ƒ d  S(   N(   RM   R   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_itemsize‘   s    c         C  si   t  } |  j | |  j ƒ t j d t j f d t j f g ƒ } t j d d | ƒ} |  j | | ƒ d  S(   Nt   xt   yi   R   (   R   RH   R   R:   R   t   int8RK   (   R>   RD   R   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt
   test_dtype”   s
    'c         C  sw   t  j d d t  j ƒ} t } |  j | t |  j ƒ t | ƒ f ƒ } | |  j | ƒ } |  j | |  j | ƒ | ƒ d  S(   Ni   R   (   R:   t   emptyt   int16R   RA   R   R   RB   (   R>   R   RD   RF   RG   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_use_dtype›   s
    'c         C  s   |  j  t ƒ d  S(   N(   RM   R    (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_flags_contiguous£   s    c         C  s   |  j  t ƒ d  S(   N(   RM   R"   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_flags_c_contiguous¦   s    c         C  s&   t  j d k } |  j t d | ƒd  S(   Ni   i   RL   (   i   i   (   R   t   versionRM   R$   (   R>   RL   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_flags_f_contiguous©   s    (   t   __name__t
   __module__R8   RH   t   TrueRM   RA   R
   RU   RV   RW   RX   RY   R]   R`   Ra   Rb   Rd   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyR6   Z   s   		
									t   TestNestedArrayAttrc           B  sS   e  Z d  „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C  so   t  t |  ƒ j ƒ  t j d t j f d t j d f g ƒ } t j d | ƒ d |  _ t |  j j ƒ |  _	 d  S(   NR   R%   i   i   i   i    (   i   i   (
   R7   Rh   R8   R:   R   R<   t   recarrayR   R   t   nbrecord(   R>   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyR8   ²   s    *c         C  s   t  | |  j f ƒ } | j S(   N(   R   Rj   RO   (   R>   RD   RQ   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRA   ¸   s    RR   c         C  s;   t  } |  j | ƒ } |  j | |  j ƒ | |  j ƒ ƒ d  S(   N(   R'   RA   RT   R   (   R>   RD   RF   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRU   ¼   s    c         C  s;   t  } |  j | ƒ } |  j | |  j ƒ | |  j ƒ ƒ d  S(   N(   R(   RA   RT   R   (   R>   RD   RF   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRV   Ã   s    c         C  s;   t  } |  j | ƒ } |  j | |  j ƒ | |  j ƒ ƒ d  S(   N(   R)   RA   RT   R   (   R>   RD   RF   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRW   É   s    c         C  s;   t  } |  j | ƒ } |  j | |  j ƒ | |  j ƒ ƒ d  S(   N(   R*   RA   RT   R   (   R>   RD   RF   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRX   Ï   s    c         C  s;   t  } |  j | ƒ } |  j | |  j ƒ | |  j ƒ ƒ d  S(   N(   R&   RA   RT   R   (   R>   RD   RF   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRY   Õ   s    (
   Re   Rf   R8   RA   R
   RU   RV   RW   RX   RY   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRh   ±   s   					t   TestSlicedArrayAttrc           B  s   e  Z d  „  Z RS(   c         C  sÏ   t  } t | ƒ } t j d ƒ j d d ƒ } x= t | j d ƒ D]( } |  j | | | ƒ | | | ƒ ƒ qA Wt j d ƒ j d d d ƒ } x= t | j d ƒ D]( } |  j | | | ƒ | | | ƒ ƒ qŸ Wd  S(   Ni   i   i    i   i
   i
   i   (   R-   R   R:   R;   R=   RS   R   RT   (   R>   RD   RF   R0   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_size_after_slicingÝ   s    &(   Re   Rf   Rl   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRk   Ü   s   t   TestArrayCTypesc           B  s&   e  Z e Z d  „  Z e d „  ƒ Z RS(   c         C  sA   t  } t | ƒ } t j d ƒ } |  j | | ƒ | | ƒ ƒ d  S(   Ni   (   R1   R   R:   R;   RT   (   R>   RD   RF   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_array_ctypes_dataì   s    c   	        s´   d d l  m } m } m } m ‰  m } | | | | | ƒ ‡  f d †  ƒ ‰ t d t ƒ ‡ f d †  ƒ } d } | | ƒ \ } } |  j | ƒ |  j	 | t
 j | ƒ | d ƒ d  S(   Niÿÿÿÿ(   t	   CFUNCTYPEt   c_void_pt   c_int32t   c_doublet   c_boolc           s¤   y ˆ  | j  |  ƒ } ˆ  d j  | ƒ } t j | d | d t j ƒ} t j d d | d t j ƒ} | | j d | d <t SWn d d  l } | j ƒ  t SXd  S(   Ni   t   bufferR   i    iÿÿÿÿ(	   t   from_addressR:   t   ndarrayt   float64R   Rg   t	   tracebackt   print_exceptiont   False(   t   inptrR   t   outptrt   inbuft   outbufR   R   Rx   (   Rr   (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   callback÷   s    
t   parallelc           sV   t  j |  ƒ } t  j d ƒ } | j } | j } ˆ  | j |  | j ƒ } | | d f S(   Ni   i    (   R:   t   onesR^   R.   R/   (   R   R0   t   outt   inctt   outctt   status(   R   (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   foo  s    		i   i    (   R.   Ro   Rp   Rq   Rr   Rs   R   Rg   t
   assertTrueRB   R:   R   (	   R>   Ro   Rp   Rq   Rs   R†   R   R…   t   got(    (   Rr   R   s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt'   test_array_ctypes_ref_error_in_parallelò   s    ($(   Re   Rf   Rz   t   _numba_parallel_test_Rn   R   R‰   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyRm   è   s   	t   TestRealImagAttrc           B  sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C  s€   t  | ƒ } d } t j | ƒ t j | ƒ d } |  j | | ƒ | | ƒ ƒ | j d d ƒ } |  j | | ƒ | | ƒ ƒ d  S(   Ni
   y              $@i   i   (   R   R:   R;   RB   R=   (   R>   RD   RF   R   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   check_complex  s     c         C  s   |  j  t ƒ d  S(   N(   RŒ   R3   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_complex_real$  s    c         C  s   |  j  t ƒ d  S(   N(   RŒ   R5   (   R>   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_complex_imag'  s    c         C  sñ   t  } t | ƒ } d } t j | d | ƒ} |  j | | ƒ | | ƒ ƒ | j d d ƒ } |  j | | ƒ | | ƒ ƒ |  j | j | | ƒ j ƒ |  j | j | | ƒ j ƒ | | ƒ } |  j | d d ƒ d | d <|  j | d d ƒ d  S(	   Ni
   R   i   i   i    (   i    i    (   i    i    (   i    i    (	   R3   R   R:   R;   RB   R=   RT   R/   t   assertNotEqual(   R>   R   RD   RF   R   R0   R2   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   check_number_real*  s    
c         C  s:   x3 t  j t  j t  j t  j g D] } |  j | ƒ q Wd S(   s5   
        Testing .real of non-complex dtypes
        N(   R:   t   uint8R<   t   float32Rw   R   (   R>   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_number_real=  s    %c         C  sí   t  } t | ƒ } d } t j | d | ƒ} |  j | | ƒ | | ƒ ƒ | j d d ƒ } |  j | | ƒ | | ƒ ƒ |  j | | ƒ j ƒ  t j | ƒ j ƒ  ƒ | | ƒ } |  j	 t
 ƒ  } d | d <Wd  QX|  j d t | j ƒ ƒ d  S(   Ni
   R   i   i   i   i    s#   assignment destination is read-only(   R5   R   R:   R;   RB   R=   RT   t   tolistt
   zeros_liket   assertRaisest
   ValueErrort   strt	   exception(   R>   R   RD   RF   R   R0   R4   t   raises(    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   check_number_imagD  s    +	c         C  s:   x3 t  j t  j t  j t  j g D] } |  j | ƒ q Wd S(   s5   
        Testing .imag of non-complex dtypes
        N(   R:   R‘   R<   R’   Rw   R›   (   R>   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_number_imagW  s    %c         C  sE  t  j d t  j f d t  j f g ƒ } t  j d d | ƒ} t  j j | j ƒ | d <t  j j | j ƒ d | d <|  j t | ƒ | ƒ |  j	 t
 | ƒ j ƒ  t  j | ƒ j ƒ  ƒ t t ƒ } t t
 ƒ } |  j t ƒ  } | | ƒ Wd  QX|  j d t | j ƒ ƒ |  j t ƒ  } | | ƒ Wd  QX|  j d t | j ƒ ƒ d  S(   NR2   R4   i   R   y        ÍÌÌÌÌÌô?s&   cannot access .real of array of Records&   cannot access .imag of array of Record(   R:   R   R’   t	   complex64RK   t   randomR   t   assertIsR3   RT   R5   R”   R•   R   R–   R   t   assertInR˜   R™   (   R>   t   rectypR0   t   jit_array_realt   jit_array_imagRš   (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   test_record_real^  s     '+		(
   Re   Rf   RŒ   R   RŽ   R   R“   R›   Rœ   R¤   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyR‹     s   	
						t   __main__(3   t
   __future__R    t   numpyR:   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   t   numba.numpy_supportR   t   numbaR   R   R   R   t   supportR   R   R	   R
   t   numba.errorsR   t   test_parforsR   R   R   R   R   R   R   R   R    R"   R$   R&   R'   R(   R)   R*   R-   R1   R3   R5   R6   Rh   Rk   Rm   R‹   Re   t   main(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_array_attr.pyt   <module>   sD   ""																			W+1a