o
    h                  #   @   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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddl?m@Z@ ddlAmBZBmCZC dd	lDm#Z# ddlEmFZF ejGdkZHdZIdZJdeCdeCdeeeKeKeKf  fddZLdd d!d"dd#d#eIeJd$dd$d%d d&d'ee0 d(eeK d)eeK d*eKd+eeM d,eNd-eNd.eKd/eKd0eNd1eeN d2eNd3eeeMef  d4eKdeeeO eOee gef fd5d6ZPeG d7d8 d8ZQeG d9d: d:ZReG d;d< d<ZSeG d=d> d>ZTG d?d@ d@e9ZUG dAdB dBZVeWdCkrePd$dD d dlZdEeddfdFdGZXdEeddfdHdIZYdLdJdKZZeZ  dS dS )M    N)	dataclassfield)islice)walk_tb)
ModuleTypeTracebackType)AnyCallableDictIterableListOptionalSequenceSet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)	r4   r5   line1column1line2column2firstlastline_no r@   M/var/www/html/venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py_iter_syntax_lines7   s   rB   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_framesrF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   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	tracebackr6   c                    s<   t j| || 
t	d}| d S )NrG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   )	Tracebackfrom_exceptionboolprint)rU   rV   rW   exception_traceback)rH   rI   rQ   rO   rP   rM   rN   rS   rL   rR   rJ   traceback_consolerG   rK   r@   rA   
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kwargsr6   c                     s   | | i | dS )zEwrap the default ip.showtraceback to store info for ip._showtracebackNr@   ra   rb   )default_showtracebacktb_datar@   rA   ipy_show_traceback   s   zCinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_show_tracebackF)	is_syntaxrg   c                    s~     }| rdn|d }dd}d}|du r!|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getr8   tb_next)rg   ra   rb   	exc_tupletbcompiledrj   _)r_   r`   re   r@   rA   ipy_display_traceback   s   
zFinstall.<locals>.ipy_excepthook_closure.<locals>.ipy_display_tracebackc                     s    | ddi|S )Nrg   Tr@   rc   )rr   r@   rA   <lambda>   s    z9install.<locals>.ipy_excepthook_closure.<locals>.<lambda>)showtracebackr   r[   _showtracebackshowsyntaxerror)r`   rf   )r_   )rd   r`   rr   re   rA   ipy_excepthook_closure   s    z'install.<locals>.ipy_excepthook_closure)r"   
is_jupyterr   BaseExceptionr   r   r   get_ipythonsysr_   	Exception)rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rw   r`   old_excepthookr@   )rH   r_   rI   rQ   rO   rP   rM   rN   rS   rL   rR   rJ   r^   rG   rK   rA   installS   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@   rA   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@   rA   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   r[   r   r   r   r   r   r   r   r   r@   r@   r@   rA   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@   rA   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@   rA   r      s    
r   c                $   @   s  e Zd ZdZddddddZ	d7d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%dee d ed!ee dede	de	deded&ee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d0e
d1e
d"e
fd2d3Ze d4e d"efd5d6Z!dS )8rY   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.pxiNrC   rD   rE   FTr@   rX   tracerG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   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rL   	ansi_darkz+ must be a module with '__file__' attributer      )r{   exc_info
ValueErrorextractr   rG   rH   rI   r.   	get_themerJ   rK   rL   rQ   rM   rN   rO   rP   rR   
isinstancer   __file__ospathdirnamenormpathabspathappendmaxrS   )selfr   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   r   r   rW   suppress_entityr   r@   r@   rA   __init__  s@   
"zTraceback.__init__r   r   rW   r6   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.
        )rL   rM   rN   rO   rP   )rG   rH   rI   rJ   rK   rL   rQ   rM   rN   rO   rP   rR   rS   )r   )clsr   r   rW   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rich_tracebackr@   r@   rA   rZ   S  s4   -zTraceback.from_exception)rL   rM   rN   rO   rP   _visited_exceptionsr   c          !         s  g }
d}ddl m} t|ddpg }|	du rt n|	}dtdtfdd	}	 t||j||||d}tj	dkret
|ttfred
|_|jD ] }||v rKqD|| |jtjt|||j| |d qDt
|trt|jpod|jpsd|jpwd|jp{d|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rqt/|pd||j"j0|rfdd||j-1 D nd|d}|| |j-.ddr5|jdd= q|snt|dd}|durT||urT|j2}|}|j}d
}q$|j3}|durnt|ddsn|j2}|}|j}d}q$	 t4|
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_objectr6   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@   rA   safe_str  s
   
