B
    u9a[                 @   s6  d dl Z d dlZd dlZd dlZdddddddd	d
ddddddddddgZd2ddZdd Zd3ddZd4ddZd5ddZ	dZ
dZd6ddZd7ddZd d Zd!d" Zd#d$ Zd8d%d	Zd9d&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 d0d deZG d1d d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   s8   |d krt j}x$t|  D ]}t||dd qW d S )N )fileend)sysstderrr   	from_listformatprint)extracted_listr   item r   /usr/lib/python3.7/traceback.py
print_list   s    r!   c             C   s   t |  S )N)r   r   r   )r   r   r   r    r      s    c             C   s   t t| |d|d d S )N)limit)r   )r!   r   )tbr"   r   r   r   r    r   -   s    c             C   s   t | |d S )N)r"   )r   r   )r#   r"   r   r   r    r   7   s    c             C   s   t jt| |dS )N)r"   )r   extractr   )r#   r"   r   r   r    r   ;   s    zG
The above exception was the direct cause of the following exception:

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

Tc             C   sF   |d krt j}x2tt||||dj|dD ]}t||dd q,W d S )N)r"   )chainr   )r   r   )r   r   r   typer   r   )etypevaluer#   r"   r   r%   liner   r   r    r   W   s
    c             C   s    t tt||||dj|dS )N)r"   )r%   )listr   r&   r   )r'   r(   r#   r"   r%   r   r   r    r   l   s    c             C   s   t t| |d  S )N)r*   r   r   )r'   r(   r   r   r    r   |   s    c             C   s.   t |}|d ks|sd|  }nd| |f }|S )Nz%s
z%s: %s
)	_some_str)r'   r(   valuestrr)   r   r   r    _format_final_exc_line   s
    
r-   c             C   s"   yt | S    dt| j S d S )Nz<unprintable %s object>)strr&   __name__)r(   r   r   r    r+      s    r+   c             C   s   t t | ||d d S )N)r"   r   r%   )r   r   exc_info)r"   r   r%   r   r   r    r	      s    c             C   s   d tt | |dS )Nr   )r"   r%   )joinr   r   r0   )r"   r%   r   r   r    r
      s    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   r2   
last_valuelast_traceback)r"   r   r%   r   r   r    r      s    
c             C   s*   | d krt  j} tt| |d|d d S )N)r"   )r   )r   	_getframef_backr!   r   )fr"   r   r   r   r    r      s    
c             C   s"   | d krt  j} tt| |dS )N)r"   )r   r7   r8   r   r   )r9   r"   r   r   r    r      s    
c             C   s0   | d krt  j} tjt| |d}|  |S )N)r"   )r   r7   r8   r   r$   r   reverse)r9   r"   stackr   r   r    r      s
    	
c             C   s<   x6| d k	r6y| j   W n tk
r,   Y nX | j} qW d S )N)tb_frameclearRuntimeErrortb_next)r#   r   r   r    r      s    
c               @   sN   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e	dd Z
dS )r   )filenamelinenoname_linelocalsTN)lookup_linerD   r)   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>  s    z)FrameSummary.__init__.<locals>.<dictcomp>)r@   rA   rB   rC   r)   itemsrD   )selfr@   rA   rB   rE   rD   r)   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 )N)	
isinstancer   r@   rA   rB   rD   tupler)   NotImplemented)rL   otherr   r   r    __eq__  s    

zFrameSummary.__eq__c             C   s   | j | j| j| jf| S )N)r@   rA   rB   r)   )rL   posr   r   r    __getitem__  s    zFrameSummary.__getitem__c             C   s   t | j| j| j| jgS )N)iterr@   rA   rB   r)   )rL   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}>)r@   rA   rB   )r   r@   rA   rB   )rL   r   r   r    __repr__  s    zFrameSummary.__repr__c             C   s&   | j d kr t| j| j | _ | j S )N)rC   	linecachegetliner@   rA   strip)rL   r   r   r    r)     s    
zFrameSummary.line)r/   
__module____qualname__	__slots__rM   rR   rT   rV   rW   propertyr)   r   r   r   r    r      s   
c             c   s8   | d krt  jj} x| d k	r2| | jfV  | j} qW d S )N)r   r7   r8   f_lineno)r9   r   r   r    r   !  s
    
c             c   s&   x | d k	r | j | jfV  | j} qW d S )N)r<   	tb_linenor?   )r#   r   r   r    r   .  s    
   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 kr(t tdd }|d k	r(|dk r(d}|d k	rV|dkrFt||}ntj|| d}|  }t }xb|D ]Z\}}|j}	|	j}
|	j	}|
|
 t|
