
    sh                     h   S SK r S SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJr  S SKJrJrJrJr  \R,                  " 5       r\" \S5      r " S S	\\R4                  5      rS
 rS r\" S5      \R<                  " \S5      \" S5       " S S\5      5       5       5       r\" S5      \R<                  " \S5      \" S5       " S S\5      5       5       5       r \" S5      \R<                  " \S5      \" S5       " S S\5      5       5       5       r!S r"\#S:X  a  \RH                  " 5         gg)    N)IS_WIN32IS_OSX)NumbaWarning)nvvm)unittestskip_on_cudasimSerialMixinskip_unless_conda_cudatoolkit)_get_libdevice_path_decision_get_nvvm_path_decision_get_cudalib_dir_path_decisionget_system_ctkget_contextc                   6    \ rS rSrS rS rS r\S 5       rSr	g)LibraryLookupBase   c                     [         R                  " S5      nUR                  5       nUR                  5       nX0l        X l        UR                  [        X#4SS9U l        U R                  R                  5         g )NspawnT)targetargsdaemon)	mpr   QueueqsendqrecvProcesscheck_lib_lookupchild_processstart)selfctxr   r   s       /Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/cuda/tests/nocuda/test_library_lookup.pysetUpLibraryLookupBase.setUp   se    nnW%				

 [[# ) 

 	  "    c                     U R                   R                  U R                  5        U R                  R	                  S5        U R                  U R                  5        g )N   )r   putdo_terminater   joinassertIsNotNone)r    s    r"   tearDownLibraryLookupBase.tearDown*   s@    

t(()"T//0r%   c                     U R                   R                  U5        U R                  R                  5       nU R	                  U[
        5        U$ )N)r   r(   r   getassertNotIsInstanceBaseException)r    actionouts      r"   	remote_doLibraryLookupBase.remote_do0   s7    

vjjnn  m4
r%   c                      g)N)FN r7   r%   r"   r)   LibraryLookupBase.do_terminate6   s    r%   )r   r   r   N)
__name__
__module____qualname____firstlineno__r#   r,   r4   staticmethodr)   __static_attributes__r7   r%   r"   r   r      s%    #1  r%   r   c                 H     [         R                  U 	 g! [         a     gf = f)NTF)osenvironKeyError)names    r"   
remove_envrD   ;   s,    JJt   s    
!!c                    SnU(       ar   UR                  5       n [        R                  " SS9 n[        R                  " S[        5        U" 5       u  p%S S S 5        U R                  WW4-   5        U(       a  Mq  g g ! , (       d  f       N.= f! [         a  nU R                  U5        Sn S nAN>S nAff = f! [         a  nU R                  U5        Sn S nANhS nAff = f)NT)recordalwaysF)r/   warningscatch_warningssimplefilterr   r(   	Exception)qoutqinstatusr2   wresultes          r"   r   r   D   s    F
	WWYF
,,D9Q))(LA%+XNF : 1$' & :9    	HHQKF	sE   B8 B %A=B =
BB 
B5B00B58
CCCz.Library detection unsupported in the simulatorzmp.get_context not availablez(test assumes conda installed cudatoolkitc                   :    \ rS rSrS r\S 5       r\S 5       rSrg)TestLibDeviceLookUpW   c                    U R                  U R                  5      u  pn[        (       a  U R                  US5        O#U R                  US5        U R	                  U5        U R                  U5        U R                  U R                  5      u  pnU R                  US5        U R                  U[        R                  R                  SSS5      5        U R                  U5        [        5       cS  U R                  U R                  5      u  pnU R                  US5        U R	                  U5        U R                  U5        g U R                  U R                  5      u  pnU R                  US5        U R                  U5        g )NConda environment	<unknown>	CUDA_HOME
mycudahomer   	libdeviceSystem)r4   do_clear_envshas_cudaassertEqualassertIsNoneassertFalsedo_set_cuda_homer@   pathr*   r   r    byinfowarnss       r"   test_libdevice_path_decision0TestLibDeviceLookUp.test_libdevice_path_decision[   s8   ..););<%8R!45R-d#..)>)>?%[)rww||L&+NO#"nnT-?-?@OBeR-d#U# #nnT-?-?@OBeR*U#r%   c                  F    [        S5        [        S5        S[        5       4$ NrX   	CUDA_PATHT)rD   r   r7   r%   r"   r\   !TestLibDeviceLookUp.do_clear_envsv   s!    ;;1333r%   c                      [         R                  R                  S5      [         R                  S'   [	        5         S[        5       4$ NrY   rX   T)r@   rb   r*   rA   _fake_non_conda_envr   r7   r%   r"   ra   $TestLibDeviceLookUp.do_set_cuda_home|   s2    "$'',,|"<

;1333r%   r7   N)	r9   r:   r;   r<   rg   r=   r\   ra   r>   r7   r%   r"   rS   rS   W   s/    $6 4 4
 4 4r%   rS   c                   :    \ rS rSrS r\S 5       r\S 5       rSrg)TestNvvmLookUp   c                    U R                  U R                  5      u  pn[        (       a  U R                  US5        O#U R                  US5        U R	                  U5        U R                  U5        U R                  U R                  5      u  pnU R                  US5        U R                  U5        [        (       a2  U R                  U[        R                  R                  SSS5      5        On[        (       a2  U R                  U[        R                  R                  SSS5      5        O1U R                  U[        R                  R                  SSS5      5        [        5       cS  U R                  U R                  5      u  pnU R                  US5        U R	                  U5        U R                  U5        g U R                  U R                  5      u  pnU R                  US	5        U R                  U5        g )
NrV   rW   rX   rY   r   binliblib64r[   r4   r\   r]   r^   r_   r`   ra   r   r@   rb   r*   r   r   rc   s       r"   test_nvvm_path_decision&TestNvvmLookUp.test_nvvm_path_decision   s   ..););<%8R!45R-d#..)>)>?%[)8T277<<fe#LMVT277<<fe#LMT277<<fg#NO#"nnT-?-?@OBeR-d#U# #nnT-?-?@OBeR*U#r%   c                  F    [        S5        [        S5        S[        5       4$ rj   )rD   r   r7   r%   r"   r\   TestNvvmLookUp.do_clear_envs   s!    ;;,...r%   c                      [         R                  R                  S5      [         R                  S'   [	        5         S[        5       4$ rn   )r@   rb   r*   rA   ro   r   r7   r%   r"   ra   TestNvvmLookUp.do_set_cuda_home   s2    "$'',,|"<

;,...r%   r7   N)	r9   r:   r;   r<   ry   r=   r\   ra   r>   r7   r%   r"   rr   rr      s0    $@ / /
 / /r%   rr   c                   :    \ rS rSrS r\S 5       r\S 5       rSrg)TestCudaLibLookUp   c                 *   U R                  U R                  5      u  pn[        (       a  U R                  US5        O#U R                  US5        U R	                  U5        U R                  U5        U R                  U R                  5        U R                  U R                  5      u  pnU R                  US5        U R                  U5        [        (       a1  U R                  U[        R                  R                  SS5      5        Ol[        (       a1  U R                  U[        R                  R                  SS5      5        O0U R                  U[        R                  R                  SS5      5        [        5       cS  U R                  U R                  5      u  pnU R                  US5        U R	                  U5        U R                  U5        g U R                  U R                  5      u  pnU R                  US5        U R                  U5        g )	NrV   rW   rX   rY   ru   rv   rw   r[   rx   rc   s       r"   test_cudalib_path_decision,TestCudaLibLookUp.test_cudalib_path_decision   s   ..););<%8R!45R-d# 	t))*..)>)>?%[)8T277<<e#DEVT277<<e#DET277<<g#FG#"nnT-?-?@OBeR-d#U# #nnT-?-?@OBeR*U#r%   c                  F    [        S5        [        S5        S[        5       4$ rj   )rD   r   r7   r%   r"   r\   TestCudaLibLookUp.do_clear_envs   s!    ;;3555r%   c                      [         R                  R                  S5      [         R                  S'   [	        5         S[        5       4$ rn   )r@   rb   r*   rA   ro   r   r7   r%   r"   ra   "TestCudaLibLookUp.do_set_cuda_home   s2    "$'',,|"<

;3555r%   r7   N)	r9   r:   r;   r<   r   r=   r\   ra   r>   r7   r%   r"   r   r      s0    $B 6 6
 6 6r%   r   c                      S[         l        g)z?
Monkeypatch sys.prefix to hide the fact we are in a conda-env
 N)sysprefixr7   r%   r"   ro   ro      s     CJr%   __main__)%r   r@   multiprocessingr   rH   numba.core.configr   r   numba.core.errorsr   numba.cuda.cudadrvr   numba.cuda.testingr   r   r	   r
   numba.cuda.cuda_pathsr   r   r   r   is_availabler]   hasattrhas_mp_get_contextTestCaser   rD   r   
skipUnlessrS   rr   r   ro   r9   mainr7   r%   r"   <module>r      sh   
 	   . * #   R/ X%6%6 @& AB	')GHIJ&4+ &4 K I C&4R AB	')GHIJ+/& +/ K I C+/\ AB	')GHIJ,6) ,6 K I C,6^ zMMO r%   