
    9j                     p   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	 d dl
Z
d dlmZ g dZe G d d	             Z G d
 de      Ze G d d             Ze G d d             Ze G d d             Zeez  Zeeee	z  f   Ze G d d             Ze G d d             Z ed       G d d             Zy)    N)Sequence)	dataclassfield)Enum)Any)	StatefulT)ChunkStorageMetadataTensorStorageMetadataBytesStorageMetadataMetadataMetadataIndexTensorPropertiesStorageMetac                   N    e Zd ZU dZej
                  ed<   ej
                  ed<   y)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__     e/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/distributed/checkpoint/metadata.pyr	   r	      s    
 ZZ::r   r	   c                       e Zd ZdZdZdZdZy)_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    1r   r   c                   4   e Zd ZU dZ eej                        Zej                  ed<    eej                        Z
ej                  ed<   dZeed<    eej                        Zej                  ed<   dZeed	<   d
 Zd Zedej&                  dd fd       Zy)r   z)Properties used to create :class:`Tensor`default_factorydtype)defaultlayoutFrequires_gradmemory_format
pin_memoryc                 l   | j                   }|t        j                  k(  rt        j                  }nV|t        j
                  k(  rt        j                  }n2|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_encodings      r   __getstate__zTensorProperties.__getstate__9   s    **E333"6"N"Ne111"6"J"Je333"6"L"L!>}oNOO JJKKOO
 	
r   c                 X   |\  | _         | _        | _        }| _        |t        j
                  k(  rt        j                  }|| _        y |t        j                  k(  rt        j                  }|| _        y |t        j                  k(  rt        j                  }|| _        y t        d|       )Nz&Invalid torch.memory_format encoding: )r'   r)   r*   r,   r   r!   r   r.   r"   r/   r#   r0   r1   r+   )r2   stater3   r+   s       r   __setstate__zTensorProperties.__setstate__M   s     	
JKO "6"N"NN!33M + !$8$L$LL!//M + !$8$N$NN!11M +	 89L8MN r   tensorreturnc                     t        | j                  | j                  | j                  t        j
                  | j                               S )N)r'   r)   r*   r+   r,   )r   r'   r)   r*   r   r.   	is_pinned)r8   s    r   create_from_tensorz#TensorProperties.create_from_tensorf   s;    ,,== ..11'')
 	
r   N)r   r   r   r   r   r   get_default_dtyper'   r   stridedr)   r*   boolr.   r+   r,   r4   r7   staticmethodTensorr<   r   r   r   r   r   *   s    3 u/F/FGE5;;G 7FELL7M4).u7N7N)OM5&&OJ
(+2 
5<< 
4F 
 
r   r   c                   F    e Zd ZU eed<   ej                  ed<   ee   ed<   y)r
   
propertiessizechunksN)	r   r   r   r   r   r   r   listr	   r   r   r   r
   r
   q   s      
**%&&r   r
   c                       e Zd Zy)r   N)r   r   r   r   r   r   r   r   x   s    r   r   c                       e Zd ZU dZeej                  z  dz  ed<   dZedz  ed<   dZ	edz  ed<    e
e      Zee   ed<   y)r   Ncheckpoint_idsave_idload_idr%   modules)r   r   r   rI   strosPathLiker   rJ   rK   r   rF   rL   r   r   r   r   r      sI    .2M3$t+2GS4ZGS4Zt4GT#Y4r   r   c                   j    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z  ed<   dZedz  ed<   y)r   z5This class represents the metadata of the checkpoint.state_dict_metadataNplanner_datastorage_datastorage_metaversion)r   r   r   r   dictrM   STORAGE_TYPESr   rR   r   rS   rT   r   rU   r   r   r   r   r      sJ    ? c=011
 L#L#'+L+$+GS4Zr   r   T)frozenc                       e Zd ZU dZeed<   	 dZej                  dz  ed<   	  e	ddd      Z
edz  ed<   	 	 	 d	dedee   dz  dedz  fdZy)
r   zIThis class represents a lookup key for items in a state dict or Metadata.fqnNoffsetF)hashcomparer(   indexc                     t         j                  | d|       t         j                  | d|       |+t         j                  | dt        j                  |             y y )NrZ   r^   r[   )object__setattr__r   r   )r2   rZ   r[   r^   s       r   __init__zMetadataIndex.__init__   sN     	4,4%0tXuzz&/AB r   )NN)r   r   r   r   rM   r   r[   r   r   r   r^   intr   rb   r   r   r   r   r      sy    S	H, $FEJJ$M5%FE3:F	 (, 	
C
C $
C Tz	
Cr   r   )rN   collections.abcr   dataclassesr   r   enumr   typingr   r   %torch.distributed.checkpoint.statefulr   __all__r	   r   r   r
   r   rW   rV   rM   STATE_DICT_TYPEr   r   r   r   r   r   <module>rk      s   	 $ (    ;   4  C
 C
 C
L ' ' ' 	 	 	 &(<<sIO+, 5 5 5    $C C Cr   