U
    9%e)                     @   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(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1 d dl2Z2ej3dddd	 Z4G d
d dZ5dde6dddZ7dS )    N)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   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fD ]}|| d|j < qtjj| d< | S )N)zcollections.OrderedDictztorch.nn.parameter.Parameterztorch.serialization._get_layoutz
torch.Sizeztorch.Tensor.ztorch._utils.z#torch._tensor._rebuild_from_type_v2)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_tensorZ_rebuild_from_type_v2)rcttttsf r>   \/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torch/_weights_only_unpickler.py_get_allowed_globalsD   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)rD   readlinereadmemo)selffilerD   r>   r>   r?   __init__r   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r| t4d| dd  q"|d t8d krt4d|dd }|t9krtdt:||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	rnt|t>krntdt| t|t'krt$|dkrtj?@|d dkrtd|d  | | A| q"|d tBd tCd fkr|d tBd kr|dnt4d|dd }| | jD|  q"|d tEd tFd fkr|d tEd krP|dnt4d|dd }|dk rttGd | jd | jD|< q"|d tHd kr|dd }||}| tI| q"|d tJd kr|dd  q"|d tKd 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>d   z<IzString is too longsurrogatepassrB   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 )L	metastackstackappendrG   rF   EOFError
isinstancer   AssertionErrorr   decoder@   RuntimeErrorr   popr/   r0   r1   r   valuesr   typer4   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   r)   r5   r!   rD   r
   intr2   Z_maybe_decode_asciipersistent_loadr   r   rH   r   r   
ValueErrorr   r   r   r"   )rI   rG   rF   keymodulename	full_pathargsclsfuncstateinstitemlist_objitemsvkiZstrlenstrvalZstrdatapididxndatar9   r>   r>   r?   loadx   s$   










 "*



,,

zUnpickler.loadc                 C   s    | j }| j | _ | j j| _|S rE   )rU   rT   r\   rV   )rI   rx   r>   r>   r?   rd     s    
zUnpickler.pop_markc                 C   s   t dd S )Nz%unsupported persistent id encountered)r'   )rI   r}   r>   r>   r?   rk   !  s    zUnpickler.persistent_loadN)r7   r6   __qualname__r5   rK   r   rd   rk   r>   r>   r>   r?   rA   q   s
    $rA   ASCIIrC   c                C   s   t | |d S )NrC   )rA   r   )rJ   rD   r>   r>   r?   r   %  s    r   )8	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&   r'   structr(   sysr)   typingr*   r+   r,   r/   	lru_cacher@   rA   r5   r   r>   r>   r>   r?   <module>   s   '

, 5