o
    ZhV                     @   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
< deAe5e4e>e4e?f f  fddZBdeAe5e4e>e4e?f f  fddZCdd ZDdeAe5e4e>e4e?f f  fddZEG dd dZFdd ZGdd ZHejIdddd ZJde4de>e?e?f fd d!ZKde<e? fd"d#ZLG d$d% d%ZMd&d'd(e?f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setr7    r<   L/var/www/auris/lib/python3.10/site-packages/torch/_weights_only_unpickler.py_add_safe_globalsY   s   r>   returnc                   C   s   t tS r8   )listr6   r<   r<   r<   r=   _get_safe_globals^   s   rA   c                   C   s
   t  ad S r8   )r:   r6   r<   r<   r<   r=   _clear_safe_globalsc   s   
rB   globals_to_removec                 C   s   t t|  a d S r8   )r6   r:   )rC   r<   r<   r=   _remove_safe_globalsh   s   rD   c                   @   s>   e Zd Zdeeeeeef f  fddZdd Z	dd Z
dS )	_safe_globalsr7   c                 C   s
   || _ d S r8   r;   )selfr7   r<   r<   r=   __init__p   s   
z_safe_globals.__init__c                 C      t | j d S r8   )r>   r7   )rF   r<   r<   r=   	__enter__s      z_safe_globals.__enter__c                 C   rH   r8   )rD   r7   )rF   typevaluetbr<   r<   r=   __exit__v   rJ   z_safe_globals.__exit__N)__name__
__module____qualname__r@   r.   r-   tuplestrrG   rI   rN   r<   r<   r<   r=   rE   o   s    "rE   c                  C   s   i } t D ]B}t|tr6t|dkrtdt| t|d tur-t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   
isinstancerR   len
ValueErrorrK   rS   	TypeErrorrP   rQ   )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 r8   )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   rb   rU   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|< qtj D ]}|| t|< q*dd tddD D ]}|| t|< q=dd tddD D ]}|| t|< qPtjD ]}|| |j d|j < q\tjD ](}|tjjtjjfvrtj|j| |j d|j < qm|| |j d|j < qmtjtjtjtjtjfD ]}|| t|< qt  D ]
}|| d|j < qt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      g | ]
}t td | qS )Zuintgetattrr`   .0xr<   r<   r=   
<listcomp>       z(_get_allowed_globals.<locals>.<listcomp>rU      c                 S   rc   )intrd   rf   r<   r<   r=   ri      rj   rV   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keysrS   Z_new_dtypesrange_tensor_classesrP   rO   Z_storage_classesZTypedStorageZUntypedStorageZStorageTypeZper_tensor_affineZper_tensor_symmetricZper_channel_affineZper_channel_symmetricZ per_channel_affine_float_qparamsrb   Z_tensorZ_rebuild_from_type_v2)r[   ttttsZqtr\   r<   r<   r=   _get_allowed_globals   sN   


r{   readlinec                 C   sd   |  d d  d}|  d d  d}||ftv r&t||f \}}||fS |tv r.t| }||fS )Nutf-8)decoder1   r0   )r|   r^   r]   r<   r<   r=   _read_global_instruction   s   r   c           
      C   sH  t  }| j}| j}i 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}|stt |t!sJ |d t"d krt#|\}}|$| d|  nl|d |v r||d  }|r|| nY|d t%d krt&d|dd }	|	t'krt(d	||	 n;|d t)d t*d hv r|dd }	||	 n$|d t+d kr|dd  n|d t,d kr|S t(d
|d  q)Nr      rU   rT   rk   TrV   <IString is too longUnsupported operand )-r:   readr|   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   EOFErrorrW   r   r   r   addr   r*   r+   r)   r#   r   r   r$   )
fileZglobals_in_checkpointr   r|   Zop_to_bytes_to_readkeyr^   r]   Zbytes_to_readstrlenr<   r<   r=   get_globals_in_pkl   s   	


r   c                   @   s8   e Zd ZdddefddZdd Zdd	 Zd
d ZdS )	Unpicklerbytesencodingr   c                C   s&   || _ |j| _|j| _i | _d| _d S )Nr}   )r   r|   r   memoproto)rF   r   r   r<   r<   r=   rG   2  s
   
zUnpickler.__init__c                 C   sB
  g | _ g | _| jj| _| j}	 |d}|stt|tsJ |d td krt| j	\}}| d| }|t
v rCtd| d| d|t v rR| t |  n|t v ra| t |  n|dv ritd	|d
v rqtdd}||v r||dt| kr|t|d }t|dkr|d dkr|dd n|| }td| d| d| d|d td kr| j }| j }|tjju r| tjj|  nO|t  v s|t  v r|j|g|R  }	|tjv rd|jv rt|	 | |	 n"td| |d td krK| j }| jd }
|
t  vr/|
t  vr/td|
 |
| }	|
tjv rDd|
jv rDt|	 |	| jd< n|d td kr| j }| jd }t|tju rm|j|  nt|tjju r}|| nt|tu r|j !| nt|t  v st|t  v rt"|dr|| nsd}t|t#rt|dkr|\}}|r|j !| |r|$ D ]\}}t%||| qАnBtdt| |d t&d kr| j }| jd }t|t'ur
tdt| || n|d t(d kr:| ) }| jd }t|t'ur3tdt| |*| n|d t+d krW| j | j }}|| jd |< n|d t,d kr| ) }t-dt|dD ]}||d  | jd || < qln|d t.d kr| j | j g | _| jj| _n|d t/d kr| ) }| t#| nq|d t0d kr| jd f| jd< n]|d t1d kr| jd | jd fg| jdd< nB|d t2d kr| jd | jd | jd fg| jdd< n#|d t3d kr| d n|d t4d kr| d n|d t5d kr-| d n|d t6d kr=| d n|d t7d krM| g  n|d t8d kr]| i  n|d t9d krn| t:  n|d t;d kr| t<d|d d  n|d t=d kr| | dd  n|d t>d kr| t<d!|dd  no|d t?d kr| t<d"| d#d  nW|d t@d krt<d$|d d }|tAkrtd%tB||d&d'}| | n-|d tCd kr|dd }||}| jDd(kr|E| jDd)}| | n|d tFd krj| j }t|t#ur?t|tGu r?td*t| t|t#u rat|dkratjHI|d d+kratd,|d  | | J| n|d tKd tLd fv r|d tKd kr|dnt<d$|d d }| | jM|  n|d tNd tOd fv r|d tNd kr|dnt<d$|d d }|dk rtPd-| jd | jM|< nU|d tQd kr|dd }||}| tR| n:|d tSd kr|dd | _T| jTdkrtUVd.| jT d/ n|d tWd kr| j }|S td0|d  q)1zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        TrU   r   rV   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 r}   z0Trying to call reduce for unrecognized function __setstate__rT   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 Fr<   z<ir   z<Hz>drk   r   r   r~   surrogatepassr   strictz1persistent_load id must be tuple or int, but got rt   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   rW   r   r   r   r|   _blocklisted_modulesr)   r{   r_   rX   r   popr`   rm   rn   values__new__rw   rP   r/   r    r   rK   rq   set_r   r   __dict__updatehasattrrR   itemssetattrr   r@   r   pop_markextendr!   r"   rv   r   r%   r&   r'   r(   r   r   r   r   r   r   r   r:   r	   r*   r
   r   r   r   r+   rS   r#   r   r   r   rl   ro   Z_maybe_decode_asciipersistent_loadr   r   r   r   r   rY   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datar[   r<   r<   r=   load9  s  













$,

,,

 zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S r8   )r   r   r   r   )rF   r   r<   r<   r=   r   2  s   
zUnpickler.pop_markc                 C   s   t d)Nz%unsupported persistent id encountered)r)   )rF   r   r<   r<   r=   r   8  s   zUnpickler.persistent_loadN)rO   rP   rQ   rS   rG   r   r   r   r<   r<   r<   r=   r   1  s     zr   ASCIIr   r   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   rR   rS   __annotations__r@   r>   rA   rB   rD   rE   r_   rb   	lru_cacher{   r   r   r   r   r<   r<   r<   r=   <module>   s:   
'"""


8@  