U
    .e                     @   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-39f38r4u/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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__N)r$   r%   r&   r   r4   r    r   r   r   r   r(   "   s   r(   c                   @   s   e Zd Z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>@   s     z$_Object.__init__.<locals>.<listcomp>)items)r   kwr   r#   r   r    ?   s    z_Object.__init__Nr$   r%   r&   r    r   r   r   r   r:   =   s   r:   c                   @   s   e Zd Z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_filenor5   r   )	tb_linenor:   tb_frametb_nexttb_lastir#   r   r   r   r    E   s    z_Truncated.__init__NrB   r   r   r   r   rC   C   s   rC   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   )FramerG   rF   rI   rH   r   rC   )r   tbZ
max_framesdepthr   r   r   r    V   s    
zTraceback.__init__N)r$   r%   r&   r(   rK   DEFAULT_MAX_FRAMESr    r   r   r   r   r   S   s   c                   @   s   e Zd Zdd Zdd ZdS )RemoteTracebackc                 C   s
   || _ d S r!   rL   )r   rL   r   r   r   r    c   s    zRemoteTraceback.__init__c                 C   s   | j S r!   rP   r#   r   r   r   __str__f   s    zRemoteTraceback.__str__N)r$   r%   r&   r    rQ   r   r   r   r   rO   b   s   rO   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""")excrL   superr    )r   rS   rL   	__class__r   r   r    k   s    
zExceptionWithTraceback.__init__c                 C   s   | j S r!   rP   r#   r   r   r   rQ   p   s    zExceptionWithTraceback.__str__c                 C   s   t | j| jffS r!   )rebuild_excrS   rL   r#   r   r   r   
__reduce__s   s    z!ExceptionWithTraceback.__reduce__)r$   r%   r&   r    rQ   rX   __classcell__r   r   rU   r   rR   j   s   rR   c                 C   s   t || _| S r!   )rO   	__cause__)rS   rL   r   r   r   rW   w   s    
rW   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 )NrE   )r   exc_infotyper   rL   join	tracebackformat_exceptioninternalrR   	exception)r   r[   r`   ra   rL   r   r   r   r       s    

zExceptionInfo.__init__c                 C   s   | j S r!   )r^   r#   r   r   r   rQ      s    zExceptionInfo.__str__c                 C   s   d| j j| jf S )Nz<%s: %r>)rV   r$   ra   r#   r   r   r   __repr__   s    zExceptionInfo.__repr__c                 C   s   | j | j| jfS r!   )r\   ra   rL   r#   r   r   r   r[      s    zExceptionInfo.exc_info)NF)r$   r%   r&   __doc__r\   ra   rL   r^   r`   r    rQ   rb   r'   r[   r   r   r   r   r   |   s   
)r   r^   __all__getrecursionlimitrN   r   r(   r:   rC   r   	ExceptionrO   rR   rW   r   r   r   r   r   <module>   s   