Ë
    èÿæiØ  ã                   ó®   — d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ edz
  Z G d„ d	e«      Z G d
„ de«      Zy)é    N)Úmock)Únjit)ÚTestCase)Ú_TIMEOUT)Úmetadatag      N@c                   ó   — e Zd Zd„ Zd„ Zy)Ú_DummyClassc                 ó   — || _         y ©N©Úvalue)Úselfr   s     úq/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_entrypoints.pyÚ__init__z_DummyClass.__init__   s	   € Øˆ�
ó    c                 ó    — d| j                   z  S )Nz_DummyClass(%f, %f)r   )r   s    r   Ú__repr__z_DummyClass.__repr__   s   € Ø$ t§z¡zÑ1Ð1r   N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r	   r	      s   „ òó2r   r	   c                   ó˜   — e Zd ZdZd„ Zd„ ZdZ ej                  e	j                  j                  dd«      ek7  d«      d„ «       Zd	„ Zd
„ Zy)ÚTestEntrypointszE
    Test registration of init() functions from Numba extensions
    c                 óÂ  — t        j                  d¬«      }	 |t        j                  |j                  <   t        j                  ddd«      }t         j                  j                  t
        dd|fi¬«      5  dd	l	m
} d
|_        |j                  «        |j                  j                  «        |j                  «        |j                  j                  «        d d d «       |j                  t        j                  v rt        j                  |j                  = y y # 1 sw Y   ŒBxY w# |j                  t        j                  v rt        j                  |j                  = w w xY w)NÚ_test_numba_extension©r   Úinitz_test_numba_extension:init_funcÚnumba_extensionsÚentry_points©Úreturn_valuer   ©ÚentrypointsF)r   ÚMockÚsysÚmodulesr   Úimportlib_metadataÚ
EntryPointÚpatchÚobjectÚ
numba.corer#   Ú_already_initializedÚinit_allÚ	init_funcÚassert_called_once)r   ÚmodÚmy_entrypointr#   s       r   Útest_init_entrypointz$TestEntrypoints.test_init_entrypoint!   s  € ô �i‰iÐ!8Ô9ˆð	.à(+ŒC�K‰K˜Ÿ™Ñ%ä.×9Ñ9ØÐ9Ð;MóˆMô —‘×"Ñ"Ü"ØØ0°=Ð2BÐCð #õ õ 3ð 49�Ô0à×$Ñ$Ô&ð —‘×0Ñ0Ô2ð ×$Ñ$Ô&Ø—‘×0Ñ0Ô2÷%ð* �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +÷+ð ûð* �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +ús%   ˜AD$ Á5A"DÃD$ ÄD!ÄD$ Ä$:Ec                 óD  — t        j                  d¬«      } |j                  di dt        d«      i¤Ž 	 |t        j
                  |j                  <   t        j                  ddd«      }t         j                  j                  t        dd|fi¬	«      5  d
dlm} d|_        t        j                  d¬«      5 }|j!                  «        d d d «       d}D ]  }|t#        |«      v sŒ n t        d«      ‚|j$                  j'                  «        d d d «       |j                  t        j
                  v rt        j
                  |j                  = y y # 1 sw Y   Œ‡xY w# 1 sw Y   ŒNxY w# |j                  t        j
                  v rt        j
                  |j                  = w w xY w)NÚ_test_numba_bad_extensionr   zinit_func.side_effectÚbrokenr   z#_test_numba_bad_extension:init_funcr   r   r    r   r"   FT)Úrecordz2Numba extension module '_test_numba_bad_extension'z"Expected warning message not foundr   )r   r$   Úconfigure_mockÚ
ValueErrorr%   r&   r   r'   r(   r)   r*   r+   r#   r,   ÚwarningsÚcatch_warningsr-   Ústrr.   r/   )r   r0   r1   r#   ÚwÚbad_strÚxs          r   Útest_entrypoint_tolerancez)TestEntrypoints.test_entrypoint_toleranceG   sb  € ô �i‰iÐ!<Ô=ˆØˆ×ÑÑMÐ5´zÀ(Ó7KÐLÒMð$	.à(+ŒC�K‰K˜Ÿ™Ñ%ä.×9Ñ9ØØ5Ø"óˆMô —‘×"Ñ"Ü"ØØ0°=Ð2BÐCð #õ õ 3à38�Ô0ä×,Ñ,°DÕ9¸QØ×(Ñ(Ô*÷ :ð O�Û�AØ¤# a£&Ò(Ùð ô %Ð%IÓJÐJð —‘×0Ñ0Ô2÷+ð2 �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +÷ :Ð9ú÷ð ûð2 �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +úsB   µAE% Â$EÂ6EÃEÃ$(EÄE% ÅE	ÅEÅE"ÅE% Å%:FÚ	RUN_ENTRYÚ_EP_MAGIC_TOKENNzneeds tokenc                 ó^  ‡— dd l Šˆfd„}t        j                  d«      }||_        	 |t        j
                  |j                  <   t        j                  ddd«      }t        j                  j                  t        dd|fi¬«      5  t        d	„ «       }t        d
