
    J/Ph-                        d dl Zd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
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 Z%d Z&d Z' G d dee          Z( G d  d!eej                  Z) G d" d#eej                  Z* G d$ d%ee          Z+ G d& d'ee          Z, G d( d)ee          Z-e.d*k    r ej/                     dS dS )+    N)
from_dtype)njittypeof)types)TestCaseMemoryLeakMixinskip_parfors_unsupported)TypingError)jitclassc                     | j         S Ndtypeas    [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_array_attr.pyarray_dtyper      s	    7N    c                 6    |                      |j                  S r   )viewr   )r   bs     r   	use_dtyper      s    66!'??r   c                 <    | j         t          j         d          k    S )Nint64)r   npr   s    r   dtype_eq_int64r      s    7bhw''''r   c                     | j         S r   )itemsizer   s    r   array_itemsizer      s
    :r   c                     | j         S r   )nbytesr   s    r   array_nbytesr"      s	    8Or   c                     | j         |         S r   )shaper   is     r   array_shaper'   !   s    71:r   c                     | j         |         S r   )stridesr%   s     r   array_stridesr*   %   s    9Q<r   c                     | j         S r   )ndimr   s    r   
array_ndimr-   )   	    6Mr   c                     | j         S r   sizer   s    r   
array_sizer2   -   r.   r   c                     | j         j        S r   )flags
contiguousr   s    r   array_flags_contiguousr6   1   s    7r   c                     | j         j        S r   )r4   c_contiguousr   s    r   array_flags_c_contiguousr9   4       7r   c                     | j         j        S r   )r4   f_contiguousr   s    r   array_flags_f_contiguousr=   7   r:   r   c                     | j         j        S r   )fr   r   s    r   nested_array_itemsizer@   ;   s    3<r   c                     | j         j        S r   )r?   r!   r   s    r   nested_array_nbytesrB   >   s    3:r   c                     | j         j        S r   )r?   r$   r   s    r   nested_array_shaperD   A   s    39r   c                     | j         j        S r   )r?   r)   r   s    r   nested_array_stridesrF   E   s    3;r   c                     | j         j        S r   )r?   r,   r   s    r   nested_array_ndimrH   I       38Or   c                     | j         j        S r   )r?   r1   r   s    r   nested_array_sizerK   M   rI   r   c                      | |         }|j         S r   r0   )bufr&   sliceds      r   size_after_slicing_usecaserO   Q   s    VF;r   c                     | j         j        S r   )ctypesdataarrs    r   array_ctypes_datarU   W   s    :?r   c                     | j         S r   )realrS   s    r   
array_realrX   [   	    8Or   c                     | j         S r   )imagrS   s    r   
array_imagr\   _   rY   r   c                   x     e Zd Z f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 xZS )TestArrayAttrc                     t          t          |                                            t          j        dt          j                                      dd          | _        d S )N   r         )superr^   setUpr   arangeint32reshaper   )self	__class__s    r   rd   zTestArrayAttr.setUpe   sK    mT""((***2RX...66q!<<r   c                 :   t          |          }|                     ||f          } ||          }|                      ||          |           |                     ||                    d          f          }|                      ||          |           d S )NA)layout)r   	get_cfuncassertPreciseEqualcopy)rh   pyfuncrT   arytycfuncexpecteds         r   check_unaryzTestArrayAttr.check_unaryi   s    svx006#;;c

H555v

#
(>(>'@AAc

H55555r   c                    |                      || j                   |                      || j        j                   |                      || j        d d d                    t          j        dg                              d          }|                      ||           t          j        d          }|                      ||           |                      ||                    d                     d S )N   *    r   )   r   rv   )rt   r   Tr   arrayrg   zeros)rh   rp   rT   s      r   check_unary_with_arraysz%TestArrayAttr.check_unary_with_arraysr   s    (((***!---htnn$$R((%%%hqkk%%% 	Y!7!788888r   c                 2     t          |          |          S r   )r   )rh   rp   argspecs      r   rm   zTestArrayAttr.get_cfunc   s    tG}}V$$$r   c                 $   t           }|                     |t          j        d d d d f         t          j        f          }t	          | j        j                  D ]6}|                      || j        |           || j        |                     7d S r   )r'   rm   r   rf   ranger   r,   assertEqualrh   rp   rr   r&   s       r   
test_shapezTestArrayAttr.test_shape   s    vAAAaaaC(8%+'FGGtv{## 	B 	BAVVDFA..dfa0@0@AAAA	B 	Br   c                 $   t           }|                     |t          j        d d d d f         t          j        f          }t	          | j        j                  D ]6}|                      || j        |           || j        |                     7d S r   )r*   rm   r   rf   r   r   r,   r   r   s       r   test_strideszTestArrayAttr.test_strides   s    vAAAaaaC(8%+'FGGtv{## 	B 	BAVVDFA..dfa0@0@AAAA	B 	Br   c                 :    |                      t                     d S r   )r}   r-   rh   s    r   	test_ndimzTestArrayAttr.test_ndim       $$Z00000r   c                 :    |                      t                     d S r   )r}   r2   r   s    r   	test_sizezTestArrayAttr.test_size   r   r   c                 :    |                      t                     d S r   )r}   r   r   s    r   test_itemsizezTestArrayAttr.test_itemsize   s    $$^44444r   c                 :    |                      t                     d S r   )r}   r"   r   s    r   test_nbyteszTestArrayAttr.test_nbytes   s    $$\22222r   c                     t           }|                     || j                   t          j        dt          j        fdt          j        fg          }t          j        d|          }|                     ||           d S )Nxyra   r   )r   rt   r   r   r   int8r|   )rh   rp   r   rT   s       r   
test_dtypezTestArrayAttr.test_dtype   so    (((3.3.9::hq&&&%%%%%r   c                 .   t          j        dt           j                  }t          }|                     |t          | j                  t          |          f          } || j        |          }|                      || j        |          |           d S Nry   r   )r   emptyint16r   rm   r   r   rn   )rh   r   rp   rr   rs   s        r   test_use_dtypezTestArrayAttr.test_use_dtype   s    HQbh'''vtvq		'BCC6$&!$$dfa 0 0(;;;;;r   c                     t           }|                     |t          j        dt          j                             |                     |t          j        dt          j                             d S r   )r   rt   r   r   r   r   rh   rp   s     r   test_dtype_equalzTestArrayAttr.test_dtype_equal   s[    !28!<!<!<===!28!<!<!<=====r   c                 :    |                      t                     d S r   )r}   r6   r   s    r   test_flags_contiguousz#TestArrayAttr.test_flags_contiguous   s    $$%;<<<<<r   c                 :    |                      t                     d S r   )r}   r9   r   s    r   test_flags_c_contiguousz%TestArrayAttr.test_flags_c_contiguous       $$%=>>>>>r   c                 :    |                      t                     d S r   )r}   r=   r   s    r   test_flags_f_contiguousz%TestArrayAttr.test_flags_f_contiguous   r   r   )__name__
__module____qualname__rd   rt   r}   rm   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__ri   s   @r   r^   r^   c   s       = = = = =6 6 69 9 9% % %B B BB B B1 1 11 1 15 5 53 3 3& & &< < <> > >= = =? ? ?? ? ? ? ? ? ?r   r^   c                   H     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 xZS )	TestNestedArrayAttrc                 0   t          t          |                                            t          j        dt          j        fdt          j        dfg          }t          j        d|          d         | _        t          | j        j                  | _	        d S )Nr   r?   )rv   rb   ry   r   )
rc   r   rd   r   r   rf   recarrayr   r   nbrecord)rh   r   ri   s     r   rd   zTestNestedArrayAttr.setUp   sr    !4((..0003/C6+BCDDQ&&q)"46<00r   c                 >     t          | j        f          |          S r   )r   r   r   s     r   rm   zTestNestedArrayAttr.get_cfunc   s    %tT]$%%f---r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )rD   rm   r   r   rh   rp   rr   s      r   r   zTestNestedArrayAttr.test_shape   sH    #v&&tv77777r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )rF   rm   r   r   r   s      r   r   z TestNestedArrayAttr.test_strides   sH    %v&&tv77777r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )rH   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_ndim   H    "v&&tv77777r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )rB   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_nbytes   sH    $v&&tv77777r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )rK   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_size   r   r   c                     t           }|                     |          }|                      || j                   || j                             d S r   )r@   rm   r   r   r   s      r   r   z!TestNestedArrayAttr.test_itemsize   sH    &v&&tv77777r   )r   r   r   rd   rm   r   r   r   r   r   r   r   r   s   @r   r   r      s        1 1 1 1 1. . .8 8 88 8 88 8 88 8 88 8 88 8 8 8 8 8 8r   r   c                       e Zd Zd ZdS )TestSlicedArrayAttrc                    t           }t          |          }t          j        d                              dd          }t          |j        d                   D ],}|                      |||           |||                     -t          j        d                              ddd          }t          |j        d                   D ],}|                      |||           |||                     -d S )N
   rv   rb   r         )rO   r   r   re   rg   r   r$   r   )rh   rp   rr   rT   r&   s        r   test_size_after_slicingz+TestSlicedArrayAttr.test_size_after_slicing   s    +Vi&&q!,,sy|$$ 	< 	<AVVC^^UU3]];;;;i	""**1a33sy|$$ 	< 	<AVVC^^UU3]];;;;	< 	<r   N)r   r   r   r   rx   r   r   r   r      s#        < < < < <r   r   c                   .    e Zd ZdZd Zed             ZdS )TestArrayCTypesFc                     t           }t          |          }t          j        d          }|                      ||           ||                     d S )Nr   )rU   r   r   re   r   )rh   rp   rr   rT   s       r   test_array_ctypes_dataz&TestArrayCTypes.test_array_ctypes_data   sK    "VilleeCjj11111r   c                 :  	
 ddl m}m}m}m	m}  |||||          	fd            
