a
    zeT`                     @   s  d dl Z d dlZd dlZd dlZg dZd3ddZdd Zd4ddZd5d	d
Zd6ddZ	dZ
dZd7ddZd8ddZdd Zdd Zdd Zd9ddZd:ddZd;ddZd<d d!Zd=d"d#Zd>d$d%Zd&d' ZG d(d) d)Zd*d+ Zd,d- Zd.ZG d/d0 d0eZG d1d2 d2ZdS )?    N)extract_stack
extract_tbformat_exceptionformat_exception_onlyformat_listformat_stack	format_tb	print_exc
format_excprint_exception
print_lastprint_stackprint_tbclear_framesFrameSummaryStackSummaryTracebackException
walk_stackwalk_tbc                 C   s4   |d u rt j}t|  D ]}t||dd qd S )N fileend)sysstderrr   	from_listformatprint)extracted_listr   item r    /usr/lib/python3.9/traceback.py
print_list   s    r"   c                 C   s   t |  S N)r   r   r   )r   r    r    r!   r      s    r   c                 C   s   t t| |d|d d S Nlimit)r   )r"   r   )tbr&   r   r    r    r!   r   -   s    r   c                 C   s   t | |d S Nr%   )r   r   r'   r&   r    r    r!   r   7   s    r   c                 C   s   t jt| |dS r(   )r   extractr   r)   r    r    r!   r   ;   s    r   zG
The above exception was the direct cause of the following exception:

zF
During handling of the above exception, another exception occurred:

Tc                 C   sB   |d u rt j}tt||||dj|dD ]}t||dd q*d S )Nr%   chainr   r   )r   r   r   typer   r   )etypevaluer'   r&   r   r,   liner    r    r!   r   W   s    
r   c                 C   s    t tt||||dj|dS )Nr%   r+   )listr   r-   r   )r.   r/   r'   r&   r,   r    r    r!   r   l   s
    r   c                 C   s   t t| |d  S r#   )r1   r   r   )r.   r/   r    r    r!   r   |   s    r   c                 C   s.   t |}|d u s|sd|  }nd| |f }|S )Nz%s
z%s: %s
)	_some_str)r.   r/   valuestrr0   r    r    r!   _format_final_exc_line   s
    
r4   c                 C   s*   z
t | W S    dt| j  Y S 0 d S )Nz<unprintable %s object>)strr-   __name__)r/   r    r    r!   r2      s    
r2   c                 C   s   t t | ||d d S )Nr&   r   r,   )r   r   exc_infor7   r    r    r!   r	      s    r	   c                 C   s   d tt | |dS )Nr   r&   r,   )joinr   r   r8   r9   r    r    r!   r
      s    r
   c                 C   s.   t tdstdttjtjtj| || d S )N	last_typezno last exception)hasattrr   
ValueErrorr   r;   
last_valuelast_tracebackr7   r    r    r!   r      s
    
r   c                 C   s*   | d u rt  j} tt| |d|d d S r$   )r   	_getframef_backr"   r   )fr&   r   r    r    r!   r      s    
r   c                 C   s"   | d u rt  j} tt| |dS r(   )r   r@   rA   r   r   )rB   r&   r    r    r!   r      s    
r   c                 C   s0   | d u rt  j} tjt| |d}|  |S r(   )r   r@   rA   r   r*   r   reverse)rB   r&   stackr    r    r!   r      s
    	
r   c                 C   s6   | d ur2z| j   W n ty(   Y n0 | j} q d S r#   )tb_frameclearRuntimeErrortb_nextr'   r    r    r!   r      s    r   c                   @   sV   e Zd ZdZddddddZdd Zd	d
 Zdd Zdd Zdd Z	e
dd ZdS )r   )filenamelinenoname_linelocalsTN)lookup_linerN   r0   c                C   sB   || _ || _|| _|| _|r"| j |r8dd | D nd | _d S )Nc                 S   s   i | ]\}}|t |qS r    )repr).0kvr    r    r!   
<dictcomp>      z)FrameSummary.__init__.<locals>.<dictcomp>)rJ   rK   rL   rM   r0   itemsrN   )selfrJ   rK   rL   rO   rN   r0   r    r    r!   __init__   s    zFrameSummary.__init__c                 C   s`   t |tr:| j|jko8| j|jko8| j|jko8| j|jkS t |tr\| j| j| j| jf|kS tS r#   )	
isinstancer   rJ   rK   rL   rN   tupler0   NotImplementedrW   otherr    r    r!   __eq__  s    