«      } ||«       d d d «       |j                  t        j
                  v rt        j
                  |j                  = y y # 1 sw Y   ŒBxY w# |j                  t        j
                  v rt        j
                  |j                  = w w xY w)Nr   c                  óÎ  •‡‡—  G ˆfd„d‰j                   j                  «      Š‰j                  j                  j	                  t
        «      ˆfd„«       } ‰j                  j                  ‰«       G ˆˆfd„d‰j                  j                  j                  «      «       Š‰j                  j                  ‰«      ˆfd„«       }‰j                  j                  ‰«      ˆfd„«       }y )Nc                   ó"   •‡ — e Zd Zˆˆ fd„Zˆ xZS )úaTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyTypec                 ó&   •— t         ‰| �  d¬«       y )NÚ	DummyType)Úname)Úsuperr   )r   rG   Ú	__class__s    €€r   r   zjTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyType.__init__‚   s   ø€ Ü˜) TÑ3¸Ð3ÕEr   ©r   r   r   r   Ú__classcell__)rJ   rG   s   @€r   rG   rE   �   s   ù„ ÷Fñ Fr   rG   c                 ó   •—  ‰«       S r   r   )ÚvalÚcrG   s     €r   Útyper_DummyClasszhTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.typer_DummyClass…   s   ø€ á “{Ð"r   c                   ó$   •‡ — e Zd Zˆˆ ˆfd„Zˆ xZS )úbTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyModelc                 óZ   •— d‰j                   j                  fg}t        ‰| �  |||«       y )Nr   )ÚtypesÚfloat64rI   r   )r   ÚdmmÚfe_typeÚmembersÚ
