£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    =_]y                 @   s  d Z ddlZddlZddlZddlZddlm  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 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rze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j1iZ2n~erej$ej%ej(ej)ej*ej+ej3ej-ej,ej-ej&ej4ej5ej'iZ2n:erej$ej%ej(ej)ej*ej+ej,ej-ej&ej4ej5ej'iZ2ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMiZNeO ZPejQZQeRedZSeRedZTeRedZUeRedZVeWdddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4ZXe
d5d6d7d8d9d:d;d<d=d>d?d@gZYe
dAdBdCdDdEdFgZZe
dGdHdIdJdKdLgZ[e[Z\e
dMdBdDdNdOgZ]e
dPdQZ^e
dRdSZ_er^e
dTdUdVdWdXdYdZd[gZ`ne
dTdUdVdWdXgZ`d\d] Zad^d_ Zbd`da ZceSrdbd Zdndcd Zddded_ededf Zfeserdgdh Zgndidh Zgdjdk ZhddldmZiejjZjejkZkejlZlejmZmdndo Zndpdq Zoer$drds Zpdtdu Zqdvdw Zrdxdy Zsdzd{ Zted|d} Zud~d ZvesTer^dd ZwnejwZwdd Zxdd Zyejzdd Z{G dd de|Z}dS )z5FreeBSD, OpenBSD and NetBSD platforms implementation.    N)
namedtuple)defaultdict   )_common)_psposix)_psutil_bsd)_psutil_posix)AccessDenied)	conn_tmap)conn_to_ntuple)FREEBSD)memoize)memoize_when_activated)NETBSD)NoSuchProcess)OPENBSD)usage_percent)ZombieProcess)FileNotFoundError)PermissionError)ProcessLookupError)whichper_cpu_timesproc_num_threadsproc_open_filesproc_num_fds                     	   
                                             )ppidstatusreal_uideffective_uid	saved_uidreal_gideffective_gid	saved_gidttynrcreate_timectx_switches_volctx_switches_unvolread_io_countwrite_io_count	user_timesys_timech_user_timech_sys_timerssvmsmemtextmemdatamemstackcpunumnamesvmemtotalZ	availablepercentusedfreeactiveinactivebufferscachedsharedwired	scputimesusernicesystemidleirqpmemrE   rF   textdatastack	pcputimeschildren_userchildren_systempmmap_groupedz*path rss, private, ref_count, shadow_count	pmmap_extz6addr, perms path rss, private, ref_count, shadow_countsdiskio
read_countwrite_count
read_byteswrite_bytes	read_time
write_timeZ	busy_timec              C   s   t  } | \}}}}}}}}trtddR}	xJ|	D ]B}
|
drVt|
 d d }q2|
dr2t|
 d d }q2W W dQ R X || | }|| | }t|| |dd}t|||||||||||S )	z&System virtual memory as a namedtuple.z/proc/meminforbs   Buffers:r   i   s
   MemShared:N)round_)	cextZvirtual_memr   open
startswithintsplitr   rL   )ZmemrM   rP   rQ   rR   rV   rT   rS   rU   flineZavailrO   rN    rv   @/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psbsd.pyvirtual_memory   s    


"rx   c              C   s4   t  \} }}}}t|| dd}t| |||||S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   )rn   )ro   Zswap_memr   r   sswap)rM   rO   rP   sinsoutrN   rv   rv   rw   swap_memory   s    r|   c              C   s"   t  \} }}}}t| ||||S )z+Return system per-CPU times as a namedtuple)ro   	cpu_timesrW   )rX   rY   rZ   r[   r\   rv   rv   rw   r}      s    r}   c              C   sB   g } x8t  D ],}|\}}}}}t|||||}| | qW | S )z'Return system CPU times as a namedtuple)ro   r   rW   append)retZcpu_trX   rY   rZ   r[   r\   itemrv   rv   rw   r      s    c               C   s.   t  dkrt gS tjr tddt_t gS )z'Return system CPU times as a namedtupler   z&supported only starting from FreeBSD 8T)cpu_count_logicalr}   r   
__called__NotImplementedErrorrv   rv   rv   rw   r      s    
Fc               C   s   t  S )z0Return the number of logical CPUs in the system.)ro   r   rv   rv   rv   rw   r      s    r   c               C   s   t  dkrdS d S )Nr   )r   rv   rv   rv   rw   cpu_count_physical   s    r   c              C   sx   d} t  }|dk	rb|d}|dkrb|d|d  }t|}zt|dpRd} W d|  X | stt dkrtdS | S )z1Return the number of physical CPUs in the system.Nz	</groups>r#   zgroup/children/group/cpur   )	ro   Zcpu_count_physrfindETZ
fromstringlenfindallclearr   )r   sindexrootrv   rv   rw   r      s    



c        	   	   C   s   t rt \} }}}}nttrrt \} }}}}}}tdd.}x&|D ]}|drDt| d }qDW W dQ R X ntrt \} }}}}}}t	
| |||S )z*Return various CPU stats as a named tuple.z
/proc/statrm   s   intrr   N)r   ro   	cpu_statsr   rp   rq   rr   rs   r   r   	scpustats)	ZctxswZintrsZ
soft_intrssyscallsZtrapsZfaultsZforksrt   ru   rv   rv   rw   r     s    

 r   c          	   C   sP   g }t  }x>|D ]6}|\}}}}d }}	t||||||	}
||
 qW |S )zReturn mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906
    N)ro   disk_partitionsr   	sdiskpartr~   )allretlist
partitions	partitiondevice
mountpointfstypeoptsmaxfilemaxpathntuplerv   rv   rw   r   ?  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)namesr   rK   mtuisupduplexspeederrrv   rv   rw   net_if_stats\  s    





r   c          
   C   s&  t rzg }xlt D ]b}yt|| }W n ttfk
r@   wY qX x.|D ]&}t|}|| |tj	|  qHW qW |S | tj
krtd| ddd t
D f t
|  \}}t }trtd}nt }xN|D ]F}|\}	}
}}}}}|
|kr||krt|	|
||||t|}|| qW t|S )z System-wide network connections.z+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |qS rv   )repr).0xrv   rv   rw   
<listcomp>  s    z#net_connections.<locals>.<listcomp>r   )r   pidsProcessconnectionsr   r   listr~   r   sconnr
   
ValueErrorjoinsetr   ro   net_connectionsr   TCP_STATUSESadd)kindr   pidZconsZconnfamiliestypesrawlistr   fdfamtypeladdrraddrr4   ntrv   rv   rw   r   p  s6    



r   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 info.Nr   r   <   )ro   sensors_batteryr   r   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)rN   Zminsleftpower_pluggedsecsleftrv   rv   rw   r     s    r   c           	   C   sz   t t} t }xft|D ]Z}y@t|\}}|dkr8d}d| }| d t|||| W q t	k
rp   Y qX qW | S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore %sZcoretemp)
r   r   r   rangero   Zsensors_cpu_temperaturer~   r   shwtempr   )r   num_cpuscpucurrenthighrK   rv   rv   rw   sensors_temperatures  s    
r   c           
   C   s   g } t  }xt|D ]}yt|\}}W n tk
r@   wY nX |ry t|dd dd }W n ttfk
r   d}Y nX y t|dd dd }W n ttfk
r   d}Y nX | 	t
||| qW | S )zReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
         r   /r   N)r   r   ro   Zcpu_frequencyr   rr   rs   
IndexErrorr   r~   r   scpufreq)r   r   r   r   Zavailable_freqZmin_freqZmax_freqrv   rv   rw   cpu_freq  s$     
 
r   c               C   s   t  S )z:The system boot time expressed in seconds since the epoch.)ro   	boot_timerv   rv   rv   rw   r     s    r   c        	      C   sj   g } t  }xX|D ]P}|\}}}}}|dkr8ts4td}|dkrBqt||pNd|||}| | qW | S )z:Return currently connected users as a list of namedtuples.r   N~)ro   usersr   AssertionErrorr   suserr~   )	r   r   r   rX   ttyhostnameZtstampr   r   rv   rv   rw   r     s    
r   c               C   s@   yt d  W n& tk
r$   dS  tk
r6   dS X dS d S )Nr   FT)r   rK   r   r	   rv   rv   rv   rw   _pid_0_exists  s    r   c              C   s*   t  } tr&d| kr&t r&| dd | S )z7Returns a list of PIDs currently running on the system.r   )ro   r   r   r   insert)r   rv   rv   rw   r     s    r   c             C   s    t | }|s| t kS dS dS )zReturn True if pid exists.TN)r   
pid_existsr   )r   existsrv   rv   rw   r   
  s    

r   c             C   s6   yt | td  }|t jkS  tk
r0   dS X d S )Nr4   F)ro   proc_oneshot_infokinfo_proc_mapSZOMB	Exception)r   strv   rv   rw   	is_zombie  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 n\ tk
rp   t| j| jY n< t	k
r   | jdkrdt
 krt| j| jn  Y nX d S )Nr   )r   r   r   r   _name_ppidr   r   r	   r   r   )selfargskwargs)funrv   rw   wrapper#  s    


z wrap_exceptions.<locals>.wrapper)	functoolswraps)r   r   rv   )r   rw   wrap_exceptions  s    r   c          	   c   st   y
dV  W nd t tfk
rN   t| jr<t| j| j| jnt| j| jY n" tk
rn   t	| j| jY nX dS )z8Same as above, for routines relying on reading /proc fs.N)
r   r   r   r   r   r   r   r   r   r	   )instrv   rv   rw   wrap_exceptions_procfs8  s    

r   c               @   s  e Zd ZdZddddgZdd Z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red"d# Zed$d% ZeZed&d' Zed(d) Zed*d+ Zed,d- ZedOd/d0ZedPd2d3Zed4d5 Zed6d7 Z ed8d9 Z!ed:d; Z"ed<d= Z#e$d>d?Z%e$d>d@Z&dAdB Z'e(redCdD Z)ne'Z)e*redEdF Z+ne'Z+eredGdH Z,edIdJ Z-edKdL Z.edQdMdNZ/d1S )Rr   z1Wrapper class around underlying C implementation.r   r   r   _cachec             C   s   || _ d | _d | _d S )N)r   r   r   )r   r   rv   rv   rw   __init__N  s    zProcess.__init__c             C   s   t | j dS )z+Raise NSP if the process disappeared on us.N)ro   	proc_namer   )r   rv   rv   rw   _assert_aliveS  s    zProcess._assert_alivec             C   s$   t | j}t|ttks t|S )z;Retrieves multiple process info in one shot as a raw tuple.)ro   r   r   r   r   r   )r   r   rv   rv   rw   oneshotY  s    zProcess.oneshotc             C   s   | j |  d S )N)r   cache_activate)r   rv   rv   rw   oneshot_entera  s    zProcess.oneshot_enterc             C   s   | j |  d S )N)r   cache_deactivate)r   rv   rv   rw   oneshot_exitd  s    zProcess.oneshot_exitc             C   s(   |   td  }|d k	r|S t| jS )NrK   )r   r   ro   r   r   )r   rK   rv   rv   rw   rK   g  s    zProcess.namec          	   C   sv   t r| jdkrdS t| jS trR| jdkr0dS t|  td| j S Q R X n |  }|rnt	|d pldS dS d S )Nr    z/proc/%s/exe)
r   r   ro   Zproc_exer   r   osreadlinkcmdliner   )r   r  rv   rv   rw   exel  s    


zProcess.exec          
   C   s   t r| jdkrg S tryt| jS  tk
r } zT|jtjkrt| jr^t	| j| j
| jqt| js|t| j| j
| jqg S n W d d }~X Y qX nt| jS d S )Nr   )r   r   r   ro   Zproc_cmdliner   r   EINVALr   r   r   r   r   r   )r   r   rv   rv   rw   r    s    

zProcess.cmdlinec             C   s   t | jS )N)ro   Zproc_environr   )r   rv   rv   rw   environ  s    zProcess.environc             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tmaprv   rv   rw   terminal  s    zProcess.terminalc             C   s   |   td  | _| jS )Nr3   )r   r   r   )r   rv   rv   rw   r3     s    zProcess.ppidc             C   s.   |   }t|td  |td  |td  S )Nr5   r6   r7   )r   r   puidsr   )r   rawtuplerv   rv   rw   uids  s
    

zProcess.uidsc             C   s.   |   }t|td  |td  |td  S )Nr8   r9   r:   )r   r   pgidsr   )r   r
  rv   rv   rw   gids  s
    

zProcess.gidsc             C   s8   |   }t|td  |td  |td  |td  S )NrA   rB   rC   rD   )r   r   ra   r   )r   r
  rv   rv   rw   r}     s    


zProcess.cpu_timesc             C   s   |   td  S )NrJ   )r   r   )r   rv   rv   rw   cpu_num  s    zProcess.cpu_numc             C   s@   |   }t|td  |td  |td  |td  |td  S )NrE   rF   rG   rH   rI   )r   r]   r   )r   r
  rv   rv   rw   memory_info  s    



zProcess.memory_infoc             C   s   |   td  S )Nr<   )r   r   )r   rv   rv   rw   r<     s    zProcess.create_timec             C   s    t rt| jS t|  S d S )N)HAS_PROC_NUM_THREADSro   r   r   r   threads)r   rv   rv   rw   num_threads  s    zProcess.num_threadsc             C   s$   |   }t|td  |td  S )Nr=   r>   )r   r   pctxswr   )r   r
  rv   rv   rw   num_ctx_switches  s    
zProcess.num_ctx_switchesc             C   sL   t | j}g }x*|D ]"\}}}t|||}|| qW trH|   |S )N)ro   Zproc_threadsr   r   pthreadr~   r   r   )r   r   r   Z	thread_idutimeZstimer   rv   rv   rw   r    s    zProcess.threadsinetc          	   C   s"  |t kr(td|ddd t D f trt | \}}g }t| j}xZ|D ]R}|\}}}	}
}}}|| jksrt||krN|	|krNt|||	|
||t	}|
| qNW |   t|S t | \}}t| j||}g }x:|D ]2}|\}}}	}
}}t|||	|
||t	}|
| qW tr|   |S )Nz+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |qS rv   )r   )r   r   rv   rv   rw   r     s    z'Process.connections.<locals>.<listcomp>)r
   r   r   r   ro   r   r   r   r   r   r~   r   r   Zproc_connectionsr   )r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   rv   rv   rw   r     s6    

zProcess.connectionsNc             C   s   t | j|| jS )N)r   Zwait_pidr   r   )r   timeoutrv   rv   rw   wait  s    zProcess.waitc             C   s   t | jS )N)r   getpriorityr   )r   rv   rv   rw   nice_get  s    zProcess.nice_getc             C   s   t | j|S )N)r   setpriorityr   )r   valuerv   rv   rw   nice_set#  s    zProcess.nice_setc             C   s   |   td  }t|dS )Nr4   ?)r   r   PROC_STATUSESget)r   coderv   rv   rw   r4   '  s    zProcess.statusc             C   s(   |   }t|td  |td  ddS )Nr?   r@   r   )r   r   pior   )r   r
  rv   rv   rw   io_counters-  s    

zProcess.io_countersc             C   s>   t r| jdkrdS tstr*t| jp(dS ttr4dnddS )z)Return process current working directory.r   Nz&supported only starting from FreeBSD 8r   )r   r   r   HAS_PROC_OPEN_FILESro   Zproc_cwdr   r   )r   rv   rv   rw   cwd6  s    zProcess.cwdZmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countc             C   s   t d S )N)r   )r   rv   rv   rw   _not_implementedK  s    zProcess._not_implementedc             C   s   t | j}dd |D S )z8Return files opened by process as a list of namedtuples.c             S   s   g | ]\}}t ||qS rv   )r   	popenfile)r   pathr   rv   rv   rw   r   U  s    z&Process.open_files.<locals>.<listcomp>)ro   r   r   )r   r   rv   rv   rw   
open_filesQ  s    zProcess.open_filesc             C   s   t | j}tr|   |S )z=Return the number of file descriptors opened by this process.)ro   r   r   r   r   )r   r   rv   rv   rw   num_fds\  s    zProcess.num_fdsc             C   s   t | jS )N)ro   Zproc_cpu_affinity_getr   )r   rv   rv   rw   cpu_affinity_getj  s    zProcess.cpu_affinity_getc          
   C   s   t ttt }x$|D ]}||krtd||f qW yt| j| W n\ tk
r } z>|j	t	j
t	jfkrx$|D ]}||krttd||f qtW  W d d }~X Y nX d S )Nz#invalid CPU #%i (choose between %s))tupler   r   r   r   ro   Zproc_cpu_affinity_setr   r   r   r  ZEDEADLK)r   ZcpusZallcpusr   r   rv   rv   rw   cpu_affinity_setn  s    

zProcess.cpu_affinity_setc             C   s   t | jS )N)ro   Zproc_memory_mapsr   )r   rv   rv   rw   memory_maps  s    zProcess.memory_mapsc             C   sP   |d krt | j|S t|dkr2tdt| |\}}t | j|||S d S )Nr   z4second argument must be a (soft, hard) tuple, got %s)ro   Zproc_getrlimitr   r   r   r   Zproc_setrlimit)r   resourceZlimitsZsofthardrv   rv   rw   rlimit  s    zProcess.rlimit)r  )N)N)0__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   rK   r  r  r  r  r3   r  r  r}   r   r  r  Zmemory_full_infor<   r  r  r  r   r  r  r  r4   r$  r&  r   Znt_mmap_groupedZnt_mmap_extr'  r%  r*  HAS_PROC_NUM_FDSr+  r,  r.  r/  r2  rv   rv   rv   rw   r   I  sf   		
!	r   )F)~r6  
contextlibr   r   r  Zxml.etree.ElementTreeetreeZElementTreer   collectionsr   r   r   r   r   r   ro   r   r   r	   r
   r   r   r   r   r   r   r   r   r   _compatr   r   r   r   Z__extra__all__ZSIDLSTATUS_IDLEZSRUNSTATUS_RUNNINGZSSLEEPSTATUS_SLEEPINGZSSTOPSTATUS_STOPPEDr   STATUS_ZOMBIEZSWAITSTATUS_WAITINGZSLOCKSTATUS_LOCKEDr   ZSDEADSTATUS_WAKINGZSONPROCZ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getpagesizeZPAGESIZEZAF_LINKr   ZHAS_PER_CPU_TIMESr  r%  r8  dictr   rL   rW   r]   Zpfullmemra   rd   re   rf   rx   r|   r}   r   r   r   r   r   r   
disk_usageZdisk_io_countersr   Znet_if_addrsr   r   r   r   r   r   r   r   r   r   r   r   contextmanagerr   objectr   rv   rv   rv   rw   <module>   s(  







	
#
(


