§
    2@Äj»   ã                   ó¼   — 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dS )é    N)Úmock)Únjit)ÚTestCase)Ú_TIMEOUT)Úmetadatag      N@c                   ó   — e Zd Zd„ Zd„ ZdS )Ú_DummyClassc                 ó   — || _         d S ©N©Úvalue)Úselfr   s     úMC:\Projects\Historical\venv\Lib\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Ñ1Ð1r   N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r	   r	      s2   € € € € € ðð ð ð2ð 2ð 2ð 2ð 2r   r	   c                   óœ   — e Zd ZdZd„ Zd„ ZdZ ej        e	j
                             dd¦  «        ek    d¦  «        d„ ¦   «         Zd	„ Zd
„ ZdS )ÚTestEntrypointszE
    Test registration of init() functions from Numba extensions
    c                 óz  — t          j        d¬¦  «        }	 |t          j        |j        <   t          j        ddd¦  «        }t           j                             t
          dd|fi¬¦  «        5  dd	l	m
} d
|_        |                     ¦   «          |j                             ¦   «          |                     ¦   «          |j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |j        t          j        v rt          j        |j        = d S d S # |j        t          j        v rt          j        |j        = 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Ð!8Ð9Ñ9Ô9ˆð	.à(+�CŒK˜œÑ%å.Ô9ØÐ9Ð;Mñô ˆMõ ”×"Ò"Ý"ØØ0°=Ð2BÐCð #ñ ô ð 3ð 3ð 3Ð2Ð2Ð2Ð2Ð2ð 49�Ô0à×$Ò$Ñ&Ô&Ð&ð ”×0Ò0Ñ2Ô2Ð2ð ×$Ò$Ñ&Ô&Ð&Ø”×0Ò0Ñ2Ô2Ð2ð%3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð* Œ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-ð +Ð*øˆsŒ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-Ð-Ð-s1   —AD Á+A(CÃD ÃC#Ã#D Ã&C#Ã'D Ä'D:c                 ó  — t          j        d¬¦  «        } |j        di dt          d¦  «        i¤Ž 	 |t          j        |j        <   t          j        ddd¦  «        }t           j	         
                    t          dd|fi¬	¦  «        5  d
dlm} d|_        t          j        d¬¦  «        5 }|                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d}|D ]}|t#          |¦  «        v r nŒt          d¦  «        ‚|j                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |j        t          j        v rt          j        |j        = d S d S # |j        t          j        v rt          j        |j        = 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   s2  € õ ŒiÐ!<Ð=Ñ=Ô=ˆØˆÔÐMÐMÐ5µzÀ(Ñ7KÔ7KÐLÐMÐMÐMð$	.à(+�CŒK˜œÑ%å.Ô9ØØ5Ø"ñô ˆMõ ”×"Ò"Ý"ØØ0°=Ð2BÐCð #ñ ô ð 3ð 3ð 3Ð2Ð2Ð2Ð2Ð2à38�Ô0åÔ,°DÐ9Ñ9Ô9ð +¸QØ×(Ò(Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð O�Øð Kð K�AØ¥# a¡&¤&Ð(Ð(Ø˜ð )õ %Ð%IÑJÔJÐJð ”×0Ò0Ñ2Ô2Ð2ð+3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð2 Œ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-ð +Ð*øˆsŒ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-Ð-Ð-sU   ³AE Â#D$Â*CÂ?D$ÃC	ÃD$ÃC	ÃAD$ÄE Ä$D(Ä(E Ä+D(Ä,E Å'E?Ú	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
                             t          dd|fi¬¦  «        5  t          d	„ ¦   «         }t          d
