o
    h                     @   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 urt| t nt  fdd}t }t| }||_	|
| | }|| rA| jfS d fS )Nc                    s   t | st| t jjr1t| t jjr| j}| j}n| }t j}|  | dt	d fS t
| drUtt| d u rOdt| g|  R tt| < tt|  S d S )Nstorage   __reduce_deploy__reduce_deploy)torch
is_storage
isinstancer	   TypedStorage_untyped_storagedtypeuint8appendlenhasattr_serialized_reducesgetidr   )objr	   r   	importersserialized_dtypesserialized_storages C/var/www/html/ai/venv/lib/python3.10/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!   data_bufpickler
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r-|d  } |d  }tjj| |dS |dkrJ|\}}}|tvrF|t g|R  t|< t| S d S )Nr   r
   r	   )wrap_storager   r   )	r   tupler   r   r	   r   untyped_loaded_reduces_raw_packages)saved_idtypenamedatar	   r   	reduce_idfuncargsr   r   r'   r   r    persistent_load>   s   
z'_load_storages.<locals>.persistent_load)	r   _get_packager   r   r#   r$   r9   load_deploy_objects)	r   r'   	obj_bytesr   r   r9   r(   	unpicklerresultr   r8   r    _load_storages=   s   r@   c                 C   s   | t vr
t| t | < t |  S )N)r1   r   )r'   r   r   r    r:   `   s   r:   r1   r<   r   r0   )r#   r   torch.packager   r   r   r   torch.package._package_picklerr    torch.package._package_unpicklerr   torch.serializationr   r,   r@   r:   r1   dict__annotations__r<   r   r0   r   r   r   r    <module>   s   
 3#