t          d          
fd            }d} ||          \  }}|                     |           |                     |t          j
        |          |z   d                    d S )Nr   )	CFUNCTYPEc_void_pc_int32c_doublec_boolc                 T   	 |z                       |           }dz                       |          }t          j        ||t          j                  }t          j        d|t          j                  }||j        z   d         |d<   dS #  dd l}|                                 Y dS xY w)Nry   )bufferr   r   TF)from_addressr   ndarrayfloat64r1   	tracebackprint_exception)	inptrr1   outptrinbufoutbufr   r   r   r   s	           r   callbackzITestArrayCTypes.test_array_ctypes_ref_error_in_parallel.<locals>.callback  s    
!D66u=="Q,44V<<JtEDDDJqrzBBBAF
A!t    ))+++uus   BB
 
B'T)parallelc                     t          j        |           }t          j        d          }|j        }|j        } |j        | |j                  }||d         fS )Nry   r   )r   onesr   rQ   rR   )r1   rT   outinctoutctstatusr   s         r   foozDTestArrayCTypes.test_array_ctypes_ref_error_in_parallel.<locals>.foo  sP    '$--C(1++C:DJEXdiuz::F3q6>!r   r   )rQ   r   r   r   r   r   r   
assertTruern   r   r   )rh   r   r   r   r   r   r1   r   gotr   r   s            @@r   'test_array_ctypes_ref_error_in_parallelz7TestArrayCTypes.test_array_ctypes_ref_error_in_parallel  s     	JIIIIIIIIIIIII	68Wh	7	7	 	 	 	 
8	7	  
t				" 	" 	" 	" 
		" c$iibgdmmd&:A%>?????r   N)r   r   r   _numba_parallel_test_r   r	   r   rx   r   r   r   r      sJ        !2 2 2 #@ #@ #@ #@ #@r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestRealImagAttrc                 L   t          |          }d}t          j        |          t          j        |          dz  z   }|                      ||           ||                     |                    dd          }|                      ||           ||                     d S )Nr   y              $@rv   rb   )r   r   re   rn   rg   )rh   rp   rr   r1   rT   s        r   check_complexzTestRealImagAttr.check_complex)  s    Vioo	$# 55sUU3ZZ888kk!QsUU3ZZ88888r   c                 :    |                      t                     d S r   )r   rX   r   s    r   test_complex_realz"TestRealImagAttr.test_complex_real3      :&&&&&r   c                 :    |                      t                     d S r   )r   r\   r   s    r   test_complex_imagz"TestRealImagAttr.test_complex_imag6  r   r   c                 b   t           }t          |          }d}t          j        ||          }|                      ||           ||                     |                    dd          }|                      ||           ||                     |                     |j         ||          j                   |                     |j         ||          j                    ||          }|                     |d         d           d|d<   |                     |d         d           d S )Nr   r   rv   rb   )r   r   )	rX   r   r   re   rn   rg   r   rR   assertNotEqual)rh   r   rp   rr   r1   rT   rW   s          r   check_number_realz"TestRealImagAttr.check_number_real9  s   ViE***sUU3ZZ888kk!QsUU3ZZ88866#;;#344455::?333uSzzCIq)))T
