U
    9%e                     @   sf  d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ edZedZed	Zeddd
 ZedjZedejfdgZejdejdeZeddd ZejdejdZ edg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+G d'd( d(ej,Z-G d)d* d*ej,Z.e/d+krbe0  dS ),    N)compile_isolated)TypingError)jittypeof)types)skip_m1_llvm_rtdyld_failure*   @         )      x)yZS3    dtypes   XXXX_array_contents_XXXX   c                 C   s   t d S N )a0ir   r   _/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_array_constants.pygetitem0   s    r   c                 C   s   t |  S N)a1r   r   r   r   getitem1#   s    r   c                 C   s   t |  S r   )a2r   r   r   r   getitem2'   s    r    c                 C   s   t |  S r   )a3r   r   r   r   getitem3+   s    r"   c                 C   s   t |  S r   )a4r   r   r   r   getitem4/   s    r$   c                 C   s   t |  S r   )a5r   r   r   r   getitem53   s    r&   c                 C   s   t |  S r   )a6r   r   r   r   getitem67   s    r(   c                   C   s   t S r   )s1r   r   r   r   use_arrayscalar_const;   s    r*   c                   C   s   dt d< d S )Nr   r   )myarrayr   r   r   r   write_to_global_array?   s    r,   c                   C   s   t jdt jdS )Ns   foor   )np
frombufferZuint8r   r   r   r   bytes_as_const_arrayC   s    r/   c                   @   st   e Zd 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edd ZdS )TestConstantArrayz
    Test array constants.
    c                 C   s8   t |tjf}|j}dD ]}tj|||| qd S )N)r   r   r   )r   r   int32entry_pointr-   testingassert_array_equal)selfpyfunccrescfuncr   r   r   r   check_array_constL   s    z#TestConstantArray.check_array_constc                 C   s   |  t d S r   )r9   r   r5   r   r   r   test_array_const_0dR   s    z%TestConstantArray.test_array_const_0dc                 C   s   |  t d S r   )r9   r   r:   r   r   r   test_array_const_1d_contigU   s    z,TestConstantArray.test_array_const_1d_contigc                 C   s   |  t d S r   )r9   r    r:   r   r   r   test_array_const_1d_noncontigX   s    z/TestConstantArray.test_array_const_1d_noncontigc                 C   s   |  t d S r   )r9   r"   r:   r   r   r   test_array_const_2d[   s    z%TestConstantArray.test_array_const_2dc                 C   s   |  t d S r   )r9   r$   r:   r   r   r   test_record_array_const_contig^   s    z0TestConstantArray.test_record_array_const_contigc                 C   s   |  t d S r   )r9   r&   r:   r   r   r   !test_record_array_const_noncontiga   s    z3TestConstantArray.test_record_array_const_noncontigc                 C   sb   t jf}t|ddt}||}| D ](}d|kr*| d| | d|  q^q*| d dS )zt
        Issue #1933: the array declaration in the LLVM IR must have
        the right alignment specified.
        T)ZnopythonZXXXX_array_contents_XXXXzconstant [24 x i8]z	, align 4z+could not find array declaration in LLVM IRN)r   Zintpr   r(   Zinspect_llvm
splitlinesZassertInZfail)r5   sigr8   Zirliner   r   r   test_array_const_alignmentd   s    
z,TestConstantArray.test_array_const_alignmentc                 C   s(   t }t|d}|j}| | |  d S r   )r*   r   r2   assertEqualr5   r6   r7   r8   r   r   r   test_arrayscalar_constv   s    
z(TestConstantArray.test_arrayscalar_constc              	   C   s(   t }| t t|d W 5 Q R X d S r   )r,   assertRaisesr   r   )r5   r6   r   r   r   test_write_to_global_array}   s    z,TestConstantArray.test_write_to_global_arrayc                    s:   t dg  fdd}t|d}| }| |d dS )zy
        This issue is caused by an unresolved bug in numpy since version 1.6.
        See numpy GH issue #3147.
        V   c                      s    d S )Nr   r   r   Zconstarrr   r   r6      s    z1TestConstantArray.test_issue_1850.<locals>.pyfuncr   N)r-   arrayr   r2   rE   )r5   r6   r7   outr   rK   r   test_issue_1850   s
    
z!TestConstantArray.test_issue_1850c                    sr    fdd}d}t ||}t t jd|d f} t|jd  t|jd || || dS )z
        Test issue https://github.com/numba/numba/issues/2188 where freezing
        a constant array into the code that's prohibitively long and consumes
        too much RAM.
        c                    s   t  }t t|  fdd}t|d}t|j  j	 |
 } | ~d  |
 }t j|| t|t| d S )Nc                      s    S r   r   r   biggier   r   r6      s    zFTestConstantArray.test_too_big_to_freeze.<locals>.test.<locals>.pyfuncr   )r-   copyrE   r   r   Z
assertLesslenZlibraryZget_llvm_strnbytesr2   ZassertIsr3   Zassert_equal)rP   expectr6   r7   rM   r:   rO   r   test   s    

z6TestConstantArray.test_too_big_to_freeze.<locals>.testi r   CFN)r-   arangereshapeZasfortranarrayrandomrE   r   Zlayout)r5   rU   ZnelemZc_arrayZf_arrayr   r:   r   test_too_big_to_freeze   s    z(TestConstantArray.test_too_big_to_freezeN)__name__
__module____qualname____doc__r9   r;   r<   r=   r>   r?   r@   rD   rG   rI   rN   r   r[   r   r   r   r   r0   G   s   r0   c                   @   s   e Zd Zdd ZdS )TestConstantBytesc                 C   s*   t }t|d}|j}tj| |  d S r   )r/   r   r2   r-   r3   r4   rF   r   r   r   test_constant_bytes   s    
z%TestConstantBytes.test_constant_bytesN)r\   r]   r^   ra   r   r   r   r   r`      s   r`   __main__)1numpyr-   ZunittestZnumba.core.compilerr   Znumba.core.errorsr   Znumbar   r   Z
numba.corer   Znumba.tests.supportr   rL   r   r1   r)   rX   r   r   rY   Tr!   r   Zint8dtviewr#   r%   r.   Zfloat32r'   r+   r   r   r    r"   r$   r&   r(   r*   r,   r/   ZTestCaser0   r`   r\   mainr   r   r   r   <module>   s<   


r	
