U
    9%e                     @   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rtt| d krd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/Darija-Ai-API/env/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#