U
    ªÊ¹j°  ã                   @   sš   U d dl Z d dlZd dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlmZ dd„ Zdd	„ Zd
d„ Zi Zeed< i Zeed< i Zeed< i Zeed< dS )é    N)ÚImporterÚOrderedImporterÚPackageImporterÚsys_importer)Úcreate_pickler)ÚPackageUnpickler)Ú_maybe_decode_asciic                    s†   g ‰g ‰t | tjjƒr| nd } | d k	r2t| tƒ‰ nt‰ ‡ ‡‡fdd„}t ¡ }t|ˆ ƒ}||_	| 
|¡ | ¡ }|ˆˆ| r€| jnd fS )Nc                    s¬   t  | ¡st| t jjƒrbt| t jjƒr4| j}| j}n
| }t j}ˆ | ¡ ˆ |¡ dt	ˆƒd fS t
| dƒr¨t t| ƒ¡d krœdt| ƒf|  ˆ ¡˜tt| ƒ< tt| ƒ S d S )NÚstorageé   Ú__reduce_deploy__Úreduce_deploy)ÚtorchZ
is_storageÚ
isinstancer	   ÚTypedStorageZ_untyped_storageÚdtypeZuint8ÚappendÚlenÚhasattrÚ_serialized_reducesÚgetÚidr   )Úobjr	   r   ©Ú	importersÚserialized_dtypesÚserialized_storages© úL/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/_deploy.pyÚpersistent_id   s$    


þýz%_save_storages.<locals>.persistent_id)r   r   Úpackager   r   r   ÚioÚBytesIOr   r   ÚdumpÚgetvalueÚ
zip_reader)Úimporterr   r   Zdata_bufZpicklerZ
data_valuer   r   r   Ú_save_storages
   s"    

ür&   c           	         sV   ‡ ‡‡fdd„}ˆd k	r(t tˆƒtƒ}nt}t|t |¡ƒ}||_| ¡  }t| < |S )Nc                    s–   t | tƒst‚t| d ƒ}| dd … }|dkrZˆ|d  }ˆ |d  }tjj| ¡ |d�S |dkr’|\}}}|tkrŠ|t	ˆ f|žŽ t|< t| S d S )Nr   r
   r	   )Zwrap_storager   r   )
r   ÚtupleÚAssertionErrorr   r   r	   r   ZuntypedÚ_loaded_reducesÚ_raw_packages)Zsaved_idÚtypenameÚdatar	   r   Z	reduce_idÚfuncÚargs©r   r   r$   r   r   Úpersistent_load>   s      ÿ
z'_load_storages.<locals>.persistent_load)	r   Ú_get_packager   r   r    r!   r0   ÚloadÚ_deploy_objects)	r   r$   Z	obj_bytesr   r   r0   r%   Z	unpicklerÚresultr   r/   r   Ú_load_storages=   s    r5   c                 C   s   | t krt| ƒt | < t |  S )N)r*   r   )r$   r   r   r   r1   `   s    r1   r*   r3   r   r)   )r    r   Ztorch.packager   r   r   r   Ztorch.package._package_picklerr   Z torch.package._package_unpicklerr   Ztorch.serializationr   r&   r5   r1   r*   ÚdictÚ__annotations__r3   r   r)   r   r   r   r   Ú<module>   s    3#