B
    *d:                 @   sX  d Z 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Zddddddd	d
ddddddddddgZej	d dkZ
e Ze
reZeZeZeZeZdd	 Zdd
 Zn eZeZeZeZdd	 Zdd
 Ze
reZneZeedfddZe
reZeZeZeZeZeZnddlZefddZ e e!dd Ze e!dd Ze e!d d Ze e!d!d Ze e!d"d Ze e!d#d Ze" d$krye#ej$d%W n2 ek
r   Y n e#k
r   e%d&Y nX ydd'lm&Z& W n e'k
rt   ydd(l(m)Z) W n" e'k
r   dd(l*m)Z) Y nX e+d)d*d+d,d-gZ,G d.d/ d/e-Z.efe/eee0e1dfe2e3e1e4fd0d1Z5d?d4dZ&Y nX ydd5l6m7Z7 W n, e'k
r   ej8ej9B dfd6dZ7Y nX ydd7l6m:Z: W n  e'k
r   d@d9dZ:Y nX ydd:l;m<Z= W n& e'k
r   G d;d< d<eZ=Y nX ydd=lm>Z> W n$ e'k
rR   ej?d>d Z>Y nX dS )AzModule which provides compatibility with older Python versions.
This is more future-compatible rather than the opposite (prefer latest
Python 3 way of doing things).
    NPY3longrangesuperunicode
basestringub	lru_cachewhichget_terminal_sizeredirect_stderrFileNotFoundErrorPermissionErrorProcessLookupErrorInterruptedErrorChildProcessErrorFileExistsError   c             C   s   | S )N )sr   r   [/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/psutil/_compat.pyr   /   s    c             C   s
   |  dS )Nzlatin-1)encode)r   r   r   r   r	   2   s    c             C   s
   t | dS )NZunicode_escape)r   )r   r   r   r   r   :   s    c             C   s   | S )Nr   )r   r   r   r   r	   =   s       c             C   sh  | t krLt|}y|j|jjd  }W n  ttfk
