Ë
    èÿæi­(  ã                   ó8  — 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Zd dl
mZmZ d dlmc mZ d dlmZ d dlmZ d dlmZ e j,                  d	fd
„Z G d„ de«      Z G d„ de«      Ze G d„ de«      «       Zedk(  r ej8                  «        yy)é    N©ÚCompletedProcess)ÚTemporaryDirectory)Úmock)ÚTestCaseÚ
linux_only)Ú	needs_gdb)Úcollect_gdbinfo)Ú_GDBTestWrapperé<   c                 óð  — t        j                  | t         j                  t         j                  |¬«      }t        j                  ||j
                  «      }	 |j                  «        |j                  «       \  }}|j                  dk7  r*t        d|j                  ›d|j                  «       ›d�«      ‚|j                  «       |j                  «       f|j                  «        S # |j                  «        w xY w)N)ÚstdoutÚstderrÚenvr   zprocess failed with code z: stderr follows
Ú
)Ú
subprocessÚPopenÚPIPEÚ	threadingÚTimerÚkillÚstartÚcommunicateÚ
returncodeÚAssertionErrorÚdecodeÚcancel)Úcmdliner   ÚtimeoutÚpopenÚtimeout_timerÚoutÚerrs          úi/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_cli.pyÚrun_cmdr%      s¾   € Ü×Ñ˜WÜ$.§O¡OÜ$.§O¡OØ!$ô&€Eô
 —O‘O G¨U¯Z©ZÓ8€Mð	Ø×ÑÔØ×$Ñ$Ó&‰ˆˆSØ×Ñ˜qÒ Ý à×!Ó! 3§:¡:¥<ð1ó2ð 2ð �z‰z‹|˜SŸZ™Z›\Ð)à×ÑÕøˆ×ÑÕús   ÁA;C# Ã#C5c                   ó.   — e Zd Zd„ Zd„ Zd„ Zed„ «       Zy)ÚTestCLIc                 óÞ   — t         j                  ddg}| j                  t        «      5 }t	        |«       d d d «       | j                  dt        j                  «      «       y # 1 sw Y   Œ/xY w)Nú-mÚnumbazprocess failed with code 1)ÚsysÚ
executableÚassertRaisesr   r%   ÚassertInÚstrÚ	exception)Úselfr   Úraisess      r$   Útest_as_module_exit_codez TestCLI.test_as_module_exit_code+   sT   € Ü—>‘> 4¨Ð1ˆØ×Ñœ~Ô.°&Ü�GÔ÷ /ð 	�‰Ð2´C¸×8HÑ8HÓ4IÕJ÷ /Ð.ús   ©A#Á#A,c                 ól   — t         j                  dddg}t        |«      \  }}| j                  d|«       y )Nr)   r*   z-szSystem info©r+   r,   r%   r.   ©r1   r   ÚoÚ_s       r$   Útest_sysinfo_from_modulez TestCLI.test_sysinfo_from_module2   s0   € Ü—>‘> 4¨°$Ð7ˆÜ�wÓ‰ˆˆ1Ø�‰�m QÕ'ó    c                 ó  — t        «       5 }t        j                  j                  |d«      }t        j
                  ddd|g}t        |«       | j                  |› d�¬«      5  | j                  t        j                  j                  |«      «       d d d «       | j                  d¬«      5  t        |d«      5 }t        j                  |«      }d d d «       d d d «       t        t        j                  ft         t        j"                  ft$        t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  t        j8                  t        j:                  ft<        t        j>                  t        j@                  t        jB                  t        jD                  t        jF                  t        jH                  t        jJ                  t        jL                  ftN        t        jP                  t        jR                  ftT        t        jV                  fi}|jY                  «       D ]<  \  }}|D ]2  }	| j                  |	¬	«      5  | j[                  |	   |«       d d d «       Œ4 Œ> 	 d d d «       y # 1 sw Y   �Œ6xY w# 1 sw Y   �ŒxY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒqxY w# 1 sw Y   y xY w)
