U
    ,d                     @   sX  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 _qd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 _$qd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rTe
B  dS )@    N)jitnjiterrors)register_jitable)usecases
   c                 C   s   | t jd  }|S )Nr   )Xshapexy r   </tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_globals.pyglobal_ndarray_func
   s    r   dtypey              ?c                 C   s"   t t| D ]}t| | |< qd S N)rangelencplx_Xair   r   r   global_cplx_arr_copy   s    r   r   bg      ?c                 C   s"   t t| D ]}t| | |< qd S r   )r   r   rec_Xr   r   r   r   global_rec_arr_copy"   s    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Znopythonc                 C   s   | j tj kS r   )r   record_only_X)r   r   r   r   global_record_funcB   s    r%   c                 C   s   t | |S r   )r   Zandornopythonr
   r   r   r   global_module_funcG   s    r&   )r"      )r   r   )r"   r   )g333333?g      @         Zy               @Ac                   C   s   t d t d  S Nr   r"   )tup_intr   r   r   r   global_int_tupleT   s    r/   c                   C   s   t d t d  S r-   )tup_strr   r   r   r   global_str_tupleX   s    r1   c                  C   s   t d } t d }t|  | S r-   )	tup_mixedr   )idxfieldr   r   r   global_mixed_tuple\   s    r5   c                   C   s   t d t d  S r-   )	tup_floatr   r   r   r   global_float_tupleb   s    r7   c                   C   s   t d t d  S r-   )tup_npy_intsr   r   r   r   global_npy_int_tuplef   s    r9   c                   C   s   dt d d d< d S )N      $@r   )tup_tup_arrayr   r   r   r   global_write_to_arr_in_tuplej   s    r<   c                   C   s   dt d d d< d S )Nr:   r   r"   )mixed_tup_tup_arrayr   r   r   r   "global_write_to_arr_in_mixed_tuplen   s    r>   Fc                  G   s   d S r   r   )argsr   r   r   _sinkv   s    r@   c                   C   s   t tt ttfS r   )r@   _glbl_np_bool_T_glbl_np_bool_Fr   r   r   r   global_npy_boolz   s    
rC   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 f |t}| |dd d S )Nr"      )r   r   assertEqual)selfjitargs	ctestfuncr   r   r   check_global_ndarray   s    z TestGlobals.check_global_ndarrayc                 C   s   | j dd d S NT)ZforceobjrJ   rG   r   r   r   test_global_ndarray   s    zTestGlobals.test_global_ndarrayc                 C   s   | j dd d S NTr#   rL   rM   r   r   r   test_global_ndarray_npm   s    z#TestGlobals.test_global_ndarray_npmc                 K   s<   t f |t}tjtttjd}|| tj|t d S Nr   )	r   r   npzerosr   r   
complex128testingassert_equalrG   rH   rI   Zarrr   r   r   check_global_complex_arr   s    z$TestGlobals.check_global_complex_arrc                 C   s   | j dd d S rK   rX   rM   r   r   r   test_global_complex_arr   s    z#TestGlobals.test_global_complex_arrc                 C   s   | j dd d S rO   rY   rM   r   r   r   test_global_complex_arr_npm   s    z'TestGlobals.test_global_complex_arr_npmc                 K   s8   t f |t}tjtjtd}|| tj|t d S rQ   )	r   r   rR   rS   r   r	   x_dtrU   rV   rW   r   r   r   check_global_rec_arr   s    z TestGlobals.check_global_rec_arrc                 C   s   | j dd d S rK   r]   rM   r   r   r   test_global_rec_arr   s    zTestGlobals.test_global_rec_arrc                 C   s   | j dd d S rO   r^   rM   r   r   r   test_global_rec_arr_npm   s    z#TestGlobals.test_global_rec_arr_npmc                 K   s`   t f |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 rQ   )r   r   rR   rS   r   r	   int32float32rU   rV   r   r   )rG   rH   rI   arr1arr2r   r   r   check_global_rec_arr_extract   s    
z(TestGlobals.check_global_rec_arr_extractc                 C   s   | j dd d S rK   re   rM   r   r   r   test_global_rec_arr_extract   s    z'TestGlobals.test_global_rec_arr_extractc                 C   s   | j dd d S rO   rf   rM   r   r   r   test_global_rec_arr_extract_npm   s    z+TestGlobals.test_global_rec_arr_extract_npmc                 K   s   t f |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 rQ   )r   r!   rR   rS   r   r	   ra   rb   r    int16float64rU   rV   r   r   r   r   )rG   rH   rI   rc   rd   Zarr3Zarr4r   r   r   check_two_global_rec_arrs   s    z%TestGlobals.check_two_global_rec_arrsc                 C   s   | j dd d S rK   rk   rM   r   r   r   test_two_global_rec_arrs   s    z$TestGlobals.test_two_global_rec_arrsc                 C   s   | j dd d S rO   rl   rM   r   r   r   test_two_global_rec_arrs_npm   s    z(TestGlobals.test_two_global_rec_arrs_npmc                 C   s   t dd}| d| d S )Nr*      T)r&   rF   )rG   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)rR   recarrayr\   r   r%   rF   )rG   r   rp   r   r   r   test_global_record   s    zTestGlobals.test_global_recordc                 C   s    t }t|}| | |  d S r   )r/   r   rF   rG   Zpyfuncjitfuncr   r   r   test_global_int_tuple   s    z!TestGlobals.test_global_int_tuplec                 C   s    t }t|}| | |  d S r   )r1   r   rF   rt   r   r   r   test_global_str_tuple   s    z!TestGlobals.test_global_str_tuplec                 C   s    t }t|}| | |  d S r   )r5   r   rF   rt   r   r   r   test_global_mixed_tuple   s    z#TestGlobals.test_global_mixed_tuplec                 C   s    t }t|}| | |  d S r   )r7   r   rF   rt   r   r   r   test_global_float_tuple   s    z#TestGlobals.test_global_float_tuplec                 C   s    t }t|}| | |  d S r   )r9   r   rF   rt   r   r   r   test_global_npy_int_tuple   s    z%TestGlobals.test_global_npy_int_tuplec              
   C   sN   t tfD ]@}t|}| tj}|  W 5 Q R X d}| |t|j qd S )Nz%Cannot modify readonly array of type:)	r<   r>   r   assertRaisesr   ZTypingErrorZassertInstr	exception)rG   funcru   emsgr   r   r   !test_global_write_to_arr_in_tuple   s    z-TestGlobals.test_global_write_to_arr_in_tuplec                 C   s    t }t|}| | |  d S r   )rC   r   rF   rt   r   r   r   test_global_npy_bool  s    z TestGlobals.test_global_npy_boolN)__name__
__module____qualname__rJ   rN   rP   rX   rZ   r[   r]   r_   r`   re   rg   rh   rk   rm   rn   rq   rs   rv   rw   rx   ry   rz   r   r   r   r   r   r   rD      s0   	
rD   __main__)CZnumpyrR   Znumbar   r   r   Znumba.extendingr   Znumba.testsr   ZunittestZaranger   r   rT   r   tmpr   r   ra   rb   r\   rr   r   r   r   r   r   r   r   r   ri   rj   Zy_dtr    r   r   r!   r$   r%   r&   r.   r0   r2   r6   Zuint64Zint8r8   Zonesr;   r=   r/   r1   r5   r7   r9   r<   r>   Zbool_rA   rB   r@   rC   ZTestCaserD   r   mainr   r   r   r   <module>   sj   

	




 
