/ lib / psutil / _common.pyc
_common.pyc
  1  o

  2  #��c�q�
  3  @s2dZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
  4  Z
  5  ddlZddlZddl
Z
ddlmZddl	mZddl	mZddl	mZzdd	l	mZWneyadZYnwzdd
  6  l	mZWneyudZYnwejdkr�ddlZndZejddkZee�d
d��Ze�Zgd�ZejdkZejdkZ ej!�"d�Z#ej!�"d�Z$e$Z%ej!�"d�Z&ej!�"d�Z'ej!�"d�Z(e&p�e'p�e(Z)ej!�"d�Z*ej!�"d�Z+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3d Z4d!Z5d"Z6d#Z7d$Z8d%Z9d&Z:d'Z;d(Z<d)Z=d*Z>d+Z?d,Z@d-ZAd.ZBd/ZCd0ZDd1ZEedu�rd2ZFd3ZGdZHnGd4d5�d5ejI�ZJeK��LeJjM�edu�r.d6ZNd7ZOnGd8d9�d9ejI�ZPeK��LePjM�e�Q�ZRe�sHd:ZSnze�T�ZSWneU�y_e�r[d;nd:ZSYnwed<gd=��ZVed>gd?��ZWed@gdA��ZXedBgdC��ZYedDgdE��ZZedFgdG��Z[edHgdI��Z\edJgdK��Z]edLgdM��Z^edNgdO��Z_edPgdQ��Z`edRgdS��ZaedTgdU��ZbedVdWdXg�ZcedYgdZ��Zded[d\d]g�Zeed^gd_��Zfed`gda��Zgedbgda��Zhedcgdd��Ziededfdgg�Zjedhdidjg�Zkedkgdl��Zledmdndog�Zmeeegeegfeegegfegegfeegegfegegfeegeegfegeegfegeegfdp�Znedu�rQen�Legegfegegfdq��edu�rben�Ldregeegfi�Gdsdt�dteo�ZpGdudv�dvep�ZqGdwdx�dxeq�ZrGdydz�dzep�ZsGd{d|�d|ep�Ztd�d}d~�Zudd��Zvd�d��Zwd�d��Zxd�d��Zyevd�d���Zzd�d��Z{d�d��Z|d�d��Z}d�d�d��Z~d�d��ZGd�d��d��Z�d�d��Z�e��Z�e�j�e�_�e�j�e�_�d�Z�d�d��Z�d�d��Z�ee�fd�d��Z�efd�d��Z�d�d�d��Z�d�d��Z�e�r�d�d��Z�nd�d��Z�evej�fd�d���Z�d�d�d��Z�dd�ej�fd�d��Z�d�d��Z�dS)�z9Common objects shared by __init__.py and _ps*.py modules.�)�division)�print_functionN)�
  7  namedtuple)�AF_INET)�
  8  SOCK_DGRAM)�SOCK_STREAM)�AF_INET6)�AF_UNIX)��r
  9  �PSUTIL_DEBUG)R�FREEBSD�BSD�LINUX�NETBSD�OPENBSD�MACOS�OSX�POSIX�SUNOS�WINDOWS�
 10  CONN_CLOSE�CONN_CLOSE_WAIT�CONN_CLOSING�CONN_ESTABLISHED�CONN_FIN_WAIT1�CONN_FIN_WAIT2�
CONN_LAST_ACK�CONN_LISTEN�	CONN_NONE�
CONN_SYN_RECV�
CONN_SYN_SENT�CONN_TIME_WAIT�NIC_DUPLEX_FULL�NIC_DUPLEX_HALF�NIC_DUPLEX_UNKNOWN�STATUS_DEAD�STATUS_DISK_SLEEP�STATUS_IDLE�
STATUS_LOCKED�STATUS_RUNNING�STATUS_SLEEPING�STATUS_STOPPED�STATUS_SUSPENDED�STATUS_TRACING_STOP�STATUS_WAITING�STATUS_WAKE_KILL�
STATUS_WAKING�
STATUS_ZOMBIE�
STATUS_PARKED�ENCODING�
ENCODING_ERRSr�pconn�	pcputimes�pctxsw�pgids�pio�pionice�	popenfile�pthread�puids�sconn�	scpustats�sdiskio�	sdiskpart�
 11  sdiskusage�snetio�snicaddr�	snicstats�sswap�suser�	conn_tmap�deprecated_method�
