
    shj"                        S SK r S SKrS SKJr  S SKJrJrJr  S SK	r	\" SS9S 5       r
\" SS9S 5       r\" SS9S 5       r\" SS9S	 5       r\" SS9S
 5       rS r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r\" S5      r " S S\\5      r " S S\\5      r\S:X  a  \	R8                  " 5         gg)    N)jit)TestCasecompile_functionMemoryLeakMixinTnopythonc                     [        U 5      $ N)len)bufs    t/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_buffer_protocol.pylen_usecaser   
   s    s8O    c                 
    X   $ r
    )r   is     r   getitem_usecaser      s	    6Mr   c                 &    XU nUS   SUS   -  -   $ )Nr      r   )r   r   jss       r   getslice_usecaser      s"    aAQ4!ae)r   c                     X U'   g r
   r   )r   r   vs      r   setitem_usecaser      s	    Fr   c                 H    Sn[        U 5       H  u  p#X-  nXS-   -  nM     U$ )Ng           )	enumerate)r   resr   xs       r   iter_usecaser"      s0    
C#1u  Jr   c                 d    S[        5       -  n[        SU[        5       5      n[        SS9" U5      $ )Nz'def func(x):
        return x.%(attr)s
funcTr   )localsr   globalsr   )attrcodepyfuncs      r   
attrgetterr*   (   s5    hD fdGI6Ff%%r   
contiguousc_contiguousf_contiguousitemsizenbytesndimreadonlyshapestridesc                   l    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)TestBufferProtocol;   z.
Test operations on buffer-providing objects.
c           	   #      #    SnS H:  u  p#[         R                   " U[        U5       Vs/ s H  oDU-   PM	     sn5      v   M<     g s  snf 7f)N
   ))b)Br   )hx)H@  )r   `y)I@B )lr@   )LrB   )q         )Ql           )f      ?)dg      )arrayrange)selfnletteroffsetr   s        r   _arraysTestBufferProtocol._arrays@   sF     NF ++f58&D8a6z8&DEE 'Es   (AAAc              #     #    Sn[        [        S5      5      v   [        S5      v   S H7  u  p#n[        [        R                  " X4U5      R	                  U5      5      v   M9     [        R
                  " S5      R                  S5      nUR                  R                  (       a  UR                  R                  (       a   e[        U5      v   UR                  nUR                  R                  (       a  UR                  R                  (       a   e[        U5      v   US S S2   nUR                  R                  (       d  UR                  R                  (       a   e[        U5      v   g 7f)Nr8   	   abcdefghi))int8ir8   )uint8r   r8   )int16r=   i  )uint16r?   iP  )int32r@   i )uint32r   rB   )int64rF   r8   )uint64r   l    )float32rI         @)float64rI   r^   )	complex64                    (@      @)
complex128ra   rb            r   )
memoryview	bytearraynplinspaceastypearangereshapeflagsr,   r-   T)rM   rN   dtypestartstoparrs         r   _memoryviewsTestBufferProtocol._memoryviewsR   s    <011&&#E$ 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              #      #    Sv   [        S5      v   [        R                  " S5      nUR                  SS9  [        U5      v   g 7f)N   xyzrT      Fwrite)rh   rj   rm   setflagsrM   rt   s     r   _readonliesTestBufferProtocol._readonliesq   s:     &&iil5!os   AAc                 L    UR                   nU R                  U" U6 U" U6 5        g r
   )py_funcassertPreciseEqual)rM   jitfuncargsr)   s       r   _check_unaryTestBufferProtocol._check_unaryx   s#    >r   c                 0    U R                  [        U5        g r
   )r   r   rM   objs     r   	check_lenTestBufferProtocol.check_len|   s    +s+r   c                 0    U R                  [        U5        g r
   )r   r"   r   s     r   
check_iterTestBufferProtocol.check_iter   s    ,,r   c                     S nU" U5       H#  n X   nU R                  [        X5      U5        M%     g ! [         [        4 a(    [        U[        5      (       a  UR                  U   n NVe f = f)Nc              3      #     U R                   n[        R                  " U5       H  n[        U5      S:X  a	  US   v   M  Uv   M!     g ! [         a    [        U 5      4n NRf = f7f)Nr   r   )r2   AttributeErrorr   rj   ndindex)r   r2   tups      r   yield_indices7TestBufferProtocol.check_getitem.<locals>.yield_indices   s^     "		 zz%( s8q=a&LI ) " "C	"s'   A&A
 :A&
A# A&"A##A&)NotImplementedError	TypeError
isinstancerh   r   r   r   )rM   r   r   r   expecteds        r   check_getitem TestBufferProtocol.check_getitem   sp    	 s#A6 ##OC$;XF $ (3 c:..  #wwqzHs   44A,*A,c                    [        [        U5      5       Hg  n[        U5      nX   S-  S-   n[        XU5        U R	                  X   U5        [        U5       H   u  pTXR:w  d  M  U R	                  X   U5        M"     Mi     g )Nr   r   )rL   r   listr   assertEqualr   )rM   r   r   origvalr   s         r   check_setitem TestBufferProtocol.check_setitem   so    s3xA9D&A+/CCC(SVS)#D/6$$SVS1 * !r   c                 L    U R                  [        US[        U5      S-
  5        g )Nr   )r   r   r   r   s     r   check_getslice!TestBufferProtocol.check_getslice   s    *CCHqLAr   c                 J   U R                  [        S5      5        U R                  S5        U R                  5        H  nU R                  U5        M     U R                  5        H  nU R                  U5        M     U R	                  5        H  nU R                  U5        M     g )Nry   rx   )r   ri   ru   rQ   r~   r   rM   memrt   r   s       r   test_lenTestBufferProtocol.test_len   sz    y|$v$$&CNN3 '<<>CNN3 "##%Cs# &r   c                 J   U R                  [        S5      5        U R                  S5        U R                  5        H  nU R                  U5        M     U R                  5        H  nU R                  U5        M     U R	                  5        H  nU R                  U5        M     g Ns   abcrx   )r   ri   ru   rQ   r~   r   s       r   test_getitemTestBufferProtocol.test_getitem   s    9V,-6"$$&Cs# '<<>Cs# "##%Cs# &r   c           	         U R                  5          U R                  [        S5      5        S S S 5        U R                  S5        U R                  [        S5      5        U R                  5          U R                  [        R                  " S[        S5      5      5        S S S 5        U R                  5        H  nU R                  U5        M     g ! , (       d  f       N= f! , (       d  f       NH= f)Ns   abcdes   xyzuvwr   r8   )assertTypingErrorr   ri   rh   rK   rL   r~   r   )rM   r   s     r   test_getslice TestBufferProtocol.test_getslice   s    ##%	( 34 &I&Jy12##%Cr ;< &##%Cs# & &% &%s   C/0C!
C!
C/c                 ~   U R                  [        S5      5        U R                  5        H  nU R                  U5        M     U R                  5        H  nU R	                  U5        M     U R                  5        H-  nU R                  5          U R                  U5        S S S 5        M/     g ! , (       d  f       MA  = f)NrT   )r   ri   rQ   ru   r   r~   r   )rM   rt   r   r   s       r   test_setitemTestBufferProtocol.test_setitem   s    9\23<<>Cs# "$$&Cs# ' ##%C'')""3' *) &))s   B--
B<	c                 .   U R                  [        S5      5        U R                  S5        U R                  [        S5      5        U R                  5        H  nU R                  U5        M     U R	                  5        H  nU R                  U5        M     g r   )r   ri   rh   rQ   r~   r   )rM   rt   r   s      r   	test_iterTestBufferProtocol.test_iter   sm    	&)*
6*+<<>COOC  "##%Cs# &r   r   N)__name__
__module____qualname____firstlineno____doc__rQ   ru   r~   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r5   r5   ;   sP    F$>?,-G82B$$$	($r   r5   c                   H    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)TestMemoryView   z5
Test memoryview-specific attributes and operations.
c              #     #    [         R                  " S5      nUv   UR                  S5      nUv   UR                  v   US S S2   v   UR	                  SS9  Uv   [         R
                  " S5      nUR                  S:X  d   eUv   g 7f)Nrd   re   r   Frz   r   r   )rj   rm   rn   rp   r|   zerosr0   r}   s     r   rQ   TestMemoryView._arrays   su     iim	kk&!	ee#A#h5!	hhrlxx1}}	s   BB
c                     U R                  5        H3  n[        U5      nU R                  [        U5      UR                  5        M5     g r
   )rQ   rh   r   ndim_usecaser0   rM   rt   ms      r   	test_ndimTestMemoryView.test_ndim   s3    <<>C3A##LOSXX> "r   c                     U R                  5        H3  n[        U5      nU R                  [        U5      UR                  5        M5     g r
   )rQ   rh   r   shape_usecaser2   r   s      r   
test_shapeTestMemoryView.test_shape   s4    <<>C3A##M!$4cii@ "r   c                     U R                  5        H3  n[        U5      nU R                  [        U5      UR                  5        M5     g r
   )rQ   rh   r   strides_usecaser3   r   s      r   test_stridesTestMemoryView.test_strides   s4    <<>C3A##OA$6D "r   c                     U R                  5        H3  n[        U5      nU R                  [        U5      UR                  5        M5     g r
   )rQ   rh   r   itemsize_usecaser.   r   s      r   test_itemsizeTestMemoryView.test_itemsize   s5    <<>C3A##$4Q$7F "r   c                     U R                  5        H@  n[        U5      nU R                  [        U5      UR                  UR
                  -  5        MB     g r
   )rQ   rh   r   nbytes_usecasesizer.   r   s      r   test_nbytesTestMemoryView.test_nbytes  s=    <<>C3A##N1$5sxx#,,7NO "r   c                 Z   U R                  5        HB  n[        U5      nU R                  [        U5      UR                  R
                  (       + 5        MD     [        S5      nU R                  [        U5      S5        [        [        S5      5      nU R                  [        U5      S5        g )Nrx   TF)rQ   rh   assertIsreadonly_usecasero   	writeableri   r   s      r   test_readonlyTestMemoryView.test_readonly	  s    <<>C3AMM*1-3993F3F/FG " v&q)40y()&q)51r   c                 f   [        [        S5      5      nU R                  [        U5      S5        U R                  [	        U5      S5        U R                  [        U5      S5        U R                  5        H  n[        U5      nU R                  [        U5      UR                  R                  =(       d    UR                  R                  5        U R                  [	        U5      UR                  R                  5        U R                  [        U5      UR                  R                  5        M     g )Nrx   T)
rh   ri   r   contiguous_usecasec_contiguous_usecasef_contiguous_usecaserQ   ro   r-   r,   )rM   r   rt   s      r   test_contiguous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   r   N)r   r   r   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r      s4    ?
A
E
G
P
2Kr   r   __main__)rK   numpyrj   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      s4      K K  d  d  d 
 d  d &  - !.1 !.1 j) H%&!j) 7#Y'`$( `$F?K_h ?KD zMMO r   