U
    3jg                     @   s"  d dl Z d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlZd dlmZ dddd	d
ddgZeG dd dZG dd deZeG dd dZeG dd dZeG dd dZeeef Zeeeeef f ZeG dd dZeG dd	 d	ZeddG dd
 d
ZdS )    N)	dataclassfield)Enum)AnyDictListOptionalSequenceUnion)	StatefulTChunkStorageMetadataTensorStorageMetadataBytesStorageMetadataMetadataMetadataIndexTensorPropertiesStorageMetac                   @   s&   e Zd ZU dZejed< ejed< dS )r   zo
    Each chunk is expected to have the same properties of the TensorStorageMetadata
    that includes it.
    offsetsZsizesN)__name__
__module____qualname____doc__torchSize__annotations__ r   r   I/tmp/pip-unpacked-wheel-ttp2cnii/torch/distributed/checkpoint/metadata.pyr      s   

c                   @   s   e Zd ZdZdZdZdZdS )_MEM_FORMAT_ENCODINGz'Describe the memory format of a tensor.r         N)r   r   r   r   TORCH_CONTIGUOUS_FORMATTORCH_CHANNELS_LASTTORCH_PRESERVE_FORMATr   r   r   r   r       s   r   c                   @   s   e Zd ZU dZeejdZejed< eej	dZ
ej
ed< dZeed< eejdZejed< dZeed	< d
d Zdd Zeejd dddZdS )r   z)Properties used to create :class:`Tensor`)default_factorydtype)defaultlayoutFrequires_gradmemory_format
pin_memoryc                 C   s`   | j }|tjkrtj}n2|tjkr*tj}n |tjkr<tj}nt	d| | j
| j| j|| jfS )NzInvalid torch.memory_format: )r(   r   contiguous_formatr   r    channels_lastr!   preserve_formatr"   RuntimeErrorr$   r&   r'   r)   )selfr(   mem_format_encodingr   r   r   __getstate__7   s    


zTensorProperties.__getstate__c                 C   sd   |\| _ | _| _}| _|tjkr(tj}n2|tjkr:tj	}n |tj
krLtj}ntd| || _d S )Nz&Invalid torch.memory_format encoding: )r$   r&   r'   r)   r   r    r   r*   r!   r+   r"   r,   r-   r(   )r.   stater/   r(   r   r   r   __setstate__K   s"    



zTensorProperties.__setstate__)tensorreturnc                 C   s   t | j| j| jtj|  dS )N)r$   r&   r'   r(   r)   )r   r$   r&   r'   r   r*   	is_pinned)r3   r   r   r   create_from_tensord   s    z#TensorProperties.create_from_tensorN)r   r   r   r   r   r   Zget_default_dtyper$   r   Zstridedr&   r'   boolr*   r(   r)   r0   r2   staticmethodZTensorr6   r   r   r   r   r   (   s   
c                   @   s,   e Zd ZU eed< ejed< ee ed< dS )r   Z
propertiessizechunksN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   o   s   

c                   @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   v   s   c                   @   sF   e Zd ZU dZeeejdf ed< dZ	e
e ed< dZe
e ed< dS )r   Ncheckpoint_idsave_idload_id)r   r   r   r;   r
   strosPathLiker   r<   r   r=   r   r   r   r   r      s   
c                   @   sJ   e Zd ZU dZeeef ed< dZe	ed< dZ
e	ed< dZee ed< dS )r   z5This class represents the metadata of the checkpoint.Zstate_dict_metadataNplanner_datastorage_datastorage_meta)r   r   r   r   r   r>   STORAGE_TYPESr   rA   r   rB   rC   r   r   r   r   r   r   r      s
   
T)frozenc                   @   sf   e Zd ZU dZeed< dZeej	 ed< e
ddddZee ed< deeee  ee dd	d
ZdS )r   zIThis class represents a lookup key for items in a state dict or Metadata.fqnNoffsetF)hashcomparer%   index)rF   rG   rJ   c                 C   s<   t | d| t | d| |d k	r8t | dt| d S )NrF   rJ   rG   )object__setattr__r   r   )r.   rF   rG   rJ   r   r   r   __init__   s    zMetadataIndex.__init__)NN)r   r   r   r   r>   r   rG   r   r   r   r   rJ   intr	   rM   r   r   r   r   r      s   
  
)r?   Zdataclassesr   r   enumr   typingr   r   r   r   r	   r
   r   Z%torch.distributed.checkpoint.statefulr   __all__r   r   r   r   r   rD   r>   ZSTATE_DICT_TYPEr   r   r   r   r   r   r   <module>   s<    
F