o
     JAfjf                     @   sH  	 d dl Z d dlZd dlZd dlZg dZd7ddZdd Zd8ddZd7d	d
Zd7ddZ	dZ
dZG dd dZe Zdd ZeedddfddZeeddfddZefddZdd Zdd Zd9ddZd:d d!Zd9d"d#Zd;d$d%Zd8d&d'Zd8d(d)Zd*d+ ZG d,d- d-Zd.d/ Zd0d1 Zd2ZG d3d4 d4eZ G d5d6 d6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   s6   	 |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.10/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:

c                   @   s   e Zd Zdd ZdS )	_Sentinelc                 C      dS )Nz
<implicit>r    selfr    r    r!   __repr__X      z_Sentinel.__repr__N)__name__
__module____qualname__r/   r    r    r    r!   r+   W   s    r+   c                 C   sT   |t u |t u krtd||  u rt u r&n ||fS | d ur$| | jfS dS ||fS )Nz-Both or neither of value and tb must be givenNN)	_sentinel
ValueError__traceback__)excvaluer'   r    r    r!   _parse_value_tb]   s   
r:   Tc                C   sZ   	 t | ||\}}|d u rtj}tt||||dd}|j|dD ]	}t||dd q!d S )NTr&   compactchainr   r   )r:   r   r   r   typer   r   )r8   r9   r'   r&   r   r>   teliner    r    r!   r   h   s   
r   c                C   s8   	 t | ||\}}tt||||dd}t|j|dS )NTr;   r=   )r:   r   r?   listr   )r8   r9   r'   r&   r>   r@   r    r    r!   r   |   s   r   c                C   s.   	 |t u r| }tt||d dd}t| S )NT)r<   )r5   r   r?   rB   r   )r8   r9   r@   r    r    r!   r      s
   r   c                 C   s0   t |}|d u s
|sd|  }|S d| |f }|S )Nz%s
z%s: %s
)	_some_str)etyper9   valuestrrA   r    r    r!   _format_final_exc_line   s   rF   c                 C   s$   zt | W S    dt| j  Y S )Nz<unprintable %s object>)strr?   r1   )r9   r    r    r!   rC      s   
rC   c                 C   s   	 t t | ||d d S )Nr&   r   r>   )r   r   exc_inforH   r    r    r!   r	         r	   c                 C   s   	 d tt | |dS )Nr   r&   r>   )joinr   r   rI   rK   r    r    r!   r
      rJ   r
   c                 C   s0   	 t tds
tdttjtjtj| || d S )N	last_typezno last exception)hasattrr   r6   r   rM   
last_valuelast_tracebackrH   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   rQ   rR   r   r   )rS   r&   r    r    r!   r      s   
r   c                 C   s2   	 | d u r
t  j} tjt| |d}|  |S r(   )r   rQ   rR   r   r*   r   reverse)rS   r&   stackr    r    r!   r      s   
r   c                 C   sB   	 | d urz| j   W n	 ty   Y nw | j} | d usd S d S r#   )tb_frameclearRuntimeErrortb_nextr'   r    r    r!   r      s   r   c                   @   sX   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_liner_   rA   c                C   sJ   	 || _ || _|| _|| _|r| j |r dd | D | _d S d | _d S )Nc                 S   s   i | ]	\}}|t |qS r    )repr).0kvr    r    r!   
<dictcomp>  s    z)FrameSummary.__init__.<locals>.<dictcomp>)r[   r\   r]   r^   rA   itemsr_   )r.   r[   r\   r]   r`   r_   rA   r    r    r!   __init__  s   	&zFrameSummary.__init__c                 C   s`   t |tr| j|jko| j|jko| j|jko| j|jkS t |tr.| j| j| j| jf|kS tS r#   )	
isinstancer   r[   r\   r]   r_   tuplerA   NotImplementedr.   otherr    r    r!   __eq__  s   




zFrameSummary.__eq__c                 C   s   | j | j| j| jf| S r#   )r[   r\   r]   rA   )r.   posr    r    r!   __getitem__      zFrameSummary.__getitem__c                 C   s   t | j| j| j| jgS r#   )iterr[   r\   r]   rA   r-   r    r    r!   __iter__#  rp   zFrameSummary.__iter__c                 C   s   dj | j| j| jdS )Nz7<FrameSummary file {filename}, line {lineno} in {name}>)r[   r\   r]   )r   r[   r\   r]   r-   r    r    r!   r/   &  s   zFrameSummary.__repr__c                 C   r,   )N   r    r-   r    r    r!   __len__*  r0   zFrameSummary.__len__c                 C   s4   | j d u r| jd u rd S t| j| j| _ | j  S r#   )r^   r\   	linecachegetliner[   stripr-   r    r    r!   rA   -  s
   


zFrameSummary.line)r1   r2   r3   	__slots__rg   rm   ro   rr   r/   rt   propertyrA   r    r    r    r!   r      s    
r   c                 c   sB    	 | d u rt  jj} | d ur| | jfV  | j} | d usd S d S r#   )r   rQ   rR   f_lineno)rS   r    r    r!   r   5  s   r   c                 c   s0    	 | d ur| j | jfV  | j} | d usd S d S r#   )rV   	tb_linenorY   rZ   r    r    r!   r   B  s   r      c                   @   s8   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r,|dkr$t||}ntj|| d}|  }t }|D ]-\}}|j}	|	j}
|	j	}|
|
 t|
