ó
\K]c           @` så  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m	 Z
 d  d l m Z d d l m Z m Z m Z e d e ƒ d „  ƒ Z e d e ƒ d	 „  ƒ Z e d e ƒ d
 „  ƒ Z e d e ƒ d „  ƒ Z e d e ƒ d „  ƒ Z d „  Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e d ƒ Z e j  d k Z! e j  d k Z" e j  d k Z# d e e f d „  ƒ  YZ$ d e e f d „  ƒ  YZ% e& d k ráe
 j' ƒ  n  d S(    i    (   t   print_functiont   divisiont   absolute_importN(   t   unittest_support(   t   jiti   (   t   TestCaset   compile_functiont   MemoryLeakMixint   nopythonc         C` s
   t  |  ƒ S(   N(   t   len(   t   buf(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   len_usecase   s    c         C` s   |  | S(   N(    (   R
   t   i(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   getitem_usecase   s    c         C` s!   |  | | !} | d d | d S(   Ni    i   iÿÿÿÿ(    (   R
   R   t   jt   s(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   getslice_usecase   s    c         C` s   | |  | <d  S(   N(    (   R
   R   t   v(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   setitem_usecase   s    c         C` s?   d } x2 t  |  ƒ D]$ \ } } | | 7} | | d 9} q W| S(   Ng        i   (   t	   enumerate(   R
   t   resR   t   x(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   iter_usecase"   s
    
c         C` s5   d t  ƒ  } t d | t ƒ  ƒ } t d t ƒ | ƒ S(   Ns'   def func(x):
        return x.%(attr)s
t   funcR   (   t   localsR   t   globalsR   t   True(   t   attrt   codet   pyfunc(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt
   attrgetter+   s    t
   contiguoust   c_contiguoust   f_contiguoust   itemsizet   nbytest   ndimt   readonlyt   shapet   stridesi   t   TestBufferProtocolc           B` sŒ   e  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 RS(   s6   
    Test operations on buffer-providing objects.
    c         c` s   d } xr d d d d d d d  d! d d# f d d% f d& d' g D]: \ } } t  j  | g  t | ƒ D] } | | ^ q_ ƒ Vq= Wd  S((   Ni
   t   biýÿÿÿt   Bi    t   hixìÿÿt   Hi@œ  R   i`yþÿt   Ii@B t   lt   Lt   qi   i<   t   Qi?   i   t   fg      ø?t   dg      ø¿(   R)   iýÿÿÿ(   R*   i    (   R+   ixìÿÿ(   R,   i@œ  (   R   i`yþÿ(   R-   i@B (   R.   i`yþÿ(   R/   i@B I       I       ðl            l           (   R2   g      ø?(   R3   g      ø¿(   t   arrayt   range(   t   selft   nt   lettert   offsetR   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   _arraysJ   s    		c         c` s^  d } t  t d ƒ ƒ Vt  d ƒ Vx‚ d" d# d$ d% d& d' d d) d f d d d+ f d, d- d d d. f d d d/ f g D]2 \ } } } t  t j | | | ƒ j | ƒ ƒ Vqq Wt j d ƒ j d0 ƒ } | j j rØ | j j	 sÞ t
 ‚ t  | ƒ V| j } | j j	 r| j j st
 ‚ t  | ƒ V| d  d  d … } | j j	 rI| j j sOt
 ‚ t  | ƒ Vd  S(1   Ni
   t	   abcdefghit   int8iöÿÿÿt   uint8i    t   int16ixìÿÿiè  t   uint16i@œ  iPÃ  t   int32i`yþÿi † t   uint32i@B t   int64i   i<   t   uint64i@   t   float32g      ø?g      @t   float64t	   complex64y               Ài   y              @t
   complex128i   i   (   R<   iöÿÿÿi
   (   R=   i    i
   (   R>   ixìÿÿiè  (   R?   i@œ  iPÃ  (   R@   i`yþÿi † (   RA   i    i@B I       I       ðl            l   öÿÿÿ (   RD   g      ø?g      @(   RE   g      ø?g      @y      (@      @y      (@      @(   i   i   (   t
   memoryviewt	   bytearrayt   npt   linspacet   astypet   aranget   reshapet   flagsR    R!   t   AssertionErrort   T(   R6   R7   t   dtypet   startt   stopt   arr(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   _memoryviews\   s4    '	 c         c` sP   t  r d Vn  t rL t d ƒ Vt j d ƒ } | j d t ƒ t | ƒ Vn  d  S(   Nt   xyzR;   i   t   write(   t   bytes_supportedt   memoryview_structured_indexingRH   RJ   RM   t   setflagst   False(   R6   RU   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   _readonlies{   s    c         G` s)   | j  } |  j | | Œ  | | Œ  ƒ d  S(   N(   t   py_funct   assertPreciseEqual(   R6   t   jitfunct   argsR   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   _check_unary„   s    	c         C` s   |  j  t | ƒ d  S(   N(   Rb   R   (   R6   t   obj(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt	   check_lenˆ   s    c         C` s   |  j  t | ƒ d  S(   N(   Rb   R   (   R6   Rc   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt
   check_iter‹   s    c         C` s‡   d „  } xw | | ƒ D]i } y | | } Wn9 t  t f k
 re t | t ƒ r_ | j | } qf ‚  n X|  j t | | ƒ | ƒ q Wd  S(   Nc         s` sq   y |  j  } Wn  t k
 r/ t |  ƒ f } n Xx: t j | ƒ D]) } t | ƒ d k rd | d Vq@ | Vq@ Wd  S(   Ni   i    (   R&   t   AttributeErrorR	   RJ   t   ndindex(   Rc   R&   t   tup(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   yield_indices‘   s    (   t   NotImplementedErrort	   TypeErrort
   isinstanceRH   Rc   R_   R   (   R6   Rc   Ri   R   t   expected(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   check_getitemŽ   s    	c         C` s£   xœ t  t | ƒ ƒ D]ˆ } t | ƒ } | | d d } t | | | ƒ |  j | | | ƒ x= t | ƒ D]/ \ } } | | k rh |  j | | | ƒ qh qh Wq Wd  S(   Ni   i   (   R5   R	   t   listR   t   assertEqualR   (   R6   Rc   R   t   origt   valR   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   check_setitemª   s    c         C` s$   |  j  t | d t | ƒ d ƒ d  S(   Ni   (   Rb   R   R	   (   R6   Rc   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   check_getslice´   s    c         C` s¢   |  j  t d ƒ ƒ t r) |  j  d ƒ n  x! |  j ƒ  D] } |  j  | ƒ q6 Wt rz x$ |  j ƒ  D] } |  j  | ƒ q` Wn  x! |  j ƒ  D] } |  j | ƒ q‡ Wd  S(   Ni   RW   (   Rd   RI   RY   RV   t   array_supportedR:   R]   Rn   (   R6   t   memRU   R
   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_len·   s    c         C` s«   |  j  t d ƒ ƒ t r) |  j  d ƒ n  t rV x$ |  j ƒ  D] } |  j  | ƒ q< Wn  t rƒ x$ |  j ƒ  D] } |  j  | ƒ qi Wn  x! |  j ƒ  D] } |  j  | ƒ q Wd  S(   Nt   abcRW   (   Rn   RI   RY   RZ   RV   Ru   R:   R]   (   R6   Rv   RU   R
   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_getitemÃ   s    c      
   C` s»   |  j  ƒ   |  j t d ƒ ƒ Wd  QXt r< |  j d ƒ n  t rX |  j t d ƒ ƒ n  t r“ |  j  ƒ  $ |  j t j d t d ƒ ƒ ƒ Wd  QXn  x! |  j	 ƒ  D] } |  j
 | ƒ q  Wd  S(   Nt   abcdet   xyzuvwR   i
   (   t   assertTypingErrorRt   RI   RY   RZ   RH   Ru   R4   R5   R]   Rn   (   R6   R
   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_getsliceÐ   s    (c         C` s¨   |  j  t d ƒ ƒ t r@ x$ |  j ƒ  D] } |  j  | ƒ q& Wn  t rm x$ |  j ƒ  D] } |  j | ƒ qS Wn  x4 |  j ƒ  D]& } |  j ƒ   |  j  | ƒ Wd  QXqz Wd  S(   NR;   (	   Rs   RI   Ru   R:   RZ   RV   Rn   R]   R|   (   R6   RU   Rv   R
   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_setitemÝ   s    c         C` sš   |  j  t d ƒ ƒ t r) |  j  d ƒ n  t rE |  j  t d ƒ ƒ n  t rr x$ |  j ƒ  D] } |  j  | ƒ qX Wn  x! |  j ƒ  D] } |  j | ƒ q Wd  S(   NRx   RW   (	   Re   RI   RY   RZ   RH   Ru   R:   R]   Rn   (   R6   RU   R
   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt	   test_iterê   s    (   t   __name__t
   __module__t   __doc__R:   RV   R]   Rb   Rd   Re   Rn   Rs   Rt   Rw   Ry   R}   R~   R   (    (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyR(   E   s   									
					t   TestMemoryViewc           B` sq   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j e j d k d	 ƒ d
 „  ƒ Z RS(   s=   
    Test memoryview-specific attributes and operations.
    c         c` s„   t  j d ƒ } | V| j d ƒ } | V| j V| d  d  d … V| j d t ƒ | Vt  j d ƒ } | j d k s{ t ‚ | Vd  S(	   Ni   i   i   i   RX   i    (   i   i   (    (	   RJ   RM   RN   RQ   R[   R\   t   zerosR$   RP   (   R6   RU   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyR:   ü   s    c         C` s@   x9 |  j  ƒ  D]+ } t | ƒ } |  j t | ƒ | j ƒ q Wd  S(   N(   R:   RH   R_   t   ndim_usecaseR$   (   R6   RU   t   m(    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt	   test_ndim	  s    c         C` s@   x9 |  j  ƒ  D]+ } t | ƒ } |  j t | ƒ | j ƒ q Wd  S(   N(   R:   RH   R_   t   shape_usecaseR&   (   R6   RU   R†   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt
   test_shape  s    c         C` s@   x9 |  j  ƒ  D]+ } t | ƒ } |  j t | ƒ | j ƒ q Wd  S(   N(   R:   RH   R_   t   strides_usecaseR'   (   R6   RU   R†   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_strides  s    c         C` s@   x9 |  j  ƒ  D]+ } t | ƒ } |  j t | ƒ | j ƒ q Wd  S(   N(   R:   RH   R_   t   itemsize_usecaseR"   (   R6   RU   R†   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_itemsize  s    c         C` sG   x@ |  j  ƒ  D]2 } t | ƒ } |  j t | ƒ | j | j ƒ q Wd  S(   N(   R:   RH   R_   t   nbytes_usecaset   sizeR"   (   R6   RU   R†   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_nbytes  s    c         C` sŽ   x= |  j  ƒ  D]/ } t | ƒ } |  j t | ƒ | j j ƒ q Wt d ƒ } |  j t | ƒ t ƒ t t d ƒ ƒ } |  j t | ƒ t ƒ d  S(   NRW   (	   R:   RH   t   assertIst   readonly_usecaseRO   t	   writeableR   RI   R\   (   R6   RU   R†   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_readonly"  s    !i   s+   memoryview.*contiguous doesn't exist on 2.7c         C` sÛ   t  t d ƒ ƒ } |  j t | ƒ t ƒ |  j t | ƒ t ƒ |  j t | ƒ t ƒ x€ |  j ƒ  D]r } t  | ƒ } |  j t | ƒ | j j	 p— | j j
 ƒ |  j t | ƒ | j j
 ƒ |  j t | ƒ | j j	 ƒ qa Wd  S(   NRW   (   RH   RI   R‘   t   contiguous_usecaseR   t   c_contiguous_usecaset   f_contiguous_usecaseR:   RO   R!   R    (   R6   R†   RU   (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   test_contiguous+  s    (   i   (   R€   R   R‚   R:   R‡   R‰   R‹   R   R   R”   t   unittestt
   skipUnlesst   syst   version_infoR˜   (    (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyRƒ   ÷   s   								t   __main__(   i   (   i   (   i   ((   t
   __future__R    R   R   R4   R›   t   numpyRJ   t   numbaR   R™   R   t   supportR   R   R   R   R   R   R   R   R   R   R•   R–   R—   RŒ   RŽ   R…   R’   Rˆ   RŠ   Rœ   Ru   RY   RZ   R(   Rƒ   R€   t   main(    (    (    s?   lib/python2.7/site-packages/numba/tests/test_buffer_protocol.pyt   <module>   s8   		²D