a
    ==ic                     @   s   U d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	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)create_pickler)PackageUnpickler)sys_importerOrderedImporterPackageImporterImporter)_maybe_decode_asciic                    s   g g t | tjjr| nd } | d u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rtt| d u rdt| g|  R tt| < tt|  S d S )Nstorage   __reduce_deploy__reduce_deploy)torchZ
is_storage
isinstancer	   _TypedStorage_storagedtypeZuint8appendlenhasattr_serialized_reducesgetidr   )objr	   r   	importersserialized_dtypesserialized_storages ^/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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 ur(t tt}nt}t|t|}||_|  }t| < |S )Nc                    s   t | tsJ t| d }| dd  }|dkrZ|d  } |d  }tjj| |dS |dkr|\}}}|tvr|t g|R  t|< t| S d S )Nr   r
   r	   )Zwrap_storager   r   )	r   tupler   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_load7   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_storages5   s    r5   c                 C   s   | t vrt| t | < t |  S )N)r*   r   )r%   r   r   r   r1   Y   s    r1   r*   r3   r   r)   )r!   r   Ztorch.package._package_picklerr   Z torch.package._package_unpicklerr   Ztorch.packager   r   r   r   Ztorch.serializationr   r'   r5   r1   r*   dict__annotations__r3   r   r)   r   r   r   r   <module>   s   
-$