U
    yh
                     @   s   U d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	 d dl
m  mZ d dlmZ g Zee ed< eeaedZe	dZeeef dd	d
Zeeef dddZdeeeeeef geeef f dddZdS )    N)AnyCallableDictListTypeVar)	ParamSpec)DCP_LOGGER_NAME__all___T_P)returnc                  O   s`   i }| dd}| dd}| dd}|sD|p2| }rDt|dd}|dk	rTt|n||d< |S )z0
    Extracts log data from dcp method args
    storage_writerNstorage_readercheckpoint_id)getgetattrstr)argskwargsmsg_dictr   r   r   
serializer r   U/var/www/html/venv/lib/python3.8/site-packages/torch/distributed/checkpoint/logger.py_msg_dict_from_dcp_method_args   s    r   c                 O   s"   t ||}|tj| f| |S )N)r   updatec10d_logger_get_msg_dict)	func_namer   r   r   r   r   r   r   '   s    
r   F)log_exceptionswrapper_kwargsr   c                    s    t ttf d fdd}|S )zKThis method decorator logs the start, end, and exception of wrapped events.funcc                    s,   t  tjtjtd fdd}|S )N)r   r   r   c               
      s   t  jf| |}d|d< t }||d< t| z | |}W nP tk
r } z2rd|d< | |d< t |d< t|  W 5 d }~X Y nX d|d< t }t |d< || |d< t| |S )Nstarteventtime	exceptionerrorendZtimes_spent)r   __name__r$   time_ns_dcp_loggerdebug	Exceptionr&   )r   r   r   t0resultr&   t1)r!   r   r   r   r   wrapper4   s4    



z6_dcp_method_logger.<locals>.decorator.<locals>.wrapper)	functoolswrapsr   r   r   r
   )r!   r0   r   r   r    r   	decorator3   s     z%_dcp_method_logger.<locals>.decorator)r   r   r
   )r   r   r4   r   r3   r   _dcp_method_logger.   s    #r5   )F)r1   r$   typingr   r   r   r   r   typing_extensionsr   Ztorch.distributed.c10d_loggerdistributedr   Z-torch.distributed.checkpoint.logging_handlersr   r	   r   __annotations__Z_get_or_create_loggerr*   r
   r   r   r   boolr5   r   r   r   r   <module>   s$    
  