
    xKgj"                        d dl Z d dlZd dlmZ d dlmZmZmZ d dl	Z	 ed      d        Z
 ed      d        Z ed      d        Z ed      d	        Z ed      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 G d dee      Z G d dee      Zedk(  r e	j8                          yy)    N)jit)TestCasecompile_functionMemoryLeakMixinTnopythonc                     t        |       S N)len)bufs    d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_buffer_protocol.pylen_usecaser   
   s    s8O    c                     | |   S r
    )r   is     r   getitem_usecaser      s    q6Mr   c                 (    | || }|d   d|d   z  z   S )Nr      r   )r   r   jss       r   getslice_usecaser      s$    AaAQ4!ae)r   c                     || |<   y r
   r   )r   r   vs      r   setitem_usecaser      s    CFr   c                 J    d}t        |       D ]  \  }}||z  }||dz   z  } |S )Ng           )	enumerate)r   resr   xs       r   iter_usecaser"      s6    
C#1qq1u  Jr   c                 j    dt               z  }t        d|t                     } t        d      |      S )Nz'def func(x):
        return x.%(attr)s
funcTr   )localsr   globalsr   )attrcodepyfuncs      r   
attrgetterr*   (   s7    hD fdGI6F3f%%r   
contiguousc_contiguousf_contiguousitemsizenbytesndimreadonlyshapestridesc                   d    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d Zy)TestBufferProtocolz6
    Test operations on buffer-providing objects.
    c           	   #      K   d}dD ]7  \  }}t        j                   |t        |      D cg c]  }||z   	 c}       9 y c c}w w)N
   ))b)Br   )hx)H@  )r   `y)I@B )lr?   )LrA   )q         )Ql           )f      ?)dg      )arrayrange)selfnletteroffsetr   s        r   _arrayszTestBufferProtocol._arrays@   sK     NFF ++f58&D8aq6z8&DEE 'Es   (AAAc              #     K   d}t        t        d             t        d       dD ]7  \  }}}t        t        j                  |||      j	                  |             9 t        j
                  d      j                  d      }|j                  j                  r|j                  j                  rJ t        |       |j                  }|j                  j                  r|j                  j                  rJ t        |       |d d d   }|j                  j                  s|j                  j                  rJ t        |       y w)Nr7   	   abcdefghi))int8ir7   )uint8r   r7   )int16r<   i  )uint16r>   iP  )int32r?   i )uint32r   rA   )int64rE   r7   )uint64r   l    )float32rH         @)float64rH   r\   )	complex64                    (@      @)
complex128r_   r`            r   )
memoryview	bytearraynplinspaceastypearangereshapeflagsr,   r-   T)rL   rM   dtypestartstoparrs         r   _memoryviewszTestBufferProtocol._memoryviewsR   s	    <011&&#E5$ R[[a8??FGG#  iim##F+yy%%cii.D.DDDoeeyy%%cii.D.DDDo#A#h99))#))2H2HHHos   EEc              #      K   d t        d       t        j                  d      }|j                  d       t        |       y w)N   xyzrR      Fwrite)rf   rh   rk   setflagsrL   rr   s     r   _readonlieszTestBufferProtocol._readonliesq   s;     &&iil5!os   AA	c                 L    |j                   }| j                   ||  ||        y r
   )py_funcassertPreciseEqual)rL   jitfuncargsr)   s       r   _check_unaryzTestBufferProtocol._check_unaryx   s#    >r   c                 0    | j                  t        |       y r
   )r   r   rL   objs     r   	check_lenzTestBufferProtocol.check_len|   s    +s+r   c                 0    | j                  t        |       y r
   )r   r"   r   s     r   
