<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    =_VD                 @   s  d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ g Ze ZejZejejej ej!ej"ej#ej$ej%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ej0ej1ej2ej3ej4ej5iZ6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@iZAeBddddddddddddZCeBdddddddddZDedd d!d"d#gZEed$d%d&d'd(d)d*d+d,gZFed-d.d/d0d1gZGed2eGjHd3 ZId4d5 ZJd6d7 ZKd8d9 ZLd:d; ZMd<d= ZNd>d? ZOd@dA ZPdBdC ZQe	jRZRejSZSd\dEdFZTdGdH ZUejVZVejWZWd]dJdKZXdLdM ZYdNdO ZZdPdQ Z[dRdS Z\e	j]Z]dTdU Z^dVdW Z_ej`dXdY ZaG dZd[ d[ebZcdS )^zmacOS platform implementation.    N)
namedtuple   )_common)_psposix)_psutil_osx)_psutil_posix)AccessDenied)	conn_tmap)conn_to_ntuple)isfile_strict)memoize_when_activated)NoSuchProcess)parse_environ_block)usage_percent)ZombieProcess)PermissionError)ProcessLookupError                     	   
   )ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins
numthreadsvolctxsw	scputimesusernicesystemidlesvmemtotalZ	availablepercentusedfreeactiveinactivewiredpmemr)   r*   r+   r,   pfullmem)ussc        	   	   C   sT   t  \} }}}}}|| }|| }||8 }t| | | dd}t| |||||||S )z&System virtual memory as a namedtuple.r   )round_)cextZvirtual_memr   r4   )	r5   r9   r:   r;   r8   ZspeculativeZavailr7   r6    rA   @/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psosx.pyvirtual_memoryp   s    rC   c              C   s4   t  \} }}}}t|| dd}t| |||||S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   )r?   )r@   Zswap_memr   r   sswap)r5   r7   r8   sinsoutr6   rA   rA   rB   swap_memory   s    rG   c              C   s   t  \} }}}t| |||S )z(Return system CPU times as a namedtuple.)r@   	cpu_timesr/   )r0   r1   r2   r3   rA   rA   rB   rH      s    rH   c              C   s>   g } x4t  D ](}|\}}}}t||||}| | qW | S )z(Return system CPU times as a named tuple)r@   per_cpu_timesr/   append)retZcpu_tr0   r1   r2   r3   itemrA   rA   rB   rI      s    rI   c               C   s   t  S )z0Return the number of logical CPUs in the system.)r@   cpu_count_logicalrA   rA   rA   rB   rM      s    rM   c               C   s   t  S )z1Return the number of physical CPUs in the system.)r@   Zcpu_count_physrA   rA   rA   rB   cpu_count_physical   s    rN   c              C   s"   t  \} }}}}t| |||S )N)r@   	cpu_statsr   	scpustats)ctx_switches
interruptssoft_interruptssyscallsZtrapsrA   rA   rB   rO      s    rO   c              C   s   t  \} }}t| ||gS )zReturn CPU frequency.
    On macOS per-cpu frequency is not supported.
    Also, the returned frequency never changes, see:
    https://arstechnica.com/civis/viewtopic.php?f=19&t=465002
    )r@   cpu_freqr   scpufreq)currZmin_Zmax_rA   rA   rB   rU      s    rU   Fc          	   C   sz   g }t  }xh|D ]`}|\}}}}|dkr.d}| sLtj|rtj|sLqd }}	t||||||	}
||
 qW |S )z8Return mounted disk partitions as a list of namedtuples.Znone N)	r@   disk_partitionsospathisabsexistsr   	sdiskpartrJ   )allretlist
partitions	partitiondevice
mountpointfstypeoptsmaxfilemaxpathntuplerA   rA   rB   rY      s    
rY   c              C   sb   yt  \} }}W n tk
r&   dS X |dk}|r<tj}n|dkrLtj}n|d }t| ||S )zReturn battery information.Nr   <   )r@   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)r6   Zminsleftpower_pluggedsecsleftrA   rA   rB   rl      s    rl   inetc          	   C   sr   g }xht  D ]^}yt|| }W n tk
r8   wY qX |rx*|D ]"}t||g }|tj|  qDW qW |S )z System-wide network connections.)pidsProcessconnectionsr   listrJ   r   sconn)kindrK   pidZconscrA   rA   rB   net_connections   s    
r|   c              C   s   t   } i }x| D ]}y&t|}t|}t|\}}W n0 tk
rn } z|jtjkr^ W dd}~X Y qX t	t
drt
|}t
||||||< qW |S )z)Get NIC stats (isup, duplex, speed, mtu).N	NicDuplex)net_io_counterskeys
cext_posixZ
net_if_mtuZnet_if_is_runningZnet_if_duplex_speedOSErrorerrnoZENODEVhasattrr   r}   	snicstats)namesrK   r&   mtuisupduplexspeederrrA   rA   rB   net_if_stats  s    





r   c               C   s   t  S )z:The system boot time expressed in seconds since the epoch.)r@   	boot_timerA   rA   rA   rB   r     s    r   c        	      C   s`   g } t  }xN|D ]F}|\}}}}}|dkr.q|s4qt||p@d|pFd||}| | qW | S )z:Return currently connected users as a list of namedtuples.~N)r@   usersr   suserrJ   )	r`   rawlistrL   r0   ttyhostnameZtstamprz   ntrA   rA   rB   r   "  s    
r   c              C   sd   t  } d| kr`ytd  | dd W n2 tk
r@   Y n  tk
r^   | dd Y nX | S )Nr   )r@   rt   ru   create_timeinsertr   r   )ZlsrA   rA   rB   rt   6  s    rt   c             C   s6   yt | td  }|t jkS  tk
r0   dS X d S )Nr%   F)r@   proc_kinfo_oneshotkinfo_proc_mapSZOMB	Exception)rz   strA   rA   rB   	is_zombieI  s
    
