
    shJ                         S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJ	r	  Sr
\" S\
5      r " S S	5      rS
 rSS jr\S:X  a  \" 5         gg)z:Module for displaying information about Numba's gdb set up    )
namedtupleN)dedent)configz4binary_loc, extension_loc, py_ver, np_ver, supported	_gdb_infoc                   `    \ rS rSrSrS rSS jr\S 5       r\	S 5       r
S rS rS	 rS
 rSrg)_GDBTestWrapper   ziWraps the gdb binary and has methods for checking what the gdb binary
has support for (Python and NumPy).c                 r    [         R                  nUc  S[         R                   3n[        U5      eXl        g )Nz.No valid binary could be found for gdb named: )r   
GDB_BINARY
ValueError_gdb_binary)self
gdb_binarymsgs      l/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/misc/numba_gdbinfo.py__init___GDBTestWrapper.__init__   s9    &&
C''(*CS/!%    c                     U R                   S/nU H%  nUR                  S5        UR                  U5        M'     UR                  SS/5        [        R                  " USSSS9$ )Nz-qz-exqT
   )capture_outputtimeouttext)r   appendextend
subprocessrun)r   cmdgdb_callxs       r   _run_cmd_GDBTestWrapper._run_cmd   s^    OOT+AOOE"OOA  	%~~htR#') 	)r   c                     U R                   $ )Nr   r   s    r   r   _GDBTestWrapper.gdb_binary#   s    r   c                      UR                   S:H  $ )Nr   )
returncode)clsstatuss     r   success_GDBTestWrapper.success'   s      A%%r   c                 "    U R                  5       $ )zChecks that gdb will launch okr"   r&   s    r   check_launch_GDBTestWrapper.check_launch+   s    }}r   c                 *    SnU R                  U45      $ )NzUpython from __future__ import print_function; import sys; print(sys.version_info[:2])r/   r   r   s     r   check_python_GDBTestWrapper.check_python/   s    9}}cV$$r   c                 *    SnU R                  U45      $ )Nztpython from __future__ import print_function; import types; import numpy; print(isinstance(numpy, types.ModuleType))r/   r3   s     r   check_numpy_GDBTestWrapper.check_numpy4   s    < }}cV$$r   c                 *    SnU R                  U45      $ )Nzapython from __future__ import print_function; import types; import numpy;print(numpy.__version__)r/   r3   s     r   check_numpy_version#_GDBTestWrapper.check_numpy_version:   s    * }}cV$$r   r%   N) )__name__
__module____qualname____firstlineno____doc__r   r"   propertyr   classmethodr,   r0   r4   r7   r:   __static_attributes__r<   r   r   r   r      sM    +&)     & &%
%%r   r   c                  l   Sn SnSnSnSn [        5       nUR                  5       nUR                  U5      (       d4  SUR                   SUR                   SUR
                   3n[        U5      eUR                  n UR                  5       nUR                  U5      (       Ga  [        R                  " SUR                  R                  5       5      nUb  UR                  5       u  pU	 S	U
 3nS
nUR                  5       nUR                  U5      (       a  SUR
                  R                  5       ;  a  UR                  R                  5       S:X  ab  S
nSnUR                  5       nUR                  U5      (       a8  SUR
                  R                  5       ;  a  UR                  R                  5       nU(       a  U(       a  SnOSnOSnSn[        R                   R#                  [        R                   R%                  [&        5      U5      n[)        XUXL5      $ ! [         a  nSU 3n  SnANzSnAff = f)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   r0   r,   r   stdoutstderrr   r4   rematchstripgroupsr7   r:   	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_gdbinford   A   s    INM,1
#>%' ))+""6**k445 6  &jICS/!**	
 ))+v&&HH%:%+]]%8%8%:<M(#0#7#7#9 (/y'%;"!%$002&&v.."&--*=*=*??!==..0F:,0M7@4%0%D%D%FF*226::#.fmm6I6I6K#K(.(;(;(= %= "E"K$ .NWW\\"''//(";^LN Y0B-D DQ  FA!E	Fs   A0H 
H3$H..H3c                    [        5       n[        S5        SU  S3n[        USUR                  4-  5        [        USUR                  4-  5        [        USUR                  4-  5        [        USUR
                  4-  5        [        USUR                  4-  5        [        S	5        [        S
5        [        SUR                   S35        [        S5        Sn[        [        U5      5        g)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)rd   print
binary_locextension_locpy_vernp_ver	supportedr   )sep_posgdb_infofmtwarns       r   display_gdbinforr      s      H	(Owiw
C	#"H$7$78
89	#+X-C-CD
DE	#!8??3
34	#(//2
23	#3X5G5GH
HI	"I	 ! "	Ih,,-R
01	(OD 
&,r   __main__)-   )rA   collectionsr   rR   rM   r   textwrapr   numbar   _fieldsr   r   rd   rr   r=   r<   r   r   <module>ry      s[    @ " 	 	    B{G,	0% 0%fADH6 z r   