a
    hx                  	   @   s   U d dl Z d dlmZ d dlmZ d dlmZ d dlZd dlm	Z	 d dl
mZmZmZmZ g Zee ed< eG dd dZe	eg G d	d
 d
Ze efeeeeddddZdddeeeeeedddZdS )    N)	dataclass)BufferedIOBase)Any)_load_saveDEFAULT_PROTOCOLMAP_LOCATION__all__c                   @   s&   e Zd ZU eed< eed< eed< dS )_Entrykey
is_storagelengthN)__name__
__module____qualname__str__annotations__boolint r   r   N/var/www/auris/lib/python3.9/site-packages/torch/distributed/_serialization.pyr
      s   
r
   c                   @   s   e Zd ZddddZeeeddddZeddd	d
Z	eddddZ
eedddZeedddZeeeejdddZedddZdS )_PseudoZipFileN)returnc                 C   s
   i | _ d S Nrecordsselfr   r   r   __init__   s    z_PseudoZipFile.__init__)r   datar   r   c                 C   s   ||f| j |< d S r   r   )r   r   r   r   r   r   r   write_record   s    z_PseudoZipFile.write_record)fr   c                 C   s   g }| j  D ](\}\}}|t|t|tj|d qtj||t	d | j  D ]n\}\}}t|t
rt|| qRt|tr||d qRt|tjr||ddd qRtdt| qRd S )N)r   r   r   )protocolutf-8F   zunknown type: )r   itemsappendr
   
isinstancetorchZUntypedStoragepickledumpr   byteswriter   encodeZ_write_file	TypeErrortype)r   r!   entriesr   r   r   r   r   r   write_to   s$    


z_PseudoZipFile.write_toc                 C   sd   t |}|D ]P}||j}|jrLtj|tjd }||jf| j	|j
< q||jf| j	|j
< qd S )NZdtype)_weights_only_unpicklerloadreadr   r   r(   Z
frombufferuint8Zuntyped_storager   r   )r   r!   r0   entryr   Zstorager   r   r   	read_from6   s    

z_PseudoZipFile.read_from)r   r   c                 C   s
   || j v S r   r   r   r   r   r   r   
has_recordH   s    z_PseudoZipFile.has_recordc                 C   s   | j | d S )Nr   r   r9   r   r   r   
get_recordK   s    z_PseudoZipFile.get_record)r   _length_typer   c                 C   s   t j| j| d t jdS )Nr   r2   )r(   Ztensorr   r6   )r   r   r<   r=   r   r   r   get_storage_from_recordN   s    z&_PseudoZipFile.get_storage_from_recordc                 C   s   dS )NZtorchftr   r   r   r   r   serialization_idS   s    z_PseudoZipFile.serialization_id)r   r   r   r   r   objectr   r    r   r1   r8   r   r:   r;   r(   ZTensorr>   r?   r   r   r   r   r      s   r   )objr!   pickle_modulepickle_protocolr   c                 C   s&   t  }t| |||dd || dS )a5  
    Save the object to a file-like object in a streaming fashion compatible with
    network sockets.

    This behaves similarly to :func:`torch.save` with a few notable differences:

    * A non-seekable file like object can be used when loading.
    * No forwards/backwards compatibility is provided for the serialization
      format. This is only intended to be used with a single version of PyTorch
      with transient storage (i.e. sockets or temp files).
    * mmap is not supported

    See :func:`torch.save` for more details on specific arguments.
    F)zip_filerB   rC   Z_disable_byteorder_recordN)r   r   r1   )rA   r!   rB   rC   rD   r   r   r   _streaming_saveW   s    rE   T)weights_only)r!   map_locationrB   rF   pickle_load_argsr   c                K   s`   |r|durt dt}n|du r&t}d| vr:d|d< t }||  tf |||d|S )a  
    Load the object from a file-like object in a streaming fashion compatible with
    network sockets.

    See :func:`_streaming_save` for more details about the streaming behavior.

    See :func:`torch.load` for more details on specific arguments.
    NzDCan not safely load weights when explicit pickle_module is specifiedencodingr#   )rD   rG   rB   )RuntimeErrorr3   r)   keysr   r8   r   )r!   rG   rB   rF   rH   rD   r   r   r   _streaming_loadw   s&    
rL   )NN)r)   Zdataclassesr   ior   typingr   r(   Ztorch._weights_only_unpicklerr3   Ztorch.serializationr   r   r   r   r	   listr   r   r
   Z_add_safe_globalsr   r@   r   rE   r   rL   r   r   r   r   <module>   s@   
B"  