Ë
    èÿæiÿ  ã                   ó   — d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZmZ  ej&                  e
j(                  j*                  «      Zd„ Z G d„ de«      Z G d„ d	e«      Zed
k(  r ej6                  «        yy)é    N)ÚtypesÚtypingÚcgutilsÚcpu)Úglobal_compiler_lock)ÚTestCaseÚrun_in_subprocessc                 ó6   — t        j                  t        | «      S ©N)ÚirÚConstantÚmachine_int)Úns    úm/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_cgutils.pyÚmachine_constr      s   € Ü�;‰;”{ AÓ&Ð&ó    c                   ó˜   — e Zd Zd„ Zej
                  d„ «       Zd„ Zd„ Zej
                  d
d„«       Z	ej
                  d„ «       Z
d„ Zd„ Zy	)ÚStructureTestCasec                 ó`   — t        j                  «       }t        j                  |«      | _        y r   )r   ÚContextr   Ú
CPUContextÚcontext)ÚselfÚtyping_contexts     r   ÚsetUpzStructureTestCase.setUp   s   € ÜŸ™Ó)ˆÜ—~‘~ nÓ5ˆ�r   c              #   ó  ‡ ‡‡‡	K  — t        j                  t        t        g|z  «      }t        j                  t        j
                  gt        j
                  f|z  ¢­Ž Š‰ j                  j                  d«      Š	t        j                  ‰	|‰ j                  «       «      Š‰j                  sJ ‚‰j                  d«      }t        j                  |«      }dg}t        ˆˆˆ	ˆ fd„«       }‰ j                  |‰j                  |f–— y ­w)NÚ ÚentryTc                  óî   •— ‰j                   j                  «       }|j                  d‰j                  «       z  «      }|j	                  ‰«       |j                  ‰j                  «      } ‰|«      } || Ž S )Nztest_module.%s)r   ÚcodegenÚcreate_libraryÚidÚadd_ir_moduleÚget_pointer_to_functionÚname)	Úargsr    ÚlibraryÚcptrÚcfuncÚctypes_fntyÚfunctionÚmoduler   s	        €€€€r   Ú	call_funcz5StructureTestCase.compile_function.<locals>.call_func)   sg   ø€ à—l‘l×*Ñ*Ó,ˆGØ×,Ñ,Ð-=ÀÇÁÃ	Ñ-IÓJˆGØ×!Ñ! &Ô)Ø×2Ñ2°8·=±=ÓAˆDÙ Ó%ˆEÙ˜$�<Ðr   )r   ÚFunctionTyper   ÚctypesÚ	CFUNCTYPEÚc_size_tr   Úcreate_moduler   Úget_or_insert_functionr"   Úis_declarationÚappend_basic_blockÚ	IRBuilderr   r&   )
r   ÚnargsÚ	llvm_fntyÚentry_blockÚbuilderÚfirstr-   r*   r+   r,   s
   `      @@@r   Úcompile_functionz"StructureTestCase.compile_function   s×   ûè ø€ ä—O‘O¤K´+°ÀÑ1FÓGˆ	Ü×&Ñ&¤v§¡ð BÜ'-§¡Ð&8¸5Ñ&@òBˆà—‘×+Ñ+¨BÓ/ˆä×1Ñ1°&¸)ÀTÇWÁWÃYÓOˆØ×&Ò&Ð&Ð&Ø×1Ñ1°'Ó:ˆÜ—,‘,˜{Ó+ˆà�ˆä	ö	 ó 
ð	 ð �l‰l˜G X§]¡]°IÐ=Ó=ùs   †C>Dc                 óÀ   — t        |t        «      sJ ‚t        j                  j                  }t        j
                  g|_        t        j                  |_         ||«      S r   )	Ú