Nztest_json_sysinfo.jsonr)   r*   z
--sys-jsonz exists)Úmsgz	json loadÚr)Úk).r   ÚosÚpathÚjoinr+   r,   r%   ÚsubTestÚ
assertTrueÚexistsÚopenÚjsonÚloadÚintÚnsiÚ
_cpu_countÚfloatÚ_runtimer/   Ú_startÚ
_start_utcÚ_machineÚ	_cpu_nameÚ_platform_nameÚ_os_nameÚ_os_versionÚ_python_compÚ_python_implÚ_python_versionÚ_llvm_versionÚboolÚ_cu_dev_initÚ_svml_stateÚ_svml_loadedÚ_svml_operationalÚ_llvm_svml_patchedÚ_tbb_threadÚ_openmp_threadÚ_wkq_threadÚlistÚ_errorsÚ	_warningsÚdictÚ_numba_env_varsÚitemsÚassertIsInstance)
r1   Údr@   r   ÚfÚinfoÚsafe_contentsÚtÚkeysr>   s
             r$   Útest_json_sysinfo_from_modulez%TestCLI.test_json_sysinfo_from_module7   s%  € ÜÔ! QÜ—7‘7—<‘< Ð#;Ó<ˆDÜ—~‘~ t¨W°lÀDÐIˆGÜ�GÔØ—‘ T F¨'Ð"2�Õ3Ø—‘¤§¡§¡¨tÓ 4Ô5÷ 4à—‘ +�Õ.Ü˜$ ”_¨ÜŸ9™9 Q›<�D÷ %÷ /ô Ü—N‘Nðô Ü—L‘Lðô Ü—J‘JÜ—N‘NÜ—L‘LÜ—M‘MÜ×&Ñ&Ü—L‘LÜ—O‘OÜ×$Ñ$Ü×$Ñ$Ü×'Ñ'Ü×%Ñ%ðô Ü×$Ñ$Ü—O‘OÜ×$Ñ$Ü×)Ñ)Ü×*Ñ*Ü—O‘OÜ×&Ñ&Ü—O‘Oð	ô Ü—K‘KÜ—M‘Mðô Ü×'Ñ'ððE%ˆMðL )×.Ñ.Ö0‘��4Û�AØŸ™¨˜Õ*Ø×-Ñ-¨d°1©g°qÔ9÷ +Ð*ñ ñ 1÷_ "Ð!÷ 4Ñ3ú÷ %‘_ú÷ /Ñ.ú÷V +Ð*ú÷c "Ð!úsm   ‹AK7Á!/KÂK7Â*KÂ7KÃKÃGK7ÊK+	Ê.K7ËK	Ë	K7ËKËKËK(	Ë#K7Ë+K4Ë0K7Ë7L c                 ó�   — t         j                  dddg}t        |«      \  }}| j                  d|«       | j                  d|«       y )Nr)   r*   ú-gzGDB infoz Numba printing extension supportr5   r6   s       r$   Útest_gdb_status_from_modulez#TestCLI.test_gdb_status_from_modulel   sC   € ô —>‘> 4¨°$Ð7ˆÜ�wÓ‰ˆˆ1Ø�‰�j !Ô$ð 	�‰Ð8¸!Õ<r:   N)Ú__name__Ú
__module__Ú__qualname__r3   r9   rn   r	   rq   © r:   r$   r'   r'   )   s'   „ òKò(ò
3:ðj ñ=ó ñ=r:   r'   c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚTestGDBCLIInfoc                 ó¤  ‡ — g ‰ _         d„ }‰ j                   j                  t        j                  j	                  t
        d|«      «       d}‰ j                   j                  t        j                  |d«      «       ˆ fd„}d„ } |d|«       d„ } |d	|«       d
