§
    ƒÛgÉ  ã                   ó¢  — 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j,        ¦  «        Z- G d„ d ej,        ¦  «        Z.e/d!k    r ej0        ¦   «          dS dS )"é    N)Úcompile_isolated)ÚTypingError)ÚjitÚtypeof)Útypes)Úskip_m1_llvm_rtdyld_failureé*   é@   é   é   )é   é   Úx)ÚyÚS3é    ©Údtypeéþÿÿÿs   XXXX_array_contents_XXXXé   c                 ó   — t           d         S ©N© )Úa0©Úis    úV/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_array_constants.pyÚgetitem0r      s   € ÝˆbŒ6€Mó    c                 ó   — t           |          S ©N)Úa1r   s    r   Úgetitem1r#   #   ó   € ÝˆaŒ5€Lr   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   € Ø…GˆA�J€J€Jr   c                  óB   — t          j        dt           j        ¬¦  «        S )Ns   foor   )ÚnpÚ
frombufferÚuint8r   r   r   Úbytes_as_const_arrayr>   C   s   € ÝŒ=˜¥r¤xÐ0Ñ0Ô0Ð0r   c                   ój   — 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d„ ¦   «         ZdS )ÚTestConstantArrayz
    Test array constants.
    c                 ó¸   — t          |t          j        f¦  «        }|j        }dD ]4}t          j                              ||¦  «         ||¦  «        ¦  «         Œ5d S )N)r   r   r   )r   r   Úint32Úentry_pointr;   ÚtestingÚassert_array_equal)ÚselfÚpyfuncÚcresÚcfuncr   s        r   Úcheck_array_constz#TestConstantArray.check_array_constL   sa   € Ý ­¬¨Ñ7Ô7ˆØÔ ˆØð 	?ð 	?ˆAÝŒJ×)Ò)¨&¨&°©)¬)°U°U¸1±X´XÑ>Ô>Ð>Ð>ð	?ð 	?r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r   ©rF   s    r   Útest_array_const_0dz%TestConstantArray.test_array_const_0dR   ó   € Ø×Ò�xÑ(Ô(Ð(Ð(Ð(r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r#   rL   s    r   Útest_array_const_1d_contigz,TestConstantArray.test_array_const_1d_contigU   rN   r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r'   rL   s    r   Útest_array_const_1d_noncontigz/TestConstantArray.test_array_const_1d_noncontigX   rN   r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r*   rL   s    r   Útest_array_const_2dz%TestConstantArray.test_array_const_2d[   rN   r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r-   rL   s    r   Útest_record_array_const_contigz0TestConstantArray.test_record_array_const_contig^   rN   r   c                 ó:   — |                       t          ¦  «         d S r!   )rJ   r0   rL   s    r   Ú!test_record_array_const_noncontigz3TestConstantArray.test_record_array_const_noncontiga   rN   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)rF   ÚsigrI   ÚirÚlines        r   Útest_array_const_alignmentz,TestConstantArray.test_array_const_alignmentd   s²   € õ
 ŒzˆmˆØ'•�C $Ð'Ñ'Ô'­Ñ1Ô1ˆØ×Ò Ñ$Ô$ˆØ—M’M‘O”Oð 	Eð 	EˆDØ)¨TÐ1Ð1Ø—’Ð2°DÑ9Ô9Ð9ð —’˜k¨4Ñ0Ô0Ð0Ø��ð 2ð �IŠIÐCÑDÔDÐDÐDÐDr   c                 óŽ   — t           }t          |d¦  «        }|j        }|                       |¦   «          |¦   «         ¦  «         d S r   )r6   r   rC   ÚassertEqual©rF   rG   rH   rI   s       r   Útest_arrayscalar_constz(TestConstantArray.test_arrayscalar_constv   sF   € Ý&ˆÝ ¨Ñ+Ô+ˆØÔ ˆà×Ò˜˜™œ 5 5¡7¤7Ñ+Ô+Ð+Ð+Ð+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   )rF   rG   s     r   Útest_write_to_global_arrayz,TestConstantArray.test_write_to_global_array}   s�   € Ý&ˆØ×Ò�{Ñ+Ô+ð 	)ð 	)Ý˜V RÑ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)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   rG   z1TestConstantArray.test_issue_1850.<locals>.pyfunc‰   s   ø€ Ø˜A”;Ðr   r   N)r;   Úarrayr   rC   rf   )rF   rG   rH   Úoutro   s       @r   Útest_issue_1850z!TestConstantArray.test_issue_1850‚   sk   ø€ õ
 ”8˜R˜D‘>”>ˆð	ð 	ð 	ð 	ð 	õ   ¨Ñ+Ô+ˆØ×ÒÑ Ô ˆØ×Ò˜˜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          |j                             ¦   «         ¦  «        ‰ j	        ¦  «         | 
                    ¦   «         }‰                     ‰ |¦  «         ~d Š | 
                    ¦   «         }t           j                             ||¦  «         ‰                     t          |¦  «        t          |¦  «        ¦  «         d S )Nc                  ó   •— ‰ S r!   r   )Úbiggies   €r   rG   zFTestConstantArray.test_too_big_to_freeze.<locals>.test.<locals>.pyfunc›   s   ø€ Ø�r   r   )r;   Úcopyrf   r   r   Ú
