U
    Kc(                     @   s  d dl Zd dl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( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dl1Z1ej2dddd	 Z3G d
d dZ4dde5dddZ6dS )    N)OrderedDict)$APPENDAPPENDS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   c               
   C   s   t tjjtjjtjtjd} tjtj	tj
tjtjtjtjtjtjtjf
D ]}|| t|< qHtjD ]}|| |j d|j < q`tjD ]}|| |j d|j < qtjjtjjtjjtjjtjjtjjfD ]}|| d|j < q| S )N)zcollections.OrderedDictztorch.nn.parameter.Parameterztorch.serialization._get_layoutz
torch.Sizeztorch.Tensor.ztorch._utils.)r   torchnn	ParameterserializationZ_get_layoutSizeTensorZ	complex32Z	complex64Z
complex128Zfloat16Zfloat32Zfloat64Zint8Zint16Zint32Zint64strZ_tensor_classes
__module____name__Z_storage_classes_utilsZ_rebuild_parameterZ_rebuild_tensorZ_rebuild_tensor_v2Z_rebuild_sparse_tensorZ_rebuild_meta_tensor_no_storageZ_rebuild_sparse_csr_tensor)rcttttsf r=   A/tmp/pip-unpacked-wheel-gikjz4vx/torch/_weights_only_unpickler.py_get_allowed_globalsC   s>    	

r?   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 S N)rC   readlinereadmemo)selffilerC   r=   r=   r>   __init__n   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}| d| }|t kr| t |  ntd| q"|d td kr| j }| j }|tjjk	rtd| | tjj|  q"|d td krZ| j }| jd }	|	t  krJtd	|	 |	| | jd< q"|d td kr| j }
| jd }t|tjkr|j|
  nLt|tjjkr||
 n.t|tkr|j|
 ntd
t| q"|d td kr<| j }| jd }t|tk	r0tdt| || q"|d td kr|  }| jd }t|tk	rt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rD| j | j g | _| jj| _q"|d t&d krn|  }| t'| q"|d t(d kr| jd f| jd< q"|d t)d kr| jd | jd fg| jdd< q"|d t*d kr| jd | jd | jd fg| jdd< q"|d t+d kr"| d q"|d t,d kr@| d q"|d t-d kr^| d q"|d t.d kr|| d q"|d t/d kr| g  q"|d t0d kr| i  q"|d t1d kr| t2  q"|d t3d kr| t4d|dd  q"|d t5d kr,| | dd  q"|d t6d krX| t4d|dd  q"|d t7d krt4d|dd }|t8krtdt9||dd}| | q"|d t:d kr|dd }||}| j;dkr|
| j;d}| | q"|d t<d kr| j }t|t'k	r@t|t=kr@tdt| t|t'krt$|dkrtj>?|d dkrtd|d  | | @| q"|d tAd tBd fkr|d tAd kr|dnt4d|dd }| | jC|  q"|d tDd tEd fkrX|d tDd kr"|dnt4d|dd }|dk rFtFd| jd | jC|< q"|d tGd kr|dd }||}| tH| q"|d tId kr|dd  q"|d tJd 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.
        r,   r   Nzutf-8r-   zUnsupported class z(Trying to instantiate unsupported class z0Trying to call reduce for unrecognized function z:Can only build Tensor, parameter or dict objects, but got z"Can only append to lists, but got zCan only extend lists, but got    FTr=   z<i   z<Hz<IzString is too longsurrogatepassrA   strictz1persistent_load id must be tuple or int, but got Zstoragez4Only persistent_load of storage is allowed, but got znegative argumentzUnsupported operand )K	metastackstackappendrF   rE   EOFError
isinstancer   AssertionErrorr   decoder?   RuntimeErrorr   popr.   r/   r0   r   valuesr   typer3   set___setstate__r   __dict__updater   listr   pop_markextendr   r   rangelenr   r"   tupler#   r$   r%   r   r   r   r   r   r   r   setr   r'   r   r   r   r(   r4   r    rC   r	   intr1   Z_maybe_decode_asciipersistent_loadr   r   rG   r
   r   
ValueErrorr   r   r   r!   )rH   rF   rE   keymodulename	full_pathargsclsfuncstateinstitemlist_objitemsvkiZstrlenstrvalZstrdatapididxndatar8   r=   r=   r>   loadt   s    










 "*



,,

zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S rD   )rS   rR   rZ   rT   )rH   rv   r=   r=   r>   rb     s    
zUnpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r&   )rH   r{   r=   r=   r>   ri     s    zUnpickler.persistent_loadN)r6   r5   __qualname__r4   rJ   r   rb   ri   r=   r=   r=   r>   r@   m   s
    "r@   ASCIIrB   c                C   s   t | |d S )NrB   )r@   r   )rI   rC   r=   r=   r>   r     s    r   )7	functools
_functoolscollectionsr   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&   structr'   sysr(   typingr)   r*   r+   r.   	lru_cacher?   r@   r4   r   r=   r=   r=   r>   <module>   s   &

) 3