o
    i                     @   sZ  d dl Zd dlmZmZmZ d dlmZ d dlm	Z	 d dl
Z
edZdd ZejdejdZejdejdZeed d	 7 Zd
d ZedejfdejfgZejdedZeeeD ]Zeee _ed ee _q]dd Zdd Zedejfdej fgZ!ejde!dZ"eee"D ]Zed e"e _#ed e"e _$qdd Z%ejdedd  Z&de&_de&_edddd Z'edddd Z(d Z)d!Z*d"Z+d#Z,e-d$e.d%fZ/e0d&ffZ1d'e0d&fd(d)fZ2d*d+ Z3d,d- Z4d.d/ Z5d0d1 Z6d2d3 Z7d4d5 Z8d6d7 Z9e:dZ;e:d8Z<ed9d: Z=d;d< Z>G d=d> d>e
j?Z@eAd?kr+e
B  dS dS )@    N)jitnjiterrors)register_jitable)usecases
   c                 C   s   | t jd  }|S )Nr   )Xshapexy r   U/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_globals.pyglobal_ndarray_func
   s   r   dtypey              ?c                 C   "   t t| D ]}t| | |< qd S N)rangelencplx_Xair   r   r   global_cplx_arr_copy      r   r   bg      ?c                 C   r   r   )r   r   rec_Xr   r   r   r   global_rec_arr_copy"   r   r   c                 C   s2   t t| D ]}t| j| |< t| j||< qd S r   )r   r   r   r   r   )r   r   r   r   r   r   global_rec_arr_extract_fields'   s   r   cdg      %@c                 C   sN   t t| D ]}t| j| |< t| j||< t| j||< t| j||< qd S r   )r   r   r   r   r   rec_Yr    r!   )r   r   r    r!   r   r   r   r   global_two_rec_arrs5   s   r#      g      ?Tnopythonc                 C   s   | j tj kS r   )r   record_only_X)r   r   r   r   global_record_funcB      r(   c                 C   s   t | |S r   )r   andornopythonr
   r   r   r   global_module_funcG   r)   r+   )r$      )r   r   )r$   r   )g333333?g      @         Zy               @Ac                   C      t d t d  S Nr   r$   )tup_intr   r   r   r   global_int_tupleT      r5   c                   C   r2   r3   )tup_strr   r   r   r   global_str_tupleX   r6   r8   c                  C   s   t d } t d }t|  | S r3   )	tup_mixedr   )idxfieldr   r   r   global_mixed_tuple\   s   r<   c                   C   r2   r3   )	tup_floatr   r   r   r   global_float_tupleb   r6   r>   c                   C   r2   r3   )tup_npy_intsr   r   r   r   global_npy_int_tuplef   r6   r@   c                   C   s   dt d d d< d S )N      $@r   )tup_tup_arrayr   r   r   r   global_write_to_arr_in_tuplej      rC   c                   C   s   dt d d d< d S )NrA   r   r$   )mixed_tup_tup_arrayr   r   r   r   "global_write_to_arr_in_mixed_tuplen   rD   rF   Fc                  G   s   d S r   r   )argsr   r   r   _sinkv   s   rH   c                   C   s   t tt ttfS r   )rH   _glbl_np_bool_T_glbl_np_bool_Fr   r   r   r   global_npy_boolz   s   
