Ë
    èÿæiã
  ã                   óÂ   — d Z ddlZddlZddlZddlmZmZmZ ddl	m
Z
mZ ddlmZ ddlZd„ Zd„ Zd„ Z G d	„ d
ej$                  «      Zedk(  r ej*                  «        yy)zJ
Test threadsafety for compiler.
These tests will cause segfault if fail.
é    N)ÚjitÚ	vectorizeÚguvectorize)Útemp_directoryÚoverride_config)Úconfigc                 ó,   — t        j                  | «      S ©N)ÚnpÚones)ÚnÚvs     úr/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_threadsafety.pyÚfoor      s   € Ü�7‰7�1‹:Ðó    c                 ó   — | |z   S r
   © )ÚaÚbs     r   Ú	ufunc_foor      s   € Øˆq‰5€Lr   c                 ó   — | |z   |d<   y )Nr   r   )r   r   Úouts      r   Ú
gufunc_foor      s   € Ø�‰U€Cˆ‚Fr   c                   óN   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚTestThreadSafetyc                 ó   ‡— ˆfd„}|S )Nc                  ó@   •—  t        di ‰¤Žt        «      }  | dd«      S )Né   é
   r   )r   r   )ÚcfuncÚoptionss    €r   Úrunnerz(TestThreadSafety.run_jit.<locals>.runner!   s!   ø€ Ø"”C‘N˜'‘N¤3Ó'ˆEá˜˜B“<Ðr   r   ©Úselfr!   r"   s    ` r   Úrun_jitzTestThreadSafety.run_jit    s   ø€ ô	 ð ˆr   c                 ón  ‡— t        | j                  j                  «      | _        t	        d| j                  «      5  ˆfd„}t        d«      D �cg c]  }t        j                  |¬«      ‘Œ }}|D ]  }|j                  «        Œ |D ]  }|j                  «        Œ 	 d d d «       y c c}w # 1 sw Y   y xY w)NÚ	CACHE_DIRc                  ó^   •— t        d«      D ]  } t        j                  ‰«      } |«        Œ  y )Nr   )ÚrangeÚrandomÚchoice)Ú_ÚfnÚfnlists     €r   Úchooserz-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$   r.   r/   ÚiÚthsÚths    `    r   Úrun_compilezTestThreadSafety.run_compile'   s™   ø€ Ü(¨¯©×)@Ñ)@ÓAˆŒÜ˜[¨$¯/©/Õ:ôô " !œHó&Ù$�qô ×#Ñ#¨7Ö3Ø$ð ð &ã�Ø—‘•
ð ã�Ø—‘•	ñ ÷ ;Ð:ùò&÷ ;Ð:ús   ¼B+ÁB&Á,0B+Â&B+Â+B4c                 óH   — | j                  | j                  d¬«      g«       y ©NT©Únopython©r;   r%   ©r$   s    r   Útest_concurrent_jitz$TestThreadSafety.test_concurrent_jit6   s   € Ø×Ñ˜$Ÿ,™,°˜,Ó5Ð6Õ7r   c                 óJ   — | j                  | j                  dd¬«      g«       y ©NT©r?   Úcacher@   rA   s    r   Útest_concurrent_jit_cachez*TestThreadSafety.test_concurrent_jit_cache9   s    € Ø×Ñ˜$Ÿ,™,°¸D˜,ÓAÐBÕCr   c                 ó   ‡— ˆfd„}|S )Nc                  óÀ   •—  t        dgfi ‰¤Žt        «      } t        j                  j                  d«      j	                  t        j
                  «      x}} | ||«      S )Nz(f4, f4)r   )r   r   r   r*   ÚastypeÚfloat32)r    r   r   r!   s      €r   r"   z.TestThreadSafety.run_vectorize.<locals>.runner=   sO   ø€ Ø6”I˜z˜lÑ6¨gÑ6´yÓAˆEÜ—I‘I×$Ñ$ RÓ(×/Ñ/´·
±
Ó;Ð;ˆA�Ù˜˜A“;Ðr   r   r#   s    ` r   Úrun_vectorizezTestThreadSafety.run_vectorize<   s   ø€ ô	ð ˆr   c                 óH   — | j                  | j                  d¬«      g«       y r=   ©r;   rL   rA   s    r   Útest_concurrent_vectorizez*TestThreadSafety.test_concurrent_vectorizeC   s!   € Ø×Ñ˜$×,Ñ,°dÐ,Ó;Ð<Õ=r   c                 óJ   — | j                  | j                  dd¬«      g«       y rD   rN   rA   s    r   Útest_concurrent_vectorize_cachez0TestThreadSafety.test_concurrent_vectorize_cacheF   s#   € Ø×Ñ˜$×,Ñ,°dÀ$Ð,ÓGÐHÕIr   c                 ó   ‡— ˆfd„}|S )Nc                  óÆ   •— dg}  t        | dfi ‰¤Žt        «      }t        j                  j                  d«      j	                  t        j
                  «      x}} |||«      S )Nz(f4, f4, f4[:])z	(),()->()r   )r   r   r   r*   rJ   rK   )Úsigr    r   r   r!   s       €r   r"   z0TestThreadSafety.run_guvectorize.<locals>.runnerJ   sW   ø€ Ø$Ð%ˆCØ<”K  [Ñ<°GÑ<¼ZÓHˆEÜ—I‘I×$Ñ$ RÓ(×/Ñ/´·
±
Ó;Ð;ˆA�Ù˜˜A“;Ðr   r   r#   s    ` r   Úrun_guvectorizez TestThreadSafety.run_guvectorizeI   s   ø€ ô	ð
 ˆr   c                 óH   — | j                  | j                  d¬«      g«       y r=   ©r;   rU   rA   s    r   Útest_concurrent_guvectorizez,TestThreadSafety.test_concurrent_guvectorizeQ   s!   € Ø×Ñ˜$×.Ñ.¸Ð.Ó=Ð>Õ?r   c                 óJ   — | j                  | j                  dd¬«      g«       y rD   rW   rA   s    r   Ú!test_concurrent_guvectorize_cachez2TestThreadSafety.test_concurrent_guvectorize_cacheT   s#   € Ø×Ñ˜$×.Ñ.¸ÀDÐ.ÓIÐJÕKr   c           
      óø   — | j                  | j                  dd¬«      | j                  d¬«      | j                  dd¬«      | j                  d¬«      | j                  dd¬«      | j                  d¬«      g«       y )NTrE   r>   )r;   r%   rL   rU   rA   s    r   Útest_concurrent_mix_usez(TestThreadSafety.test_concurrent_mix_useW   s{   € Ø×Ñ˜$Ÿ,™,°¸D˜,ÓAØŸ,™,°˜,Ó5Ø×,Ñ,°dÀ$Ð,ÓGØ×,Ñ,°dÐ,Ó;Ø×.Ñ.¸ÀDÐ.ÓIØ×.Ñ.¸Ð.Ó=ð?õ 	@r   N)r2   Ú
__module__Ú__qualname__r%   r;   rB   rG   rL   rO   rQ   rU   rX   rZ   r\   r   r   r   r   r      s>   „ òòò8òDòò>òJòò@òLó@r   r   Ú__main__)Ú__doc__r4   r*   Únumpyr   Únumbar   r   r   Únumba.tests.supportr   r   Ú
numba.corer   Úunittestr   r   r   ÚTestCaser   r2   Úmainr   r   r   Ú<module>rh      sb   ðñó Û ã ç -Ñ -ç ?Ý Û òòòô
?@�x×(Ñ(ô ?@ðD ˆzÒØ€H‡M�M…Oð r   