|j |r|j}nd }|t|
||d|d qhW x|D ]}
t|
 qW |rx|D ]
}|j qW |S )Ntracebacklimitr   )maxlenF)rE   rD   )getattrr   	itertoolsislicecollectionsdequesetf_codeco_filenameco_nameaddrX   	lazycache	f_globalsf_localsappendr   
checkcacher)   )klass	frame_genr"   rb   rc   resultfnamesr9   rA   cor@   rB   rr   r   r   r    r$   >  s6    



zStackSummary.extractc          	   C   sP   t  }xD|D ]<}t|tr&|| q|\}}}}|t||||d qW |S )N)r)   )r   rN   r   rs   )ru   a_listrw   framer@   rA   rB   r)   r   r   r    r   n  s    


zStackSummary.from_listc       
      C   sx  g }d }d }d }d}x$| D ]}|d ksX||j ksX|d ksX||jksX|d ksX||jkr|tkr|t8 }|d| d|dkrdnd d |j }|j}|j}d}|d7 }|tkrqg }|d|j |j|j |jr|d	|j  |jr(x0t	|j
 D ]\}}	|d
j||	d qW |d| qW |tkrt|t8 }|d| d|dkrhdnd d |S )Nr   z  [Previous line repeated z
 more time   sr   z]
z  File "{}", line {}, in {}
z    {}
z    {name} = {value}
)rB   r(   )r@   rA   rB   _RECURSIVE_CUTOFFrs   r   r)   rZ   rD   sortedrK   r1   )
rL   rw   	last_file	last_line	last_namecountr{   rowrB   r(   r   r   r    r     sD     
"zStackSummary.format)r/   r[   r\   classmethodr$   r   r   r   r   r   r    r   ;  s
   .c               @   sZ   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ddZ
dS )r   NTF)r"   rb   rc   _seenc      
   	   C   s>  |d krt  }|t| |r\|jd k	r\t|j|kr\tt|j|j|jj|d||d}nd }|r|jd k	rt|j|krtt|j|j|jj|d||d}	nd }	|| _|| _|	| _|r|j	nd| _	t
jt||||d| _|| _t|| _|r,t|tr,|j| _t|j| _|j| _|j| _|j| _|r:|   d S )NF)r"   rb   rc   r   )r"   rb   rc   )rk   ro   id	__cause__r   r&   __traceback____context__exc_traceback__suppress_context__r   r$   r   r;   exc_typer+   _str
issubclassSyntaxErrorr@   r.   rA   textoffsetmsg_load_lines)
rL   r   	exc_valuer   r"   rb   rc   r   causecontextr   r   r    rM     sT    




zTracebackException.__init__c             O   s   | t |||jf||S )N)r&   r   )clsexcargskwargsr   r   r    from_exception  s    z!TracebackException.from_exceptionc             C   s:   x| j D ]
}|j qW | jr&| j  | jr6| j  d S )N)r;   r)   r   r   r   )rL   r{   r   r   r    r     s    

zTracebackException._load_linesc             C   s   | j |j kS )N)__dict__)rL   rQ   r   r   r    rR     s    zTracebackException.__eq__c             C   s   | j S )N)r   )rL   r   r   r    __str__  s    zTracebackException.__str__c       	      c   s  | j d krtd | jV  d S | j j}| j j}|dkr@|d | }t| j ts^t|| jV  d S | jpfd}t| j	ptd}d
||V  | j}| j}|d k	rd
| V  |d k	r|d}tt||d }|d |  }d	d
 |D }d
d|V  | jpd}d
||V  d S )N)__main__builtins.z<string>?z  File "{}", line {}
z    {}

r|   c             s   s   | ]}|  r|pd V  qdS ) N)isspace)rG   cr   r   r    	<genexpr>G  s    z;TracebackException.format_exception_only.<locals>.<genexpr>z    {}^
r   z<no detail available>z{}: {}
)r   r-   r   r\   r[   r   r   r@   r.   rA   r   r   r   rZ   rstripminlenlstripr1   r   )	rL   stypesmodr@   rA   badliner   
caretspacer   r   r   r    r     s2    


z(TracebackException.format_exception_only)r%   c            c   s   |rT| j d k	r*| j j|dE d H  tV  n*| jd k	rT| jsT| jj|dE d H  tV  | jd k	rddV  | j E d H  |  E d H  d S )N)r%   z#Traceback (most recent call last):
)	r   r   _cause_messager   r   _context_messager   r;   r   )rL   r%   r   r   r    r   L  s    


zTracebackException.format)r/   r[   r\   rM   r   r   r   rR   r   r   r   r   r   r   r    r     s   9	-)N)NN)N)N)NNT)NT)NNT)NT)NNT)NNN)NN)NN)ri   rg   rX   r   __all__r!   r   r   r   r   r   r   r   r   r   r-   r+   r	   r
   r   r   r   r   r   r   r   r   r~   r*   r   r   r   r   r   r    <module>   sD   












>z