
    J/Phj"                     F   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	j                     dS dS )    N)jit)TestCasecompile_functionMemoryLeakMixinTnopythonc                      t          |           S N)len)bufs    `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_buffer_protocol.pylen_usecaser   
   s    s88O    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&    AaCAQ4!ae)r   c                     || |<   d S r
   r   )r   r   vs      r   setitem_usecaser      s    CFFFr   c                 N    d}t          |           D ]\  }}||z  }||dz   z  }|S )Ng           )	enumerate)r   resr   xs       r   iter_usecaser"      s=    
C#  1qq1uJr   c                     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*   (   sG    hhD fdGII66F3f%%%r   
contiguousc_contiguousf_contiguousitemsizenbytesndimreadonlyshapestridesc                   f    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dS )TestBufferProtocolz6
    Test operations on buffer-providing objects.
    c              #      K   d}dD ]5\  }t          j         |fdt          |          D                       V  6d S )N
   ))b)Br   )hx)H@  )r   `y)I@B )lr?   )LrA   )q         )Ql           )f      ?)dg      c                     g | ]}|z   S r   r   ).0r   offsets     r   
<listcomp>z.TestBufferProtocol._arrays.<locals>.<listcomp>P   s    &D&D&Daq6z&D&D&Dr   )arrayrange)selfnletterrL   s      @r   _arrayszTestBufferProtocol._arrays@   sg       	F 	FNFF +f&D&D&D&D588&D&D&DEEEEEE	F 	Fr   c              #   b  K   d}t          t          d                    V  t          d          V  dD ]>\  }}}t          t          j        |||                              |                    V  ?t          j        d                              d          }|j        j        r|j        j	        rJ t          |          V  |j
        }|j        j	        r|j        j        rJ t          |          V  |d d d         }|j        j	        s|j        j        rJ t          |          V  d S )Nr7   	   abcdefghi))int8ir7   )uint8r   r7   )int16r<   i  )uint16r>   iP  )int32r?   i )uint32r   rA   )int64rE   r7   )uint64r   l    )float32rH         @)float64rH   r_   )	complex64                    (@      @)
complex128rb   rc            r   )
memoryview	bytearraynplinspaceastypearangereshapeflagsr,   r-   T)rP   rQ   dtypestartstoparrs         r   _memoryviewszTestBufferProtocol._memoryviewsR   sH     <0011111&&&&&# 	H 	HE5$ R[a88??FFGGGGGGimm##F++y%Dci.DDDDooey%Dci.DDDDoo##A#h9)H#)2HHHHoor   c              #      K   dV  t          d          V  t          j        d          }|                    d           t          |          V  d S )N   xyzrU      Fwrite)ri   rk   rn   setflagsrP   ru   s     r   _readonlieszTestBufferProtocol._readonliesq   s\      &&&&&ill5!!!oor   c                 L    |j         }|                      ||  ||            d S r
   )py_funcassertPreciseEqual)rP   jitfuncargsr)   s       r   _check_unaryzTestBufferProtocol._check_unaryx   s1    >>>>>r   c                 <    |                      t          |           d S r
   )r   r   rP   objs     r   	check_lenzTestBufferProtocol.check_len|   s    +s+++++r   c                 <    |                      t          |           d S r
   )r   r"   r   s     r   
check_iterzTestBufferProtocol.check_iter   s    ,,,,,,r   c                     d } ||          D ]k}	 ||         }n;# t           t          f$ r' t          |t                    r|j        |         }n Y nw xY w|                     t          ||          |           ld S )Nc              3      K   	 | j         }n # t          $ r t          |           f}Y nw xY wt          j        |          D ]$}t          |          dk    r|d         V   |V  %d S )Nr   r   )r2   AttributeErrorr   rk   ndindex)r   r2   tups      r   yield_indicesz7TestBufferProtocol.check_getitem.<locals>.yield_indices   s      "	! " " "C	"z%((   s88q==a&LLLLIIII s    )))NotImplementedError	TypeError
isinstanceri   r   r   r   )rP   r   r   r   expecteds        r   check_getitemz TestBufferProtocol.check_getitem   s    	 	 	 s## 
	G 
	GAq6'3   c:..   #wqzHH H	 ##OC$;$;XFFFF
	G 
	Gs   5AAc                 F   t          t          |                    D ]}t          |          }||         dz  dz   }t          |||           |                     ||         |           t          |          D ]'\  }}||k    r|                     ||         |           (d S )Nr   r   )rO   r   listr   assertEqualr   )rP   r   r   origvalr   s         r   check_setitemz TestBufferProtocol.check_setitem   s    s3xx 	2 	2A99Da&A+/CCC(((SVS)))#D// 2 2366$$SVS1112	2 	2r   c                 `    |                      t          |dt          |          dz
             d S )Nr   )r   r   r   r   s     r   check_getslicez!TestBufferProtocol.check_getslice   s-    *CCHHqLAAAAAr   c                 |   |                      t          d                     |                      d           |                                 D ]}|                      |           |                                 D ]}|                      |           |                                 D ]}|                     |           d S )Nry   rx   )r   rj   rv   rS   r~   r   rP   memru   r   s       r   test_lenzTestBufferProtocol.test_len   s    y||$$$v$$&& 	  	 CNN3<<>> 	  	 CNN3##%% 	$ 	$Cs####	$ 	$r   c                 |   |                      t          d                     |                      d           |                                 D ]}|                      |           |                                 D ]}|                      |           |                                 D ]}|                      |           d S Ns   abcrx   )r   rj   rv   rS   r~   r   s       r   test_getitemzTestBufferProtocol.test_getitem   s    9V,,---6"""$$&& 	$ 	$Cs####<<>> 	$ 	$Cs######%% 	$ 	$Cs####	$ 	$r   c           	      *   |                                  5  |                     t          d                     d d d            n# 1 swxY w Y   |                     d           |                     t          d                     |                                  5  |                     t	          j        dt          d                               d d d            n# 1 swxY w Y   |                                 D ]}|                     |           d S )Ns   abcdes   xyzuvwr   r7   )assertTypingErrorr   rj   ri   rN   rO   r~   r   )rP   r   s     r   test_getslicez TestBufferProtocol.test_getslice   s~   ##%% 	5 	5	( 3 3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5I&&&Jy11222##%% 	= 	=Cr ; ;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=##%% 	$ 	$Cs####	$ 	$s#   #AAA6CC #C c                    |                      t          d                     |                                 D ]}|                      |           |                                 D ]}|                     |           |                                 D ]C}|                                 5  |                      |           d d d            n# 1 swxY w Y   Dd S )NrU   )r   rj   rS   rv   r   r~   r   )rP   ru   r   r   s       r   test_setitemzTestBufferProtocol.test_setitem   s   9\22333<<>> 	$ 	$Cs####$$&& 	$ 	$Cs######%% 	( 	(C'')) ( (""3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	( 	(s   %CC	C	c                 h   |                      t          d                     |                      d           |                      t          d                     |                                 D ]}|                      |           |                                 D ]}|                     |           d S r   )r   rj   ri   rS   r~   r   )rP   ru   r   s      r   	test_iterzTestBufferProtocol.test_iter   s    	&))***
