o
    Rh                  #   @   s  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
 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*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZAmBZB dd	lCm"Z" ddlDmEZE ejFdkZGdZHdZIdeBdeBdeeeJeJeJf  fddZKdd d!d"dd#d#eHeId$dd$d%d d&d'ee/ d(eeJ d)eeJ d*eJd+eeL d,eMd-eMd.eJd/eJd0eMd1eeM d2eMd3eeeLef  d4eJdeeeN eNee gef fd5d6ZOeG d7d8 d8ZPeG d9d: d:ZQeG d;d< d<ZReG d=d> d>ZSG d?d@ d@e8ZTG dAdB dBZUeVdCkreOd$dD d dlZdEeddfdFdGZWdEeddfdHdIZXdLdJdKZYeY  dS dS )M    N)	dataclassfield)islice)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_first_last	loop_last)Columns)ConsoleConsoleOptionsConsoleRenderableGroupRenderResultgroup)	Constrain)RegexHighlighterReprHighlighter)Panel)render_scope)Style)SyntaxSyntaxPosition)Themewin32
   P   startendreturnc           	      c   s|    | \}}|\}}||kr|||fV  dS t t||d D ]\}}}|r,||dfV  q|r5|d|fV  q|ddfV  qdS )zYield start and end positions per line.

    Args:
        start: Start position.
        end: End position.

    Returns:
        Iterable of (LINE, COLUMN1, COLUMN2).
    r   r   N)r   range)	r3   r4   line1column1line2column2firstlastline_no r?   P/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/rich/traceback.py_iter_syntax_lines6   s   rA   d   X      FTr?   )consolewidth
code_widthextra_linestheme	word_wrapshow_localslocals_max_lengthlocals_max_stringlocals_hide_dunderlocals_hide_sunderindent_guidessuppress
max_framesrE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   c                    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.
        code_width (Optional[int], optional): Code width (in characters) of traceback. Defaults to 88.
        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	tracebackr5   c                    s<   t j| || 
t	d}| d S )NrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   )	Tracebackfrom_exceptionboolprint)rT   rU   rV   exception_traceback)rG   rH   rP   rN   rO   rL   rM   rR   rK   rQ   rI   traceback_consolerF   rJ   r?   r@   
excepthook   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kwargsr5   c                     s   | | i | dS )zEwrap the default ip.showtraceback to store info for ip._showtracebackNr?   r`   ra   )default_showtracebacktb_datar?   r@   ipy_show_traceback   s   zCinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_show_tracebackF)	is_syntaxrf   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   running_compiled_codeF	tb_offsetr   r   )_get_exc_infogetr7   tb_next)rf   r`   ra   	exc_tupletbcompiledri   _)r^   r_   rd   r?   r@   ipy_display_traceback   s   zFinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_display_tracebackc                     s    | ddi|S )Nrf   Tr?   rb   )rq   r?   r@   <lambda>   s    z9install.<locals>.ipy_excepthook_closure.<locals>.<lambda>)showtracebackr   rZ   _showtracebackshowsyntaxerror)r_   re   )r^   )rc   r_   rq   rd   r@   ipy_excepthook_closure   s    z'install.<locals>.ipy_excepthook_closure)r!   
is_jupyterr   BaseExceptionr   r   r   get_ipythonsysr^   	Exception)rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rv   r_   old_excepthookr?   )rG   r^   rH   rP   rN   rO   rL   rM   rR   rK   rQ   rI   r]   rF   rJ   r@   installR   s4   +()r}   c                   @   st   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Zeeeeef eeef f  ed< dS )	Framefilenamelinenoname lineNlocalslast_instruction)__name__
__module____qualname__str__annotations__intr   r   r   r
   r   Noder   r   r?   r?   r?   r@   r~      s   
 ,r~   c                   @   sL   e Zd ZU eed< eed< eed< eed< eed< eedZe	e ed< dS )	_SyntaxErroroffsetr   r   r   msgdefault_factorynotesN)
r   r   r   r   r   r   r   listr   r   r?   r?   r?   r@   r      s   
 r   c                   @   s   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< e
edZee ed	< dZe	ed
< e
edZed ed< dS )Stackexc_type	exc_valueNsyntax_errorFis_causer   framesr   is_groupTrace
exceptions)r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r~   r   r   r   r?   r?   r?   r@   r      s   
 r   c                   @   s   e Zd ZU ee ed< dS )r   stacksN)r   r   r   r   r   r   r?   r?   r?   r@   r      s   
 r   c                   @   s   e Zd ZdgZdS )PathHighlighterz(?P<dim>.*/)(?P<bold>.+)N)r   r   r   
