U
    •Ê¹jÖ  ã                   @   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r´e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   úV/var/www/html/bwave/python/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   /   s    zFakeClass.__init__c                 C   s   | j › d| j› �S )Nr   )r   r   )r   r   r   r   r   4   s    zFakeClass.__repr__c                 G   s   t | j| j|ƒS r
   ©r   r   r   ©r   r   r   r   r   Ú__call__7   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_classH   s    zDumpUnpickler.find_classc                 C   s   t dd|fƒS )NZpersr   )r   )r   Úpidr   r   r   Úpersistent_loadK   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_binunicodeT   s    

$zDumpUnpickler.load_binunicoder   c                 C   s   | |ƒ  ¡ }tj||d� |S )N)r    )ÚloadÚpprint)ÚclsZ	in_streamZ
out_streamÚvaluer   r   r   Údumpc   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r¨t|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	   j   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   ",
%