B
    18\[                 @   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   M/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/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(   Z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   r/   )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   r1   
last_valueZ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   r5   r6   r   r   )r7   r"   r   r   r    r      s    
c             C   s0   | d krt  j} tjt| |d}|  |S )N)r"   )r   r5   r6   r   r$   r   reverse)r7   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_linerB   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>   r?   r@   rA   r)   itemsrB   )selfr>   r?   r@   rC   rB   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>   r?   r@   rB   tupler)   NotImplemented)rJ   otherr   r   r    __eq__  s    

zFrameSummary.__eq__c             C   s   | j | j| j| jf| S )N)r>   r?   r@   r)   )rJ   posr   r   r    __getitem__  s    zFrameSummary.__getitem__c             C   s   t | j| j| j| jgS )N)iterr>   r?   r@   r)   )rJ   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>   r?   r@   )r   r>   r?   r@   )rJ   r   r   r    __repr__  s    zFrameSummary.__repr__c             C   s&   | j d kr t| j| j | _ | j S )N)rA   	linecachegetliner>   r?   strip)rJ   r   r   r    r)     s    
zFrameSummary.line)r.   
__module____qualname__	__slots__rK   rP   rR   rT   rU   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   r5   r6   f_lineno)r7   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 )NZtracebacklimitr   )maxlenF)rC   rB   )getattrr   	itertoolsislicecollectionsdequesetf_codeco_filenameco_nameaddrV   Z	lazycache	f_globalsf_localsappendr   Z
checkcacher)   )klassZ	frame_genr"   r`   ra   resultZfnamesr7   r?   cor>   r@   rn   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   rL   r   ro   )rp   Za_listrq   framer>   r?   r@   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}
)r@   r(   )r>   r?   r@   _RECURSIVE_CUTOFFro   r   r)   rX   rB   sortedrI   r0   )
rJ   rq   Z	last_fileZ	last_lineZ	last_namecountrs   Zrowr@   r(   r   r   r    r     sD     
"zStackSummary.format)r.   rY   rZ   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"   r`   ra   _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"   r`   ra   rz   )r"   r`   ra   )rh   rl   id	__cause__r   r&   __traceback____context__exc_traceback__suppress_context__r   r$   r   r9   exc_typer+   _str
issubclassSyntaxErrorr>   r-   r?   textoffsetmsg_load_lines)
rJ   r   	exc_valuer   r"   r`   ra   rz   ZcauseZcontextr   r   r    rK     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)r9   r)   r~   r   r|   )rJ   rs   r   r   r    r     s    

zTracebackException._load_linesc             C   s   | j |j kS )N)__dict__)rJ   rO   r   r   r    rP     s    zTracebackException.__eq__c             C   s   | j S )N)r   )rJ   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    {}

rt   c             s   s   | ]}|  r|pd V  qdS ) N)isspace)rE   cr   r   r    	<genexpr>G  s    z;TracebackException.format_exception_only.<locals>.<genexpr>z    {}^
r   z<no detail available>z{}: {}
)r   r,   r   rZ   rY   r   r   r>   r-   r?   r   r   r   rX   rstripminlenlstripr0   r   )	rJ   ZstypeZsmodr>   r?   Zbadliner   Z
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   r9   r   )rJ   r%   r   r   r    r   L  s    


zTracebackException.format)r.   rY   rZ   rK   ry   r   r   rP   r   r   r   r   r   r   r    r     s   9	-)N)NN)N)N)NNT)NT)NNT)NT)NNT)NNN)NN)NN)rf   rd   rV   r   __all__r!   r   r   r   r   r   r   r   r   r   r,   r+   r	   r
   r   r   r   r   r   r   r   r   rv   r*   r   r   r   r   r   r    <module>   sD   



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