o
    ei                     @   s  d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	m
Z
 d dlZd dlmZ g d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	B 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)Sequence)	dataclassfield)Enum)Any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.
    offsetssizesN)__name__
__module____qualname____doc__torchSize__annotations__ r   r   o/var/www/addictedbytheproject.nl/epg/venv/lib/python3.10/site-packages/torch/distributed/checkpoint/metadata.pyr	      s   
 
r	   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dejdd f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}n|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__9   s   


zTensorProperties.__getstate__c                 C   sd   |\| _ | _| _}| _|tjkrtj}n|tjkrtj	}n|tj
kr&t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__M   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)r2   r   r   r   create_from_tensorf   s   z#TensorProperties.create_from_tensorN)r   r   r   r   r   r   get_default_dtyper#   r   stridedr%   r&   boolr)   r'   r(   r/   r1   staticmethodTensorr5   r   r   r   r   r   *   s   
 r   c                   @   s,   e Zd ZU eed< ejed< ee ed< dS )r
   
propertiessizechunksN)	r   r   r   r   r   r   r   listr	   r   r   r   r   r
   q   s   
 
r
   c                   @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   x   s    r   c                   @   sZ   e Zd ZU dZeejB dB ed< dZedB ed< dZ	edB ed< e
edZee ed< dS )r   Ncheckpoint_idsave_idload_idr!   modules)r   r   r   r?   strosPathLiker   r@   rA   r   r>   rB   r   r   r   r   r      s
   
 r   c                   @   sZ   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dB ed< dZedB ed< dS )r   z5This class represents the metadata of the checkpoint.state_dict_metadataNplanner_datastorage_datastorage_metaversion)r   r   r   r   dictrC   STORAGE_TYPESr   rG   r   rH   rI   r   rJ   r   r   r   r   r      s   
 r   T)frozenc                   @   st   e Zd ZU dZeed< 	 dZejdB ed< 	 e	ddddZ
edB ed< 	 		d
dedee dB dedB fdd	ZdS )r   zIThis class represents a lookup key for items in a state dict or Metadata.fqnNoffsetF)hashcomparer$   indexc                 C   s@   t | d| t | d| |d urt | dt| d S d S )NrN   rR   rO   )object__setattr__r   r   )r-   rN   rO   rR   r   r   r   __init__   s
   zMetadataIndex.__init__)NN)r   r   r   r   rC   r   rO   r   r   r   rR   intr   rU   r   r   r   r   r      s"   
 
r   )rD   collections.abcr   dataclassesr   r   enumr   typingr   r   r   %torch.distributed.checkpoint.statefulr   __all__r	   r   r   r
   r   rL   rK   rC   STATE_DICT_TYPEr   r   r   r   r   r   r   <module>   s2   
F