isfile_strict�memoize�parse_environ_block�path_exists_strict�
usage_percent�
supports_ipv6�sockfam_to_enum�socktype_to_enum�wrap_numbers�	open_text�open_binary�cat�bcat�bytes2human�conn_to_ntuple�debug�hilite�term_supports_colors�print_color�posix�nt�linux�darwin)�freebsdZmidnightbsd�openbsd�netbsd)�sunos�solaris�aix�runningZsleepingz
 12  disk-sleep�stoppedztracing-stop�zombieZdeadz	wake-killZwaking�idle�locked�waiting�	suspendedZparkedZESTABLISHEDZSYN_SENTZSYN_RECVZ	FIN_WAIT1Z	FIN_WAIT2Z	TIME_WAIT�CLOSEZ
 13  CLOSE_WAITZLAST_ACK�LISTENZCLOSING�NONE��c@seZdZdZdZdZdS)�	NicDuplexrrrsrN)�__name__�
 14  __module__�__qualname__r#r$r%�rxrx��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\psutil\_common.pyrt�srt����������c@seZdZdZdZdS)�BatteryTimerzr{N)rurvrw�POWER_TIME_UNKNOWN�POWER_TIME_UNLIMITEDrxrxrxryr|�sr|�replace�surrogateescaperG)�total�used�free�percent�sin�soutrC)r�r�r�r�rA)�
 15  read_count�write_count�
 16  read_bytes�write_bytes�	read_time�
 17  write_timerB)�device�
 18  mountpoint�fstype�opts�maxfile�maxpathrD)�
 19  bytes_sent�
 20  bytes_recv�packets_sent�packets_recv�errin�errout�dropin�dropoutrH)�name�terminal�host�started�pidr?)�fd�family�type�laddr�raddr�statusr�rE)r��address�netmask�	broadcast�ptprF)�isup�duplex�speed�mtu�flagsr@)�ctx_switches�
 21  interrupts�soft_interrupts�syscalls�scpufreq)�current�min�max�shwtemp)�labelr��high�critical�sbattery)r��secsleft�
power_plugged�sfanr�r�r7)�user�system�
children_user�children_systemr<�pathr�r=)�id�	user_timeZsystem_timer>)�real�	effective�savedr9r:)r�r�r�r�r;�ioclass�valuer8Z	voluntaryZinvoluntaryr6)r�r�r�r�r�r��addr�ip�port)�all�tcp�tcp4�udp�udp4�inet�inet4�inet6)�tcp6�udp6�unixc@s,eZdZdZdZdd�Zdd�Zdd�Zd	S)
 22  �ErrorzQBase exception class. All other psutil exceptions inherit
 23      from this one.
 24      �psutilcCsHt��}|D]}t||d�}|r|||<q|dkr!|dkr!|||<q|S)Nr�r)�collections�OrderedDict�getattr)�self�attrs�infor�r�rxrxry�	_infodicts
 25  �zError._infodictcCsP|�d�}|rdd�dd�|��D��}nd}d�dd�t|dd	�|fD��S)
 26  N)r��ppidr�z(%s)�, cS�g|]
 27  \}}d||f�qS�z%s=%rrx��.0�k�vrxrxry�
 28  <listcomp>+�z!Error.__str__.<locals>.<listcomp>� cSsg|]}|r|�qSrxrx)r��xrxrxryr�.s�msg�)r��join�itemsr��r�r��detailsrxrxry�__str__&s
 29  � z