r   c                s   t   fdd}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                s   y | f||S  t k
rP   t| jr>t| j| j| jnt| j| jY nH tk
rp   t| j| jY n( t	j
k
r   t| j| j| jY nX d S )N)r   r   rz   r   _name_ppidr   r   r   r@   ZZombieProcessError)selfargskwargs)funrA   rB   wrapperU  s    
z wrap_exceptions.<locals>.wrapper)	functoolswraps)r   r   rA   )r   rB   wrap_exceptionsQ  s    r   c             c   s   y
dV  W n t tfk
r } zpt|ts6|jtjkry|  }W n tk
rZ   |Y qX |tjkrzt	| j
| j| jqt| j
| jn W dd}~X Y nX dS )zThere are some poor C APIs which incorrectly raise ESRCH when
    the process is still alive or it's a zombie, or even RuntimeError
    (those who don't set errno). This is here in order to solve:
    https://github.com/giampaolo/psutil/issues/1044
    N)r   RuntimeError
isinstancer   ZESRCHr%   r   r   STATUS_ZOMBIEr   rz   r   r   r   )procr   r%   rA   rA   rB   catch_zombiee  s    


r   c               @   sl  e Zd ZdZddddgZdd Zeedd	 Zeed
d Z	dd Z
dd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zed d! Zed"d# Zed$d% Zed&d' Zed(d) Zed*d+ Zed,d- Zed.d/ Zed@d1d2Zed3d4 ZedAd6d7Zed8d9 Zed:d; Z ed<d= Z!ed>d? Z"d5S )Bru   z1Wrapper class around underlying C implementation.rz   r   r   _cachec             C   s   || _ d | _d | _d S )N)rz   r   r   )r   rz   rA   rA   rB   __init__  s    zProcess.__init__c             C   s$   t | j}t|ttks t|S )N)r@   r   rz   lenr   AssertionError)r   rK   rA   rA   rB   _get_kinfo_proc  s    zProcess._get_kinfo_procc          	   C   s8   t |  t| j}W d Q R X t|ttks4t|S )N)r   r@   Zproc_pidtaskinfo_oneshotrz   r   pidtaskinfo_mapr   )r   rK   rA   rA   rB   _get_pidtaskinfo  s    
zProcess._get_pidtaskinfoc             C   s   | j |  | j|  d S )N)r   cache_activater   )r   rA   rA   rB   oneshot_enter  s    zProcess.oneshot_enterc             C   s   | j |  | j|  d S )N)r   cache_deactivater   )r   rA   rA   rB   oneshot_exit  s    zProcess.oneshot_exitc             C   s(   |   td  }|d k	r|S t| jS )Nr&   )r   r   r@   Z	proc_namerz   )r   r&   rA   rA   rB   r&     s    zProcess.namec          	   C   s    t |  t| jS Q R X d S )N)r   r@   Zproc_exerz   )r   rA   rA   rB   exe  s    
zProcess.exec          	   C   s    t |  t| jS Q R X d S )N)r   r@   Zproc_cmdlinerz   )r   rA   rA   rB   cmdline  s    
zProcess.cmdlinec          	   C   s$   t |  tt| jS Q R X d S )N)r   r   r@   Zproc_environrz   )r   rA   rA   rB   environ  s    
zProcess.environc             C   s   |   td  | _| jS )Nr   )r   r   r   )r   rA   rA   rB   r     s    zProcess.ppidc          	   C   s    t |  t| jS Q R X d S )N)r   r@   Zproc_cwdrz   )r   rA   rA   rB   cwd  s    
zProcess.cwdc             C   s.   |   }t|td  |td  |td  S )Nr   r   r   )r   r   puidsr   )r   rawtuplerA   rA   rB   uids  s
    

zProcess.uidsc             C   s.   |   }t|td  |td  |td  S )Nr    r!   r"   )r   r   r   r   )r   r   rA   rA   rB   gids  s
    