¦  «        } ||¦  «         d d d ¦  «         n# 1 swxY w Y   |j        t          j        v rt          j        |j        = d S d S # |j        t          j        v rt          j        |j        = w xY w)Nr   c                  ó²  •‡‡—  G ˆfd„d‰j         j        ¦  «        Š‰j        j                             t
          ¦  «        ˆfd„¦   «         } ‰j                             ‰¦  «         G ˆˆfd„d‰j        j        j        ¦  «        ¦   «         Š‰j         	                    ‰¦  «        ˆfd„¦   «         }‰j         
                    ‰¦  «        ˆfd„¦   «         }d S )Nc                   ó"   •‡ — e Zd Zˆˆ fd„Zˆ xZS )úaTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyTypec                 óP   •— t          ‰| ¦  «                             d¬¦  «         d S )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¸Ð3ÑEÔEÐEÐEÐEr   ©r   r   r   r   Ú__classcell__)rJ   rG   s   @€r   rG   rE   �   sH   øø€ € € € € ðFð Fð Fð Fð Fð Fð Fð Fð 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   ø€ à �y‘{”{Ð"r   c                   ó$   •‡ — e Zd Zˆˆ ˆfd„Zˆ xZS )úbTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyModelc                 óp   •— d‰j         j        fg}t          ‰| ¦  «                             |||¦  «         d S )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Ð6ð:�Gå˜* dÑ+Ô+×4Ò4°S¸'À7ÑKÔKÐKÐKÐKr   rK   )rJ   rY   rZ   s   @€€r   rY   rR   ‰   sN   øø€ € € € € ðLð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lr   rY   c                 óî  •— |j                              |d¦  «        }‰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×9Ò9¸#¸wÑGÔG�	Ø%*¤ZÔ%7×%KÒ%KÈCÑ%PÔ%PÐ"Ø1Ð1°!´)¸Q¼YÑGÔG�Ø%&¤W×%<Ò%<¸YÑ%GÔ%G�Ô"Ø”—’˜yÑ)Ô)Ð)Øœ7×/Ò/Ñ1Ô1�Ø œ:Ô-×9Ò9¸!¼)ÀXÑNÔN�Ø”×2Ò2°<×3IÒ3IÑ3KÔ3KØ<Dð 3ñ Fô Fð Fr   c                 óÂ  •— ‰	j         j                             | ¦  «        } ||j        |j        ¦  «        }|j                             |j        ¦  «        }|j                             t          ¦  «        }|j         
                    |¦  «        }|j                             ||f¦  «        }|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Ô%7×%KÒ%KÈCÑ%PÔ%PÐ"Ø1Ð1°!´)¸Q¼YÑGÔG�ØœG×5Ò5°lÔ6HÑIÔI�	Ø#$¤7×#;Ò#;½KÑ#HÔ#HÐ ØœG×/Ò/Ð0@ÑAÔA�	Ø”g×3Ò3°IÀ	¸|ÑLÔ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}   se  øøø€ ðFð Fð Fð Fð Fð Fð F˜EœKÔ,ñ Fô Fð Fð Œ_Ô(×1Ò1µ+Ñ>Ô>ð#ð #ð #ð #ñ ?Ô>ð#ð Œ_×+Ò+¨IÑ6Ô6ðLð Lð Lð Lð Lð Lð Lð L˜Uœ_Ô3Ô?ñ Lô Lñ 7Ô6ðLð Œ_×"Ò" 9Ñ-Ô-ð	Fð 	Fð 	Fð 	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˜œÑ%å.Ô9ØØ5Ø"ñô ˆMõ ”×"Ò"Ý"ØØ0°=Ð2BÐCð #ñ ô ð 
ð 
õ
 ðð ñ ”ðõ # 2‘”�Ø��D‘	”	�	ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð Œ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-ð +Ð*øˆsŒ|�sœ{Ð*Ð*Ý”K ¤Ð-Ð-Ð-Ð-Ð-s0   §AC& Á;+B2Â&C& Â2B6Â6C& Â9B6Â:C& Ã&'Dc                 ó
  — t          j        |t           j        t           j        |¬¦  «        }t          j        t
          |j        ¦  «        }	 |                     ¦   «          |                     ¦   «         \  }}|j	        dk    r-t          d|j	        ›d|                     ¦   «         ›d�¦  «        ‚|                     ¦   «         |                     ¦   «         f|                     ¦   «          S # |                     ¦   «          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ŒOˆOØ×(Ò(Ñ*Ô*‰HˆC�ØÔ 1Ò$Ð$Ý$�nàÔ%Ð%Ð% s§z¢z¡|¤| | |ð5ñ6ô 6ð 6ð —:’:‘<”< §¢¡¤Ð-à�NŠNÑÔÐÐøˆG�NŠNÑÔÐÐøøøs   ÁB
C, Ã,Dc                 ó<  — t           j                             ¦   «         }t          | j        ¦  «        |d<   | j        }t          | ¦  «        j        }d}|›d|›d|›�}t          j	        dd|g}|  
                    ||¦  «        \  }}d}	|	rt          ||¦  «         d S d S )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Ô2‰ˆˆSØˆØð 	Ý�#�s‰OŒOˆOˆOˆ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—^’^Ð$5°tÑ<Ô<ÀÒOØ"ñ$ô $ðK.ð 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º      s  ðØ 
€
€
€
Ø Ð Ð Ð Ð Ð à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø :Ð :Ð :Ð :Ð :Ð :à 4Ð 4Ð 4Ð 4Ð 4Ð 4à #Ñ%€ð2ð 2ð 2ð 2ð 2�&ñ 2ô 2ð 2ðGð Gð Gð Gð G�hñ Gô Gð Gð Gð Gr   