rJ   tdY nX y
|j	}W nB t
tfk
r   y|jj	}W n t
k
r   tdY nX Y nX x|D ]} x| j D ]}yXxRt|tjst|tr|j}qy
|j}W q t
k
r   ||| }Y qX qW W n t
tfk
r(   wY nX |j|jkrP qW qP qW td|t k	r`t| |S t| S )zuLike Python 3 builtin super(). If called without any arguments
        it attempts to infer them at runtime.
        r   z'super() used in a function with no argsz$super() used in a non-newstyle classzsuper() called outside a method)	_SENTINELsys	_getframef_localsf_codeco_varnames
IndexErrorKeyErrorRuntimeError__mro__AttributeError	__class____dict__values
isinstancetypesFunctionTypepropertyfget__func____get__	TypeError	func_code_builtin_super)type_Ztype_or_objZ
framedepthfmromethr   r   r   r   L   sB    







c                s    fdd}|S )Nc                s*   G  fddd j  _ j _ S )Nc                   s2   e Zd Z fddZG fdddeZ  ZS )zE_instance_checking_exception.<locals>.wrapped.<locals>.TemporaryClassc                sh   t |dkrRt|d  rR|d }x@t|D ] }|ds,t| |t|| q,W nt | j|| d S )Nr   r   __)lenr(   dir
startswithsetattrgetattrr   __init__)selfargskwargsZ	unwrap_meattr)TemporaryClassr%   r   r   r<      s    
zN_instance_checking_exception.<locals>.wrapped.<locals>.TemporaryClass.__init__c                   s    e Zd Z fddZdd ZdS )zS_instance_checking_exception.<locals>.wrapped.<locals>.TemporaryClass.__metaclass__c                s    |S )Nr   )clsinst)instance_checkerr   r   __instancecheck__   s    ze_instance_checking_exception.<locals>.wrapped.<locals>.TemporaryClass.__metaclass__.__instancecheck__c             S   s   t  d }t|| S )Nr   )r   exc_infor(   )rB   Z	classinfovaluer   r   r   __subclasscheck__   s    ze_instance_checking_exception.<locals>.wrapped.<locals>.TemporaryClass.__metaclass__.__subclasscheck__N)__name__
__module____qualname__rE   rH   r   )rD   r   r   __metaclass__   s   rL   )rI   rJ   rK   r<   typerL   __classcell__r   )rA   rD   )r%   r   rA      s   	rA   )rI   __doc__)rD   )base_exception)rA   rD   r   wrapped   s    z-_instance_checking_exception.<locals>.wrappedr   )rP   rQ   r   )rP   r   _instance_checking_exception   s    rR   c             C   s   t | dttjkS )Nerrno)r;   r   rS   ENOENT)rC   r   r   r   r      s    c             C   s   t | dttjkS )NrS   )r;   r   rS   ZESRCH)rC   r   r   r   r      s    c             C   s   t | dttjtjfkS )NrS   )r;   r   rS   EACCESEPERM)rC   r   r   r   r      s    
c             C   s   t | dttjkS )NrS   )r;   r   rS   ZEINTR)rC   r   r   r   r      s    c             C   s   t | dttjkS )NrS   )r;   r   rS   ZECHILD)rC   r   r   r   r      s    c             C   s   t | dttjkS )NrS   )r;   r   rS   EEXIST)rC   r   r   r   r      s    CPythonZpermzbbroken or incompatible Python implementation, see: https://github.com/giampaolo/psutil/issues/1659)r
   )RLock	CacheInfohitsmissesmaxsizecurrsizec               @   s$   e Zd ZdZefddZdd ZdS )
_HashedSeq	hashvaluec             C   s   || d d < ||| _ d S )N)r`   )r=   tuphashr   r   r   r<      s    z_HashedSeq.__init__c             C   s   | j S )N)r`   )r=   r   r   r   __hash__   s    z_HashedSeq.__hash__N)rI   rJ   rK   	__slots__rb   r<   rc   r   r   r   r   r_      s   r_   c	                s   | }	|r2||  }
|	|7 }	x|
D ]}|	|7 }	q"W |rp|	| fdd| D 7 }	|r|	| fdd|
D 7 }	n$||	dkr |	d |kr|	d S t|	S )Nc             3   s   | ]} |V  qd S )Nr   ).0v)rM   r   r   	<genexpr>   s    z_make_key.<locals>.<genexpr>c             3   s   | ]\}} |V  qd S )Nr   )re   krf   )rM   r   r   rg      s    r   r   )itemsr_   )r>   kwdstypedkwd_mark	fasttypessortedtuplerM   r7   keysorted_itemsitemr   )rM   r   	_make_key   s    
rs   d   Fc                s    fdd}|S )z~Least-recently-used cache decorator, see:
        http://docs.python.org/3/library/functools.html#functools.lru_cache
        c                s  i ddgd\ t 
jtt 	g d d gd d < gd\dkrlfdd}nPd kr 
f	dd}n* 	
fdd} 	fdd	}	fd
d}|_||_||_t|S )Nr   )r   r   )r   r      r   c                 s   | |}   d7  < |S )Nr   r   )r>   rj   result)MISSESstatsuser_functionr   r   wrapper  s    
z7lru_cache.<locals>.decorating_function.<locals>.wrapperc                 sX   | |}|}|k	r2   d7  < |S | |}||<   d7  < |S )Nr   r   )r>   rj   rp   rv   )	HITSrw   cache	cache_getmake_keyrootrx   rk   ry   r   r   rz     s    

c                 sl  |sr
| |}n| }	   zr|}|d k	r\}|\}}}}||< ||< | }| |< |< ||< ||<    d7  < |S W d 	  X | |}	   z\}|krnkr|}	||	< ||	< |	  }d< | }
d  |< |< |
= |	|< n,| }||||g}| |<  |< |<   d7  < W d 	  X |S )Nr   r   )acquirerelease)r>   rj   rp   linkr   Z	link_prevZ	link_nextrv   lastZoldrootZoldkey)r{   KEYrw   NEXTPREVRESULT_lenr|   r}   lockr~   r]   nonlocal_rootrx   rk   ry   r   r   rz     sN    



c                  s2      zt   tS   X dS )zReport cache statisticsN)r   
_CacheInfor7   r   r   )r{   rw   r|   r   r]   rx   r   r   
cache_infoJ  s
    
z:lru_cache.<locals>.decorating_function.<locals>.cache_infoc                 sP      z8   d } | | ddg| dd< ddgdd< W d  X dS )z$Clear the cache and cache statisticsr   N)r   clearr   )r   )r|   r   r   rx   r   r   cache_clearS  s    z;lru_cache.<locals>.decorating_function.<locals>.cache_clear)	rs   getr7   rY   __wrapped__r   r   	functoolsupdate_wrapper)ry   rz   r   r   )r]   rk   )r{   r   rw   r   r   r   r   r|   r}   r   r~   r   r   rx   ry   r   decorating_function   s,    *-	z&lru_cache.<locals>.decorating_functionr   )r]   rk   r   r   )r]   rk   r   r
      s    c)r   c                s"  dd }t j r&| |r" S dS |dkr>t jdt j}|sFdS |t j}tj	dkrt j
|krt|dt j
 t jddt j}t fd	d
|D r g}q fdd|D }n g}t }xT|D ]L}t j|}||kr|| x(|D ] }	t j||	}
||
|r|
S qW qW dS )aJ  Given a command, mode, and a PATH string, return the path which
        conforms to the given mode on the PATH, or None if there is no such
        file.

        `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
        of os.environ.get("PATH"), or can be overridden with a custom search
        path.
        c             S   s&   t j| o$t | |o$t j|  S )N)ospathexistsaccessisdir)fnmoder   r   r   _access_checks  s    zwhich.<locals>._access_checkNPATHwin32r   PATHEXT c             3   s    | ]}   |  V  qd S )N)lowerendswith)re   ext)cmdr   r   rg     s    zwhich.<locals>.<genexpr>c                s   g | ]} | qS r   r   )re   r   )r   r   r   
