Ë
    üÇ:jJ  ã                   ó–   — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 dZ
 ede
«      Z G d„ d	«      Zd
„ Zdd„Zedk(  r e«        yy)z:Module for displaying information about Numba's gdb set upé    )Ú
namedtupleN)Údedent)Úconfigz4binary_loc, extension_loc, py_ver, np_ver, supportedÚ	_gdb_infoc                   óV   — e Zd ZdZd„ Zdd„Zed„ «       Zed„ «       Z	d„ Z
d„ Zd„ Zd	„ Zy
)Ú_GDBTestWrapperzmWraps the gdb binary and has methods for checking what the gdb binary
    has support for (Python and NumPy).c                 ór   — t         j                  }|€dt         j                  › �}t        |«      ‚|| _        y )Nz.No valid binary could be found for gdb named: )r   Ú
GDB_BINARYÚ
ValueErrorÚ_gdb_binary)ÚselfÚ
gdb_binaryÚmsgs      úm/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/numba/misc/numba_gdbinfo.pyÚ__init__z_GDBTestWrapper.__init__   s;   € Ü×&Ñ&ˆ
ØÐØCÜ×'Ñ'Ð(ð*ˆCä˜S“/Ð!Ø%ˆÕó    c                 óÈ   — | j                   dg}|D ]$  }|j                  d«       |j                  |«       Œ& |j                  ddg«       t        j                  |ddd¬«      S )Nz-qz-exÚqTé
   )Úcapture_outputÚtimeoutÚtext)r   ÚappendÚextendÚ
subprocessÚrun)r   ÚcmdÚgdb_callÚxs       r   Ú_run_cmdz_GDBTestWrapper._run_cmd   sc   € Ø—O‘O TÐ+ˆØò 	ˆAØ�O‰O˜EÔ"Ø�O‰O˜AÕð	ð 	�‰˜ ˜Ô%Ü�~‰~˜h°tÀRØ#'ô)ð 	)r   c                 ó   — | j                   S )N)r   ©r   s    r   r   z_GDBTestWrapper.gdb_binary#   s   € à×ÑÐr   c                 ó    — |j                   dk(  S )Nr   )Ú
returncode)ÚclsÚstatuss     r   Úsuccessz_GDBTestWrapper.success'   s   € à× Ñ  AÑ%Ð%r   c                 ó"   — | j                  «       S )zChecks that gdb will launch ok©r    r"   s    r   Úcheck_launchz_GDBTestWrapper.check_launch+   s   € à�}‰}‹Ðr   c                 ó*   — d}| j                  |f«      S )NzUpython from __future__ import print_function; import sys; print(sys.version_info[:2])r)   ©r   r   s     r   Úcheck_pythonz_GDBTestWrapper.check_python/   s   € ð9ˆà�}‰}˜c˜VÓ$Ð$r   c                 ó*   — d}| j                  |f«      S )Nztpython from __future__ import print_function; import types; import numpy; print(isinstance(numpy, types.ModuleType))r)   r,   s     r   Úcheck_numpyz_GDBTestWrapper.check_numpy4   s   € ð<ˆð �}‰}˜c˜VÓ$Ð$r   c                 ó*   — d}| j                  |f«      S )Nzapython from __future__ import print_function; import types; import numpy;print(numpy.__version__)r)   r,   s     r   Úcheck_numpy_versionz#_GDBTestWrapper.check_numpy_version:   s   € ð*ˆð �}‰}˜c˜VÓ$Ð$r   N)© )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    Úpropertyr   Úclassmethodr'   r*   r-   r/   r1   r2   r   r   r   r      sM   „ ñ+ò&ó)ð ñ ó ð ð ñ&ó ð&òò%ò
%ó%r   r   c                  ó(  — d} d}d}d}d}	 t        «       }|j                  «       }|j                  |«      s4d|j                  › d|j                  › d|j
                  › �}t        |«      ‚|j                  } |j                  «       }|j                  |«      �rt        j                  d|j                  j                  «       «      }|�Ò|j                  «       \  }	}
|	› d	|
› �}d
}|j                  «       }|j                  |«      r•d|j
                  j                  «       vry|j                  j                  «       dk(  r\d
}d}|j                  «       }|j                  |«      r7d|j
                  j                  «       vr|j                  j                  «       }	 |r|rd}nd}nd}d}t        j                   j#                  t        j                   j%                  t&        «      |«      }t)        | ||||«      S # t        $ r}d|› �} Y d}~Œqd}~ww xY w)zEPrints information to stdout about the gdb setup that Numba has foundNFzNo Python supportzNo NumPy supportzgdb at 'z#' does not appear to work.