rK   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1S )2TestGlobalsc                 K   s&   t di |t}| |dd d S )Nr$      r   )r   r   assertEqual)selfjitargs	ctestfuncr   r   r   check_global_ndarray   s   z TestGlobals.check_global_ndarrayc                 C      | j dd d S NT)forceobjrR   rO   r   r   r   test_global_ndarray   s   zTestGlobals.test_global_ndarrayc                 C   rS   NTr%   rV   rW   r   r   r   test_global_ndarray_npm   r6   z#TestGlobals.test_global_ndarray_npmc                 K   s@   t di |t}tjtttjd}|| tj|t d S Nr   r   )	r   r   npzerosr   r   
complex128testingassert_equalrO   rP   rQ   arrr   r   r   check_global_complex_arr   s   z$TestGlobals.check_global_complex_arrc                 C   rS   rT   rc   rW   r   r   r   test_global_complex_arr   r6   z#TestGlobals.test_global_complex_arrc                 C   rS   rY   rd   rW   r   r   r   test_global_complex_arr_npm   r6   z'TestGlobals.test_global_complex_arr_npmc                 K   s<   t di |t}tjtjtd}|| tj|t d S r[   )	r   r   r\   r]   r   r	   x_dtr_   r`   ra   r   r   r   check_global_rec_arr   s   z TestGlobals.check_global_rec_arrc                 C   rS   rT   rh   rW   r   r   r   test_global_rec_arr   r6   zTestGlobals.test_global_rec_arrc                 C   rS   rY   ri   rW   r   r   r   test_global_rec_arr_npm   r6   z#TestGlobals.test_global_rec_arr_npmc                 K   sd   t di |t}tjtjtjd}tjtjtjd}||| tj	|tj
 tj	|tj d S r[   )r   r   r\   r]   r   r	   int32float32r_   r`   r   r   )rO   rP   rQ   arr1arr2r   r   r   check_global_rec_arr_extract   s   
z(TestGlobals.check_global_rec_arr_extractc                 C   rS   rT   rp   rW   r   r   r   test_global_rec_arr_extract   r6   z'TestGlobals.test_global_rec_arr_extractc                 C   rS   rY   rq   rW   r   r   r   test_global_rec_arr_extract_npm   r6   z+TestGlobals.test_global_rec_arr_extract_npmc                 K   s   t di |t}tjtjtjd}tjtjtjd}tjtjtj	d}tjtjtj
d}||||| tj|tj tj|tj tj|tj tj|tj d S r[   )r   r#   r\   r]   r   r	   rl   rm   r"   int16float64r_   r`   r   r   r    r!   )rO   rP   rQ   rn   ro   arr3arr4r   r   r   check_two_global_rec_arrs   s   z%TestGlobals.check_two_global_rec_arrsc                 C   rS   rT   rx   rW   r   r   r   test_two_global_rec_arrs   r6   z$TestGlobals.test_two_global_rec_arrsc                 C   rS   rY   ry   rW   r   r   r   test_two_global_rec_arrs_npm   r6   z(TestGlobals.test_two_global_rec_arrs_npmc                 C   s   t dd}| d| d S )Nr/      T)r+   rN   )rO   resr   r   r   test_global_module   s   
zTestGlobals.test_global_modulec                 C   sJ   t jdtdd }d|_t|}| d| d|_t|}| d| d S )Nr$   r   r   Tr,   F)r\   recarrayrg   r   r(   rN   )rO   r   r}   r   r   r   test_global_record   s   zTestGlobals.test_global_recordc                 C       t }t|}| | |  d S r   )r5   r   rN   rO   pyfuncjitfuncr   r   r   test_global_int_tuple      z!TestGlobals.test_global_int_tuplec                 C   r   r   )r8   r   rN   r   r   r   r   test_global_str_tuple   r   z!TestGlobals.test_global_str_tuplec                 C   r   r   )r<   r   rN   r   r   r   r   test_global_mixed_tuple   r   z#TestGlobals.test_global_mixed_tuplec                 C   r   r   )r>   r   rN   r   r   r   r   test_global_float_tuple   r   z#TestGlobals.test_global_float_tuplec                 C   r   r   )r@   r   rN   r   r   r   r   test_global_npy_int_tuple   r   z%TestGlobals.test_global_npy_int_tuplec              	   C   sb   t tfD ]*}t|}| tj}|  W d    n1 sw   Y  d}| |t|j qd S )Nz%Cannot modify readonly array of type:)	rC   rF   r   assertRaisesr   TypingErrorassertInstr	exception)rO   funcr   emsgr   r   r   !test_global_write_to_arr_in_tuple   s   z-TestGlobals.test_global_write_to_arr_in_tuplec                 C   r   r   )rK   r   rN   r   r   r   r   test_global_npy_bool  s   z TestGlobals.test_global_npy_boolN)__name__
__module____qualname__rR   rX   rZ   rc   re   rf   rh   rj   rk   rp   rr   rs   rx   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   rL      s2    	
rL   __main__)Cnumpyr\   numbar   r   r   numba.extendingr   numba.testsr   unittestaranger   r   r^   r   tmpr   r   rl   rm   rg   r   r   r   r   r   r   r   r   r   rt   ru   y_dtr"   r    r!   r#   r'   r(   r+   r4   r7   r9   r=   uint64int8r?   onesrB   rE   r5   r8   r<   r>   r@   rC   rF   bool_rI   rJ   rH   rK   TestCaserL   r   mainr   r   r   r   <module>   sn    

	




 
