
    J/Ph                        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                    d          j        Z ej        dej        fdg          Z ej        dej                                      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.                     dS dS )"    N)njit)TypingError)jittypeof)types)TestCase*   @         )      x)yS3    dtypes   XXXX_array_contents_XXXX   c                     t           d         S N )a0is    `/var/www/html/test/jupyter/venv/lib/python3.11/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<   d S )Nr   r   )myarrayr   r   r   write_to_global_arrayr9   ?   s    GAJJJr   c                  B    t          j        dt           j                  S )Ns   foor   )np
frombufferuint8r   r   r   bytes_as_const_arrayr>   C   s    =rx0000r   c                   t    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dS )TestConstantArrayz
    Test array constants.
    c                      t          t          j        f          |          }dD ]4}t          j                             ||           ||                     5d S )N)r   r   r   )r   r   int32r;   testingassert_array_equal)selfpyfunccfuncr   s       r   check_array_constz#TestConstantArray.check_array_constL   sa    $ek^$$V,, 	? 	?AJ))&&))UU1XX>>>>	? 	?r   c                 :    |                      t                     d S r!   )rH   r   rE   s    r   test_array_const_0dz%TestConstantArray.test_array_const_0dQ       x(((((r   c                 :    |                      t                     d S r!   )rH   r#   rJ   s    r   test_array_const_1d_contigz,TestConstantArray.test_array_const_1d_contigT   rL   r   c                 :    |                      t                     d S r!   )rH   r'   rJ   s    r   test_array_const_1d_noncontigz/TestConstantArray.test_array_const_1d_noncontigW   rL   r   c                 :    |                      t                     d S r!   )rH   r*   rJ   s    r   test_array_const_2dz%TestConstantArray.test_array_const_2dZ   rL   r   c                 :    |                      t                     d S r!   )rH   r-   rJ   s    r   test_record_array_const_contigz0TestConstantArray.test_record_array_const_contig]   rL   r   c                 :    |                      t                     d S r!   )rH   r0   rJ   s    r   !test_record_array_const_noncontigz3TestConstantArray.test_record_array_const_noncontig`   rL   r   c                 F   t           j        f} t          |d          t                    }|                    |          }|                                D ]5}d|v r/|                     d|           |                     d|            dS 6|                     d           dS )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    
 zm'C$'''11$$MMOO 	E 	ED)T112D999 k4000 2 IICDDDDDr   c                     t           } t          d          |          }|                      |             |                       d S r   )r6   r   assertEqualrE   rF   rG   s      r   test_arrayscalar_constz(TestConstantArray.test_arrayscalar_constu   sD    &R		&!!5577+++++r   c                     t           }|                     t                    5   t          d          |           d d d            d S # 1 swxY w Y   d S r   )r9   assertRaisesr   r   )rE   rF   s     r   test_write_to_global_arrayz,TestConstantArray.test_write_to_global_arrayz   s    &{++ 	 	DIIf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     t          j        dg          f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                       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   sk    
 8RD>>	 	 	 	 	 R		&!!eggb!!!!!r   c                      fd}d}t          j        |                              |          }t          j        t           j                            d|dz  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                 <    t          j                   }                    t                     t          |                      fd} t	          d          |          }                    t          |                    d                     j                    |            }	                     |           ~d   |            }t           j
                            ||                               t          |          t          |                     d S )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   WV__FVF^^VF^^<<<     DIIf%%E OOC 2 22 7 788&-HHH%''CMM&#&&&F%''CJ##FC000VF^^VC[[9999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1#BI$4$4a!_$E$EFF/555/5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   s         ? ? ?
) ) )) ) )) ) )) ) )) ) )) ) )E E E$, , ,
  
" " " $% % %$% % %r   r@   c                       e Zd Zd ZdS )TestConstantBytesc                     t           } t          d          |          }t          j                             |             |                       d S r   )r>   r   r;   rC   rD   re   s      r   test_constant_bytesz%TestConstantBytes.test_constant_bytes   sF    %R		&!!

%%ffhh88888r   N)r   r   r   r   r   r   r   r   r      s#        9 9 9 9 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      sd              ) ) ) ) ) )               ( ( ( ( ( ( RXb\\RXb\\RYr]]!WZZRXRW~{+,,RYr!!!&&r**"X R].bjAAA "(A5//                  1 1 1l l l l l l l l^9 9 9 9 9 9 9 9 zHMOOOOO r   