a
    hV                     @   s,  U d dl Zd dlZd dlm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l0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6Z6d dl7m8Z8m9Z9m:Z: g d	Z;e< a=e<e5e4e>e4e?f f  e@d
< eAe5e4e>e4e?f f  dddZBeAe5e4e>e4e?f f  dddZCdd ZDeAe5e4e>e4e?f f  dddZEG dd dZFdd ZGdd ZHejIdddd ZJe4e>e?e?f dd d!ZKe<e? dd"d#ZLG d$d% d%ZMd&d'e?d'd(d)ZNdS )*    N)encode)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CallableUnion)_sparse_tensors_to_validateIMPORT_MAPPINGNAME_MAPPING)sysosposixnt_marked_safe_globals_setsafe_globalsc                 C   s   t t| a d S N)r6   unionsetr7    r<   K/var/www/auris/lib/python3.9/site-packages/torch/_weights_only_unpickler.py_add_safe_globalsY   s    r>   )returnc                   C   s   t tS r9   )listr6   r<   r<   r<   r=   _get_safe_globals^   s    rA   c                   C   s
   t  ad S r9   )r;   r6   r<   r<   r<   r=   _clear_safe_globalsc   s    rB   Zglobals_to_removec                 C   s   t t|  a d S r9   )r6   r;   rC   r<   r<   r=   _remove_safe_globalsh   s    rD   c                   @   s>   e Zd Zeeeeeef f  dddZdd Z	dd Z
dS )	_safe_globalsr7   c                 C   s
   || _ d S r9   r7   )selfr8   r<   r<   r=   __init__p   s    z_safe_globals.__init__c                 C   s   t | j d S r9   )r>   r8   )rF   r<   r<   r=   	__enter__s   s    z_safe_globals.__enter__c                 C   s   t | j d S r9   )rD   r8   )rF   typevaluetbr<   r<   r=   __exit__v   s    z_safe_globals.__exit__N)__name__
__module____qualname__r@   r.   r-   tuplestrrG   rH   rL   r<   r<   r<   r=   rE   o   s   "rE   c                  C   s   i } t D ]}t|trlt|dkr4tdt| t|d turZtdt|d  |\}}|| |< q|j|j	 }}|| | d| < q| S )N   zYExpected tuple of length 2 (global, str of callable full path), but got tuple of length:    zHExpected second item in tuple to be str of callable full path, but got: .)
r6   
isinstancerP   len
ValueErrorrI   rQ   	TypeErrorrN   rO   )rcfnamemoduler<   r<   r=   _get_user_allowed_globals   s     

r]   c                   C   sL   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t jjt jjhS r9   )torch_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_subclassZ!_rebuild_device_tensor_from_numpyZ&_rebuild_device_tensor_from_cpu_tensorr<   r<   r<   r=   _tensor_rebuild_functions   s    r`   rS   c                  C   s  t ttjjtjjtjtjtj	t
tttd} tj  D ]}|| t|< q8tj D ]}|| t|< qTdd tddD D ]}|| t|< qzdd tddD D ]}|| t|< qtjD ]}|| |j d|j < qtjD ]R}|tjjtjjfvrtj|j| |j d|j < q|| |j d|j < qtjtjtjtjtjfD ]}|| t|< qFt  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.devicez_codecs.encodezbuiltins.bytearrayzbuiltins.setzbuiltins.complexc                 S   s   g | ]}t td | qS )Zuintgetattrr^   .0xr<   r<   r=   
<listcomp>       z(_get_allowed_globals.<locals>.<listcomp>rS      c                 S   s   g | ]}t td | qS )intra   rc   r<   r<   r=   rf      rg   rT   ztorch._utils.z#torch._tensor._rebuild_from_type_v2)#r   r   r^   nn	ParameterserializationZ_get_layoutSizeTensorZdevicer   	bytearrayr;   complexstorageZ_dtype_to_storage_type_mapkeysrQ   Z_new_dtypesrange_tensor_classesrN   rM   Z_storage_classesZTypedStorageZUntypedStorageZStorageTypeZper_tensor_affineZper_tensor_symmetricZper_channel_affineZper_channel_symmetricZ per_channel_affine_float_qparamsr`   Z_tensorZ_rebuild_from_type_v2)rY   ttttsZqtrZ   r<   r<   r=   _get_allowed_globals   sN    


rx   )readliner?   c                 C   s^   |  d d  d}|  d d  d}||ftv rFt||f \}}n|tv rVt| }||fS )Nutf-8)decoder1   r0   )ry   r\   r[   r<   r<   r=   _read_global_instruction   s    r}   c           
   8   C   s4  t  }| j}| j}td dtd dtd dtd dtd dtd dt	d dt
d dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd dtd di}|d}|stt |t!sJ |d t"d krLt#|\}}|$| d|  q|d |v rv||d  }|r.|| q|d t%d krt&d|dd }	|	t'krt(d||	 q|d t)d t*d hv r|dd }	||	 q|d t+d kr|dd  q|d t,d kr|S t(d	|d  qd S )
Nr      rS   rR   rh   rT   <IString is too longUnsupported operand )-r;   readry   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   EOFErrorrU   r   r   r}   addr   r*   r+   r)   r#   r   r   r$   )
fileZglobals_in_checkpointr   ry   Zop_to_bytes_to_readkeyr\   r[   Zbytes_to_readstrlenr<   r<   r=   get_globals_in_pkl   sp    



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| _d S )Nrz   )r   ry   r   memoproto)rF   r   r   r<   r<   r=   rG   2  s
    zUnpickler.__init__c                 C   s"
  g | _ g | _| jj| _| j}|d}|s,tt|ts:J |d td krdt| j	\}}| d| }|t
