
    xKg                        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j                  d      Z ej                  d      Z ej"                  d	      Zeddd
   Zej)                  d      j*                  Z ej.                  dej0                  fdg      Z ej"                  dej0                        j5                  e      Zeddd   Z ej:                  dej<                        Z ej                  dg      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      Z+ G d d e      Z,e-d!k(  r ej\                          yy)"    N)njit)TypingError)jittypeof)types)TestCase*   @         )      x)yS3    dtypes   XXXX_array_contents_XXXX   c                     t         d   S N )a0is    d/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_array_constants.pygetitem0r      s    b6M    c                     t         |    S N)a1r   s    r   getitem1r#   #       a5Lr   c                     t         |    S r!   )a2r   s    r   getitem2r'   '   r$   r   c                     t         |    S r!   )a3r   s    r   getitem3r*   +   r$   r   c                     t         |    S r!   )a4r   s    r   getitem4r-   /   r$   r   c                     t         |    S r!   )a5r   s    r   getitem5r0   3   r$   r   c                     t         |    S r!   )a6r   s    r   getitem6r3   7   r$   r   c                      t         S r!   )s1r   r   r   use_arrayscalar_constr6   ;   s    Ir   c                      dt         d<   y )Nr   r   )myarrayr   r   r   write_to_global_arrayr9   ?   s    GAJr   c                  L    t        j                  dt         j                        S )Ns   foor   )np
frombufferuint8r   r   r   bytes_as_const_arrayr>   C   s    ==rxx00r   c                   v    e 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ej                   d        Zy)TestConstantArrayz
    Test array constants.
    c                      t        t        j                  f      |      }dD ].  }t        j                  j                   ||       ||             0 y )N)r   r   r   )r   r   int32r;   testingassert_array_equal)selfpyfunccfuncr   s       r   check_array_constz#TestConstantArray.check_array_constL   s?    $ekk^$V,AJJ))&)U1X> r   c                 .    | j                  t               y r!   )rH   r   rE   s    r   test_array_const_0dz%TestConstantArray.test_array_const_0dQ       x(r   c                 .    | j                  t               y r!   )rH   r#   rJ   s    r   test_array_const_1d_contigz,TestConstantArray.test_array_const_1d_contigT   rL   r   c                 .    | j                  t               y r!   )rH   r'   rJ   s    r   test_array_const_1d_noncontigz/TestConstantArray.test_array_const_1d_noncontigW   rL   r   c                 .    | j                  t               y r!   )rH   r*   rJ   s    r   test_array_const_2dz%TestConstantArray.test_array_const_2dZ   rL   r   c                 .    | j                  t               y r!   )rH   r-   rJ   s    r   test_record_array_const_contigz0TestConstantArray.test_record_array_const_contig]   rL   r   c                 .    | j                  t               y r!   )rH   r0   rJ   s    r   !test_record_array_const_noncontigz3TestConstantArray.test_record_array_const_noncontig`   rL   r   c                    t         j                  f} t        |d      t              }|j	                  |      }|j                         D ],  }d|v s| j                  d|       | j                  d|        y | j                  d       y)zt
        Issue #1933: the array declaration in the LLVM IR must have
        the right alignment specified.
        T)nopythonXXXX_array_contents_XXXXzconstant [24 x i8]z	, align 4z+could not find array declaration in LLVM IRN)r   intpr   r3   inspect_llvm
splitlinesassertInfail)rE   sigrG   irlines        r   test_array_const_alignmentz,TestConstantArray.test_array_const_alignmentc   s{    
 zzm'C$'1$MMOD)T12D9 k40 $ IICDr   c                 j    t         } t        d      |      }| j                   |        |              y r   )r6   r   assertEqualrE   rF   rG   s      r   test_arrayscalar_constz(TestConstantArray.test_arrayscalar_constu   s+    &R	&!57+r   c                     t         }| j                  t              5   t        d      |       d d d        y # 1 sw Y   y xY wr   )r9   assertRaisesr   r   )rE   rF   s     r   test_write_to_global_arrayz,TestConstantArray.test_write_to_global_arrayz   s/    &{+DIf ,++s	   7A c                     t        j                  dg      fd} t        d      |      } |       }| j                  |d       y)zy
        This issue is caused by an unresolved bug in numpy since version 1.6.
        See numpy GH issue #3147.
        V   c                       d   S )Nr   r   )constarrs   r   rF   z1TestConstantArray.test_issue_1850.<locals>.pyfunc   s    A;r   r   N)r;   arrayr   rd   )rE   rF   rG   outrm   s       @r   test_issue_1850z!TestConstantArray.test_issue_1850   sB    
 88RD>	 R	&!gb!r   c                 ~     fd}d}t        j                  |      j                  |      }t        j                  t         j                  j	                  d|dz  f            } j                  t        |      j                  d        j                  t        |      j                  d        ||        ||       y)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                     t        j                         }j                  t               t        |              fd} t	        d      |      }j                  t        |j                  d             j                          |       }j                   |       ~d   |       }t         j                  j                  ||       j                  t        |      t        |             y )Nc                       S r!   r   )biggies   r   rF   zFTestConstantArray.test_too_big_to_freeze.<locals>.test.<locals>.pyfunc   s    r   r   )r;   copyrd   r   r   
assertLesslenr[   nbytesassertIsrC   assert_equal)rt   expectrF   rG   ro   rE   s   `    r   testz6TestConstantArray.test_too_big_to_freeze.<locals>.test   s    WWV_FVF^VF^< DIf%E OOC 2 22 78&--H'CMM&#&F'CJJ##FC0VF^VC[9r   i r   CFN)r;   arangereshapeasfortranarrayrandomrd   r   layout)rE   r|   nelemc_arrayf_arrays   `    r   test_too_big_to_freezez(TestConstantArray.test_too_big_to_freeze   s    	:, ))E"**51##BII$4$4a!_$EF//5//5WWr   N)__name__
__module____qualname____doc__rH   rK   rN   rP   rR   rT   rV   rb   rf   ri   rp   r   run_test_in_subprocessr   r   r   r   r@   r@   G   sY    ?
))))))E$,

" $$% %%r   r@   c                       e Zd Zd Zy)TestConstantBytesc                     t         } t        d      |      }t        j                  j	                   |        |              y r   )r>   r   r;   rC   rD   re   s      r   test_constant_bytesz%TestConstantBytes.test_constant_bytes   s/    %R	&!


%%fh8r   N)r   r   r   r   r   r   r   r   r      s    9r   r   __main__)/numpyr;   unittestnumbar   numba.core.errorsr   r   r   
numba.corer   numba.tests.supportr   rn   r   rB   r5   r   r"   r&   r   Tr)   r   int8dtviewr,   r/   r<   float32r2   r8   r   r#   r'   r*   r-   r0   r3   r6   r9   r>   r@   r   r   mainr   r   r   <module>r      sH      )   ( RXXb\RXXb\RYYr]!WZZRXXRWW~{+,RYYr!&&r*"X R]].bjjA "((A5/1l l^9 9 zHMMO r   