highlightsr?   r?   r?   r@   r      s    
r   c                $   @   s  e Zd ZdZddddddZ	d6dd	d
dddeeddddddde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	fddZed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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
d0e
d"e
fd1d2Ze d3ed"efd4d5Z dS )7rX   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.
        code_width (Optional[int], optional): Number of code characters used to traceback. Defaults to 88.
        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pythoncythonpyrex)r   z.pyz.pxdz.pyxz.pxiNrB   rC   rD   FTr?   rW   tracerF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   c                C   s"  |d u r$t  \}}}|d u s|d u s|d u rtd| j||||d}|| _|| _|| _|| _t	|p5d| _
|| _|| _|| _|| _|	| _|
| _|| _g | _|D ]-}t|tsm|jd useJ |dtj|j}n|}tjtj|}| j| qR|dkrtd|| _d S d| _d S )Nz9Value for 'trace' required if not called in except: blockrK   	ansi_darkz+ must be a module with '__file__' attributer      )rz   exc_info
ValueErrorextractr   rF   rG   rH   r-   	get_themerI   rJ   rK   rP   rL   rM   rN   rO   rQ   
isinstancer   __file__ospathdirnamenormpathabspathappendmaxrR   )selfr   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   r   r   rV   suppress_entityr   r?   r?   r@   __init__  s@   
"zTraceback.__init__r   r   rV   r5   c                C   s>   | j ||||	|
|||d}| |||||||	||
|||||dS )a  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.
            code_width (Optional[int], optional): Number of code characters used to traceback. Defaults to 88.
            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.
        rK   rL   rM   rN   rO   )rF   rG   rH   rI   rJ   rK   rP   rL   rM   rN   rO   rQ   rR   )r   )clsr   r   rV   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rich_tracebackr?   r?   r@   rY   P  s4   -zTraceback.from_exceptionr   c                   s  g }	d}
ddl m} t|ddpg }dtdtfdd	}	 t||j|||
|d}tjdkrQt	|t
tfrQd
|_|jD ]}|jtjt|||j| d q;t	|trnt|jp[d|jp_d|jpcd|jpgd|j|d|_|	| |jj}dttttf  dttttf  f fdd}t|D ]\}}|j j!}d}tjdkr|j"d }t#t$|j % ||d }|\}}}}|dur|dur|dur|dur||f||ff}|r|&dst'j()|st'j(*||}|j+,ddrqt-|pd||j j.|rfdd||j+/ D nd|d}|| |j+,ddr|jdd= qt|dd}|r4|j0}|}|j}d
}
q|j1}|rLt|ddsL|j0}|}|j}d}
q	 t2|	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	__notes__N_objectr5   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>)r   r{   )r   r?   r?   r@   safe_str  s
   
z#Traceback.extract.<locals>.safe_strT)r   r   r   r   )rD      )rK   rL   rN   rO   ?r   )r   r   r   r   r   r   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__rp   
startswith)r   keyrU   )rN   rO   r?   r@   
get_locals  s   
z%Traceback.extract.<locals>.get_localsrg   r   <_rich_traceback_omitc                    s6   i | ]\}}t |st |s|tj| d qS ))
max_length
max_string)inspect
isfunctionisclassr   traverse).0r   rU   )rL   rM   r?   r@   
<dictcomp>"  s    z%Traceback.extract.<locals>.<dictcomp>)r   r   r   r   r   _rich_traceback_guard	__cause____suppress_context__)r   )3richr   getattrr   r   r   r   rz   version_infor   BaseExceptionGroupExceptionGroupr   r   r   rX   r   type__traceback__SyntaxErrorr   r   r   r   r   r   r   r   r   r   objectr   f_codeco_filenamef_lastinextr   co_positionsr   r   r   isabsjoinf_localsrk   r~   co_nameitems	__class____context__r   )r   r   r   rV   rK   rL   rM   rN   rO   r   r   r   r   r   stack	exceptionr   r   frame_summaryr>   r   r   instruction_indexinstruction_position
start_lineend_linestart_column
end_columnframecauser   r?   )rN   rO   rL   rM   r@   r     s   



	



zTraceback.extractrE   optionsc                 #   sF   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 dtdtdtf fddttjj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)inheritr   r=   r5   c           	   
   3   s   | j r/t| d dddd}t|j} |V  W d    n1 s*w   Y  | jd uro tt| j dddjdjV  W d    n1 sXw   Y  t	| j
 dd	f| jjV  n| jrt	| j
 dd	f| jV  n
t	| j
 d	fV  | jD ]}t	d
|V  q| jrt| jdD ],\}}g }t|jD ]\}}||| qdV  ttt| d| ddjV  q|s| jrtdV  d S tdV  d S d S )Nz7[traceback.title]Traceback [dim](most recent call last)ztraceback.borderT)r   r   )titlestyleborder_styleexpandpaddingztraceback.border.syntax_error)r   r   r   r   rF   z: ztraceback.exc_type)z[NOTE] ztraceback.noter   r   zSub-exception #ztraceback.group.border)r   r   zI
[i]The above exception was the direct cause of the following exception:
zH
[i]During handling of the above exception, another exception occurred:
)r   r*   _render_stackr'   rF   	use_themer   _render_syntax_errorr   assembler   r   r   r   r   	enumerater   r   r   r   r$   r   from_markup)	r   r=   stack_renderablenotegroup_nogroup_exceptiongrouped_exceptions
group_lastgroup_stackbackground_stylerE   highlighterrender_stackr   traceback_themer?   r@   r  k  s~   



	

