o
    ¡…›iS  ã                   @   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
edB fdd„Zedkr\	 e
jejje
j< e  ee jƒ¡ dS dS )é    N)ÚAnyÚIO)Ú
FakeObjectÚ	FakeClassÚDumpUnpicklerÚmainc                   @   s:   e Zd Zddd„Zdefdd„Zdd„ Zedd	d
„ƒZdS )r   ÚreturnNc                 C   s   || _ || _|| _d | _d S ©N)ÚmoduleÚnameÚargsÚstate)Úselfr
   r   r   © r   úY/sda-disk/www/egybert/egybert_env/lib/python3.10/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   Ú	state_strr   r   r   Ú__repr__   s   zFakeObject.__repr__c                 C   s
   || _ d S r	   )r   )r   r   r   r   r   Ú__setstate__   ó   
zFakeObject.__setstate__c              	   C   sÒ   |j s|jd u r| t|ƒ¡ d S |jd u r3| |j› d|j› ¡ |  |j ||d |d ||¡ d S |j se| |j› d|j› d¡ || j7 }| d| ¡ |  |j|||d ||d ¡ | d¡ d S tdƒ‚)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_format©r   N)	Ú__name__Ú
__module__Ú__qualname__r   Ústrr   r   Ústaticmethodr'   r   r   r   r   r      s    
r   c                   @   s4   e Zd Zddd„Zdefdd„Zdd„ Zd	d
„ ZdS )r   r   Nc                 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   r1   r2   r   r   r   r.   ;   s   zFakeClass.fake_newr(   )r)   r*   r+   r   r,   r   r3   r.   r   r   r   r   r   /   s
    
r   c                       sf   e Zd Zddœ	d‡ fdd„Zdd„ Zd	d
„ Zeejj	ƒZ	ddd„Z
e
e	ejd < edd„ ƒZ‡  ZS )r   F)Úcatch_invalid_utf8r   Nc                   s   t ƒ j|fi |¤Ž || _d S r	   )Úsuperr   r4   )r   Úfiler4   Úkwargs©Ú	__class__r   r   r   @   s   
zDumpUnpickler.__init__c                 C   s
   t ||ƒS r	   )r   r0   r   r   r   Ú
find_classI   r   zDumpUnpickler.find_classc                 C   s   t dd|fƒS )NÚ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s,‚ t	ddt|ƒfƒ}W Y d }~nd }~ww |  
|¡ d S )Nz<Ié   zString too long.zutf-8ÚsurrogatepassÚbuiltinÚUnicodeDecodeError)ÚstructÚunpackÚreadÚsysÚmaxsizer   r,   rA   r4   r   Úappend)r   ÚstrlenÚ	str_bytesr!   Úexnr   r   r   Úload_binunicodeU   s   

€ýzDumpUnpickler.load_binunicoder   c                 C   s   | |ƒ  ¡ }tj||d |S )N)r"   )ÚloadÚpprint)ÚclsÚ	in_streamÚ
out_streamÚvaluer   r   r   Údumpd   s   zDumpUnpickler.dumpr(   )r)   r*   r+   r   r:   r=   ÚdictÚpickleÚ
_UnpicklerÚdispatchrK   Ú
BINUNICODEÚclassmethodrR   Ú__classcell__r   r   r8   r   r   ?   s    üû	
r   r   c           	   
   C   sÆ  t | ƒdkr:|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   ƒ d S 1 sYw   Y  d S | dd
¡\}}t	 
|¡l}d|vrŽ| |¡}t ||¡ W d   ƒ n1 sˆw   Y  n;d}| ¡ D ](}t |j|¡r¼| |¡}t ||¡ W d   ƒ n1 s³w   Y  d} nq”|sÑtd|› d|› ƒ‚W d   ƒ d S W d   ƒ d S 1 sÜw   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   rE   Ústderrr   Úopenr   rR   ÚsplitÚzipfileÚZipFileÚinfolistÚfnmatchÚfilename)	ÚargvÚoutput_streamÚfnameÚhandleÚzfnameÚmnameÚzfÚfoundÚinfor   r   r   r   k   sL   "ÿÿ€ÿü€ó"ôr   Ú__main__Tr	   )rE   rT   rB   rM   rb   re   Útypingr   r   Ú__all__r   r   rU   r   Úintr   r)   r'   ÚPrettyPrinterÚ	_dispatchr   Úexitrg   r   r   r   r   Ú<module>   s"   ",%ù