check_iterzTestBufferProtocol.check_iter   s    ,,r   c                     d } ||      D ]$  }	 ||   }| j                  t        ||      |       & y # t         t        f$ r$ t        |t              r|j                  |   }n Y Qw xY w)Nc              3      K   	 | j                   }t        j                  |      D ]  }t        |      dk(  r|d    |  y # t        $ r t        |       f}Y Lw xY ww)Nr   r   )r2   AttributeErrorr   rh   ndindex)r   r2   tups      r   yield_indicesz7TestBufferProtocol.check_getitem.<locals>.yield_indices   s_     "		 zz%( s8q=a&LI ) " "C	"s'   A A 5A AA AA )NotImplementedError	TypeError
isinstancerf   r   r~   r   )rL   r   r   r   expecteds        r   check_getitemz TestBufferProtocol.check_getitem   sv    	 s#Aq6 ##OC$;XF $ (3 c:.  #wwqzH 	s   40A'&A'c                    t        t        |            D ]h  }t        |      }||   dz  dz   }t        |||       | j	                  ||   |       t        |      D ]   \  }}||k7  s| j	                  ||   |       " j y )Nr   r   )rK   r   listr   assertEqualr   )rL   r   r   origvalr   s         r   check_setitemz TestBufferProtocol.check_setitem   s{    s3xA9Da&A+/CCC(SVS)#D/36$$SVS1 * !r   c                 L    | j                  t        |dt        |      dz
         y )Nr   )r   r   r   r   s     r   check_getslicez!TestBufferProtocol.check_getslice   s    *CCHqLAr   c                 >   | j                  t        d             | j                  d       | j                         D ]  }| j                  |        | j                         D ]  }| j                  |        | j	                         D ]  }| j                  |        y )Nrv   ru   )r   rg   rs   rP   r{   r   rL   memrr   r   s       r   test_lenzTestBufferProtocol.test_len   sz    y|$v$$&CNN3 '<<>CNN3 "##%Cs# &r   c                 >   | j                  t        d             | j                  d       | j                         D ]  }| j                  |        | j                         D ]  }| j                  |        | j	                         D ]  }| j                  |        y Ns   abcru   )r   rg   rs   rP   r{   r   s       r   test_getitemzTestBufferProtocol.test_getitem   s    9V,-6"$$&Cs# '<<>Cs# "##%Cs# &r   c           	         | j                         5  | j                  t        d             d d d        | j                  d       | j                  t        d             | j                         5  | j                  t	        j                  dt        d                   d d d        | j                         D ]  }| j                  |        y # 1 sw Y   xY w# 1 sw Y   <xY w)Ns   abcdes   xyzuvwr   r7   )assertTypingErrorr   rg   rf   rJ   rK   r{   r   )rL   r   s     r   test_getslicez TestBufferProtocol.test_getslice   s    ##%	( 34 &I&Jy12##%Cr ;< &##%Cs# & &% &%s   C//CCC"c                 f   | j                  t        d             | j                         D ]  }| j                  |        | j                         D ]  }| j	                  |        | j                         D ],  }| j                         5  | j                  |       d d d        . y # 1 sw Y   9xY w)NrR   )r   rg   rP   rs   r   r{   r   )rL   rr   r   r   s       r   test_setitemzTestBufferProtocol.test_setitem   s    9\23<<>Cs# "$$&Cs# ' ##%C'')""3' *) &))s   
B''B0	c                 &   | j                  t        d             | j                  d       | j                  t        d             | j                         D ]  }| j                  |        | j	                         D ]  }| j                  |        y r   )r   rg   rf   rP   r{   r   )rL   rr   r   s      r   	test_iterzTestBufferProtocol.test_iter   sm    	&)*
6*+<<>COOC  "##%Cs# &r   N)__name__
__module____qualname____doc__rP   rs   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r5   ;   sP    F$>?,-G82B$$$	($r   r5   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestMemoryViewz=
    Test memoryview-specific attributes and operations.
    c              #     K   t        j                  d      }| |j                  d      }| |j                   |d d d    |j	                  d       | t        j
                  d      }|j                  dk(  sJ | y w)Nrb   rc   r   Frw   r   r   )rh   rk   rl   rn   ry   zerosr0   rz   s     r   rP   zTestMemoryView._arrays   sv     iim	kk&!	ee#A#h5!	hhrlxx1}}	s   BB
c                     | j                         D ]2  }t        |      }| j                  t        |      |j                         4 y r
   )rP   rf   r~   ndim_usecaser0   rL   rr   ms      r   	test_ndimzTestMemoryView.test_ndim   s3    <<>C3A##LOSXX> "r   c                     | j                         D ]2  }t        |      }| j                  t        |      |j                         4 y r
   )rP   rf   r~   shape_usecaser2   r   s      r   
test_shapezTestMemoryView.test_shape   s4    <<>C3A##M!$4cii@ "r   c                     | j                         D ]2  }t        |      }| j                  t        |      |j                         4 y r
   )rP   rf   r~   strides_usecaser3   r   s      r   test_strideszTestMemoryView.test_strides   s4    <<>C3A##OA$6D "r   c                     | j                         D ]2  }t        |      }| j                  t        |      |j                         4 y r
   )rP   rf   r~   itemsize_usecaser.   r   s      r   test_itemsizezTestMemoryView.test_itemsize   s5    <<>C3A##$4Q$7F "r   c                     | j                         D ]?  }t        |      }| j                  t        |      |j                  |j
                  z         A y r
   )rP   rf   r~   nbytes_usecasesizer.   r   s      r   test_nbyteszTestMemoryView.test_nbytes  s=    <<>C3A##N1$5sxx#,,7NO "r   c                 N   | j                         D ]=  }t        |      }| j                  t        |      |j                  j
                          ? t        d      }| j                  t        |      d       t        t        d            }| j                  t        |      d       y )Nru   TF)rP   rf   assertIsreadonly_usecaserm   	writeablerg   r   s      r   test_readonlyzTestMemoryView.test_readonly	  s    <<>C3AMM*1-3993F3F/FG " v&q)40y()&q)51r   c                 X   t        t        d            }| j                  t        |      d       | j                  t	        |      d       | j                  t        |      d       | j                         D ]  }t        |      }| j                  t        |      |j                  j                  xs |j                  j                         | j                  t	        |      |j                  j                         | j                  t        |      |j                  j                          y )Nru   T)
rf   rg   r   contiguous_usecasec_contiguous_usecasef_contiguous_usecaserP   rm   r-   r,   )rL   r   rr   s      r   test_contiguouszTestMemoryView.test_contiguous  s    y()(+T2*1-t4*1-t4<<>C3AMM,Q/))00JCII4J4JLMM.q13993I3IJMM.q13993I3IJ "r   N)r   r   r   r   rP   r   r   r   r   r   r   r   r   r   r   r   r      s4    ?
A
E
G
P
2Kr   r   __main__)rJ   numpyrh   numbar   numba.tests.supportr   r   r   unittestr   r   r   r   r"   r*   r   r   r   r   r   r   r   r   r   r5   r   r   mainr   r   r   <module>r      s6      K K  d  d  d 
 d  d &  - !.1 !.1 j) H%&!j) 7#Y'`$( `$F?K_h ?KD zHMMO r   