
    i                         S SK r S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  S SKJr  S SKJr  \S-
  r " S S	\5      r " S
 S\5      rg)    N)mock)njit)TestCase)_TIMEOUT)metadatag      N@c                        \ rS rSrS rS rSrg)_DummyClass   c                     Xl         g Nvalue)selfr   s     W/var/www/html/trading/venv/lib/python3.13/site-packages/numba/tests/test_entrypoints.py__init___DummyClass.__init__   s    
    c                      SU R                   -  $ )Nz_DummyClass(%f, %f)r   )r   s    r   __repr___DummyClass.__repr__   s    $tzz11r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r	   r	      s    2r   r	   c                       \ rS rSrSrS rS rSr\R                  " \
R                  R                  SS5      \:g  S5      S	 5       rS
 rS rSrg)TestEntrypoints   z=
Test registration of init() functions from Numba extensions
c                    [         R                  " SS9n U[        R                  UR                  '   [
        R                  " SSS5      n[         R                  R                  [
        SSU40S9   SS	K	J
n  S
Ul        UR                  5         UR                  R                  5         UR                  5         UR                  R                  5         S S S 5        UR                  [        R                  ;   a  [        R                  UR                  	 g g ! , (       d  f       NI= f! UR                  [        R                  ;   a  [        R                  UR                  	 f f = f)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_entrypoint$TestEntrypoints.test_init_entrypoint!   s    ii!89	.(+CKK%.999;MM """0=2BC #  3 490$$& 002 $$&002%* ||s{{*KK- ++ * ||s{{*KK- +s%   AD' 1A"DD' 
D$ D' '<E#c                 \   [         R                  " SS9nUR                  " S0 S[        S5      0D6   U[        R
                  UR                  '   [        R                  " SSS5      n[         R                  R                  [        SSU40S	9   S
SKJn  SUl        [        R                  " SS9 nUR!                  5         S S S 5        SnW H  nU[#        U5      ;   d  M    O   [        S5      eUR$                  R'                  5         S S S 5        UR                  [        R
                  ;   a  [        R
                  UR                  	 g g ! , (       d  f       N= f! , (       d  f       NZ= f! UR                  [        R
                  ;   a  [        R
                  UR                  	 f f = f)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/   r0   r1   r)   r2   warningscatch_warningsr3   strr4   r5   )r   r6   r7   r)   wbad_strxs          r   test_entrypoint_tolerance)TestEntrypoints.test_entrypoint_toleranceG   s`    ii!<=M5z(7KLM$	.(+CKK%.995"M """0=2BC #  3380,,D9Q((* : OA#a&(  %%IJJ 002+2 ||s{{*KK- + :9 2 ||s{{*KK- +sB   AE/ "E0EE!)E
E/ 
E	E
E,(E/ /<F+	RUN_ENTRY_EP_MAGIC_TOKENNzneeds tokenc                 n  ^ SS K mU4S jn[        R                  " S5      nXl         U[        R
                  UR                  '   [        R                  " SSS5      n[        R                  R                  [        SSU40S9   [        S	 5       n[        S
5      nU" U5        S S S 5        UR                  [        R
                  ;   a  [        R
                  UR                  	 g g ! , (       d  f       NI= f! UR                  [        R
                  ;   a  [        R
                  UR                  	 f f = f)Nr   c                    >^^  " U4S jSTR                   R                  5      mTR                  R                  R	                  [
        5      U4S j5       n TR                  R                  T5       " UU4S jSTR                  R                  R                  5      5       mTR                  R                  T5      U4S j5       nTR                  R                  T5      U4S j5       ng )Nc                   ,   >^  \ rS rSrUU 4S jrSrU =r$ )aTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyType   c                     > [         TU ]  SS9  g )N	DummyType)name)superr   )r   rP   	__class__s    r   r   jTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyType.__init__   s    )T33Er   r   r   r   r   r   r   r   __classcell__)rS   rP   s   @r   rP   rM      s    F Fr   rP   c                    > T" 5       $ r   r   )valcrP   s     r   typer_DummyClasshTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.typer_DummyClass   s     {"r   c                   .   >^  \ rS rSrUU U4S jrSrU =r$ )bTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyModel   c                 X   > STR                   R                  4/n[        TU ]  XU5        g )Nr   )typesfloat64rR   r   )r   dmmfe_typemembers
DummyModelrS   numbas       r   r   kTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.DummyModel.__init__   s-     %++"5"56:G*d4S7Kr   r   rU   )rS   re   rf   s   @r   re   r]      s    L Lr   re   c                   > UR                   R                  US5      nTR                  R                  R	                  U 5      nU" UR
                  UR                  5      nUR                   R                  U5      Ul        UR                   R                  U5        UR                   R                  5       nTR                  R                  R                  UR                  U5      nTR                  R                  UR                  5       US9$ )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objrY   	value_objdummy_struct_proxydummy_structerr_flagri   rf   s	           r   unbox_dummycTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.unbox_dummy   s    GG99#wG	%*ZZ%7%7%K%KC%P"1!))QYYG%&WW%<%<Y%G"y)77//1 ::--99!))XN22<3I3I3K<D 3 F Fr   c                   > T	R                   R                  R                  U 5      nU" UR                  UR                  5      nUR
                  R                  UR                  5      nUR
                  R                  [        5      nUR
                  R                  U5      nUR
                  R                  Xu45      nUR
                  R                  U5        UR
                  R                  U5        U$ r   )rl   rm   rn   ro   rp   rj   float_from_doubler   serialize_objectr	   unserializecall_function_objargsrr   )
rx   rX   rY   r{   r|   rz   serialized_clazz	class_objresrf   s
            r   	box_dummyaTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function.<locals>.box_dummy   s    %*ZZ%7%7%K%KC%P"1!))QYYGGG55l6H6HI	#$77#;#;K#H GG//0@A	gg33I|Ly)y)
r   )r`   Typeru   typeof_implregisterr	   register_modelmodelsStructModelunboxbox)rZ   r~   r   re   rP   rf   s      @@r   init_functionNTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.init_function}   s    FEKK,, F __((11+># ?# __++I6L 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                     U $ r   r   )rE   s    r   fooDTestEntrypoints.test_entrypoint_handles_type_extensions.<locals>.foo   s    Hr   
   )rf   r`   
ModuleTyper4   r+   r,   r   r-   r.   r   r/   r0   r   r	   )r   r   r6   r7   r   ivalrf   s         @r   'test_entrypoint_handles_type_extensions7TestEntrypoints.test_entrypoint_handles_type_extensionsv   s   
 	)	V :;%	.(+CKK%.995"M """0=2BC # 
   #2D	 ||s{{*KK- +  ||s{{*KK- +s$   AC8  C'$C8 '
C51C8 8<D4c                    [         R                  " U[         R                  [         R                  US9n[        R                  " [
        UR                  5      n UR                  5         UR                  5       u  pVUR                  S:w  a,  [        SUR                  < SUR                  5       < S35      eUR                  5       UR                  5       4UR                  5         $ ! UR                  5         f = f)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_cmdTestEntrypoints.run_cmd   s      (2(2%(*
 //-<		MMO((*HC1$$%%szz|56 6 ::<-NNGNNs   A=C( (C:c                 H   [         R                  R                  5       n[        U R                  5      US'   U R
                  n[        U 5      R                  nSnU< SU< SU< 3n[        R                  SSU/nU R                  Xa5      u  pxSn	U	(       a  [        Xx5        g g )NrI   r   .z-mznumba.runtestsF)osenvironcopyrB   rI   r   typer   r+   
executabler   print)
r   env_copythemodtheclsmethnameinjected_methodr   r   r   _DEBUGs
             r   "test_entrypoint_extension_sequence2TestEntrypoints.test_entrypoint_extension_sequence   s    ::??$&)$*>*>&?"#d$$<(.A>>4)9?K<<2#O r   r   )r   r   r   r   __doc__r8   rF   rI   unittestskipIfr   r   getr   r   r   r   r   r   r   r   r      s\    $.L+.Z "O__RZZ^^$5t<O"$K.$K.Z&r   r   )r+   r   r   r`   r@   r   r   r   rf   r   numba.tests.supportr   numba.testing.mainr   _RUNNER_TIMEOUT	importlibr   r-   r   r0   r	   r   r   r   r   <module>r      sM    
     	    ( : 4#%2& 2Gh Gr   