U
    zhD9                     @   s  U d dl Zd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4Z4d dl5m6Z6m7Z7 g a8e3e1 e9d< e3e1 d	d
dZ:e3e1 dddZ;dd Z<dd Z=dd Z>ej?dddd Z@G dd dZAddeBdddZCdS )    N)CounterOrderedDict)%APPENDAPPENDSBINFLOATBINGETBININTBININT1BININT2	BINPERSIDBINPUT
BINUNICODEBUILDbytes_typesdecode_long
EMPTY_DICT
EMPTY_LIST	EMPTY_SETEMPTY_TUPLEGLOBALLONG1LONG_BINGETLONG_BINPUTMARKNEWFALSENEWOBJNEWTRUENONEPROTOREDUCESETITEMSETITEMSSHORT_BINSTRINGSTOPTUPLETUPLE1TUPLE2TUPLE3UnpicklingError)unpack)maxsize)AnyDictList)IMPORT_MAPPINGNAME_MAPPING_marked_safe_globals_listZsafe_globalsc                 C   s   t | 7 a d S Nr0   r1    r4   O/var/www/html/venv/lib/python3.8/site-packages/torch/_weights_only_unpickler.py_add_safe_globalsN   s    r6   )returnc                   C   s   t S r2   r3   r4   r4   r4   r5   _get_safe_globalsS   s    r8   c                   C   s   g a d S r2   r3   r4   r4   r4   r5   _clear_safe_globalsX   s    r9   c                  C   s2   i } t D ]$}|j|j }}|| | d| < q| S )N.)r0   
__module____name__)rcfmodulenamer4   r4   r5   _get_user_allowed_globalsd   s
    rA   c                
   C   s@   t jjt jjt jjt jjt jjt jjt jjt jj	t jj
t jjh
S r2   )torchZ_utilsZ_rebuild_parameterZ_rebuild_parameter_with_stateZ_rebuild_qtensorZ_rebuild_tensorZ_rebuild_tensor_v2Z_rebuild_tensor_v3Z_rebuild_sparse_tensorZ_rebuild_meta_tensor_no_storageZ_rebuild_nested_tensorZ_rebuild_wrapper_subclassr4   r4   r4   r5   _tensor_rebuild_functionsl   s    rC      c                  C   s0  t ttjjtjjtjtjtj	d} tj
  D ]}|| t|< q0tj
 D ]}|| t|< qLtjD ]}|| |j d|j < qdtjD ]P}|tj
jtj
jfkrtj|j| |j d|j < q|| |j d|j < qtjtjtjtjtjfD ]}|| t|< qt D ]}|| d|j < qtjj| d< | S )N)zcollections.OrderedDictzcollections.Counterztorch.nn.parameter.Parameterztorch.serialization._get_layoutz
torch.Sizeztorch.Tensorztorch.devicer:   ztorch._utils.z#torch._tensor._rebuild_from_type_v2)r   r   rB   nn	ParameterserializationZ_get_layoutSizeTensorZdevicestorageZ_dtype_to_storage_type_mapkeysstrZ_new_dtypesZ_tensor_classesr;   r<   Z_storage_classesZTypedStorageZUntypedStorageZStorageTypeZper_tensor_affineZper_tensor_symmetricZper_channel_affineZper_channel_symmetricZ per_channel_affine_float_qparamsrC   Z_tensorZ_rebuild_from_type_v2)r=   ttttsZqtr>   r4   r4   r5   _get_allowed_globals|   s>    



rP   c                   @   s8   e Zd ZddedddZdd Zdd Zd	d
 ZdS )	Unpicklerbytesencodingc                C   s&   || _ |j| _|j| _i | _d| _d S )N)rT   readlinereadmemoproto)selffilerT   r4   r4   r5   __init__   s
    zUnpickler.__init__c                 C   s
	  g | _ g | _| jj| _| j}| j}|d}|s2tt|ts@t|d t	d kr| dd 
