o
    ߗiR                     @   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l2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:Z:d dl;m<Z<m=Z= g d	Z>e? a@e7e9e4e8e4eAf f  eBd
< de6e9e4e8e4eAf f  fddZCde6e9e4e8e4eAf f  fddZDdd ZEde6e9e4e8e4eAf f  fddZFG dd dZGdd ZHdd ZIejJdddd ZKde4de8eAeAf fd d!ZLde7eA fd"d#ZMG d$d% d%ZNd&d'd(eAfd)d*ZOd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DictListSetTupleUnion)IMPORT_MAPPINGNAME_MAPPING)sysosposixnt_marked_safe_globals_setsafe_globalsc                 C   s   t t| a d S N)r9   unionsetr:    r?   [/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/torch/_weights_only_unpickler.py_add_safe_globalsY   s   rA   returnc                   C   s   t tS r;   )listr9   r?   r?   r?   r@   _get_safe_globals^   s   rD   c                   C   s
   t  ad S r;   )r=   r9   r?   r?   r?   r@   _clear_safe_globalsc   s   
rE   globals_to_removec                 C   s   t t|  a d S r;   )r9   r=   )rF   r?   r?   r@   _remove_safe_globalsh   s   rG   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_globalsr:   c                 C   s
   || _ d S r;   r>   )selfr:   r?   r?   r@   __init__p   s   
z_safe_globals.__init__c                 C      t | j d S r;   )rA   r:   )rI   r?   r?   r@   	__enter__s      z_safe_globals.__enter__c                 C   rK   r;   )rG   r:   )rI   typevaluetbr?   r?   r@   __exit__v   rM   z_safe_globals.__exit__N)__name__
__module____qualname__r/   r2   r-   r1   strrJ   rL   rQ   r?   r?   r?   r@   rH   o   s    "rH   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: .)
r9   
isinstancetuplelen
ValueErrorrN   rU   	TypeErrorrS   rR   )rcfnamemoduler?   r?   r@   _get_user_allowed_globals   s    

rb   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 r;   )torch_utils_rebuild_parameter_rebuild_parameter_with_state_rebuild_qtensor_rebuild_tensor_rebuild_tensor_v2_rebuild_tensor_v3_rebuild_sparse_tensor_rebuild_meta_tensor_no_storage_rebuild_nested_tensor_rebuild_wrapper_subclass!_rebuild_device_tensor_from_numpy&_rebuild_device_tensor_from_cpu_tensorr?   r?   r?   r@   _tensor_rebuild_functions   s   rq   rW   c                  C   s6  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*tjD ]}|| |j d|j < q6tjD ](}|tjjtjjfvrdtj|j| |j d|j < qG|| |j d|j < qGtjtjtjtjtjfD ]}|| t|< q|t 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.complexrX   ztorch._utils.z#torch._tensor._rebuild_from_type_v2)"r   r   rc   nn	Parameterserialization_get_layoutSizeTensordevicer   	bytearrayr=   complexstorage_dtype_to_storage_type_mapkeysrU   _new_dtypes_tensor_classesrS   rR   _storage_classesTypedStorageUntypedStorageStorageTypeper_tensor_affineper_tensor_symmetricper_channel_affineper_channel_symmetric per_channel_affine_float_qparamsrq   _tensor_rebuild_from_type_v2)r^   ttttsqtr_   r?   r?   r@   _get_allowed_globals   sF   


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)decoder4   r3   )r   ra   r`   r?   r?   r@   _read_global_instruction   s   r   c                 C   sN  t  }d }| 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|  nm|d |v r||d  }	|	r||	 nZ|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      rW   rV      TrX   <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   EOFErrorrY   r   r   r   addr   r*   r+   r)   r#   r   r   r$   )fileglobals_in_checkpointprotocolr   r   op_to_bytes_to_readkeyra   r`   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)rI   r   r   r?   r?   r@   rJ   .  s
   
