U
    3þjg—
  ã                   @   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   úG/tmp/pip-unpacked-wheel-ttp2cnii/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ˆr„d|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   Ztyping_extensionsr   Ztorch.distributed.c10d_loggerZ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$    
 ÿ þ