
    xKg-                        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^                          yy)+    N)
from_dtype)njittypeof)types)TestCaseMemoryLeakMixinskip_parfors_unsupported)TypingError)jitclassc                     | j                   S Ndtypeas    _/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_array_attr.pyarray_dtyper      s    77N    c                 8    | j                  |j                        S r   )viewr   )r   bs     r   	use_dtyper      s    66!''?r   c                 F    | j                   t        j                   d      k(  S )Nint64)r   npr   s    r   dtype_eq_int64r      s    77bhhw'''r   c                     | j                   S r   )itemsizer   s    r   array_itemsizer      s    ::r   c                     | j                   S r   )nbytesr   s    r   array_nbytesr"      s    88Or   c                      | j                   |   S r   )shaper   is     r   array_shaper'   !   s    771:r   c                      | j                   |   S r   )stridesr%   s     r   array_stridesr*   %   s    99Q<r   c                     | j                   S r   )ndimr   s    r   
array_ndimr-   )       66Mr   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    77r   c                 .    | j                   j                  S r   )r4   c_contiguousr   s    r   array_flags_c_contiguousr9   4       77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    33<<r   c                 .    | j                   j                  S r   )r?   r!   r   s    r   nested_array_nbytesrB   >   s    33::r   c                 .    | j                   j                  S r   )r?   r$   r   s    r   nested_array_shaperD   A   s    3399r   c                 .    | j                   j                  S r   )r?   r)   r   s    r   nested_array_stridesrF   E   s    33;;r   c                 .    | j                   j                  S r   )r?   r,   r   s    r   nested_array_ndimrH   I       3388Or   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   [       88Or   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
                        j                  dd      | _        y )N   r         )superr^   setUpr   arangeint32reshaper   )self	__class__s    r   rd   zTestArrayAttr.setUpe   s3    mT(*2RXX.66q!<r   c                     t        |      }| j                  ||f      } ||      }| j                   ||      |       | j                  ||j                  d      f      }| j                   ||      |       y )NA)layout)r   	get_cfuncassertPreciseEqualcopy)rh   pyfuncrT   arytycfuncexpecteds         r   check_unaryzTestArrayAttr.check_unaryi   sl    svx0#;c
H5v

#
(>'@Ac
H5r   c                    | j                  || j                         | j                  || j                  j                         | j                  || j                  d d d          t        j                  dg      j                  d      }| j                  ||       t        j                  d      }| j                  ||       | j                  ||j                  d             y )N   *    r   )   r   rv   )rt   r   Tr   arrayrg   zeros)rh   rp   rT   s      r   check_unary_with_arraysz%TestArrayAttr.check_unary_with_arraysr   s    (*!-hhtn$$R(%hhqk% 	Y!78r   c                 $     t        |      |      S r   )r   )rh   rp   argspecs      r   rm   zTestArrayAttr.get_cfunc   s    tG}V$$r   c                 2   t         }| j                  |t        j                  d d d d f   t        j                  f      }t	        | j
                  j                        D ]6  }| j                   || j
                  |       || j
                  |             8 y r   )r'   rm   r   rf   ranger   r,   assertEqualrh   rp   rr   r&   s       r   
test_shapezTestArrayAttr.test_shape   sj    vAaC(8%++'FGtvv{{#AVDFFA.dffa0@A $r   c                 2   t         }| j                  |t        j                  d d d d f   t        j                  f      }t	        | j
                  j                        D ]6  }| j                   || j
                  |       || j
                  |             8 y r   )r*   rm   r   rf   r   r   r,   r   r   s       r   test_strideszTestArrayAttr.test_strides   sj    vAaC(8%++'FGtvv{{#AVDFFA.dffa0@A $r   c                 .    | j                  t               y r   )r}   r-   rh   s    r   	test_ndimzTestArrayAttr.test_ndim       $$Z0r   c                 .    | j                  t               y r   )r}   r2   r   s    r   	test_sizezTestArrayAttr.test_size   r   r   c                 .    | j                  t               y r   )r}   r   r   s    r   test_itemsizezTestArrayAttr.test_itemsize   s    $$^4r   c                 .    | j                  t               y r   )r}   r"   r   s    r   test_nbyteszTestArrayAttr.test_nbytes   s    $$\2r   c                    t         }| j                  || j                         t        j                  dt        j
                  fdt        j
                  fg      }t        j                  d|      }| j                  ||       y )Nxyra   r   )r   rt   r   r   r   int8r|   )rh   rp   r   rT   s       r   
test_dtypezTestArrayAttr.test_dtype   s^    (3.3.9:hhq&%r   c                 &   t        j                  dt         j                        }t        }| j	                  |t        | j                        t        |      f      } || j                  |      }| j                   || j                  |      |       y Nry   r   )r   emptyint16r   rm   r   r   rn   )rh   r   rp   rr   rs   s        r   test_use_dtypezTestArrayAttr.test_use_dtype   sg    HHQbhh'vtvvq	'BC$&&!$dffa 0(;r   c                     t         }| j                  |t        j                  dt        j                               | j                  |t        j                  dt        j
                               y r   )r   rt   r   r   r   r   rh   rp   s     r   test_dtype_equalzTestArrayAttr.test_dtype_equal   sE    !288!<=!288!<=r   c                 .    | j                  t               y r   )r}   r6   r   s    r   test_flags_contiguousz#TestArrayAttr.test_flags_contiguous   s    $$%;<r   c                 .    | j                  t               y r   )r}   r9   r   s    r   test_flags_c_contiguousz%TestArrayAttr.test_flags_c_contiguous       $$%=>r   c                 .    | j                  t               y 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   sU    =69%BB115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                    t         t        |           t        j                  dt        j
                  fdt        j
                  dfg      }t        j                  d|      d   | _        t        | j                  j                        | _	        y )Nr   r?   )rv   rb   ry   r   )
rc   r   rd   r   r   rf   recarrayr   r   nbrecord)rh   r   ri   s     r   rd   zTestNestedArrayAttr.setUp   sb    !4.03/C6+BCDQ&q)"466<<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                   || j                         || j                               y r   )rD   rm   r   r   rh   rp   rr   s      r   r   zTestNestedArrayAttr.test_shape   s5    #v&tvv7r   c                     t         }| j                  |      }| j                   || j                         || j                               y r   )rF   rm   r   r   r   s      r   r   z TestNestedArrayAttr.test_strides   s5    %v&tvv7r   c                     t         }| j                  |      }| j                   || j                         || j                               y r   )rH   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_ndim   5    "v&tvv7r   c                     t         }| j                  |      }| j                   || j                         || j                               y r   )rB   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_nbytes   s5    $v&tvv7r   c                     t         }| j                  |      }| j                   || j                         || j                               y r   )rK   rm   r   r   r   s      r   r   zTestNestedArrayAttr.test_size   r   r   c                     t         }| j                  |      }| j                   || j                         || j                               y r   )r@   rm   r   r   r   s      r   r   z!TestNestedArrayAttr.test_itemsize   s5    &v&tvv7r   )r   r   r   rd   rm   r   r   r   r   r   r   r   r   s   @r   r   r      s+    1.888888r   r   c                       e Zd Zd Zy)TestSlicedArrayAttrc                    t         }t        |      }t        j                  d      j	                  dd      }t        |j                  d         D ]"  }| j                   |||       |||             $ t        j                  d      j	                  ddd      }t        |j                  d         D ]"  }| j                   |||       |||             $ y )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ii&&q!,syy|$AVC^U3]; %ii	"**1a3syy|$AVC^U3]; %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y)TestArrayCTypesFc                     t         }t        |      }t        j                  d      }| j	                   ||       ||             y )Nr   )rU   r   r   re   r   )rh   rp   rr   rT   s       r   test_array_ctypes_dataz&TestArrayCTypes.test_array_ctypes_data   s5    "ViileCj1r   c                   	
 ddl m}m}m}m	m}  |||||      	fd       
t        d      
fd       }d} ||      \  }}| j                  |       | j                  |t        j                  |      |z   d          y )Nr   )	CFUNCTYPEc_void_pc_int32c_doublec_boolc                 P   	 |z  j                  |       }dz  j                  |      }t        j                  ||t        j                        }t        j                  d|t        j                        }||j                  z   d   |d<   y#  dd l}|j                          Y y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<JJtEDJJqrzzBAFF
A! ))+s   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  sS    ''$-C((1+C::DJJEdiiuzz: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	68Wh	7	 
8	  
t		" 
	" $ibggdmd&:A%>?r   N)r   r   r   _numba_parallel_test_r   r	   r   rx   r   r   r   r      s#    !2 #@ #@r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestRealImagAttrc                    t        |      }d}t        j                  |      t        j                  |      dz  z   }| j                   ||       ||             |j	                  dd      }| j                   ||       ||             y )Nr   y              $@rv   rb   )r   r   re   rn   rg   )rh   rp   rr   r1   rT   s        r   check_complexzTestRealImagAttr.check_complex)  so    Viio		$# 55sU3Z8kk!QsU3Z8r   c                 .    | j                  t               y r   )r   rX   r   s    r   test_complex_realz"TestRealImagAttr.test_complex_real3      :&r   c                 .    | j                  t               y r   )r   r\   r   s    r   test_complex_imagz"TestRealImagAttr.test_complex_imag6  r   r   c                    t         }t        |      }d}t        j                  ||      }| j	                   ||       ||             |j                  dd      }| j	                   ||       ||             | j                  |j                   ||      j                         | j                  |j                   ||      j                          ||      }| j                  |d   d       d|d<   | j                  |d   d       y )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iiE*sU3Z8kk!QsU3Z86#;#3#345:??3SzCIq)T
TA&r   c                     t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  |        y)z5
        Testing .real of non-complex dtypes
        N)r   uint8rf   float32r   r   rh   r   s     r   test_number_realz!TestRealImagAttr.test_number_realL  6     hh"**bjjAE""5) Br   c                 :   t         }t        |      }d}t        j                  ||      }| j	                   ||       ||             |j                  dd      }| j	                   ||       ||             | j                   ||      j                         t        j                  |      j                                 ||      }| j                  t              5 }d|d<   d d d        | j                  dt        j                               y # 1 sw Y   /xY w)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  s    ViiE*sU3Z8kk!QsU3Z8s**,bmmC.@.G.G.IJSzz*fDG +>V--.	0 +*s   DDc                     t         j                  t         j                  t         j                  t         j                  fD ]  }| j                  |        y)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                  |j                        |d<   t         j
                  j                  |j                        dz  |d<   | j                  t        |      |       | j                  t        |      j                         t        j                  |      j                                t        t              }t        t              }| j                  t              5 } ||       d d d        | j!                  dt#        j$                               | j                  t              5 } ||       d d d        | j!                  dt#        |j$                               y # 1 sw Y   zxY w# 1 sw Y   ;xY w)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  sU   FBJJ/&",,1GHIhhq'ii&&sxx0Fii&&sxx047F 	jos+C//12==3E3L3L3NO j)j){+v3 ,>&**+	- {+v3 ,>&**+	- ,+
 ,+s   	G	GGGN)r   r   r   r   r   r   r   r   r   r   r  rx   r   r   r   r   (  s*    9'''&*0&*-r   r   c                       e Zd ZdZd Zy)TestJitclassFlagsSegfaultz@Regression test for: https://github.com/numba/numba/issues/4775 c                     t        t                      G d dt                     } |       }|j                  t	        j
                  d             y )Nc                       e Zd Zd Zd Zy))TestJitclassFlagsSegfault.test.<locals>.Bc                      y r   rx   r   s    r   __init__z2TestJitclassFlagsSegfault.test.<locals>.B.__init__  s    r   c                     |j                    y r   )r4   )rh   Xs     r   r   z-TestJitclassFlagsSegfault.test.<locals>.B.foo  s	    r   N)r   r   r   r  r   rx   r   r   Br    s    r   r  ra   )r   dictobjectr   r   r   )rh   r  Zs      r   testzTestJitclassFlagsSegfault.test  s?    	$&		 	 
	 C	bggajr   N)r   r   r   __doc__r  rx   r   r   r  r    s
    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      s     -  ; ; ) '(  V?OX V?r,8/8+<+< ,8^	</8+<+< 	<.@ox .@b^- ^-@ " zHMMO r   