§
    ƒÛgJ  ã                   ó®   — 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¦   «          dS dS )z:Module for displaying information about Numba's gdb set upé    )Ú
namedtupleN)Údedent)Úconfigz4binary_loc, extension_loc, py_ver, np_ver, supportedÚ	_gdb_infoc                   ód   — 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dS )Ú_GDBTestWrapperzmWraps the gdb binary and has methods for checking what the gdb binary
    has support for (Python and NumPy).c                 ól   — t           j        }|€dt           j        › �}t          |¦  «        ‚|| _        d S )Nz.No valid binary could be found for gdb named: )r   Ú
GDB_BINARYÚ
ValueErrorÚ_gdb_binary)ÚselfÚ
gdb_binaryÚmsgs      úN/granary/edev/quantum/lib/python3.11/site-packages/numba/misc/numba_gdbinfo.pyÚ__init__z_GDBTestWrapper.__init__   sA   € ÝÔ&ˆ
ØÐð*ÝÔ'ð*ð *ˆCå˜S‘/”/Ð!Ø%ˆÔÐÐó    © c                 óÐ   — | j         dg}|D ],}|                     d¦  «         |                     |¦  «         Œ-|                     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   s|   € Ø”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                 ó*   — |                       ¦   «         S )zChecks that gdb will launch ok©r!   r#   s    r   Úcheck_launchz_GDBTestWrapper.check_launch+   s   € à�}Š}‰ŒÐr   c                 ó2   — d}|                       |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                 ó2   — d}|                       |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                 ó2   — d}|                       |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)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r!   Úpropertyr   Úclassmethodr(   r+   r.   r0   r2   r   r   r   r   r      s³   € € € € € ð+ð +ð&ð &ð &ð)ð )ð )ð )ð ð ð  ñ „Xð ð ð&ð &ñ „[ð&ðð ð ð%ð %ð %ð
%ð %ð %ð%ð %ð %ð %ð %r   r   c                  óZ  — d} d}d}d}d}	 t          ¦   «         }|                     ¦   «         }|                     |¦  «        s)d|j        › d|j        › d|j        › �}t          |¦  «        ‚|j        } |                     ¦   «         }|                     |¦  «        �rt          j	        d|j         
                    ¦   «         ¦  «        }|�â|                     ¦   «         \  }	}
|	› d	|
› �}d
}|                     ¦   «         }|                     |¦  «        r™d|j         
                    ¦   «         vr~|j         
                    ¦   «         dk    rad
}d}|                     ¦   «         }|                     |¦  «        r4d|j         
                    ¦   «         vr|j         
                    ¦   «         }n# t          $ r}d|› �} Y d}~nd}~ww xY w|r|rd}nd}nd}d}t          j                             t          j                             t&          ¦  «        |¦  «        }t)          | ||||¦  «        S )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Úgroupsr0   r2   Ú	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Ñ*Ô*ð 	"ðI˜kÔ4ð Ið IØ &¤ðIð IØ9?¼ðIð IˆCå˜S‘/”/Ð!ØÔ*ˆ	ð
 ×)Ò)Ñ+Ô+ˆØ×Ò˜vÑ&Ô&ñ 	>ÝœHÐ%:Ø%+¤]×%8Ò%8Ñ%:Ô%:ñ<ô <ˆMàÐ(Ø#0×#7Ò#7Ñ#9Ô#9Ñ �˜Ø(/Ð%;Ð%;°'Ð%;Ð%;Ð"Ø!%�à$×0Ò0Ñ2Ô2�Ø×&Ò& vÑ.Ô.ð 
>Ø"¨&¬-×*=Ò*=Ñ*?Ô*?Ð?Ð?Ø!œ=×.Ò.Ñ0Ô0°FÒ:Ð:Ø,0˜MØ7@Ð4à%0×%DÒ%DÑ%FÔ%F˜FØ*×2Ò2°6Ñ:Ô:ð >Ø#.°f´m×6IÒ6IÑ6KÔ6KÐ#KÐ#Kà(.¬×(;Ò(;Ñ(=Ô(=ð %=øøõ/ ð Fð Fð FØEÀ!ÐEÐEˆ	ˆ	ˆ	ˆ	ˆ	ˆ	øøøøðFøøøð6 ð %Øð 	LØ"EÐÐà"KÐÐà$Ðð .€NÝ”W—\’\¥"¤'§/¢/µ(Ñ";Ô";¸^ÑLÔL€Nõ �Y Ð0BØ-Ð/BñDô Dð Ds   ŒA'F. Æ.
GÆ8GÇGé-   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          |¦  «        ¦  «         dS )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_gdbinforg   …   s   € õ Ñ Ô €HÝ	ˆ(�O„O€OØ
ˆwÐ
Ð
Ð
€Cå	ˆ#Ð" HÔ$7Ð8Ñ
8Ñ9Ô9Ð9Ý	ˆ#Ð+¨XÔ-CÐDÑ
DÑEÔEÐEÝ	ˆ#Ð! 8¤?Ð3Ñ
3Ñ4Ô4Ð4Ý	ˆ#� (¤/Ð2Ñ
2Ñ3Ô3Ð3Ý	ˆ#Ð3°XÔ5GÐHÑ
HÑIÔIÐIå	ˆ"�I„I€IÝ	ð !ñ "ô "ð "å	Ð
0�hÔ,Ð
0Ð
0Ð
0Ñ1Ô1Ð1Ý	ˆ(�O„O€Oð€Dõ 
�&�‰,Œ,ÑÔÐÐÐr   Ú__main__)rY   )r6   Úcollectionsr   rF   rA   r   Útextwrapr   Únumbar   Ú_fieldsr   r   rX   rg   r3   r   r   r   ú<module>rm      sô   ðØ @Ð @Ø "Ð "Ð "Ð "Ð "Ð "Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð B€ØˆJ�{ GÑ,Ô,€	ð0%ð 0%ð 0%ð 0%ð 0%ñ 0%ô 0%ð 0%ðfADð ADð ADðHð ð ð ð6 ˆzÒÐØ€OÑÔÐÐÐð Ðr   