stdout: z	
stderr: z\((\d+),\s+(\d+)\)ú.TÚ	TracebackÚTrueÚUnknownz+Testing gdb binary failed. Reported Error: z!Full (Python and NumPy supported)z'Partial (Python only, no NumPy support)ÚNonezgdb_print_extension.py)r   r*   r'   r   ÚstdoutÚstderrr   r-   ÚreÚmatchÚstripÚgroupsr/   r1   Ú	ExceptionÚosÚpathÚjoinÚdirnameÚ__file__r   )Ú	gdb_stateÚgdb_has_pythonÚgdb_has_numpyÚgdb_python_versionÚgdb_python_numpy_versionÚgdb_wrapperr&   r   Úversion_matchÚpymajorÚpyminorÚeÚprint_ext_supportedÚprint_ext_fileÚprint_ext_paths                  r   Úcollect_gdbinforX   A   s  € ð €IØ€NØ€MØ,ÐØ1Ðð
#>ä%Ó'ˆð ×)Ñ)Ó+ˆØ×"Ñ" 6Ô*Ø˜k×4Ñ4Ð5ð 6 Ø &§¡˜¨j¸¿¹¸ðIˆCä˜S“/Ð!Ø×*Ñ*ˆ	ð
 ×)Ñ)Ó+ˆØ×Ñ˜vÕ&ÜŸH™HÐ%:Ø%+§]¡]×%8Ñ%8Ó%:ó<ˆMàÐ(Ø#0×#7Ñ#7Ó#9Ñ �˜Ø(/ y°°'°Ð%;Ð"Ø!%�à$×0Ñ0Ó2�Ø×&Ñ& vÔ.Ø"¨&¯-©-×*=Ñ*=Ó*?Ñ?Ø!Ÿ=™=×.Ñ.Ó0°FÒ:Ø,0˜MØ7@Ð4à%0×%DÑ%DÓ%F˜FØ*×2Ñ2°6Ô:Ø#.°f·m±m×6IÑ6IÓ6KÑ#Kà(.¯©×(;Ñ(;Ó(=ñ %=ñ ÙØ"EÑà"KÑà$Ðð .€NÜ—W‘W—\‘\¤"§'¡'§/¡/´(Ó";¸^ÓL€Nô �Y Ð0BØ-Ð/BóDð DøôQ ò FØAÀ!ÀÐE�	ûðFús   ŒA+G9 Ç9	HÈHÈHc                 óÞ  — t        «       }t        d«       d| › d�}t        |d|j                  fz  «       t        |d|j                  fz  «       t        |d|j                  fz  «       t        |d|j
                  fz  «       t        |d|j                  fz  «       t        d	«       t        d
«       t        d|j                  › d�«       t        d«       d}t        t        |«      «       y)z;Displays the information collected by collect_gdbinfo.
    zP--------------------------------------------------------------------------------z%-zs : %-szBinary locationzPrint extension locationzPython versionzNumPy versionz Numba printing extension supportÚ zTTo load the Numba gdb printing extension, execute the following from the gdb prompt:z
source ú
a  
    =============================================================
    IMPORTANT: Before sharing you should remove any information
    in the above that you wish to keep private e.g. paths.
    =============================================================
    N)rX   ÚprintÚ
binary_locÚextension_locÚpy_verÚnp_verÚ	supportedr   )Úsep_posÚgdb_infoÚfmtÚwarns       r   Údisplay_gdbinforf   …   sá   € ô Ó €HÜ	ˆ(„OØˆwˆi�wÐ
€Cä	ˆ#Ð" H×$7Ñ$7Ð8Ñ
8Ô9Ü	ˆ#Ð+¨X×-CÑ-CÐDÑ
DÔEÜ	ˆ#Ð! 8§?¡?Ð3Ñ
3Ô4Ü	ˆ#� (§/¡/Ð2Ñ
2Ô3Ü	ˆ#Ð3°X×5GÑ5GÐHÑ
HÔIä	ˆ"„IÜ	ð !ô "ä	ˆI�h×,Ñ,Ð-¨RÐ
0Ô1Ü	ˆ(„Oð€Dô 
Œ&�‹,Õr   Ú__main__)é-   )r6   Úcollectionsr   rF   rA   r   Útextwrapr   Únumbar   Ú_fieldsr   r   rX   rf   r3   r2   r   r   ú<module>rm      s[   ðÙ @Ý "Û 	Û 	Û Ý Ý ð B€Ù�{ GÓ,€	÷0%ñ 0%òfADóHð6 ˆzÒÙÕð r   