
    J/Ph                         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     \/var/www/html/test/jupyter/venv/lib/python3.11/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    $tz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	.(+CK%.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5z(7K7KLMMM$	.(+CK%.95" M """0=2BC #   3 3 32222238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 32 |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4S'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%KC%P%P"11!)QYGG%&W%<%<Y%G%G"y)))7//11 :-99!)XNN22<3I3I3K3K<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%KC%P%P"11!)QYGGG55l6HII	#$7#;#;K#H#H G//0@AA	g33I	|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EK, 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 :;;%	.(+CK%.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%(* * *
 /-<<		MMOOO((**HC1$$$n%%%szz||||56 6 6 ::<<-NNGNN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 	#sOOOOO	 	r   )r   r   r   __doc__r2   r?   rA   unittestskipIfr   r   getr   r   r   r   r   r   r   r      s         $. $. $.L+. +. +.Z "OX_RZ^^$5t<<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   