„ } |d|«       d„ } |d|«       ‰ j                   D ]  }|j                  «        Œ y )Nc                  ó   — y ©Nru   ©r1   s    r$   Ú<lambda>z&TestGDBCLIInfo.setUp.<locals>.<lambda>   s   €  r:   Ú__init__z3numba.misc.numba_gdbinfo._GDBTestWrapper.gdb_binaryÚPATH_TO_GDBc                 ó‚   •— ‰j                   j                  t        j                  j	                  t
        | |«      «       y rz   )Ú_patchesÚappendr   ÚpatchÚobjectr   )ÚfnstrÚfuncr1   s     €r$   Ú_patchz$TestGDBCLIInfo.setUp.<locals>._patch†   s-   ø€ Ø�M‰M× Ñ ¤§¡×!2Ñ!2´?ÀEØ37ó"9õ :r:   c                 ó   — t        dd«      S )NúCOMMAND STRINGr   r   r{   s    r$   Úmock_check_launchz/TestGDBCLIInfo.setUp.<locals>.mock_check_launchŠ   ó   € Ü#Ð$4°aÓ8Ð8r:   Úcheck_launchc                 ó    — t        dddd¬«      S )Nrˆ   r   z(3, 2)Ú ©r   r   r   r{   s    r$   Úmock_check_pythonz/TestGDBCLIInfo.setUp.<locals>.mock_check_python�   s   € Ü#Ð$4°aØ+3Ø+-ô/ð /r:   Úcheck_pythonc                 ó    — t        dddd¬«      S )Nrˆ   r   ÚTruer�   rŽ   r   r{   s    r$   Úmock_check_numpyz.TestGDBCLIInfo.setUp.<locals>.mock_check_numpy—   ó   € Ü#Ð$4°aÀØ+-ô/ð /r:   Úcheck_numpyc                 ó    — t        dddd¬«      S )Nrˆ   r   ú1.15r�   rŽ   r   r{   s    r$   Úmock_check_numpy_versionz6TestGDBCLIInfo.setUp.<locals>.mock_check_numpy_version�   r”   r:   Úcheck_numpy_version)r€   r�   r   r‚   rƒ   r   r   )	r1   Ú	mock_initÚbpathr†   r‰   r�   r“   r˜   Úps	   `        r$   ÚsetUpzTestGDBCLIInfo.setUpy   sÇ   ø€ ð ˆŒá%ˆ	Ø�‰×ÑœTŸZ™Z×.Ñ.¬À
Ø/8ó:ô 	;ð FˆØ�‰×ÑœTŸZ™Z¨¨}Ó=Ô>ô	:ò	9ñ 	ˆ~Ð0Ô1ò	/ñ
 	ˆ~Ð0Ô1ò	/ñ 	ˆ}Ð.Ô/ò	/ñ 	Ð$Ð&>Ô?ð —”ˆAØ�G‰G�Iñ r:   c                 óF   — | j                   D ]  }|j                  «        Œ y rz   )r€   Ústop)r1   rœ   s     r$   ÚtearDownzTestGDBCLIInfo.tearDown§   s   € à—”ˆAØ�F‰F�Hñ r:   c                 ó¦  — t        «       }| j                  |j                  d«       t        j                  j                  t        j                  j                  |j                  «      «      }| j                  |«       | j                  |j                  d«       | j                  |j                  d«       | j                  d|j                  «       y )Nr~   ú3.2r—   ÚFull)r
   ÚassertEqualÚ
