o
    IJes                  !   @   s  d dl mZ d dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZm Z m!Z! d d	lm"Z# d d
lm$Z$ d dl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? dd	l@m"Z" ddlAmBZB eC dkZDdZEdZFddddddeEeFdddddd d!ee. d"eeG d#eGd$eeH d%eId&eId'eGd(eGd)eId*eeI d+eId,eeeHef  d-eGd.eeeJ eJee gef fd/d0ZKeG d1d2 d2ZLeG d3d4 d4ZMeG d5d6 d6ZNeG d7d8 d8ZOG d9d: d:e6ZPG d;d< d<ZQeRd=krrdd>l-m.Z. e. Z-d dlZd?ed.dfd@dAZSd?ed.dfdBdCZTdFdDdEZUeU  dS dS )G    )absolute_importN)	dataclassfield)walk_tb)
ModuleTypeTracebackType)
AnyCallableDictIterableListOptionalSequenceTupleTypeUnion)guess_lexer_for_filename)CommentKeywordNameNumberOperatorString)Text)Token)ClassNotFound   )pretty)	loop_last)Columns)ConsoleConsoleOptionsConsoleRenderableRenderResultgroup)	Constrain)RegexHighlighterReprHighlighter)Panel)render_scope)Style)Syntax)ThemeWindows
   P   d      FT )consolewidthextra_linestheme	word_wrapshow_localslocals_max_lengthlocals_max_stringlocals_hide_dunderlocals_hide_sunderindent_guidessuppress
max_framesr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   returnc                    s   | du r	t ddn| jrdu rdndtt dtdtt ddf	
fdd	 d
tddf fdd}zt }|| tj	W S  t
y\   tj	} t_	| Y S w )a"  Install a rich traceback handler.

    Once installed, any tracebacks will be printed with syntax highlighting and rich formatting.


    Args:
        console (Optional[Console], optional): Console to write exception to. Default uses internal Console instance.
        width (Optional[int], optional): Width (in characters) of traceback. Defaults to 100.
        extra_lines (int, optional): Extra lines of code. Defaults to 3.
        theme (Optional[str], optional): Pygments theme to use in traceback. Defaults to ``None`` which will pick
            a theme appropriate for the platform.
        word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False.
        show_locals (bool, optional): Enable display of local variables. Defaults to False.
        locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to 10.
        locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80.
        locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True.
        locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False.
        indent_guides (bool, optional): Enable indent guides in code and locals. Defaults to True.
        suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback.

    Returns:
        Callable: The previous exception handler that was replaced.

    NT)stderrtype_value	tracebackr@   c                    s6   
 tj| || 	td d S )Nr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   )print	Tracebackfrom_exceptionbool)rB   rC   rD   )r5   r=   r;   r<   r9   r:   r?   r8   r>   r6   traceback_consoler4   r7   r2   h/home/seandotau/au.memorygallery.club/gallery/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py
excepthooka   s&   zinstall.<locals>.excepthookipc              	      sl   i j  dtdtdd f fdd}dddtdtdtdd ffd	d
_|_ fdd_d S )Nargskwargsr@   c                     s   | | i | dS )zEwrap the default ip.showtraceback to store info for ip._showtracebackNr2   rN   rO   )default_showtracebacktb_datar2   rK   ipy_show_traceback~   s   zCinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_show_tracebackF)	is_syntaxrT   c                    st     }| rdn|d }dd}d|rdnd}t|D ]}|du r( n|j}q  |d |d | i dS )z2Internally called traceback from ip._showtracebackN   Zrunning_compiled_codeF	tb_offsetr   r   )Z_get_exc_infogetrangetb_next)rT   rN   rO   Z	exc_tupletbZcompiledrV   _)rL   rM   rR   r2   rK   ipy_display_traceback   s   zFinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_display_tracebackc                     s    | ddi|S )NrT   Tr2   rP   )r\   r2   rK   <lambda>   s    z9install.<locals>.ipy_excepthook_closure.<locals>.<lambda>)Zshowtracebackr   rI   Z_showtracebackZshowsyntaxerror)rM   rS   )rL   )rQ   rM   r\   rR   rK   ipy_excepthook_closurez   s    z'install.<locals>.ipy_excepthook_closure)r    
is_jupyterr   BaseExceptionr   r   r   get_ipythonsysrL   	Exception)r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r^   rM   old_excepthookr2   )rL   r5   r=   r;   r<   r9   r:   r?   r8   r>   r6   rJ   r4   r7   rK   install0   s4   )&)re   c                   @   sL   e Zd ZU eed< eed< eed< dZeed< dZee	ee
jf  ed< dS )Framefilenamelinenoname lineNlocals)__name__
__module____qualname__str__annotations__intrk   rl   r   r
   r   Noder2   r2   r2   rK   rf      s   
 rf   c                   @   s6   e Zd ZU eed< eed< eed< eed< eed< dS )_SyntaxErroroffsetrg   rk   rh   msgN)rm   rn   ro   rr   rq   rp   r2   r2   r2   rK   rt      s   
 rt   c                   @   sP   e Zd ZU eed< eed< dZee ed< dZe	ed< e