DummyModelrJ   Únumbas       €€€r   r   zkTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyModel.__init__‹   s/   ø€ à  %§+¡+×"5Ñ"5Ð6ð:�Gä˜* dÑ4°S¸'À7ÕKr   rK   )rJ   rY   rZ   s   @€€r   rY   rR   ‰   s   ù„ ÷Lò Lr   rY   c                 ó   •— |j                   j                  |d«      }‰j                  j                  j	                  | «      } ||j
                  |j                  «      }|j                   j                  |«      |_        |j                   j                  |«       |j                   j                  «       }‰j                  j                  j                  |j                  |«      }‰j                  j                  |j                  «       |¬«      S )Nr   )Úis_error)ÚpyapiÚobject_getattr_stringÚcoreÚcgutilsÚcreate_struct_proxyÚcontextÚbuilderÚfloat_as_doubler   ÚdecrefÚerr_occurredÚis_not_nullÚ	extendingÚNativeValueÚ	_getvalue)	ÚtypÚobjrO   Ú	value_objÚdummy_struct_proxyÚdummy_structÚerr_flagr\   rZ   s	           €r   Úunbox_dummyzcTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.unbox_dummy�   sÍ   ø€ àŸG™G×9Ñ9¸#¸wÓG�	Ø%*§Z¡Z×%7Ñ%7×%KÑ%KÈCÓ%PÐ"Ù1°!·)±)¸Q¿Y¹YÓG�Ø%&§W¡W×%<Ñ%<¸YÓ%G�Ô"Ø—‘—‘˜yÔ)ØŸ7™7×/Ñ/Ó1�Ø Ÿ:™:×-Ñ-×9Ñ9¸!¿)¹)ÀXÓN�Ø—‘×2Ñ2°<×3IÑ3IÓ3KØ<Dð 3ó Fð Fr   c                 óð  •— ‰	j                   j                  j                  | «      } ||j                  |j                  «      }|j
                  j                  |j                  «      }|j
                  j                  t        «      }|j
                  j                  |«      }|j
                  j                  ||f«      }|j
                  j                  |«       |j
                  j                  |«       |S r   )r_   r`   ra   rb   rc   r]   Úfloat_from_doubler   Úserialize_objectr	   ÚunserializeÚcall_function_objargsre   )
rk   rN   rO   rn   ro   rm   Úserialized_clazzÚ	class_objÚresrZ   s
            €r   Ú	box_dummyzaTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.box_dummyœ   s³   ø€ à%*§Z¡Z×%7Ñ%7×%KÑ%KÈCÓ%PÐ"Ù1°!·)±)¸Q¿Y¹YÓG�ØŸG™G×5Ñ5°l×6HÑ6HÓI�	Ø#$§7¡7×#;Ñ#;¼KÓ#HÐ ØŸG™G×/Ñ/Ð0@ÓA�	Ø—g‘g×3Ñ3°IÀ	¸|ÓL�Ø—‘—‘˜yÔ)Ø—‘—‘˜yÔ)Ø�
r   )rT   ÚTyperh   Útypeof_implÚregisterr	   Úregister_modelÚmodelsÚStructModelÚunboxÚbox)rP   rq   rz   rY   rG   rZ   s      @@€r   Úinit_functionzNTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function}   sÉ   ú€ öF˜EŸK™K×,Ñ,ô Fð �_‰_×(Ñ(×1Ñ1´+Ó>ó#ó ?ð#ð �_‰_×+Ñ+¨IÓ6÷L˜UŸ_™_×3Ñ3×?Ñ?ó Ló 7ðLð �_‰_×"Ñ" 9Ó-ó	Fó .ð	Fð �_‰_× Ñ  Ó+ó	ó ,ñ	r   Ú_test_numba_init_sequencer   z#_test_numba_init_sequence:init_funcr   r   r    c                 ó   — | S r   r   )r>   s    r   ÚfoozDTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.fooº   s   € à�Hr   é
   )rZ   rT   Ú
ModuleTyper.   r%   r&   r   r'   r(   r   r)   r*   r   r	   )r   rƒ   r0   r1   r†   ÚivalrZ   s         @r   Ú'test_entrypoint_handles_type_extensionsz7TestEntrypoints.test_entrypoint_handles_type_extensionsv   s  ø€ ó
 	ô)	ôV ×ÑÐ:Ó;ˆØ%ˆŒð	.à(+ŒC�K‰K˜Ÿ™Ñ%ä.×9Ñ9ØØ5Ø"óˆMô —‘×"Ñ"Ü"ØØ0°=Ð2BÐCð #õ ô
 ñó ðô # 2“�Ù�D”	÷ð �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +÷ð ûð �|‰|œsŸ{™{Ñ*Ü—K‘K §¡Ñ-ð +ús$   ¨AC2 Â C&Â%C2 Ã&C/Ã+C2 Ã2:D,c                 óø  — t        j                  |t         j                  t         j                  |¬«      }t        j                  t
        |j                  «      }	 |j                  «        |j                  «       \  }}|j                  dk7  r*t        d|j                  ›d|j                  «       ›d�«      ‚|j                  «       |j                  «       f|j                  «        S # |j                  «        w xY w)N)ÚstdoutÚstderrÚenvr   zprocess failed with code z: stderr follows
Ú
)Ú
subprocessÚPopenÚPIPEÚ	threadingÚTimerÚ_TEST_TIMEOUTÚkillÚstartÚcommunicateÚ
returncodeÚAssertionErrorÚdecodeÚcancel)r   ÚcmdlinerŽ   ÚpopenÚtimeoutÚoutÚerrs          r   Úrun_cmdzTestEntrypoints.run_cmdÅ   s·   € Ü× Ñ  Ü(2¯©Ü(2¯©Ø%(ô*ˆô
 —/‘/¤-°·±Ó<ˆð		Ø�M‰MŒOØ×(Ñ(Ó*‰HˆC�Ø×Ñ 1Ò$Ý$à×%Ó% s§z¡z¥|ð5ó6ð 6ð —:‘:“< §¡£Ð-à�N‰NÕøˆG�N‰NÕús   ÁA;C' Ã'C9c                 ó>  — t         j                  j                  «       }t        | j                  «      |d<   | j
                  }t        | «      j                  }d}|›d|›d|›�}t        j                  dd|g}| j                  ||«      \  }}d}	|	rt        ||«       y y )NrA   rŠ   Ú.z-mznumba.runtestsF)ÚosÚenvironÚcopyr;   rA   r   Útyper   r%   Ú
executabler¢   Úprint)
r   Úenv_copyÚthemodÚtheclsÚmethnameÚinjected_methodr�   r    r¡   Ú_DEBUGs
             r   Ú"test_entrypoint_extension_sequencez2TestEntrypoints.test_entrypoint_extension_sequenceØ   sŽ   € Ü—:‘:—?‘?Ó$ˆÜ&)¨$×*>Ñ*>Ó&?ˆÐ"Ñ#Ø—‘ˆÜ�d“×$Ñ$ˆØ<ˆÚ(.²¹ÐAˆÜ—>‘> 4Ð)9¸?ÐKˆØ—<‘< ¨Ó2‰ˆˆSØˆÙÜ�#�s�Oð r   )r   r   r   Ú__doc__r2   r?   rA   ÚunittestÚskipIfr¥   r¦   ÚgetrŠ   r¢   r±   r   r   r   r   r      s^   „ ñò$.òL+.ðZ "€Oà€X‡_�_�R—Z‘Z—^‘^Ð$5°tÓ<ÀÑOØ"ó$ñK.ó$ðK.òZó&r   r   )r%   r³   r   rT   r9   r¥   r�   r“   rZ   r   Únumba.tests.supportr   Únumba.testing.mainr   Ú_RUNNER_TIMEOUTÚ	importlibr   r'   r•   r*   r	   r   r   r   r   Ú<module>rº      sM   ðÛ 
Ý ã Û Û Û 	Û Û å Ý (Ý :å 4à #Ñ%€ô2�&ô 2ôG�hõ Gr   