v rtd| d| d|t v r| t |  n|t v r| t |  n|dv rtdn|d	v rtd
nd}||v rF||dt| krF|t|d }t|dkr>|d dkr>|dd n|| }td| d| d| dq|d td kr| j }| j }|tjju r| tjj|  nn|t  v s|t  v r|j|g|R  }	|tjv r d|jv r t|	 | |	 ntd| q|d td kr| j }| jd }
|
t  vrp|
t  vrptd|
 |
| }	|
tjv rd|
jv rt|	 |	| jd< q|d td kr| j }| jd }t|tju r|j|  nt|tjju r|| nt|tu r"|j !| nt|t  v sJt|t  v rt"|drb|| n^d}t|t#rt|dkr|\}}|r|j !| |r|$ D ]\}}t%||| qntdt| q|d t&d kr(| j }| jd }t|t'urtdt| || q|d t(d krx| ) }| jd }t|t'urlt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r0| j | j g | _| jj| _q|d t/d krZ| ) }| t#| q|d t0d kr| jd f| jd< q|d t1d kr| jd | jd fg| jdd< q|d t2d kr| jd | jd | jd fg| jdd< q|d t3d kr| d q|d t4d kr,| d q|d t5d krJ| d q|d t6d krh| d q|d t7d kr| g  q|d t8d kr| i  q|d t9d kr| t:  q|d t;d kr| t<d|d d  q|d t=d kr| | dd  q|d t>d krD| t<d!|dd  q|d t?d krr| t<d"| d#d  q|d t@d krt<d$|d d }|tAkrtd%tB||d&d'}| | q|d tCd kr|dd }||}| jDd(kr|E| jDd)}| | q|d tFd kr| j }t|t#urZt|tGu rZtd*t| t|t#u rt|dkrtjHI|d d+krtd,|d  | | J| q|d tKd tLd fv 	r|d tKd kr|dnt<d$|d d }| | jM|  q|d tNd tOd fv 	rr|d tNd k	r<|dnt<d$|d d }|dk 	r`tPd-| jd | jM|< q|d tQd k	r|dd }||}| tR| q|d tSd k	r|dd | _T| jTdk
rtUVd.| jT d/ q|d tWd k
r
| j }|S td0|d  qdS )1zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        rS   r   rT   z"Trying to load unsupported GLOBAL z whose module z is blocked.)z1torch.nested._internal.nested_tensor.NestedTensorz1torch.nested._internal.nested_tensor._rebuild_njtz"torch._dynamo.decorators._DimRangez\``torch.nested`` and ``torch._dynamo`` must be imported to load nested jagged tensors (NJTs))z(torch.distributed.device_mesh.DeviceMeshz2torch.distributed.tensor._dtensor_spec.DTensorSpecz1torch.distributed.tensor._dtensor_spec.TensorMetaz torch.distributed.tensor.DTensorz0torch.distributed.tensor.placement_types.Partialz2torch.distributed.tensor.placement_types.Replicatez.torch.distributed.tensor.placement_types.Shardz>``torch.distributed.tensor`` must be imported to load DTensorsbuiltinsNzUnsupported global: GLOBAL zY was not an allowed global by default. Please use `torch.serialization.add_safe_globals([z.])` or the `torch.serialization.safe_globals([zN])` context manager to allowlist this global if you trust this class/function.sparsezbCan only create new object for nn.Parameter or classes allowlisted via `add_safe_globals` but got rz   z0Trying to call reduce for unrecognized function __setstate__rR   zcCan only build Tensor, Parameter, OrderedDict or types allowlisted via `add_safe_globals`, but got z"Can only append to lists, but got zCan only extend lists, but got FTr<   z<ir~   z<Hz>drh   r   r   r{   surrogatepassr   strictz1persistent_load id must be tuple or int, but got rq   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.r   )X	metastackstackappendr   r   rU   r   r   r}   ry   _blocklisted_modulesr)   rx   r]   rV   r   popr^   rj   rk   values__new__rt   rN   r/   r    r   rI   rn   set_r   r   __dict__updatehasattrrP   itemssetattrr   r@   r   pop_markextendr!   r"   rs   r   r%   r&   r'   r(   r   r   r   r   r   r   r   r;   r	   r*   r
   r   r   r   r+   rQ   r#   r   r|   r   ri   rl   Z_maybe_decode_asciipersistent_loadr   r   r   r   r   rW   r   r   r   r   warningswarnr$   )rF   r   r   r\   r[   	full_pathZbuiltins_nameargsclsresultfuncstateinst	slotstatekvitemlist_objr   ir   strvalZstrdatapididxndatarY   r<   r<   r=   load9  s   















 "*



,,

zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S r9   )r   r   r   r   )rF   r   r<   r<   r=   r   2  s    
zUnpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r)   )rF   r   r<   r<   r=   r   8  s    zUnpickler.persistent_loadN)rM   rN   rO   rQ   rG   r   r   r   r<   r<   r<   r=   r   1  s
    zr   ASCIIr   c                C   s   t | |d S )Nr   )r   r   )r   r   r<   r<   r=   r   <  s    r   )O	functools
_functoolsr   _codecsr   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*   r2   r+   typingr,   r-   r.   r^   Ztorch._utilsr/   r0   r1   r   r;   r6   rP   rQ   __annotations__r@   r>   rA   rB   rD   rE   r]   r`   	lru_cacherx   r}   r   r   r   r<   r<   r<   r=   <module>   s6   
'"""

8@  