z#Traceback.extract.<locals>.safe_strT)r   r   r   r   )rE      )rL   rM   rO   rP   r   ?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__rq   
startswith)r   keyrV   )rO   rP   r@   rA   
get_locals  s   
z%Traceback.extract.<locals>.get_localsrh   r   <_rich_traceback_omitc                    s6   i | ]\}}t |st |s|tj| d qS ))
max_length
max_string)inspect
isfunctionisclassr   traverse).0r   rV   )rM   rN   r@   rA   
<dictcomp>.  s    z%Traceback.extract.<locals>.<dictcomp>)r   r   r   r   r   _rich_traceback_guard	__cause____suppress_context__)r   )5pip._vendor.richr   getattrsetr   r   r   r   r{   version_infor   BaseExceptionGroupExceptionGroupr   r   addr   rY   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_localsrl   r   co_nameitems	__class____context__r   )!r   r   r   rW   rL   rM   rN   rO   rP   r   r   r   r   r   grouped_exceptionsr   stack	exceptionr   r   frame_summaryr?   r   r   instruction_indexinstruction_position
start_lineend_linestart_column
end_columnframecauser   r@   )rO   rP   rM   rN   rA   r     s   




	



zTraceback.extractrF   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>   r6   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  rG   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(   rG   	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_exceptionr   
group_lastgroup_stackbackground_stylerF   highlighterrender_stackr   traceback_themer@   rA   r  z  s~   



	

z0Traceback.__rich_console__.<locals>.render_stack)rJ   get_background_styleget_style_for_tokenr0   	TextTokenr   r   r   Functionr   r   r-   r   Constant	Delimiterr   r*   r'   r   r[   r&   r    reversedr   r   )r   rF   r   rJ   token_styler>   r   r@   r  rA   __rich_console__[  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@   rA   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 )Nr7   r#  z#!r   r   )r   r   splitextindexr   lowerLEXERSrl   r   r   r   )r   r   r,  extnew_line_index
first_liner@   r@   rA   _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   r6   c                 3   s,    | j rt| j d j j jdV  d S d S )Nr   )r   rQ   r   r   )r   r,   rQ   rM   rN   )r   )r   r@   rA   render_locals  s   z.Traceback._render_stack.<locals>.render_localsr   rh   FTz
... z frames hidden ...centerztraceback.error)justifyr  c                 3   s    | ]}  |V  qd S Nr   )r   r   )frame_filenamer@   rA   	<genexpr>  s    z*Traceback._render_stack.<locals>.<genexpr>r   r"  r   r   z in r   r   zin r   r   )rJ   line_numbers
line_rangehighlight_linesrK   rH   rQ   dedentr#  r   r7   ztraceback.error_range)r  r4   r5   )r  )'r   rJ   r   r   r$   rS   r8   r(  r   r	  r   r   anyrR   r   r   r$  r  r   r   r   r   	linecachegetlinesr   r4  r.   rI   rK   rH   rQ   r|   r   rB   lstrip
IndexErrorstylize_ranger   r!   )r   r   r*  rJ   r5  exclude_framesexcludedframe_indexr   r=   
suppressedr   
code_linesr,  
lexer_namesyntaxerrorr4   r5   r9   r:   r<   r   r@   )r9  r   rA   r    s   

	







zTraceback._render_stackr8  )"r   r   r   __doc__r0  LOCALS_MAX_LENGTHLOCALS_MAX_STRINGr   r   r   r   r[   r   r   r   r   classmethodr   r   ry   r   rZ   r   r   r"   r#   r&   r  r'   r   r  r4  r   r  r@   r@   r@   rA   rY      s   
	

5	
H	

 ?
frY   __main__r   ac                 C   s   d}t ||   d S )Nr   )r\   )rR  oner@   r@   rA   barm  s   rT  c                 C   s   d}h ddd}t |  d S )NT>   Duncan IdahoThufir HawatPaul AtreidesVladimir Harkonnen)NFT)
charactersatomic_types)rT  )rR  r   zedr@   r@   rA   foos  s
   	r\  c                   C   s   t d d S )Nr   )r\  r@   r@   r@   rA   rL    s   rL  )r6   N)[r   r@  r   r{   dataclassesr   r   	itertoolsr   rW   r   typesr   r   typingr   r	   r
   r   r   r   r   r   r   r   r   pip._vendor.pygments.lexersr   pip._vendor.pygments.tokenr   r   r   r   r   r   r   r  r   pip._vendor.pygments.utilr   r   r   _loopr   r    columnsr!   rF   r"   r#   r$   r%   r&   r'   	constrainr(   r  r)   r*   panelr+   scoper,   r  r-   rK  r.   r/   r   rJ   r0   platformWINDOWSrN  rO  r   rB   r   r[   ry   r~   r   r   r   r   r   rY   r   rT  r\  rL  r@   r@   r@   rA   <module>   s    4  

	

 		    
n