isinstanceÚ	bytearrayr/   Ú	pythonapiÚPyByteArray_AsStringÚ	py_objectÚargtypesÚc_void_pÚrestype)r   ÚbaÚba_as_strings      r   Úget_bytearray_addrz$StructureTestCase.get_bytearray_addr5   sK   € Ü˜"œiÔ(Ð(Ð(Ü×'Ñ'×<Ñ<ˆÜ!'×!1Ñ!1Ð 2ˆÔÜ%Ÿ™ˆÔÙ˜BÓÐr   c                 ó  — | j                  d«      5 \  }}}}|j                  |d   |d   «      }|j                  |«       d d d «       | j                   dd«      d«       | j                   |dd«      d«       y # 1 sw Y   Œ<xY w)	Né   r   é   é   éþÿÿÿé   é   é   )r<   ÚaddÚretÚassertEqual)r   r   r:   r&   ÚcallÚress         r   Útest_compile_functionz'StructureTestCase.test_compile_function<   s{   € à×"Ñ" 1Ô%Ñ)G¨'°7¸DÀ$Ø—+‘+˜d 1™g t¨A¡wÓ/ˆCØ�K‰K˜Ô÷ &ð 	×Ñ™˜a › aÔ(Ø×Ñ™˜a › QÕ'÷	 &Ð%ús   ’/A<Á<Bc              #   ó´  K  — | j                  d«      5 \  }}}} |||«      }|j                  |d   t        |«      «      }	|j                  |	t	        j
                  |j                  «      «      }	 ||||	¬«      }||||f–— |j                  t	        j                  t        d«      «       d d d «        | j                  |«      «       y # 1 sw Y   Œ!xY w­w)NrK   r   )Úref)r<   rQ   r   Úinttoptrr   ÚPointerTypeÚ_typerR   r   r   rH   )
r   Ústruct_classÚbufÚoffsetr   r:   r&   rT   ÚinstÚsptrs
             r   Úrun_struct_accessz#StructureTestCase.run_struct_accessD   s¹   è ø€ à×"Ñ" 1Ô%Ñ)G¨'°7¸DÀ$Ù ¨Ó1ˆDØ—;‘;˜t A™w¬°fÓ(=Ó>ˆDØ×#Ñ# D¬"¯.©.¸¿¹Ó*DÓEˆDÙ ¨°dÔ;ˆDà˜7 D¨$Ð.Ò.à�K‰KœŸ™¤K°Ó3Ô4÷ &ñ 	ˆT×$Ñ$ SÓ)Õ*÷ &Ð%üs   ‚C”BCÂ, CÃCÃCc              #   ó  K  — t        d«      dz  }|d d  }d}| j                  |||«      5 \  }}}	}
|||
f–— d d d «       | j                  ||«       t        j                  |||g|¢­Ž  | j                  ||«       y # 1 sw Y   ŒFxY w­w)Nó   !é(   é   )r?   ra   ÚassertNotEqualÚstructÚ	pack_intorS   )r   r\   Ú
struct_fmtÚstruct_argsr]   Úexpectedr^   r   r:   r&   r_   s              r   Úrun_simple_struct_testz(StructureTestCase.run_simple_struct_testQ   s”   è ø€ ô ˜‹o Ñ"ˆØ‘q�6ˆØˆà×#Ñ# L°#°vÔ>Ù-�˜ $¨Ø˜7 DÐ(Ò(÷ ?ð 	×Ñ˜C Ô*Ü×Ñ˜ X¨vÐD¸ÓDØ×Ñ˜˜hÕ'÷ ?Ð>üs   ‚)B	«A=¸AB	Á=BÂB	c                 óJ  —  G d„ dt         j                  «      }d}| j                  ||d«      5 \  }}}t        j                  t        j
                  d«      d«      |_        t        j                  t        j
                  d«      d«      |_        d d d «       y # 1 sw Y   y xY w)	Nc                   óD   — e Zd Zdej                  fdej
                  fgZy)ú,StructureTestCase.test_int_fields.<locals>.SÚaÚbN)Ú__name__Ú