TA&&&&&r   c                     t           j        t           j        t           j        t           j        fD ]}|                     |           dS )z5
        Testing .real of non-complex dtypes
        N)r   uint8rf   float32r   r   rh   r   s     r   test_number_realz!TestRealImagAttr.test_number_realL  E     h"*bjA 	* 	*E""5))))	* 	*r   c                    t           }t          |          }d}t          j        ||          }|                      ||           ||                     |                    dd          }|                      ||           ||                     |                      ||                                          t          j        |                                                      ||          }| 	                    t                    5 }d|d<   d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr   r   rv   rb   ry   r   z#assignment destination is read-only)r\   r   r   re   rn   rg   r   tolist
zeros_likeassertRaises
ValueErrorstr	exception)rh   r   rp   rr   r1   rT   r[   raisess           r   check_number_imagz"TestRealImagAttr.check_number_imagS  sy   ViE***sUU3ZZ888kk!QsUU3ZZ888s**,,bmC.@.@.G.G.I.IJJJuSzzz** 	fDG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	>V-..	0 	0 	0 	0 	0s   D!!D%(D%c                     t           j        t           j        t           j        t           j        fD ]}|                     |           dS )z5
        Testing .imag of non-complex dtypes
        N)r   r   rf   r   r   r   r   s     r   test_number_imagz!TestRealImagAttr.test_number_imagf  r   r   c                    t          j        dt           j        fdt           j        fg          }t          j        d|          }t           j                            |j                  |d<   t           j                            |j                  dz  |d<   |                     t          |          |           | 	                    t          |                                          t          j        |                                                     t          t                    }t          t                    }|                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt#          |j                             |                     t                    5 } ||           d d d            n# 1 swxY w Y   |                     dt#          |j                             d S )NrW   r[   r   r   y        ?z&cannot access .real of array of Recordz&cannot access .imag of array of Record)r   r   r   	complex64r|   randomr1   assertIsrX   r   r\   r   r   r   r   r
   assertInr   r   )rh   rectyprT   jit_array_realjit_array_imagr   s         r   test_record_realz!TestRealImagAttr.test_record_realm  s/   FBJ/&",1GHIIhq'''i&&sx00Fi&&sx0047F 	joos+++C//112=3E3E3L3L3N3NOOO j))j)){++ 	 vN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 >&*++	- 	- 	- {++ 	 vN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 >&*++	- 	- 	- 	- 	-s$   E,,E03E09GGGN)r   r   r   r   r   r   r   r   r   r   r  rx   r   r   r   r   (  s        9 9 9' ' '' ' '' ' '&* * *0 0 0&* * *- - - - -r   r   c                       e Zd ZdZd ZdS )TestJitclassFlagsSegfaultz@Regression test for: https://github.com/numba/numba/issues/4775 c                     t          t                                 G d dt                                } |            }|                    t	          j        d                     d S )Nc                       e Zd Zd Zd ZdS ))TestJitclassFlagsSegfault.test.<locals>.Bc                     d S r   rx   r   s    r   __init__z2TestJitclassFlagsSegfault.test.<locals>.B.__init__  s    r   c                     |j          d S r   )r4   )rh   Xs     r   r   z-TestJitclassFlagsSegfault.test.<locals>.B.foo  s    r   N)r   r   r   r  r   rx   r   r   Br    s2              r   r  ra   )r   dictobjectr   r   r   )rh   r  Zs      r   testzTestJitclassFlagsSegfault.test  sp    	$&&			 	 	 	 	 	 	 
		 ACC	bgajjr   N)r   r   r   __doc__r  rx   r   r   r  r    s)        JJ    r   r  __main__)0numpyr   unittestnumba.np.numpy_supportr   numbar   r   
numba.corer   numba.tests.supportr   r   r	   numba.core.errorsr
   numba.experimentalr   r   r   r   r   r"   r'   r*   r-   r2   r6   r9   r=   r@   rB   rD   rF   rH   rK   rO   rU   rX   r\   r^   r   r   r   r   r  r   mainrx   r   r   <module>r      sF        - - - - - -              ; ; ; ; ; ; ; ; ; ; ) ) ) ) ) ) ' ' ' ' ' '    ( ( (                                            V? V? V? V? V?OX V? V? V?r,8 ,8 ,8 ,8 ,8/8+< ,8 ,8 ,8^	< 	< 	< 	< 	</8+< 	< 	< 	<.@ .@ .@ .@ .@ox .@ .@ .@b^- ^- ^- ^- ^- ^- ^- ^-@       " zHMOOOOO r   