|j |rS|j}nd }|t|
||d|d q4|D ]}
t|
 qd|rv|D ]}|j qp|S )Ntracebacklimitr   )maxlenF)r`   r_   )getattrr   	itertoolsislicecollectionsdequesetf_codeco_filenameco_nameaddru   	lazycache	f_globalsf_localsappendr   
checkcacherA   )klass	frame_genr&   r~   r   resultfnamesrS   r\   cor[   r]   r   r    r    r!   r*   R  s:   


zStackSummary.extractc              	   C   sN   	 t  }|D ]}t|tr|| q|\}}}}|t||||d q|S )N)rA   )r   rh   r   r   )r   a_listr   framer[   r\   r]   rA   r    r    r!   r     s   
zStackSummary.from_listc           
      C   sf  	 g }d }d }d }d}| D ]}|d u s*||j ks*|d u s*||jks*|d u s*||jkrO|tkrD|t8 }|d| d|dkr>dnd d |j }|j}|j}d}|d7 }|tkrXqg }|d|j |j|j |jru|d	|j  |jrt	|j
 D ]\}}	|d
j||	d q|d| q|tkr|t8 }|d| d|dkrdnd d |S )Nr   z  [Previous line repeated z
 more time   sr   z]
z  File "{}", line {}, in {}
    {}
z    {name} = {value}
)r]   r9   )r[   r\   r]   _RECURSIVE_CUTOFFr   r   rA   rw   r_   sortedrf   rL   )
r.   r   	last_file	last_line	last_namecountr   rowr]   r9   r    r    r!   r     sT   zStackSummary.format)r1   r2   r3   classmethodr*   r   r   r    r    r    r!   r   O  s    /
r   c                   @   sf   e Zd Z	 d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&   r~   r   r<   _seenc             	   C   s  |d u}	|d u rt  }|t| tjt||||d| _|| _t|| _	|r]t
|tr]|j| _|j}
|
d ur<t|
nd | _|j}|d urJt|nd | _|j| _|j| _|j| _|j| _|rc|   |d urj|jnd| _|	s| |fg}|r| \}}|r|jd urt|j|vrtt|j|j|jj||||d}nd }|r|d u o|d uo|j }nd}|r|jd ur|rt|j|vrtt|j|j|jj||||d}nd }||_||_|r||j|jf |r||j|jf |svd S d S d S )Nr}   F)r&   r~   r   r   T)r   r   idr   r*   r   rU   exc_typerC   _str
issubclassSyntaxErrorr[   r\   rG   
end_linenotextoffset
end_offsetmsg_load_lines__suppress_context__pop	__cause__r   r?   r7   __context__r   )r.   r   	exc_valueexc_tracebackr&   r~   r   r<   r   is_recursive_calllnoend_lnoqueuer@   ecauseneed_contextcontextr    r    r!   rg     s   


		zTracebackException.__init__c                 O   s"   	 | t |||jg|R i |S r#   )r?   r7   )clsr8   argskwargsr    r    r!   from_exception9  s    z!TracebackException.from_exceptionc                 C   s   	 | j D ]}|j qd S r#   )rU   rA   )r.   r   r    r    r!   r   >  s   
zTracebackException._load_linesc                 C   s   t |tr| j|jkS tS r#   )rh   r   __dict__rj   rk   r    r    r!   rm   C  s   
zTracebackException.__eq__c                 C   s   | j S r#   )r   r-   r    r    r!   __str__H  s   zTracebackException.__str__c                 c   s    	 | j d u rtd | jV  d S | j j}| j j}|dvr)t|ts#d}|d | }t| j ts8t|| jV  d S | 	|E d H  d S )N)__main__builtinsz	<unknown>.)
r   rF   r   r3   r2   rh   rG   r   r   _format_syntax_error)r.   stypesmodr    r    r!   r   K  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d ur| j}| jdvrO| jn|}||ksY|d	kr]|d
 }|d
 | }	|d
 | }
|	dkrdd |d |	 D }dd	|d|
|	  d V  | j
pd}d|||V  d S )Nr   z  File "{}", line {}
z<string>z ({})
z 
r   >   Nr   r   r   c                 s   s     | ]}|  r
|nd V  qdS ) N)isspace)rb   cr    r    r!   	<genexpr>  s    z:TracebackException._format_syntax_error.<locals>.<genexpr>z    {}{}^z<no detail available>z	{}: {}{}
)r\   r   r[   r   rstriplstriplenr   r   rL   r   )r.   r   filename_suffixr   rtextltextspacesr   r   colno	end_colno
caretspacer   r    r    r!   r   h  s6   




 
z'TracebackException._format_syntax_errorr=   c                c   s    	 g }| }|r<|r1|j d urt}|j }n|jd ur#|js#t}|j}nd }d }|||f |}n	|d |f d }|st|D ] \}}|d urK|V  |jrYdV  |j E d H  |	 E d H  q@d S )Nz#Traceback (most recent call last):
)
r   _cause_messager   r   _context_messager   reversedrU   r   r   )r.   r>   outputr8   chained_msgchained_excr   r    r    r!   r     s:   

zTracebackException.format)r1   r2   r3   rg   r   r   r   rm   r   r   r   r   r    r    r    r!   r     s    P
$r   r#   r4   )NNT)NT)NNN)"r   r   ru   r   __all__r"   r   r   r   r   r   r   r+   r5   r:   r   r   r   rF   rC   r	   r
   r   r   r   r   r   r   r   r   r   rB   r   r   r    r    r    r!   <module>   sP    












Bz