zUnpickler.__init__c                 C   s	  g | _ g | _| jj| _| j}| j}	 |d}|stt|ts!J |d td krt	| j\}}| d| }|t
v rFtd| d| d|t v rU| t |  nx|t v rd| t |  ni|dv rltd	|d
v rttdtd| d| d| d|d td kr| j }| j }|tjju r| tjj|  n(|t  v s|t  v r| |j|g|R   ntd| |d td kr| j }| jd }	|	t  vr|	t  vrtd|	 |	| | jd< n|d td kr| j }
| jd }t|tju r|j|
  nt|tjju r*||
 nt|tu r9|j|
 nt|t  v sMt|t  v rt|drZ||
 nsd}t|
trmt |
dkrm|
\}
}|
rv|j|
 |r|! D ]\}}t"||| q}nBtdt| |d t#d kr| j }| jd }t|t$urtdt| || n|d t%d kr| & }| jd }t|t$urtdt| |'| n|d t(d kr| j | j }}|| jd |< n|d t)d kr,| & }t*dt |dD ]}||d  | jd || < qn|d t+d krF| j | j g | _| jj| _n|d t,d kr\| & }| t| nq|d t-d krp| jd f| jd< n]|d t.d kr| jd | jd fg| jdd< nB|d t/d kr| jd | jd | jd fg| jdd< n#|d t0d kr| d n|d t1d kr| d n|d t2d kr| d n|d t3d kr| d n|d t4d kr| g  n|d t5d kr
| i  n|d t6d kr| t7  n|d t8d kr2| t9d|dd  n|d t:d krG| | dd  n|d t;d kr^| t9d|dd  no|d t<d krv| t9d | d!d  nW|d t=d krt9d"|dd }|t>krtd#t?||d$d%}| | n-|d t@d kr|dd }||}| jAd&kr|B| jAd'}| | n|d tCd kr| j }t|turt|tDu rtd(t| t|tu rt |dkrtjEF|d d)krtd*|d  | | G| n|d tHd tId fv rC|d tHd kr1|dnt9d"|dd }| | jJ|  n|d tKd tLd fv rx|d tKd kr]|dnt9d"|dd }|dk rotMd+| jd | jJ|< nU|d tNd kr|dd }||}| tO| n:|d tPd kr|dd | _Q| jQdkrtRSd,| jQ d- n|d tTd kr| j }|S td.|d  q)/zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        TrW   r   rX   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 DTensorsz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.zbCan 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__NrV   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>dr   r   r   r   surrogatepassr   strictz1persistent_load id must be tuple or int, but got r{   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   )U	metastackstackappendr   r   r   rY   r   r   r   _blocklisted_modulesr)   r   rb   r   poprc   rr   rs   values__new__r    r   rN   rw   set_r   r   __dict__updatehasattrrZ   r[   itemssetattrr   rC   r   pop_markextendr!   r"   ranger   r%   r&   r'   r(   r   r   r   r   r   r   r   r=   r	   r*   r
   r   r   r   r+   rU   r#   r   r   r   intrt   _maybe_decode_asciipersistent_loadr   r   r   r   r   r\   r   r   r   r   warningswarnr$   )rI   r   r   r   ra   r`   	full_pathargsclsfuncstateinst	slotstatekvitemlist_objr   ir   strvalstrdatapididxndatar^   r?   r?   r@   load5  s  











$,

,,

 zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S r;   )r   r   r   r   )rI   r   r?   r?   r@   r     s   
zUnpickler.pop_markc                 C   s   t d)Nz%unsupported persistent id encountered)r)   )rI   r   r?   r?   r@   r   $  s   zUnpickler.persistent_loadN)rR   rS   rT   rU   rJ   r   r   r   r?   r?   r?   r@   r   -  s     jr   ASCIIr   r   c                C   s   t | |d S )Nr   )r   r   )r   r   r?   r?   r@   r   (  s   r   )P	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*   r5   r+   typingr,   r-   r.   r/   r0   r1   r2   rc   torch._utilsr3   r4   r   r=   r9   rU   __annotations__rA   rD   rE   rG   rH   rb   rq   	lru_cacher   r   r   r   r   r?   r?   r?   r@   <module>   s8   
'$"""


3A |