edZee ed< dS )	Stackexc_type	exc_valueNsyntax_errorFis_cause)default_factoryframes)rm   rn   ro   rp   rq   rz   r   rt   r{   rI   r   listr}   r   rf   r2   r2   r2   rK   rw      s   
 rw   c                   @   s   e Zd ZU ee ed< dS )TracestacksN)rm   rn   ro   r   rw   rq   r2   r2   r2   rK   r      s   
 r   c                   @   s   e Zd ZdgZdS )PathHighlighterz(?P<dim>.*/)(?P<bold>.+)N)rm   rn   ro   
highlightsr2   r2   r2   rK   r      s    
r   c                "   @   s  e Zd ZdZddddddZ	d4dd	dd
d
eedd
dddddee dee	 de	dee
 dedede	de	dedededeee
ef  de	fddZedd	dd
d
eedd
dddddee dedee dee	 de	dee
 dedede	de	dedededeee
ef  de	d d f d!d"Zed
eedd
d#dee dedee dede	de	deded efd$d%Zd&ed'ed efd(d)Ze d*ed efd+d,Zed-e
d.e
d e
fd/d0Ze d1ed efd2d3Z dS )5rG   a  A Console renderable that renders a traceback.

    Args:
        trace (Trace, optional): A `Trace` object produced from `extract`. Defaults to None, which uses
            the last exception.
        width (Optional[int], optional): Number of characters used to traceback. Defaults to 100.
        extra_lines (int, optional): Additional lines of code to render. Defaults to 3.
        theme (str, optional): Override pygments theme used in traceback.
        word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False.
        show_locals (bool, optional): Enable display of local variables. Defaults to False.
        indent_guides (bool, optional): Enable indent guides in code and locals. Defaults to True.
        locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
            Defaults to 10.
        locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80.
        locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True.
        locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False.
        suppress (Sequence[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback.
        max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100.

    textpythonZcythonZpyrex)rj   z.pyz.pxdz.pyxz.pxiNr0   r1   FTr2   rE   tracer4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   c                C   s  |d u r$t  \}}}|d u s|d u s|d u rtd| j||||d}|| _|| _|| _t|p2d| _	|| _
|| _|| _|| _|| _|	| _|
| _g | _|D ]-}t|tsj|jd usbJ |dtj|j}n|}tjtj|}| j| qO|dkrtd|| _d S d| _d S )Nz9Value for 'trace' required if not called in except: blockr8   Z	ansi_darkz+ must be a module with '__file__' attributer      )rb   exc_info
ValueErrorextractr   r4   r5   r+   Z	get_themer6   r7   r8   r=   r9   r:   r;   r<   r>   
isinstancerp   __file__ospathdirnamenormpathabspathappendmaxr?   )selfr   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rx   ry   rD   Zsuppress_entityr   r2   r2   rK   __init__   s>   
"zTraceback.__init__rx   ry   rD   r@   c                C   s<   | j |||||	|
||d}| ||||||||	|
||||dS )ae  Create a traceback from exception info

        Args:
            exc_type (Type[BaseException]): Exception type.
            exc_value (BaseException): Exception value.
            traceback (TracebackType): Python Traceback object.
            width (Optional[int], optional): Number of characters used to traceback. Defaults to 100.
            extra_lines (int, optional): Additional lines of code to render. Defaults to 3.
            theme (str, optional): Override pygments theme used in traceback.
            word_wrap (bool, optional): Enable word wrapping of long lines. Defaults to False.
            show_locals (bool, optional): Enable display of local variables. Defaults to False.
            indent_guides (bool, optional): Enable indent guides in code and locals. Defaults to True.
            locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
                Defaults to 10.
            locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80.
            locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True.
            locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False.
            suppress (Iterable[Union[str, ModuleType]]): Optional sequence of modules or paths to exclude from traceback.
            max_frames (int): Maximum number of frames to show in a traceback, 0 for no maximum. Defaults to 100.

        Returns:
            Traceback: A Traceback instance that may be printed.
        r8   r9   r:   r;   r<   )r4   r5   r6   r7   r8   r=   r9   r:   r;   r<   r>   r?   )r   )clsrx   ry   rD   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   Zrich_tracebackr2   r2   rK   rH   $  s2   +zTraceback.from_exceptionr   c             	      s  g }	d}