z0Traceback.__rich_console__.<locals>.render_stack)rI   get_background_styleget_style_for_tokenr/   	TextTokenr   r   r   Functionr   r   r,   r   Constant	Delimiterr   r)   r&   r   rZ   r%   r   reversedr   r   )r   rE   r   rI   token_styler=   r   r?   r  r@   __rich_console__L  s\   
	




&CzTraceback.__rich_console__r   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   r   r   r   existsr   r  r   r   r   rstripno_wrapminr   lenstylizer  )r   r   r  path_highlighterr   syntax_error_textr   r?   r?   r@   r    s*   


zTraceback._render_syntax_errorr   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 )Nr6   r   z#!r   r   )r   r   splitextindexr   lowerLEXERSrk   r   r   r   )r   r   r)  extnew_line_index
first_liner?   r?   r@   _guess_lexer  s   
zTraceback._guess_lexerr   c                 #   s   t  }j}dtdtt ffdd}d }jdkr+tjd t|jjd  }d}t	|jD ]G\}}|r@||v r@d}q2|rX|d usHJ 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  q2|
szz8t|j}d|}|sW q2|j|}t|||d|jj |jj f|jhjjjdd
}dV  W n ty } zt
d| dfV  W Y d }~q2d }~ww |j d urh|j \}}t!||D ]B\}}}z$|dkr@||d  }t|t|"  }|dkrMt||d  }W n t#yY   Y q%w |j$d||f||fd q%|j%rwt&|g||dd n|V  q2d S )!Nr   r5   c                 3   s,    | j rt| j d j j jdV  d S d S )Nr   )r   rP   r   r   )r   r+   rP   rL   rM   )r   )r   r?   r@   render_locals  s   z.Traceback._render_stack.<locals>.render_localsr   rg   FTz
... z frames hidden ...centerztraceback.error)justifyr   c                 3   s    | ]}  |V  qd S Nr   )r   r   )frame_filenamer?   r@   	<genexpr>   s    z*Traceback._render_stack.<locals>.<genexpr>r   r  r  r   z in r   r   zin r   r   )rI   line_numbers
line_rangehighlight_linesrJ   rG   rP   dedentr   r   r6   ztraceback.error_range)r   r3   r4   )r   )'r   rI   r~   r   r#   rR   r7   r%  r   r  r   r   anyrQ   r   r   r!  r  r   r   r   r   	linecachegetlinesr   r1  r-   rH   rJ   rG   rP   r{   r   rA   lstrip
IndexErrorstylize_ranger   r    )r   r   r'  rI   r2  exclude_framesexcludedframe_indexr   r<   
suppressedr   
code_linesr)  
lexer_namesyntaxerrorr3   r4   r8   r9   r;   r   r?   )r6  r   r@   r    s   

	







zTraceback._render_stackr5  )!r   r   r   __doc__r-  LOCALS_MAX_LENGTHLOCALS_MAX_STRINGr   r   r   r   rZ   r   r   r   r   classmethodr   r   rx   r   rY   r   r!   r"   r%   r  r&   r   r  r1  r   r  r?   r?   r?   r@   rX      s   
	

5	
H	
 3
frX   __main__r   ac                 C   s   d}t ||   d S )Nr   )r[   )rO  oner?   r?   r@   bar^  s   rQ  c                 C   s   d}h ddd}t |  d S )NT>   Duncan IdahoThufir HawatPaul AtreidesVladimir Harkonnen)NFT)
charactersatomic_types)rQ  )rO  r   zedr?   r?   r@   food  s
   	rY  c                   C   s   t d d S )Nr   )rY  r?   r?   r?   r@   rI  q  s   rI  )r5   N)Zr   r=  r   rz   dataclassesr   r   	itertoolsr   rV   r   typesr   r   typingr   r	   r
   r   r   r   r   r   r   r   pygments.lexersr   pygments.tokenr   r   r   r   r   r   r   r  r   pygments.utilr   r   r   _loopr   r   columnsr    rE   r!   r"   r#   r$   r%   r&   	constrainr'   r  r(   r)   panelr*   scoper+   r   r,   rH  r-   r.   r   rI   r/   platformWINDOWSrK  rL  r   rA   r   rZ   rx   r}   r~   r   r   r   r   rX   r   rQ  rY  rI  r?   r?   r?   r@   <module>   s    0  

	

 		    
b



