U
    Mh1                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
 ddddgZG dd dZG dd dZG d	d dejZdd
dZedkrejejjej< e ee j dS )    N)AnyIOBinaryIOUnion
FakeObject	FakeClassDumpUnpicklermainc                   @   s0   e Zd Zdd Zdd Zdd Zedd Zd	S )
r   c                 C   s   || _ || _|| _d | _d S N)modulenameargsstate)selfr   r   r    r   I/var/www/html/venv/lib/python3.8/site-packages/torch/utils/show_pickle.py__init__   s    zFakeObject.__init__c                 C   s8   | j d krdnd| j d}| j d| j | j| S )N z(state=).)r   r   r   r   )r   Z	state_strr   r   r   __repr__   s    zFakeObject.__repr__c                 C   s
   || _ d S r
   )r   )r   r   r   r   r   __setstate__   s    zFakeObject.__setstate__c              	   C   s   |j s"|jd kr"|t| d S |jd krf||j d|j  | |j ||d |d || d S |j s||j d|j d || j7 }|d|  | |j|||d ||d  |d d S tdd S )Nr      z
()(state=
 r   zNeed to implement)	r   r   writereprr   r   _formatZ_indent_per_level	Exception)printerobjstreamindentZ	allowancecontextlevelr   r   r   	pp_format   s    


zFakeObject.pp_formatN)__name__
__module____qualname__r   r   r   staticmethodr$   r   r   r   r   r      s
   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c                 C   s   || _ || _| j| _d S r
   )r   r   fake_new__new__r   r   r   r   r   r   r   0   s    zFakeClass.__init__c                 C   s   | j  d| j S )Nr   )r   r   )r   r   r   r   r   5   s    zFakeClass.__repr__c                 G   s   t | j| j|S r
   r   r   r   r   r   r   r   r   __call__8   s    zFakeClass.__call__c                 G   s   t | j| j|dd  S )Nr   r,   r-   r   r   r   r)   ;   s    zFakeClass.fake_newN)r%   r&   r'   r   r   r.   r)   r   r   r   r   r   /   s   c                       s`   e Zd Zdd fdd
Zdd Zdd Zeejj	Z	d	d
 Z
e
e	ejd < edd Z  ZS )r   F)catch_invalid_utf8c                   s   t  j|f| || _d S r
   )superr   r/   )r   filer/   kwargs	__class__r   r   r   @   s    zDumpUnpickler.__init__c                 C   s
   t ||S r
   )r   r+   r   r   r   
find_classI   s    zDumpUnpickler.find_classc                 C   s   t dd|fS )NZpersr   )r   )r   pidr   r   r   persistent_loadL   s    zDumpUnpickler.persistent_loadc              
   C   s   t d| d\}|tjkr&td| |}zt|dd}W n< tk
r| } z| jsZ t	ddt|f}W 5 d }~X Y nX | 
| d S )Nz<I   zString too long.zutf-8surrogatepassbuiltinUnicodeDecodeError)structunpackreadsysmaxsizer   strr;   r/   r   append)r   ZstrlenZ	str_bytesr   Zexnr   r   r   load_binunicodeU   s    

$zDumpUnpickler.load_binunicoder   c                 C   s   | |  }tj||d |S )N)r    )loadpprint)clsZ	in_streamZ
out_streamvaluer   r   r   dumpd   s    zDumpUnpickler.dump)r%   r&   r'   r   r5   r7   dictpickle
_UnpicklerdispatchrC   
BINUNICODEclassmethodrH   __classcell__r   r   r3   r   r   ?   s   	c           	      C   sd  t | dkrt|d k	rtdtjd tjd tjd tjd tjd tjd tjd	 dS | d
 }d|krt|d}t|| W 5 Q R X n|dd
\}}t	
|}d|kr||}t|| W 5 Q R X nfd}| D ]>}t|j|r||}t|| W 5 Q R X d} q<q|sVtd| d| W 5 Q R X d S )N   zPass argv of length 2.zusage: show_pickle PICKLE_FILE
z  PICKLE_FILE can be any of:
z    path to a pickle file
z    file.zip@member.pkl
z    file.zip@*/pattern.*
z'      (shell glob pattern for members)
z'      (only first match will be shown)
r   @rb*FTzCould not find member matching z in )lenr   r?   stderrr   openr   rH   splitzipfileZipFileinfolistfnmatchfilename)	argvZoutput_streamfnamehandleZzfnameZmnamezffoundinfor   r   r   r	   k   s:    __main__)N)r?   rJ   r<   rE   rX   r[   typingr   r   r   r   __all__r   r   rK   r   r	   r%   r$   ZPrettyPrinterZ	_dispatchr   exitr]   r   r   r   r   <module>   s   ",
%