ddl m} dtdtfdd}	 t||j|||
d	}t|tr<t|j	p*d|j
p.d
|jp2d|jp6d|jd|_|	| |jj}dttttf  dttttf  f fdd}t|D ]R\}}|jj}|r}|ds}tj|s}tj||}|jddrqat|pd
||jj|rfdd||j  D ndd}|| |jddr|jdd= qat!|dd}|r|j"}|}|j#}d}
q|j$}|rt!|dds|j"}|}|j#}d}
q	 t%|	d}|S )a  Extract traceback information.

        Args:
            exc_type (Type[BaseException]): Exception type.
            exc_value (BaseException): Exception value.
            traceback (TracebackType): Python Traceback object.
            show_locals (bool, optional): Enable display of local variables. Defaults to False.
            locals_max_length (int, optional): Maximum length of containers before abbreviating, or None for no abbreviation.
                Defaults to 10.
            locals_max_string (int, optional): Maximum length of string before truncating, or None to disable. Defaults to 80.
            locals_hide_dunder (bool, optional): Hide locals prefixed with double underscore. Defaults to True.
            locals_hide_sunder (bool, optional): Hide locals prefixed with single underscore. Defaults to False.

        Returns:
            Trace: A Trace instance which you can use to construct a `Traceback`.
        Fr   )_IMPORT_CWD_objectr@   c                 S   s    zt | W S  ty   Y dS w )z1Don't allow exceptions from __str__ to propagate.z<exception str() failed>)rp   rc   )r   r2   r2   rK   safe_str  s
   
z#Traceback.extract.<locals>.safe_strT)rx   ry   r{   ?rj   )ru   rg   rh   rk   rv   iter_localsc                 3   sT     ss| E dH  dS | D ]\}} r| drqr"| dr"q||fV  qdS )z-Extract locals from an iterator of key pairs.N__r[   
startswith)r   keyrC   )r;   r<   r2   rK   
get_locals  s   
z%Traceback.extract.<locals>.get_locals<Z_rich_traceback_omitc                    s"   i | ]\}}|t j| d qS ))
max_length
max_string)r   traverse).0r   rC   )r9   r:   r2   rK   
<dictcomp>  s    z%Traceback.extract.<locals>.<dictcomp>N)rg   rh   ri   rl   _rich_traceback_guard	__cause____suppress_context__)r   )&pip._vendor.richr   r   rp   rw   rm   r   SyntaxErrorrt   ru   rg   rh   r   rv   rz   r   r}   r   r   objectr   f_codeco_filenamer   r   r   isabsjoinf_localsrW   rf   co_nameitemsgetattr	__class____traceback____context__r   )r   rx   ry   rD   r8   r9   r:   r;   r<   r   r{   r   r   stackr   r   frame_summaryline_norg   framecauser   r2   )r;   r<   r9   r:   rK   r   j  s~   

		
zTraceback.extractr3   optionsc                 c   sR   | j }| }|j}ti d|td|td|td|tjd|t	d|t
tdd d	|td
|ttdd d|t	d|tjd|tjd|tjd|tjd|td|td|tjtdd dd}t }tt| jjD ]\}}	|	jrt| |	d|dddd}
t|
| j}
|| |
V  W d    n1 sw   Y  |	jd ur|| tt| |	j|ddd| jd| jV  W d    n1 sw   Y  t|	j ddf||	jj V  n|	j!rt|	j ddf||	j!V  n
t|	j dfV  |s&|	j"r t#dV  qt#dV  qd S ) Nr   pygments.textpygments.stringpygments.functionpygments.numberzrepr.indentT)dimzrepr.strz
repr.brace)boldzrepr.numberzrepr.bool_truezrepr.bool_falsez	repr.nonezscope.borderzscope.equalsz	scope.keyzscope.key.specialF)inheritz7[traceback.title]Traceback [dim](most recent call last)ztraceback.border)r   r   )titlestyleborder_styleexpandpaddingztraceback.border.syntax_error)r   r   r   r   r4   z: ztraceback.exc_typezI
[i]The above exception was the direct cause of the following exception:
zH
[i]During handling of the above exception, another exception occurred:
)$r6   Zget_background_styleZget_style_for_tokenr,   	TextTokenr   r   r   ZFunctionr   r   r*   r   ConstantZ	Delimiterr   r'   r   reversedr   r   r}   r(   _render_stackr%   r4   	use_themerz   _render_syntax_errorr   assemblerx   rv   ry   r{   from_markup)r   r3   r   r6   background_styleZtoken_styleZtraceback_themehighlighterlastr   Zstack_renderabler2   r2   rK   __rich_console__  s   
	







zTraceback.__rich_console__rz   c                 c   s    t  }t }|jdkr,tj|jr,tjd|j dfdt|j	dfdd}||V  ||j
 }d|_t|jd	 t|}|d
