U
    Jc                     @   s   d dl mZmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d dlZd dlmZ eG dd dZeG dd	 d	ZeG d
d dZeejef Zeeef Zeee	f ZeG dd dZeddG dd dZdS )    )	dataclassfield)DictListUnionOptionalSequenceAny)TensorPropertiesN)ShardedTensorc                   @   s&   e Zd ZU dZejed< ejed< dS )ChunkStorageMetadatazk
    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   P/tmp/pip-unpacked-wheel-gikjz4vx/torch/distributed/_shard/checkpoint/metadata.pyr   
   s   

r   c                   @   s,   e Zd ZU eed< ejed< ee ed< dS )TensorStorageMetadataZ
propertiessizechunksN)	r   r   r   r
   r   r   r   r   r   r   r   r   r   r      s   

r   c                   @   s   e Zd ZdS )BytesStorageMetadataN)r   r   r   r   r   r   r   r      s   r   c                   @   s6   e Zd ZU eeef ed< dZeed< dZ	eed< dS )MetadataZstate_dict_metadataNplanner_datastorage_data)
r   r   r   r   strSTORAGE_TYPESr   r   r	   r   r   r   r   r   r       s   
r   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 )MetadataIndexzS
    This class represents a lookup key for items in a state dict or Metadata.
    fqnNoffsetF)hashcomparedefaultindex)r"   r#   r'   c                 C   s<   t | d| t | d| |d k	r8t | dt| d S )Nr"   r'   r#   )object__setattr__r   r   )selfr"   r#   r'   r   r   r   __init__>   s    zMetadataIndex.__init__)NN)r   r   r   r   r   r   r#   r   r   r   r   r'   intr   r+   r   r   r   r   r!   '   s
   
r!   )Zdataclassesr   r   typingr   r   r   r   r   r	   Z0torch.distributed._shard.sharded_tensor.metadatar
   r   Z'torch.distributed._shard.sharded_tensorr   r   r   r   ZTensorZTENSOR_TYPEr   r   ZSTATE_DICT_TYPEr   r!   r   r   r   r   <module>   s"    