d}| dd 
d}| jdkr||ftkrt||f \}}n|tkrt| }| d| }|t kr| t |  n2|t kr| t |  ntd| d	| d
q"|d td kr| j }| j }|tjjkrX| tjj|  n6|t  kr| |j|f|  ntd| q"|d td kr| j }| jd }	|	t  kr|	t  krtd|	 |	| | jd< q"|d td kr| j }
| jd }t|tjkr6|j|
  nt|tjjkrT||
 nht|tkrp|j |
 nLt|t  krt!|dr||
 n|j |
 ntdt| q"|d t"d kr| j }| jd }t|t#k	rtdt| || q"|d t$d kr`| % }| jd }t|t#k	rTtdt| |&| q"|d t'd kr| j | j  }}|| jd |< q"|d t(d kr| % }t)dt*|dD ] }||d  | jd || < qq"|d t+d kr| j | j g | _| jj| _q"|d t,d krB| % }| t-| q"|d t.d krh| jd f| jd< q"|d t/d kr| jd | jd fg| jdd< q"|d t0d kr| jd | jd | jd fg| jdd< q"|d t1d kr| d q"|d t2d kr| d q"|d t3d kr2| d q"|d t4d krP| d q"|d t5d krn| g  q"|d t6d kr| i  q"|d t7d kr| t8  q"|d t9d kr| t:d|dd  q"|d t;d kr | | dd  q"|d t<d kr,| t:d|dd  q"|d t=d krZ| t:d| dd  q"|d t>d krt:d|dd }|t?krtdt@||dd}| | q"|d tAd kr|dd }||}| jBdkr|
| jBd}| | q"|d tCd kr| j }t|t-k	rBt|tDkrBtd t| t|t-krt*|dkrtjEF|d d!krtd"|d  | | G| q"|d tHd tId fkr|d tHd kr|dnt:d|dd }| | jJ|  q"|d tKd tLd fkrZ|d tKd kr$|dnt:d|dd }|dk rHtMd#| jd | jJ|< q"|d tNd kr|dd }||}| tO| q"|d tPd kr|dd | _| jdk	rtQRd$| j d% q"|d tSd kr| j }|S td&|d  q"dS )'zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        rD   r   NrU   zutf-8   r:   zUnsupported global: GLOBAL zY was not an allowed global by default. Please use `torch.serialization.add_safe_globals([z>])` to allowlist this global if you trust this class/function.z(Trying to instantiate unsupported class z0Trying to call reduce for unrecognized function __setstate__zACan only build Tensor, parameter or OrderedDict objects, but got z"Can only append to lists, but got zCan only extend lists, but got FTr4   z<i   z<Hz>d   z<IzString is too longsurrogatepassrR   strictz1persistent_load id must be tuple or int, but got rJ   z4Only persistent_load of storage is allowed, but got znegative argumentzDetected pickle protocol z in the checkpoint, which was not the default pickle protocol used by `torch.load` (2). The weights_only Unpickler might not support all instructions implemented by this protocol, please file an issue for adding support if you encounter this.zUnsupported operand )T	metastackstackappendrW   rV   EOFError
isinstancer   AssertionErrorr   decoderY   r/   r.   rP   rA   RuntimeErrorr   poprB   rE   rF   values__new__r   r   typerI   set_r^   r   __dict__updatehasattrr   listr   pop_markextendr    r!   rangelenr   r$   tupler%   r&   r'   r   r   r   r   r   r   r   setr   r)   r	   r
   r   r   r*   rL   r"   rT   r   intrG   Z_maybe_decode_asciipersistent_loadr   r   rX   r   r   
ValueErrorr   r   r   warningswarnr#   )rZ   rW   rV   keyr?   r@   	full_pathargsclsfuncstateinstitemlist_objitemsvkiZstrlenstrvalZstrdatapididxndatar=   r4   r4   r5   load   sP   












 "*



,,

zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S r2   )rf   re   rm   rg   )rZ   r   r4   r4   r5   rv   t  s    
zUnpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r(   )rZ   r   r4   r4   r5   r}   z  s    zUnpickler.persistent_loadN)r<   r;   __qualname__rL   r\   r   rv   r}   r4   r4   r4   r5   rQ      s
    BrQ   ASCIIrS   c                C   s   t | |d S )NrS   )rQ   r   )r[   rT   r4   r4   r5   r   ~  s    r   )D	functools
_functoolsr   collectionsr   r   pickler   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   structr)   sysr*   typingr+   r,   r-   rB   Ztorch._utilsr.   r/   r0   __annotations__r6   r8   r9   rA   rC   	lru_cacherP   rQ   rL   r   r4   r4   r4   r5   <module>   s(    '

. T