|| |tjdd|  d dd7 }|V  d S )Nz<stdin> r   :r   r   r   r   Tr   zbold underline
u   [traceback.offset]▲[/])r'   r   rg   r   r   existsr   r   rp   rh   rk   rstripno_wrapminru   lenstylizer   )r   rz   r   path_highlighterr   Zsyntax_error_textru   r2   r2   rK   r   5  s*   


zTraceback._render_syntax_errorrg   codec                 C   s   t j|d }|s(|d}|dkr|d | n|}|dr(d| v r(dS z| j|p4t||j	W S  t
y?   Y dS w )Nr   z#!r   r   )r   r   splitextindexr   lowerLEXERSrW   r   ri   r   )r   rg   r   extZnew_line_index
first_liner2   r2   rK   _guess_lexerL  s   
zTraceback._guess_lexerr   c                 #   sV   t  }j}dtdtfdd}dtdtt ffdd}d }jdkr4tjd	 t|j	jd	  }d
}t
|j	D ]\}}	|rH||v rHd}q;|r`|d usPJ tdt| ddddV  d
}|dk}
|	j t fddjD }tj|	jrtj|t|	jdddt|	jdfd|	jdfdd}ntjd|	jdfdt|	jdfdd}|	jds|
sdV  |V  |	jdr||	E d H  q;|s(z1||	j}|sW q;|	j|}t|||d|	jj |	jj f|	jhjdjd
d
}dV  W n ty } ztd| dfV  W Y d }~q;d }~ww |	jr%t|g||	d d!n|V  q;d S )"Nrg   r@   c                 S   s   d t| S )zRead files, and cache results on filename.

            Args:
                filename (str): Filename to read

            Returns:
                str: Contents of file
            rj   )r   	linecachegetlines)rg   r2   r2   rK   	read_codea  s   	z*Traceback._render_stack.<locals>.read_coder   c                 3   s,    | j rt| j d j j jdV  d S d S )Nrl   )r   r=   r   r   )rl   r)   r=   r9   r:   )r   )r   r2   rK   render_localsl  s   z.Traceback._render_stack.<locals>.render_localsr   rU   FTz
... z frames hidden ...centerztraceback.error)justifyr   c                 3   s    | ]}  |V  qd S Nr   )r   r   )frame_filenamer2   rK   	<genexpr>  s    z*Traceback._render_stack.<locals>.<genexpr>r   r   r   r   z in r   r   zin r   rj   X   )r6   Zline_numbersZ
line_rangeZhighlight_linesr7   Z
code_widthr=   dedentr   r   )r   )r   r6   rp   rf   r   r"   r?   rX   r   r}   	enumerater   rg   anyr>   r   r   r   r   rh   ri   r   r   r+   r5   r7   r=   rc   rl   r   )r   r   r   r6   r   r   Zexclude_framesZexcludedZframe_indexr   firstZ
suppressedr   r   Z
lexer_namesyntaxerrorr2   )r   r   rK   r   \  s   

	



zTraceback._render_stackr   )!rm   rn   ro   __doc__r   LOCALS_MAX_LENGTHLOCALS_MAX_STRINGr   r   rr   rp   rI   r   r   r   r   classmethodr   r   r`   r   rH   r   r    r!   r#   r   r$   rt   r   r   rw   r   r2   r2   r2   rK   rG      s
   
	

3	
E	
|
NrG   __main__)r    ac                 C   s   d}t ||   d S )Nr   )rF   )r  oner2   r2   rK   bar  s   r  c                 C   s   d}h ddd}t |  d S )NT>   zThufir HawatzVladimir HarkonnenzPaul AtreideszDuncan Idaho)NFT)
charactersZatomic_types)r  )r  r   Zzedr2   r2   rK   foo  s
   	r  c                   C   s>   zzt d W W d S    t Y W d S    tjdd Y d S )Nr   Tr   )r  Zslfkjsldkfjr3   print_exceptionr2   r2   r2   rK   r     s   r   )r@   N)V
__future__r   r   r   platformrb   dataclassesr   r   rD   r   typesr   r   typingr   r	   r
   r   r   r   r   r   r   r   Zpip._vendor.pygments.lexersr   Zpip._vendor.pygments.tokenr   r   r   r   r   r   r   r   r   Zpip._vendor.pygments.utilr   rj   r   _loopr   columnsr   r3   r    r!   r"   r#   r$   	constrainr%   r   r&   r'   panelr(   scoper)   r   r*   r   r+   r   r6   r,   systemWINDOWSr   r   rr   rp   rI   r`   re   rf   rt   rw   r   r   rG   rm   r  r  r   r2   r2   r2   rK   <module>   s    0 	

    