zFrameSummary.__eq__c                 C   s   | j | j| j| jf| S r#   )rJ   rK   rL   r0   )rW   posr    r    r!   __getitem__  s    zFrameSummary.__getitem__c                 C   s   t | j| j| j| jgS r#   )iterrJ   rK   rL   r0   rW   r    r    r!   __iter__  s    zFrameSummary.__iter__c                 C   s   dj | j| j| jdS )Nz7<FrameSummary file {filename}, line {lineno} in {name}>)rJ   rK   rL   )r   rJ   rK   rL   rb   r    r    r!   __repr__  s    zFrameSummary.__repr__c                 C   s   dS )N   r    rb   r    r    r!   __len__  s    zFrameSummary.__len__c                 C   s&   | j d u r t| j| j | _ | j S r#   )rM   	linecachegetlinerJ   rK   striprb   r    r    r!   r0     s    
zFrameSummary.line)r6   
__module____qualname__	__slots__rX   r^   r`   rc   rd   rf   propertyr0   r    r    r    r!   r      s   
r   c                 c   s4   | d u rt  jj} | d ur0| | jfV  | j} qd S r#   )r   r@   rA   f_lineno)rB   r    r    r!   r   $  s
    r   c                 c   s"   | d ur| j | jfV  | j} q d S r#   )rE   	tb_linenorH   rI   r    r    r!   r   1  s    r      c                   @   s6   e Zd ZeddddddZedd Zd	d
 ZdS )r   NTFr&   lookup_linescapture_localsc             
   C   s   |d u r(t tdd }|d ur(|dk r(d}|d urV|dkrFt||}ntj|| d}|  }t }|D ]Z\}}|j}	|	j}
|	j	}|
|
 t|
|j |r|j}nd }|t|
||d|d qf|D ]}
t|
 q|r|D ]
}|j q|S )Ntracebacklimitr   )maxlenF)rO   rN   )getattrr   	itertoolsislicecollectionsdequesetf_codeco_filenameco_nameaddrg   	lazycache	f_globalsf_localsappendr   
checkcacher0   )klass	frame_genr&   rr   rs   resultfnamesrB   rK   corJ   rL   r   r    r    r!   r*   A  s8    


zStackSummary.extractc              	   C   sL   t  }|D ]<}t|tr$|| q
|\}}}}|t||||d q
|S )N)r0   )r   rY   r   r   )r   a_listr   framerJ   rK   rL   r0   r    r    r!   r   q  s    

zStackSummary.from_listc           
      C   sn  g }d }d }d }d}| D ]}|d u sT||j ksT|d u sT||jksT|d u sT||jkr|tkr|t8 }|d| d|dkr|dnd d |j }|j}|j}d}|d7 }|tkrqg }|d|j |j|j |jr|d	|j  |jr t	|j
 D ]\}}	|d
j||	d q |d| q|tkrj|t8 }|d| d|dkr^dnd d |S )Nr   z  [Previous line repeated z
 more time   sr   z]
z  File "{}", line {}, in {}
    {}
z    {name} = {value}
)rL   r/   )rJ   rK   rL   _RECURSIVE_CUTOFFr   r   r0   ri   rN   sortedrV   r:   )
rW   r   	last_file	last_line	last_namecountr   rowrL   r/   r    r    r!   r     s^    

zStackSummary.format)r6   rj   rk   classmethodr*   r   r   r    r    r    r!   r   >  s   /
r   c                   @   sb   e Zd ZdddddddZedd Zd	d
 Zdd Zdd Zdd Z	dd Z
ddddZdS )r   NTFr&   rr   rs   _seenc             	   C   sv  |d u rt  }|t| d| _z|rd|jd urdt|j|vrdtt|j|j|jj|d||d}nd }|r|jd urt|j|vrtt|j|j|jj|d||d}	nd }	W n  t	y   d| _d }d }	Y n0 || _|	| _|r|j
nd| _
tjt||||d| _|| _t|| _|rdt|trd|j| _|j}
|
d urFt|
nd | _|j| _|j| _|j| _|rr|   d S )NFr   Trq   )r{   r   id
_truncated	__cause__r   r-   __traceback____context__RecursionError__suppress_context__r   r*   r   rD   exc_typer2   _str
issubclassSyntaxErrorrJ   rK   r5   textoffsetmsg_load_lines)rW   r   	exc_valueexc_tracebackr&   rr   rs   r   causecontextlnor    r    r!   rX     sl    		


zTracebackException.__init__c                 O   s    | t |||jg|R i |S r#   )r-   r   )clsexcargskwargsr    r    r!   from_exception  s    z!TracebackException.from_exceptionc                 C   s6   | j D ]
}|j q| jr"| j  | jr2| j  d S r#   )rD   r0   r   r   r   )rW   r   r    r    r!   r     s    

zTracebackException._load_linesc                 C   s   t |tr| j|jkS tS r#   )rY   r   __dict__r[   r\   r    r    r!   r^   %  s    
zTracebackException.__eq__c                 C   s   | j S r#   )r   rb   r    r    r!   __str__*  s    zTracebackException.__str__c                 c   s~   | j d u rtd | jV  d S | j j}| j j}|dvrNt|tsBd}|d | }t| j tsjt|| jV  n| 	|E d H  d S )N)__main__builtinsz	<unknown>.)
r   r4   r   rk   rj   rY   r5   r   r   _format_syntax_error)rW   stypesmodr    r    r!   r   -  s    

z(TracebackException.format_exception_onlyc           
      c   s   d}| j d ur&d| jpd| j V  n| jd ur<d| j}| j}|d ur|d}|d}t|t| }d|V  | jpdd	 | }|dkrd
d |d | D }dd|V  | j	pd}	d||	|V  d S )Nr   z  File "{}", line {}
z<string>z ({})
z 
r   r   r   c                 s   s   | ]}|  r|nd V  qdS ) N)isspace)rQ   cr    r    r!   	<genexpr>a  rU   z:TracebackException._format_syntax_error.<locals>.<genexpr>z    {}^
z<no detail available>z	{}: {}{}
)
rK   r   rJ   r   rstriplstriplenr   r:   r   )
rW   r   filename_suffixr   rtextltextspacescaret
caretspacer   r    r    r!   r   J  s&    




z'TracebackException._format_syntax_errorr+   c                c   s   |r`| j d ur*| j j|dE d H  tV  n*| jd urT| jsT| jj|dE d H  tV  | jr`dV  | jr|dV  | j E d H  |  E d H  d S )Nr+   zXChained exceptions have been truncated to avoid stack overflow in traceback formatting:
z#Traceback (most recent call last):
)	r   r   _cause_messager   r   _context_messager   rD   r   )rW   r,   r    r    r!   r   f  s     

zTracebackException.format)r6   rj   rk   rX   r   r   r   r^   r   r   r   r   r    r    r    r!   r     s   C
	r   )N)NN)N)N)NNT)NT)NNT)NT)NNT)NNN)NN)NN)ry   rw   rg   r   __all__r"   r   r   r   r   r   r   r   r   r   r4   r2   r	   r
   r   r   r   r   r   r   r   r   r   r1   r   r   r    r    r    r!   <module>   s>   












Az