U
    *-e                     @   sd   d dl mZmZmZ d dlZeeejf ZdgZ	eedddZ
eeddd	ZG d
d deZdS )    )DictTupleAnyNCheckpointException)excreturnc                 C   s   | t | jfS N)tb
extract_tb__traceback__)r    r   a/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/torch/distributed/checkpoint/api.py_wrap_exception	   s    r   )objr   c                 C   s<   t | tsdS t| dkrdS t | d to:t | d tjS )NF   r      )
isinstancetuplelenBaseExceptionr	   StackSummary)r   r   r   r   _is_wrapped_exception   s    
 r   c                       sR   e Zd ZdZeeeef d fddZe	eeef dddZ
dd	 Z  ZS )
r   zX
    Exception raised if failure was detected as part of a checkpoint load or save.
    )msgfailuresc                    s   t  || || _d S r   )super__init__	_failures)selfr   r   	__class__r   r   r      s    zCheckpointException.__init__)r   c                 C   s   | j S )z
        Returns:
            Dict of failed nodes and their associated exception.
              Keys are node ranks and values are exceptions
        )r   )r   r   r   r   r       s    zCheckpointException.failuresc                 C   sz   d| j   d}| j  D ]X\}}|\}}|d| d7 }|d k	rX|dt|7 }|dtjt||d7 }q|S )NzCheckpointException ranks:
z)Traceback (most recent call last): (RANK z)
 )value)r   keysitemsjoinr	   format_listformat_exception_onlytype)r   strZrankZexc_pairr   tracer   r   r   __str__)   s    zCheckpointException.__str__)__name__
__module____qualname____doc__r)   r   intWRAPPED_EXCEPTIONr   propertyr   r+   __classcell__r   r   r   r   r      s
   )typingr   r   r   	tracebackr	   r   r   r1   __all__r   boolr   r   r   r   r   r   <module>   s   
