U
    bh                     @   s   d dl Z d dlZddgZe  d ZG dd dZG dd dZG d	d
 d
ZG dd dZG dd dZ	G dd de
ZG dd de
Zdd ZG dd dZdS )    NExceptionInfo	Traceback   c                   @   s*   e Zd Zdd Zejdkr&edd ZdS )_Codec                 C   sz   |j | _ |j| _|j| _d| _|j| _|j| _d| _d| _d| _|j	| _	|j
| _
|j| _d| _tjdkrvt| | _d S )N           )co_filenameco_nameco_argcountco_cellvarsco_firstlinenoco_flagsco_freevarsco_code	co_lnotabco_names
co_nlocalsco_stacksizeco_varnamessysversion_infolistco_positions_co_positions)selfcoder   r   2/tmp/pip-unpacked-wheel-5abm461f/billiard/einfo.py__init__   s    
z_Code.__init__r   c                 C   s   | j jS N)r   __iter__r   r   r   r   r      s    z_Code.co_positionsN__name__
__module____qualname__r    r   r   propertyr   r   r   r   r   r   	   s   
r   c                   @   s.   e Zd ZeZdd Zejdkr*edd Z	dS )_Framec                 C   s   i | _ |jdd|jdd d| _i  | _}z|jd |d< W n tk
rV   Y nX d | _d | _d | _d | _d | _	| 
|j| _|j| _|j| _d| _d S )N__file____main__r%   r*   r%   
__loader__Z__traceback_hide__F)
f_builtins	f_globalsgetf_localsKeyErrorf_backf_traceZf_exc_tracebackZ
f_exc_typeZf_exc_valueCodef_codef_linenof_lastiZf_restricted)r   frameflr   r   r   r    %   s&    

z_Frame.__init__r   c                 C   s   | j jS r!   )r6   r   r#   r   r   r   r   =   s    z_Frame.co_positionsN)
r%   r&   r'   r   r5   r    r   r   r(   r   r   r   r   r   r)   "   s
   
r)   c                   @   s<   e Zd Zdd Zejdkr8dZedd Zej	dd ZdS )	_Objectc                    s    fdd|  D  d S )Nc                    s   g | ]\}}t  ||qS r   )setattr).0kvr#   r   r   
<listcomp>E   s     z$_Object.__init__.<locals>.<listcomp>)items)r   kwr   r#   r   r    D   s    z_Object.__init__r   ))NNNNc                 C   s   t | d| jjS )Nr   )getattr__default_co_positions__r"   r#   r   r   r   r   J   s
    z_Object.co_positionsc                 C   s
   || _ d S r!   )r   )r   valuer   r   r   r   R   s    N)
r%   r&   r'   r    r   r   rD   r(   r   setterr   r   r   r   r;   B   s   

r;   c                   @   s*   e Zd Zdd Zejdkr&edd ZdS )
_Truncatedc                 C   s6   d| _ tddd dd tdddd| _d | _d| _d S )	N r,   z...z[rest of traceback truncated])r   r   )r/   Zf_filenor6   r   )	tb_linenor;   tb_frametb_nexttb_lastir#   r   r   r   r    Y   s    z_Truncated.__init__r   c                 C   s   | j jS r!   )rK   r   r#   r   r   r   r   g   s    z_Truncated.co_positionsNr$   r   r   r   r   rG   W   s   
rG   c                   @   s   e Zd ZeZedfddZdS )r   r   c                 C   sX   |  |j| _|j| _|j| _d | _|jd k	rT||krLt|j||d | _nt | _d S )N   )FramerK   rJ   rM   rL   r   rG   )r   tbZ
max_framesdepthr   r   r   r    o   s    
zTraceback.__init__N)r%   r&   r'   r)   rO   DEFAULT_MAX_FRAMESr    r   r   r   r   r   l   s   c                   @   s   e Zd Zdd Zdd ZdS )RemoteTracebackc                 C   s
   || _ d S r!   rP   )r   rP   r   r   r   r    |   s    zRemoteTraceback.__init__c                 C   s   | j S r!   rT   r#   r   r   r   __str__   s    zRemoteTraceback.__str__N)r%   r&   r'   r    rU   r   r   r   r   rS   {   s   rS   c                       s,   e Zd Z fddZdd Zdd Z  ZS )ExceptionWithTracebackc                    s   || _ d| | _t   d S )Nz

"""
%s""")excrP   superr    )r   rW   rP   	__class__r   r   r       s    
zExceptionWithTraceback.__init__c                 C   s   | j S r!   rT   r#   r   r   r   rU      s    zExceptionWithTraceback.__str__c                 C   s   t | j| jffS r!   )rebuild_excrW   rP   r#   r   r   r   
__reduce__   s    z!ExceptionWithTraceback.__reduce__)r%   r&   r'   r    rU   r\   __classcell__r   r   rY   r   rV      s   rV   c                 C   s   t || _| S r!   )rS   	__cause__)rW   rP   r   r   r   r[      s    
r[   c                   @   sJ   e Zd ZdZdZdZdZdZdZdddZ	dd Z
dd	 Zed
d ZdS )r   zException wrapping an exception and its traceback.

    :param exc_info: The exception info tuple as returned by
        :func:`sys.exc_info`.

    NFc                 C   sX   |p
t  \| _}}z,t|| _dt| j||| _|| _W 5 ~X t	|| j| _
d S )NrI   )r   exc_infotyper   rP   join	tracebackformat_exceptioninternalrV   	exception)r   r_   rd   re   rP   r   r   r   r       s    

zExceptionInfo.__init__c                 C   s   | j S r!   )rb   r#   r   r   r   rU      s    zExceptionInfo.__str__c                 C   s   d| j j| jf S )Nz<%s: %r>)rZ   r%   re   r#   r   r   r   __repr__   s    zExceptionInfo.__repr__c                 C   s   | j | j| jfS r!   )r`   re   rP   r#   r   r   r   r_      s    zExceptionInfo.exc_info)NF)r%   r&   r'   __doc__r`   re   rP   rb   rd   r    rU   rf   r(   r_   r   r   r   r   r      s   
)r   rb   __all__getrecursionlimitrR   r   r)   r;   rG   r   	ExceptionrS   rV   r[   r   r   r   r   r   <module>   s    