zProcess.gidsc             C   s:   |   td  }t }y|| S  tk
r4   d S X d S )Nr#   )r   r   r   Zget_terminal_mapKeyError)r   Ztty_nrZtmaprA   rA   rB   terminal  s    zProcess.terminalc             C   s6   |   }t|td  |td  |td  |td  S )Nr)   r*   r+   r,   )r   r<   r   )r   r   rA   rA   rB   memory_info  s    


zProcess.memory_infoc             C   s"   |   }t| j}t||f  S )N)r   r@   Zproc_memory_ussrz   r=   )r   Z	basic_memr>   rA   rA   rB   memory_full_info  s    zProcess.memory_full_infoc             C   s(   |   }t|td  |td  ddS )Nr'   r(   g        )r   r   	pcputimesr   )r   r   rA   rA   rB   rH     s
    

zProcess.cpu_timesc             C   s   |   td  S )Nr$   )r   r   )r   rA   rA   rB   r     s    zProcess.create_timec             C   s   |   td  }t|dS )Nr.   r   )r   r   r   pctxsw)r   ZvolrA   rA   rB   num_ctx_switches  s    zProcess.num_ctx_switchesc             C   s   |   td  S )Nr-   )r   r   )r   rA   rA   rB   num_threads  s    zProcess.num_threadsc          	   C   sf   | j dkrg S g }t|  t| j }W d Q R X x.|D ]&\}}t|r8t||}|| q8W |S )Nr   )rz   r   r@   Zproc_open_filesr   r   	popenfilerJ   )r   filesr   r[   fdri   rA   rA   rB   
open_files  s    

zProcess.open_filesrs   c          	   C   s   |t kr(td|ddd t D f t | \}}t|  t| j||}W d Q R X g }x:|D ]2}|\}}}	}
}}t|||	|
||t}|	| qbW |S )Nz+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |qS rA   )repr).0xrA   rA   rB   
<listcomp>  s    z'Process.connections.<locals>.<listcomp>)
r	   
ValueErrorjoinr   r@   Zproc_connectionsrz   r
   TCP_STATUSESrJ   )r   ry   Zfamiliestypesr   rK   rL   r   famtypeladdrraddrr%   r   rA   rA   rB   rv     s    

zProcess.connectionsc          	   C   s.   | j dkrdS t|  t| j S Q R X d S )Nr   )rz   r   r@   Zproc_num_fds)r   rA   rA   rB   num_fds  s    

zProcess.num_fdsNc             C   s   t | j|| jS )N)r   Zwait_pidrz   r   )r   timeoutrA   rA   rB   wait&  s    zProcess.waitc          	   C   s    t |  t| jS Q R X d S )N)r   r   getpriorityrz   )r   rA   rA   rB   nice_get*  s    
zProcess.nice_getc          	   C   s"   t |  t| j|S Q R X d S )N)r   r   setpriorityrz   )r   valuerA   rA   rB   nice_set/  s    
zProcess.nice_setc             C   s   |   td  }t|dS )Nr%   ?)r   r   PROC_STATUSESget)r   coderA   rA   rB   r%   4  s    zProcess.statusc             C   s@   t | j}g }x*|D ]"\}}}t|||}|| qW |S )N)r@   Zproc_threadsrz   r   pthreadrJ   )r   r   r`   Z	thread_idutimeZstimeri   rA   rA   rB   threads:  s    zProcess.threads)rs   )N)#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   rH   r   r   r   r   rv   r   r   r   r   r%   r   rA   rA   rA   rB   ru     sD   	
	ru   )F)rs   )dr   
contextlibr   r   rZ   collectionsr   rX   r   r   r   r@   r   r   r   r	   r
   r   r   r   r   r   r   _compatr   r   Z__extra__all__ZgetpagesizeZPAGESIZEZAF_LINKZTCPS_ESTABLISHEDCONN_ESTABLISHEDZTCPS_SYN_SENTCONN_SYN_SENTZTCPS_SYN_RECEIVEDCONN_SYN_RECVZTCPS_FIN_WAIT_1CONN_FIN_WAIT1ZTCPS_FIN_WAIT_2CONN_FIN_WAIT2ZTCPS_TIME_WAITCONN_TIME_WAITZTCPS_CLOSED
CONN_CLOSEZTCPS_CLOSE_WAITCONN_CLOSE_WAITZTCPS_LAST_ACKCONN_LAST_ACKZTCPS_LISTENCONN_LISTENZTCPS_CLOSINGCONN_CLOSINGZPSUTIL_CONN_NONE	CONN_NONEr   ZSIDLSTATUS_IDLEZSRUNSTATUS_RUNNINGZSSLEEPSTATUS_SLEEPINGZSSTOPSTATUS_STOPPEDr   r   r   dictr   r   r/   r4   r<   _fieldsr=   rC   rG   rH   rI   rM   rN   rO   rU   
disk_usageZdisk_io_countersrY   rl   r~   Znet_if_addrsr|   r   r   r   rt   Z
pid_existsr   r   contextmanagerr   objectru   rA   rA   rA   rB   <module>   s   