__module__Ú__qualname__r   Úint32Úuint16Ú_fields© r   r   ÚSro   b   s!   „ Ø˜UŸ[™[Ð)Ø˜UŸ\™\Ð*ð,‰Gr   ry   z=iH)éxV4éÍ«  é    rz   é   r{   )r   Ú	Structurerl   r   r   ÚIntTyperp   rq   ©r   ry   Úfmtr   r:   r_   s         r   Útest_int_fieldsz!StructureTestCase.test_int_fieldsa   sx   € ô	,”×!Ñ!ô 	,ð ˆØ×(Ñ(¨¨CÐ1EÔFÙ'�˜ $Ü—[‘[¤§¡¨B£°Ó<ˆDŒFÜ—[‘[¤§¡¨B£°Ó8ˆDŒF÷ G×FÑFús   ¯A!BÂB"c                 óF  —  G d„ dt         j                  «      }d}| j                  ||d«      5 \  }}}t        j                  t        j
                  «       d«      |_        t        j                  t        j                  «       d«      |_        d d d «       y # 1 sw Y   y xY w)Nc                   óD   — e Zd Zdej                  fdej
                  fgZy)ú.StructureTestCase.test_float_fields.<locals>.Srp   rq   N)rr   rs   rt   r   Úfloat64Úfloat32rw   rx   r   r   ry   r…   m   s!   „ Ø˜UŸ]™]Ð+Ø˜UŸ]™]Ð+ð-‰Gr   ry   z=df)ç®Gáz®ó?ç=
×£p=@rˆ   r‰   )	r   r~   rl   r   r   Ú
DoubleTyperp   Ú	FloatTyperq   r€   s         r   Útest_float_fieldsz#StructureTestCase.test_float_fieldsl   sr   € ô	-”×!Ñ!ô 	-ð ˆØ×(Ñ(¨¨C°Ô>Ù'�˜ $Ü—[‘[¤§¡£°$Ó7ˆDŒFÜ—[‘[¤§¡£°Ó6ˆDŒF÷ ?×>Ñ>ús   ¯ABÂB N)r   )rr   rs   rt   r   Ú
contextlibÚcontextmanagerr<   rH   rV   ra   rl   r‚   rŒ   rx   r   r   r   r      si   „ ò6ð ×Ññ>ó ð>ò2 ò(ð ×Ñò
+ó ð
+ð ×Ññ(ó ð(ò	9ó	7r   r   c                   ó   — e Zd ZdZd„ Zy)ÚTestCGContextz/Tests for code generation context functionalityc                 ó‚   — d}d|› d�}t        |«      \  }}| j                  t        |«      |j                  «       «       y )Ni@â az  if 1:
        from numba import njit, types
        from numba.extending import intrinsic

        @intrinsic
        def printf(tyctx, int_arg):
            sig = types.void(int_arg)
            def codegen(cgctx, builder, sig, llargs):
                cgctx.printf(builder, "%d\n", *llargs)
            return sig, codegen

        @njit
        def foo():
            printf(z)

        foo()
        )r	   ÚassertInÚstrÚdecode)r   ÚvalueÚcodeÚoutÚ_s        r   Útest_printfzTestCGContext.test_printf{   sI   € ð ˆðð �7ð 	ðˆô$ # 4Ó(‰ˆˆQØ�‰”c˜%“j #§*¡*£,Õ/r   N)rr   rs   rt   Ú__doc__r™   rx   r   r   r�   r�   x   s
   „ Ù9ó0r   r�   Ú__main__)r�   r/   rg   ÚsysÚllvmlite.irr   ÚnumpyÚnpÚunittestÚ
numba.corer   r   r   r   Únumba.core.compiler_lockr   Únumba.tests.supportr   r	   r   ÚintpÚbitwidthr   r   r   r�   rr   Úmainrx   r   r   Ú<module>r§      s|   ðÛ Û Û Û 
å Û ã ß 2Ó 2Ý 9ß ;ð ˆb�j‰j˜Ÿ™×,Ñ,Ó-€ò'ô`7˜ô `7ôF0�Hô 0ð> ˆzÒØ€H‡M�M…Oð r   