6**+++<<>> 	! 	!COOC    ##%% 	$ 	$Cs####	$ 	$r   N)__name__
__module____qualname____doc__rS   rv   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r5   r5   ;   s         F F F$  >  ? ? ?, , ,- - -G G G82 2 2B B B$ $ $$ $ $$ $ $	( 	( 	($ $ $ $ $r   r5   c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestMemoryViewz=
    Test memoryview-specific attributes and operations.
    c              #     K   t          j        d          }|V  |                    d          }|V  |j        V  |d d d         V  |                    d           |V  t          j        d          }|j        dk    sJ |V  d S )Nre   rf   r   Frz   r   r   )rk   rn   ro   rq   r|   zerosr0   r}   s     r   rS   zTestMemoryView._arrays   s      imm			kk&!!			e##A#h5!!!			hrllx1}}}}					r   c                     |                                  D ]9}t          |          }|                     t          |          |j                   :d S r
   )rS   ri   r   ndim_usecaser0   rP   ru   ms      r   	test_ndimzTestMemoryView.test_ndim   sO    <<>> 	? 	?C3A##LOOSX>>>>	? 	?r   c                     |                                  D ]9}t          |          }|                     t          |          |j                   :d S r
   )rS   ri   r   shape_usecaser2   r   s      r   
test_shapezTestMemoryView.test_shape   sU    <<>> 	A 	AC3A##M!$4$4ci@@@@	A 	Ar   c                     |                                  D ]9}t          |          }|                     t          |          |j                   :d S r
   )rS   ri   r   strides_usecaser3   r   s      r   test_strideszTestMemoryView.test_strides   sU    <<>> 	E 	EC3A##OA$6$6DDDD	E 	Er   c                     |                                  D ]9}t          |          }|                     t          |          |j                   :d S r
   )rS   ri   r   itemsize_usecaser.   r   s      r   test_itemsizezTestMemoryView.test_itemsize   sV    <<>> 	G 	GC3A##$4Q$7$7FFFF	G 	Gr   c                     |                                  D ]A}t          |          }|                     t          |          |j        |j        z             Bd S r
   )rS   ri   r   nbytes_usecasesizer.   r   s      r   test_nbyteszTestMemoryView.test_nbytes  s\    <<>> 	P 	PC3A##N1$5$5sx#,7NOOOO	P 	Pr   c                    |                                  D ]?}t          |          }|                     t          |          |j        j                    @t          d          }|                     t          |          d           t          t          d                    }|                     t          |          d           d S )Nrx   TF)rS   ri   assertIsreadonly_usecaserp   	writeablerj   r   s      r   test_readonlyzTestMemoryView.test_readonly	  s    <<>> 	H 	HC3AMM*1--393F/FGGGGv&q))4000y(())&q))511111r   c                    t          t          d                    }|                     t          |          d           |                     t	          |          d           |                     t          |          d           |                                 D ]}t          |          }|                     t          |          |j        j        p|j        j	                   |                     t	          |          |j        j	                   |                     t          |          |j        j                   d S )Nrx   T)
ri   rj   r   contiguous_usecasec_contiguous_usecasef_contiguous_usecaserS   rp   r-   r,   )rP   r   ru   s      r   test_contiguouszTestMemoryView.test_contiguous  s   y(())(++T222*1--t444*1--t444<<>> 	K 	KC3AMM,Q//)0JCI4JL L LMM.q11393IJJJMM.q11393IJJJJ	K 	Kr   N)r   r   r   r   rS   r   r   r   r   r   r   r   r   r   r   r   r      s           ? ? ?
A A A
E E E
G G G
P P P
2 2 2K K K K Kr   r   __main__)rN   numpyrk   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      sM              K K K K K K K K K K  d   d   d  
 d   d  & & &  Z-- !z.11 !z.11 :j)) H%%z&!!:j)) 
7##*Y''`$ `$ `$ `$ `$( `$ `$ `$F?K ?K ?K ?K ?K_h ?K ?K ?KD zHMOOOOO r   