
    sh
                         S r SSKrSSKrSSKrSSKJrJrJr  SSK	J
r
Jr  SSKJr  SSKrS rS rS r " S	 S
\R$                  5      r\S:X  a  \R*                  " 5         gg)zJ
Test threadsafety for compiler.
These tests will cause segfault if fail.
    N)jit	vectorizeguvectorize)temp_directoryoverride_config)configc                 .    [         R                  " U 5      $ N)npones)nvs     q/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_threadsafety.pyfoor      s    771:    c                 
    X-   $ r
    )abs     r   	ufunc_foor      s	    5Lr   c                     X-   US'   g )Nr   r   )r   r   outs      r   
gufunc_foor      s    UCFr   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestThreadSafety   c                    ^ U4S jnU$ )Nc                  @   > [        S0 TD6" [        5      n U " SS5      $ )N   
   r   )r   r   )cfuncoptionss    r   runner(TestThreadSafety.run_jit.<locals>.runner!   s    N'N3'EB<r   r   selfr"   r#   s    ` r   run_jitTestThreadSafety.run_jit    s    	  r   c                   ^ [        U R                  R                  5      U l        [	        SU R                  5         U4S jn[        S5       Vs/ s H  n[        R                  " US9PM     nnU H  nUR                  5         M     U H  nUR                  5         M     S S S 5        g s  snf ! , (       d  f       g = f)N	CACHE_DIRc                  d   > [        S5       H   n [        R                  " T5      nU" 5         M"     g )Nr    )rangerandomchoice)_fnfnlists     r   chooser-TestThreadSafety.run_compile.<locals>.chooser*   s$    rAv.BD #r   r   )target)
r   	__class____name__
_cache_dirr   r,   	threadingThreadstartjoin)r&   r1   r2   ithsths    `    r   run_compileTestThreadSafety.run_compile'   s    ()@)@A[$//: "!H&$q ##73$  &
 	  ;:& ;:s   B0B+.4B0+B00
B>c                 B    U R                  U R                  SS9/5        g NTnopythonr?   r'   r&   s    r   test_concurrent_jit$TestThreadSafety.test_concurrent_jit6   s    $,,,567r   c                 D    U R                  U R                  SSS9/5        g NTrD   cacherE   rF   s    r   test_concurrent_jit_cache*TestThreadSafety.test_concurrent_jit_cache9   s     $,,D,ABCr   c                    ^ U4S jnU$ )Nc                     > [        S/40 TD6" [        5      n [        R                  R                  S5      R	                  [        R
                  5      =pU " X5      $ )Nz(f4, f4)r    )r   r   r   r-   astypefloat32)r!   r   r   r"   s      r   r#   .TestThreadSafety.run_vectorize.<locals>.runner=   sI    zl6g6yAEII$$R(//

;;A;r   r   r%   s    ` r   run_vectorizeTestThreadSafety.run_vectorize<   s    	 r   c                 B    U R                  U R                  SS9/5        g rB   r?   rT   rF   s    r   test_concurrent_vectorize*TestThreadSafety.test_concurrent_vectorizeC   s!    $,,d,;<=r   c                 D    U R                  U R                  SSS9/5        g rJ   rW   rF   s    r   test_concurrent_vectorize_cache0TestThreadSafety.test_concurrent_vectorize_cacheF   s#    $,,d$,GHIr   c                    ^ U4S jnU$ )Nc                     > S/n [        U S40 TD6" [        5      n[        R                  R                  S5      R	                  [        R
                  5      =p#U" X#5      $ )Nz(f4, f4, f4[:])z	(),()->()r    )r   r   r   r-   rQ   rR   )sigr!   r   r   r"   s       r   r#   0TestThreadSafety.run_guvectorize.<locals>.runnerJ   sQ    $%C[<G<ZHEII$$R(//

;;A;r   r   r%   s    ` r   run_guvectorize TestThreadSafety.run_guvectorizeI   s    	
 r   c                 B    U R                  U R                  SS9/5        g rB   r?   ra   rF   s    r   test_concurrent_guvectorize,TestThreadSafety.test_concurrent_guvectorizeQ   s!    $...=>?r   c                 D    U R                  U R                  SSS9/5        g rJ   rd   rF   s    r   !test_concurrent_guvectorize_cache2TestThreadSafety.test_concurrent_guvectorize_cacheT   s#    $..D.IJKr   c                     U R                  U R                  SSS9U R                  SS9U R                  SSS9U R                  SS9U R                  SSS9U R                  SS9/5        g )NTrK   rC   )r?   r'   rT   ra   rF   s    r   test_concurrent_mix_use(TestThreadSafety.test_concurrent_mix_useW   s{    $,,D,A,,,5,,d$,G,,d,;..D.I...=? 	@r   )r7   N)r6   
__module____qualname____firstlineno__r'   r?   rG   rM   rT   rX   r[   ra   re   rh   rk   __static_attributes__r   r   r   r   r      s>    8D>J@L@r   r   __main__)__doc__r8   r-   numpyr   numbar   r   r   numba.tests.supportr   r   
numba.corer   unittestr   r   r   TestCaser   r6   mainr   r   r   <module>rz      s`       - - ?  
?@x(( ?@D zMMO r   