binary_locr?   r@   rD   ÚabspathÚextension_locrC   Úpy_verÚnp_verr.   Ú	supported)r1   Ú	collectedÚextps      r$   Ú
test_validzTestGDBCLIInfo.test_valid¬   s‘   € Ü#Ó%ˆ	Ø×Ñ˜×-Ñ-¨}Ô=Ü�w‰w�~‰~œbŸg™gŸo™o¨i×.EÑ.EÓFÓGˆØ�‰˜ÔØ×Ñ˜×)Ñ)¨5Ô1Ø×Ñ˜×)Ñ)¨6Ô2Ø�‰�f˜i×1Ñ1Õ2r:   c                 ó  — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  d|j                  «       | j                  d|j                  «       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        dd«      S )NÚINVALID_BINARYé   r   r{   s    r$   Úmock_fnz3TestGDBCLIInfo.test_invalid_binary.<locals>.mock_fn·   rŠ   r:   r‹   zTesting gdb binary failed.z,gdb at 'PATH_TO_GDB' does not appear to work)r   r‚   rƒ   r   r
   r.   r¥   )r1   r²   rj   s      r$   Útest_invalid_binaryz"TestGDBCLIInfo.test_invalid_binaryµ   s]   € ò	9ô �Z‰Z×Ñœ°ÀÕHÜ"Ó$ˆDØ�M‰MÐ6¸¿¹ÔHØ�M‰MÐHØŸ/™/ô+÷ I×HÑHúó   ©AA5Á5A>c                 ó  — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  |j                  d«       | j                  |j                  d«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        dd«      S )Nú	NO PYTHONr±   r   r{   s    r$   r²   z.TestGDBCLIInfo.test_no_python.<locals>.mock_fnÁ   s   € Ü# K°Ó3Ð3r:   r�   úNo Python supportÚNone)r   r‚   rƒ   r   r
   r¤   r¨   rª   ©r1   r²   r«   s      r$   Útest_no_pythonzTestGDBCLIInfo.test_no_pythonÀ   sa   € ò	4ô �Z‰Z×Ñœ°ÀÕHÜ'Ó)ˆIØ×Ñ˜Y×-Ñ-Ð/BÔCØ×Ñ˜Y×0Ñ0°&Ô9÷ I×HÑHúr´   c                 óÊ   — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  |j                  d«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        ddd¬«      S )Nr·   r   ú(NOT A VERSION))r   r   r{   s    r$   r²   z>TestGDBCLIInfo.test_unparsable_python_version.<locals>.mock_fnÊ   s   € Ü# K°Ð;LÔMÐMr:   r�   r¸   )r   r‚   rƒ   r   r
   r¤   r¨   rº   s      r$   Útest_unparsable_python_versionz-TestGDBCLIInfo.test_unparsable_python_versionÉ   sL   € ò	Nô �Z‰Z×Ñœ°ÀÕHÜ'Ó)ˆIØ×Ñ˜Y×-Ñ-Ð/BÔC÷ I×HÑHúó   ©'AÁA"c                 ó:  — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  |j                  d«       | j                  |j                  d«       | j                  d|j                  «       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        dd«      S )NzNO NUMPYr±   r   r{   s    r$   r²   z-TestGDBCLIInfo.test_no_numpy.<locals>.mock_fnÒ   s   € Ü# J°Ó2Ð2r:   r•   zNo NumPy supportr¢   ÚPartial)
r   r‚   rƒ   r   r
   r¤   r©   r¨   r.   rª   rº   s      r$   Útest_no_numpyzTestGDBCLIInfo.test_no_numpyÑ   su   € ò	3ô �Z‰Z×Ñœ°¸wÕGÜ'Ó)ˆIØ×Ñ˜Y×-Ñ-Ð/AÔBØ×Ñ˜Y×-Ñ-¨uÔ5Ø�M‰M˜) Y×%8Ñ%8Ô9÷	 H×GÑGús   ©ABÂBc                 óÊ   — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  |j                  d«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        dd«      S )NúNO NUMPY VERSIONr±   r   r{   s    r$   r²   z5TestGDBCLIInfo.test_no_numpy_version.<locals>.mock_fnÜ   s   € Ü#Ð$6¸Ó:Ð:r:   r™   ÚUnknown©r   r‚   rƒ   r   r
   r¤   r©   rº   s      r$   Útest_no_numpy_versionz$TestGDBCLIInfo.test_no_numpy_versionÛ   sK   € ò	;ô �Z‰Z×ÑœÐ0EÀwÕOÜ'Ó)ˆIØ×Ñ˜Y×-Ñ-¨yÔ9÷ P×OÑOúrÀ   c                 óÊ   — d„ }t         j                  j                  t        d|«      5  t	        «       }| j                  |j                  d«       d d d «       y # 1 sw Y   y xY w)Nc                 ó    — t        dddd¬«      S )NrÇ   r   r¾   Ú	TracebackrŽ   r   r{   s    r$   r²   z?TestGDBCLIInfo.test_traceback_in_numpy_version.<locals>.mock_fnä   s   € Ü#Ð$6¸Ø+<Ø+6ô8ð 8r:   r™   rÈ   rÉ   rº   s      r$   Útest_traceback_in_numpy_versionz.TestGDBCLIInfo.test_traceback_in_numpy_versionã   sK   € ò	8ô
 �Z‰Z×ÑœÐ0EÀwÕOÜ'Ó)ˆIØ×Ñ˜Y×-Ñ-¨yÔ9÷ P×OÑOúrÀ   N)rr   rs   rt   r�   r    r­   r³   r»   r¿   rÄ   rÊ   rÎ   ru   r:   r$   rw   rw   w   s1   „ ò,ò\ò
3ò	+ò:òDò:ò:ó:r:   rw   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestGDBCLIInfoBrokenGdbsc                 óþ   — t         j                  j                  «       }d|d<   t        j                  dddg}t        ||¬«      \  }}| j                  d|«       | j                  d|«       | j                  d	|«       y )
NÚ#THIS_IS_NOT_A_VALID_GDB_BINARY_NAMEÚNUMBA_GDB_BINARYr)   r*   rp   ©r   úTesting gdb binary failedúNo such file or directoryz%'THIS_IS_NOT_A_VALID_GDB_BINARY_NAME'©r?   ÚenvironÚcopyr+   r,   r%   r.   ©r1   r   r   r   r   s        r$   Útest_cannot_find_gdb_from_namez7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_nameô   sl   € ä�j‰j�o‰oÓˆØ"GˆÐÑÜ—>‘> 4¨°$Ð7ˆÜ  ¨cÔ2‰ˆ�Ø�‰Ð1°6Ô:Ø�‰Ð1°6Ô:Ø�‰Ð=¸vÕFr:   c                 ó|  — t         j                  j                  «       }t        «       5 }t         j                  j                  |d«      }||d<   t        j                  dddg}t        ||¬«      \  }}| j                  d|«       | j                  d|«       | j                  ||«       d d d «       y # 1 sw Y   y xY w)	NÚCANNOT_EXISTrÓ   r)   r*   rp   rÔ   rÕ   rÖ   )
r?   rØ   rÙ   r   r@   rA   r+   r,   r%   r.   )r1   r   rh   r@   r   r   r   s          r$   Útest_cannot_find_gdb_from_pathz7TestGDBCLIInfoBrokenGdbs.test_cannot_find_gdb_from_pathþ   s“   € ä�j‰j�o‰oÓˆÜÔ! Qä—7‘7—<‘<  >Ó2ˆDØ&*ˆCÐ"Ñ#Ü—~‘~ t¨W°dÐ;ˆGÜ$ W°#Ô6‰NˆF�FØ�M‰MÐ5°vÔ>Ø�M‰MÐ5°vÔ>Ø�M‰M˜$ Ô'÷ "×!Ñ!ús   ©B B2Â2B;c                 óÚ   — t         j                  j                  «       }d|d<   t        j                  dddg}t        ||¬«      \  }}| j                  d|«       | j                  d|«       y )	NÚpythonrÓ   r)   r*   rp   rÔ   rÕ   zUnknown optionr×   rÚ   s        r$   Útest_nonsense_gdb_binaryz1TestGDBCLIInfoBrokenGdbs.test_nonsense_gdb_binary  s_   € ä�j‰j�o‰oÓˆØ"*ˆÐÑÜ—>‘> 4¨°$Ð7ˆÜ  ¨cÔ2‰ˆ�Ø�‰Ð1°6Ô:ð 	�‰Ð&¨Õ/r:   N)rr   rs   rt   rÛ   rÞ   rá   ru   r:   r$   rÐ   rÐ   î   s   „ òGò(ó
0r:   rÐ   Ú__main__)r?   r   r+   r   rF   r   Útempfiler   Úunittestr   Únumba.tests.supportr   r   Únumba.misc.numba_sysinfoÚmiscÚnumba_sysinforI   Únumba.tests.gdb_supportr	   Únumba.misc.numba_gdbinfor
   r   rØ   r%   r'   rw   rÐ   rr   Úmainru   r:   r$   Ú<module>rì      s˜   ðó 
Û Û 
Û Û Ý 'Ý 'Ý ã ß 4ß &Ð &Ý -Ý 4å 4ð Ÿ™¨Ró ô(K=ˆhô K=ô\t:�Xô t:ðn ô&0˜xó &0ó ð&0ðR ˆzÒØ€H‡M�M…Oð r:   