Error.__str__cCs2|�d�}d�dd�|��D��}d|jj|fS)N)r�r�r��secondsr�r�cSr�r�rxr�rxrxryr�3r�z"Error.__repr__.<locals>.<listcomp>z
psutil.%s(%s))r�r�r��	__class__rur�rxrxry�__repr__0s
 30  zError.__repr__N)rurvrw�__doc__r�r�r�rxrxrxryr�s
 31  
 32  r�c@�eZdZdZdZddd�ZdS)�
NoSuchProcesszXException raised when a process with a certain PID doesn't
 33      or no longer exists.
 34      r�NcC�$t�|�||_||_|pd|_dS)Nzprocess no longer exists�r��__init__r�r�r��r�r�r�r�rxrxryr�=�
 35  zNoSuchProcess.__init__�NN�rurvrwr�r�rxrxrxryr�7�r�c@r�)�
ZombieProcessa1Exception raised when querying a zombie process. This is
 36      raised on macOS, BSD and Solaris only, and not always: depending
 37      on the query the OS may be able to succeed anyway.
 38      On Linux all zombie processes are querable (hence this is never
 39      raised). Windows doesn't have zombie processes.
 40      r�NcCs$t�||||�||_|pd|_dS)Nz"PID still exists but it's a zombie)r�r�r�r�)r�r�r�r�r�rxrxryr�MszZombieProcess.__init__�NNNrrxrxrxryrDsrc@r�)�AccessDeniedz@Exception raised when permission to perform an action is denied.r�NcCr�)Nr�r�r�rxrxryr�Wr�zAccessDenied.__init__rrrxrxrxryrSsrc@r�)�TimeoutExpiredzWRaised on Process.wait(timeout) if timeout expires and process
 41      is still alive.
 42      r�NcCs*t�|�||_||_||_d||_dS)Nztimeout after %s seconds)r�r�r�r�r�r�)r�r�r�r�rxrxryr�ds
 43  
 44  zTimeoutExpired.__init__rrrxrxrxryr^rrcCs@z
 45  t|�|d}Wn
 46  tyYdSw|durt||�}|S)z5Calculate percentage usage of 'used' against 'total'.�dgN)�float�ZeroDivisionError�round)r�r��round_�retrxrxryrOqs�
 47  rOcs2t�����fdd��}�fdd�}i�||_|S)aA simple memoize decorator for functions supporting (hashable)
 48      positional arguments.
 49      It also provides a cache_clear() function for clearing the cache:
 50  
 51      >>> @memoize
 52      ... def foo()
 53      ...     return 1
 54          ...
 55      >>> foo()
 56      1
 57      >>> foo.cache_clear()
 58      >>>
 59      csL|tt|����f}z�|WSty%�|i|��}�|<|YSw�N)�	frozenset�sortedr��KeyError)�args�kwargs�keyr��cache�funrxry�wrapper�s
 60  �zmemoize.<locals>.wrappercs���dS)zClear cache.N)�clearrx)rrxry�cache_clear��zmemoize.<locals>.cache_clear)�	functools�wrapsr)rrrrxrryrL}srLcs6t����fdd��}dd�}dd�}||_||_|S)a�A memoize decorator which is disabled by default. It can be
 61      activated and deactivated on request.
 62      For efficiency reasons it can be used only against class methods
 63      accepting no arguments.
 64  
 65      >>> class Foo:
 66      ...     @memoize
 67      ...     def foo()
 68      ...         print(1)
 69      ...
 70      >>> f = Foo()
 71      >>> # deactivated (default)
 72      >>> foo()
 73      1
 74      >>> foo()
 75      1
 76      >>>
 77      >>> # activated
 78      >>> foo.cache_activate(self)
 79      >>> foo()
 80      1
 81      >>> foo()
 82      >>> foo()
 83      >>>
 84      csjz|j�}W|Sty�|�YSty4�|�}z	||j�<WY|Sty3YY|Swwr
)�_cache�AttributeErrorr)r�r�rrxryr�s����z'memoize_when_activated.<locals>.wrappercSs
 85  i|_dS)zjActivate cache. Expects a Process instance. Cache will be
 86          stored as a "_cache" instance attribute.N)r��procrxrxry�cache_activate�s
 87  z.memoize_when_activated.<locals>.cache_activatecSs z|`WdStyYdSw)zDeactivate and clear cache.N)rrr rxrxry�cache_deactivate�s
 88  
 89  �z0memoize_when_activated.<locals>.cache_deactivate)rrr"r#)rrr"r#rxrry�memoize_when_activated�sr$c
 90  CsVzt�|�}Wnty$}z|jtjtjfvr�WYd}~dSd}~wwt�|j�S)z�Same as os.path.isfile() but does not swallow EACCES / EPERM
 91      exceptions, see:
 92      http://mail.python.org/pipermail/python-dev/2012-June/120787.html
 93      NF)�os�stat�OSError�errno�EPERM�EACCES�S_ISREG�st_mode)r��st�errrxrxryrK�s��rKc
 94  CsLzt�|�WdSty%}z|jtjtjfvr�WYd}~dSd}~ww)z�Same as os.path.exists() but does not swallow EACCES / EPERM
 95      exceptions, see:
 96      http://mail.python.org/pipermail/python-dev/2012-June/120787.html
 97      NFT)r%r&r'r(r)r*)r�r.rxrxryrN�s���rNcCsvtjrtdur	dSz&t�ttj�}t�|��|�d�Wd�WdS1s(wYWdStjy:YdSw)z2Return True if IPv6 is supported on this platform.NF)z::1rT)�socket�has_ipv6rr�
 98  contextlib�closing�bind�error)�sockrxrxryrP�s
 99  ���rPcCsxi}d}t}	|�d|�}||kr	|S|�d||�}||kr7|||�}||d|�}|r3|��}|||<|d}q)zCParse a C environ block of environment variables into a dictionary.rT��=rs)r�find�upper)�datar�posZWINDOWS_�next_posZ	equal_posrr�rxrxryrMs"��rMcC�0tdur|Szt�|�WSty|YSw)z�Convert a numeric socket family value to an IntEnum member.
100      If it's not a known member, return the numeric value itself.
101      N)�enumr/�
AddressFamily�
102  ValueError��numrxrxryrQ$��rQcCr=)zConvert a numeric socket type value to an IntEnum member.
103      If it's not a known member, return the numeric value itself.
104      N)r>r/�
105  SocketKindr@rArxrxryrR1rCrRcCs�|tjtfvr|r
t|�}|rt|�}|tjkr%|ttfvr%|�|t�}nt}t|�}t|�}|dur<t	||||||�St
106  |||||||�S)z2Convert a raw connection tuple to a proper ntuple.N)r/rrr�r�getrrQrRr6r?)r��fam�type_r�r�r�Z
107  status_mapr�rxrxryrY>srYcs�fdd�}|S)z�A decorator which can be used to mark a method as deprecated
108      'replcement' is the method name which will be called instead.
109      cs:d|j�f�|jdur�|_t�|���fdd��}|S)Nz8%s() is deprecated and will be removed; use %s() insteadcs$tj�tdd�t|��|i|��S)Nrr)�category�
110  stacklevel)�warnings�warn�DeprecationWarningr�)r�rr)r��replacementrxry�inner[sz/deprecated_method.<locals>.outer.<locals>.inner)rur�rr)rrN�rM)r�ry�outerUs�
111  z deprecated_method.<locals>.outerrx)rMrPrxrOryrJQsrJc@sBeZdZdZdd�Zdd�Zdd�Zdd	�Zddd�Zd
d�Z	d
112  S)�_WrapNumberszNWatches numbers so that they don't overflow and wrap
113      (reset to zero).
114      cCs t��|_i|_i|_i|_dSr
)�	threading�Lock�lockr�	reminders�
reminder_keys�r�rxrxryr�hs
115  
116  z_WrapNumbers.__init__cCsX||jvsJ�||jvsJ�||jvsJ�||j|<t�t�|j|<t�t�|j|<dSr
)rrUrVr��defaultdict�int�set)r��
117  input_dictr�rxrxry�	_add_dictns
118  z_WrapNumbers._add_dictcCs\|j|}t|���t|���}|D]}|j||D]}|j||=q|j||=qdS)z�In case the number of keys changed between calls (e.g. a
119          disk disappears) this removes the entry from self.reminders.
120          N)rrZ�keysrVrU)r�r[r��old_dictZ	gone_keysZgone_key�remkeyrxrxry�_remove_dead_remindersvs
121  �z#_WrapNumbers._remove_dead_remindersc
	Cs||jvr
|�||�|S|�||�|j|}i}|��D]\}||}z||}Wn
ty7|||<Yqwg}tt|��D]3}	||	}
122  ||	}||	f}|
123  |krg|j|||7<|j||�	|�|�
124  |
125  |j||�q@t|�||<q||j|<|S)zkCache dict and sum numbers which overflow and wrap.
126          Return an updated copy of `input_dict`
127          )rr\r`r]r�range�lenrUrV�add�append�tuple)
r�r[r�r^�new_dictrZinput_tupleZ	old_tuple�bits�iZinput_value�	old_valuer_rxrxry�run�s4
128  
129  �
130  z_WrapNumbers.runNcCs�|j�:|dur|j��|j��|j��n|j�|d�|j�|d�|j�|d�Wd�dSWd�dS1s@wYdS)z>Clear the internal cache, optionally only for function 'name'.N)rTrrrUrV�pop)r�r�rxrxryr�s
131  
132  �"�z_WrapNumbers.cache_clearcCs:|j�|j|j|jfWd�S1swYdS)z5Return internal cache dicts as a tuple of 3 elements.N)rTrrUrVrWrxrxry�
133  cache_info�s$�z_WrapNumbers.cache_infor
)
134  rurvrwr�r�r\r`rjrrlrxrxrxryrQcs
135  'rQcCs6tj�t�||�Wd�S1swYdS)z�Given an `input_dict` and a function `name`, adjust the numbers
136      which "wrap" (restart from zero) across different calls by adding
137      "old value" to "new value" and return an updated dict.
138      N)�_wnrTrj)r[r�rxrxryrS�s
139  $�rSi�cCst|dtd�S)N�rb��	buffering)�open�FILE_READ_BUFFER_SIZE)�fnamerxrxryrU��rUcCs\ts	t|dtd�St|dtttd�}zt|_W|Sty"Y|Sty-|���w)z�On Python 3 opens a file in text mode by using fs encoding and
140      a proper en/decoding errors handler.
141      On Python 2 this is just an alias for open(name, 'rt').
142      �rtro)rp�encoding�errors)	�PY3rqrrr4r5�_CHUNK_SIZEr�	Exception�close)rs�fobjrxrxryrT�s����rTc	Cs�|tur||��}|��Wd�S1swYdSz||��
}|��Wd�WS1s3wYWdSttfyG|YSw)z�Read entire file content and return it as a string. File is
143      opened in text mode. If specified, `fallback` is the value
144      returned in case of error, either if the file does not exist or
145      it can't be read().
146      N)�_DEFAULT�read�IOErrorr')rs�fallback�_open�frxrxryrV�s
147  $�
148  (��rVcCst||td�S)z,Same as above but opens file in binary mode.)r�r�)rVrU)rsr�rxrxryrWsrW�%(value).1f%(symbol)scCs�d}i}t|dd��D]\}}d|dd>||<qt|dd��D]}|||kr:t|�||}|t�Sq#|t|d|d�S)z�Used by various scripts. See:
149      http://goo.gl/zeJZl
150  
151      >>> bytes2human(10000)
152      '9.8K'
153      >>> bytes2human(100001221)
154      '95.4M'
155      )	�B�K�M�G�T�P�E�Z�YrsN�
156  r)�symbolr�)�	enumerate�reversedr�locals�dict)�n�format�symbols�prefixrh�sr�r�rxrxryrXs	�rXcCstjdjS)z+Return updated psutil.PROCFS_PATH constant.r�)�sys�modules�PROCFS_PATHrxrxrxry�get_procfs_pathrr�cCs|jttd�S)N)rvrw)�decoder4r5�r�rxrxryr�%rtr�cCs|Sr
rxr�rxrxryr�(scCsXtjdkrdSzddl}|��sJ�|��|�d�dksJ�WdSty+YdSw)Nr_Tr�colorsF)r%r��curses�isatty�	setupterm�tigetnumrz)�filer�rxrxryr\1s
157  ��r\FcCs�t�s|Sg}tddddddddd	d
158  �	}d|d<z||}Wnty/td
t|�����w|�|�|r<|�d�dd�|�|fS)z*Return an highlighted version of 'string'.�32Z91�33Z93�34�35�36�37�30)	�green�red�brown�yellow�blue�violet�	lightblue�grey�darkgrey�29Nz#invalid color %r; choose between %s�1z[%sm%s�;)r\r�rr@�listr]rdr�)r��color�bold�attrr�rxrxryr[@s$�
159  ��
160  
161  r[c	Cst�st||d�dStrtt|||�|d�dSddl}d}|jjj}|jjj}t	ddddd�}||d<z||}Wnt
162  yNtd	|t|�
��f��w|rY|dkrY|d
163  7}|tjur`dnd}	|j|_||	�}
164  ||
165  |�zt||d�W||
166  |�dS||
167  |�w)
z$Print a colorized version of string.�r�rN�rrr�)r�r�r�r�z#invalid color %r; choose between %r�i����i����)r\�printrr[�ctypes�windll�Kernel32�GetStdHandle�SetConsoleTextAttributer�rr@r�r]r��stderr�c_ulong�restype)r�r�r�r�r�Z
DEFAULT_COLORr�r�r�Z	handle_id�handlerxrxryr]Ss6
168  ���
169  r]cCsrtr7ddl}|�|��j�\}}}}}t|t�r)t|ttt	f�r%d|}nd|}t
170  d|||ftjd�dSdS)z@If PSUTIL_DEBUG env var is set, print a debug message to stderr.rNzignoring %szignoring %rzpsutil-debug [%s:%s]> %sr�)
r�inspect�getframeinfo�currentframe�f_back�
171  isinstancerzr'r�EnvironmentErrorr�r�r�)r�r�rs�lineno�	func_name�lines�indexrxrxryrZvs�
172  
173  
174  ��rZr
)r�)NF)�r��
175  __future__rrr�r1r(rr%r/r&r�rRrJrrrrr�ImportErrorr	�version_infor>rx�bool�getenvr�objectr}�__all__r�rr�platform�
176  startswithrrrr
rrrr�AIXr*r+r'r,r.r2r&r0r1r(r)r/r-r3rr!r rrr"rrrrrrr#r$r%�IntEnumrt�globals�update�__members__r}r~r|�getfilesystemencodingr4r5�getfilesystemencodeerrorsrrGrCrArBrDrHr?rErFr@r�r�r�r�r7r<r=r>r9r:r;r8r6r�rIrzr�r�rrrrOrLr$rKrNrPrMrQrRrYrJrQrSrmrrlrrrUrTrVrWrXr�r��stdoutr\r[r]rZrxrxrxry�<module>sh��
177  
178  
179  %
180  	
181  
182  ������	
183  
184  �
185  
186  
187  �
188  �
189  !

190   ?
191  

192  
W	
193  
194  	
195  
196  �#