a
    ¢º”h  ã                   @   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 g d¢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)Ú
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   úE/var/www/auris/lib/python3.9/site-packages/torch/utils/show_pickle.pyÚ__init__   s    zFakeObject.__init__c                 C   s8   | j d u 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 u r"| t|ƒ¡ d S |jd u 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
   Ú_formatÚ_indent_per_levelÚ	Exception)ÚprinterÚobjÚstreamÚindentÚ	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
   r   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   r   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i |¤Ž || _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y~ } z&| jsX‚ t	ddt|ƒfƒ}W Y d }~n
d }~0 0 |  
|¡ 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   ü	r   c           	   
   C   sÂ  t | ƒdkrt|d u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|vr¾t|dƒ}t ||¡ W d   ƒ n1 s°0    Y  n | dd
¡\}}t	 
|¡Ô}d|vr| |¡}t ||¡ W d   ƒ n1 s0    Y  n€d}| ¡ D ]X}t |j|¡r*| |¡}t ||¡ W d   ƒ n1 sl0    Y  d} q„q*|sžtd|› d|› ƒ‚W d   ƒ n1 s´0    Y  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:    .
.,
r   Ú__main__)N)r?   rJ   r<   rE   rX   r[   Útypingr   r   Ú__all__r   r   rK   r   r   r%   r$   ÚPrettyPrinterÚ	_dispatchr   Úexitr]   r   r   r   r   Ú<module>   s   ",
%