<listcomp>  s    zwhich.<locals>.<listcomp>)r   r   dirnameenvironr   defpathsplitpathsepr   platformcurdirinsertanysetnormcaseaddjoin)r   r   r   r   pathextfilesseenr8   normdirthefilenamer   )r   r   r   j  s8    	






)r   P      c             C   st   ydd l }dd l}dd l}W n tk
r0   | S X y(|d|d|jd}|d |d fS  tk
rn   | S X d S )Nr   hhr   1234)fcntlstructtermiosImportErrorunpackZioctl
TIOCGWINSZ	Exception)fallbackr   r   r   resr   r   r   r     s    )TimeoutExpiredc               @   s   e Zd ZdS )SubprocessTimeoutExpiredN)rI   rJ   rK   r   r   r   r   r     s   r   )r   c             c   s$   t j}z| t _| V  W d |t _X d S )N)r   stderr)
new_targetoriginalr   r   r   r     s
    
)rt   F)r   )@rO   collections
contextlibrS   r   r   r   r)   __all__version_infor   objectr   intr   r   xrangestrr   r   r   r	   r   r1   r   r   r   r   r   r   r   r   rR   EnvironmentErrorpython_implementationOSErrorrW   r"   r
   r   	threadingrY   Zdummy_threading
namedtupler   listr_   r   	frozensetrM   rn   ro   r7   rs   shutilr   F_OKX_OKr   
subprocessr   r   r   contextmanagerr   r   r   r   <module>   s   



8
k1