assertLessÚlenÚlibraryÚget_llvm_strÚnbytesrC   ÚassertIsrD   Úassert_equal)rv   ÚexpectrG   rH   rq   rF   s   `    €r   Útestz6TestConstantArray.test_too_big_to_freeze.<locals>.test—   s	  øø€ Ý”W˜V‘_”_ˆFØ×Ò�V F™^œ^­V°F©^¬^Ñ<Ô<Ð<ðð ð ð ð õ $ F¨BÑ/Ô/ˆDð �OŠO�C ¤× 9Ò 9Ñ ;Ô ;Ñ<Ô<¸f¼mÑLÔLÐLà×"Ò"Ñ$Ô$ˆCØ�MŠM˜& #Ñ&Ô&Ð&àØˆFà×"Ò"Ñ$Ô$ˆCÝŒJ×#Ò# F¨CÑ0Ô0Ð0Ø×Ò�V F™^œ^­V°C©[¬[Ñ9Ô9Ð9Ð9Ð9r   i€–˜ r   ÚCÚFN)r;   ÚarangeÚreshapeÚasfortranarrayÚrandomrf   r   Úlayout)rF   r€   ÚnelemÚc_arrayÚf_arrays   `    r   Útest_too_big_to_freezez(TestConstantArray.test_too_big_to_freeze�   sÄ   ø€ ð	:ð 	:ð 	:ð 	:ð 	:ð, ˆå”)˜EÑ"Ô"×*Ò*¨5Ñ1Ô1ˆÝÔ#¥B¤I×$4Ò$4°a¸À!¹°_Ñ$EÔ$EÑFÔFˆØ×Ò� ™œÔ/°Ñ5Ô5Ð5Ø×Ò� ™œÔ/°Ñ5Ô5Ð5àˆˆW‰ŒˆàˆˆW‰Œˆˆˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rJ   rM   rP   rR   rT   rV   rX   rd   rh   rk   rr   r   r‹   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¦  «        }|j        }t          j                              |¦   «          |¦   «         ¦  «         d S r   )r>   r   rC   r;   rD   rE   rg   s       r   Útest_constant_bytesz%TestConstantBytes.test_constant_bytesº   sH   € Ý%ˆÝ ¨Ñ+Ô+ˆØÔ ˆå
Œ
×%Ò% f f¡h¤h°°±´Ñ8Ô8Ð8Ð8Ð8r   N)rŒ   r�   rŽ   r“   r   r   r   r‘   r‘   ¹   s#   € € € € € ð9ð 9ð 9ð 9ð 9r   r‘   Ú__main__)1Únumpyr;   ÚunittestÚnumba.core.compilerr   Únumba.core.errorsr   Únumbar   r   Ú
numba.corer   Únumba.tests.supportr   rp   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>   ÚTestCaser@   r‘   rŒ   Úmainr   r   r   ú<module>r£      sj  ðØ Ð Ð Ð à €€€Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ð €R„Xˆb�\„\€à€R„Xˆb�\„\€à€R„Yˆr�]„]€Øˆˆˆ!ˆ„W€Ø‡Z‚Z�ÑÔÔ€à€R„X��R”Wˆ~˜{Ð+Ñ,Ô,€à€R„Yˆr˜œÐ!Ñ!Ô!×&Ò& rÑ*Ô*€Øˆˆˆ"ˆ„X€ð €R„]Ð.°b´jÐAÑAÔA€ð ˆ"Œ(�A�5‰/Œ/€ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð1ð 1ð 1ðoð oð oð oð o˜Ô)ñ oô oð oðd9ð 9ð 9ð 9ð 9˜Ô)ñ 9ô 9ð 9ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   