a
    áªlcûH  ã                   @   sÎ  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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gZe edƒZ!e edƒZ"e edƒ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/iZ0ej1e
j2ej3e
j4ej5e
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
jHiZIeJdddddddd d!ZKed"d#d$gƒZLeLZMed%g d&¢ƒZNed'g d(¢ƒZOd)d*„ ZPd+d,„ ZQd-d.„ ZRd/d0„ ZSd1d2„ ZTd3d4„ ZUd5d6„ ZVejWZWejXZXdKd8d9„ZYejZZZe"r€ej[Z[dLd;d<„Z\d=d>„ Z]d?d@„ Z^dAdB„ Z_dCdD„ Z`dEdF„ ZadGdH„ ZbG dIdJ„ dJecƒZddS )MzAIX platform implementation.é    N)Ú
namedtupleé   )Ú_common)Ú_psposix)Ú_psutil_aix)Ú_psutil_posix)ÚNIC_DUPLEX_FULL)ÚNIC_DUPLEX_HALF)ÚNIC_DUPLEX_UNKNOWN)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Úconn_to_ntuple)Úget_procfs_path)Úmemoize_when_activated)Úusage_percent)ÚPY3)ÚFileNotFoundError)ÚPermissionError)ÚProcessLookupErrorZPROCFS_PATHÚproc_threadsÚnet_io_countersÚproc_io_countersé   é   é   é   é   é   )ÚppidÚrssÚvmsÚcreate_timeÚniceÚnum_threadsÚstatusÚttynrÚpmemr    r!   Ú	scputimes)ÚuserÚsystemÚidleZiowaitÚsvmem)ÚtotalÚ	availableÚpercentÚusedÚfreec                  C   s4   t  ¡ \} }}}}t| | | dd}t| ||||ƒS )Nr   ©Zround_)ÚcextZvirtual_memr   r,   )r-   Zavailr1   ÚpinnedZinuser/   © r5   úI/var/www/html/django/DPS/env/lib/python3.9/site-packages/psutil/_psaix.pyÚvirtual_memoryj   s    r7   c                  C   s:   t  ¡ \} }}}| | }t|| dd}t | |||||¡S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r2   )r3   Zswap_memr   r   Zsswap)r-   r1   ÚsinZsoutr0   r/   r5   r5   r6   Úswap_memoryp   s    r9   c                  C   s   t  ¡ } tdd„ t| Ž D ƒŽ S )z-Return system-wide CPU times as a named tuplec                 S   s   g | ]}t |ƒ‘qS r5   )Úsum©Ú.0Úxr5   r5   r6   Ú
<listcomp>€   ó    zcpu_times.<locals>.<listcomp>)r3   Úper_cpu_timesr(   Úzip©Úretr5   r5   r6   Ú	cpu_times}   s    rD   c                  C   s   t  ¡ } dd„ | D ƒS )z5Return system per-CPU times as a list of named tuplesc                 S   s   g | ]}t |Ž ‘qS r5   )r(   r;   r5   r5   r6   r>   †   r?   z!per_cpu_times.<locals>.<listcomp>)r3   r@   rB   r5   r5   r6   r@   ƒ   s    r@   c                   C   s&   zt  d¡W S  ty    Y dS 0 dS )z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ
ValueErrorr5   r5   r5   r6   Úcpu_count_logical‰   s    rI   c                  C   sr   d} t j| dt jt jd}| ¡ \}}tr@dd„ ||fD ƒ\}}|jdkrZtd| |f ƒ‚| ¡  ¡ }t	|ƒppd S )Nzlsdev -Cc processorT)ÚshellÚstdoutÚstderrc                 S   s   g | ]}|  tjj¡‘qS r5   ©ÚdecodeÚsysrK   Úencodingr;   r5   r5   r6   r>   ˜   s   ÿz#cpu_count_cores.<locals>.<listcomp>r   z%r command error
%s)
Ú
subprocessÚPopenÚPIPEÚcommunicater   Ú
returncodeÚRuntimeErrorÚstripÚ
splitlinesÚlen)ÚcmdÚprK   rL   Z
processorsr5   r5   r6   Úcpu_count_cores’   s    ÿÿ

r\   c                  C   s    t  ¡ \} }}}t | |||¡S )z*Return various CPU stats as a named tuple.)r3   Ú	cpu_statsr   Z	scpustats)Zctx_switchesZ
interruptsZsoft_interruptsZsyscallsr5   r5   r6   r]       s    ÿr]   Fc              	   C   sh   g }t  ¡ }|D ]R}|\}}}}|dkr,d}| s<t|ƒjs<qd }}	t ||||||	¡}
| |
¡ q|S )zReturn system disk partitions.ÚnoneÚ N)r3   Údisk_partitionsÚ
disk_usager-   r   Z	sdiskpartÚappend)ÚallÚretlistZ
partitionsÚ	partitionZdeviceZ
mountpointZfstypeÚoptsZmaxfileZmaxpathÚntupler5   r5   r6   r`   °   s    
ÿr`   éÿÿÿÿc                 C   s¬   t j}| |vr.td| d dd„ |D ƒ¡f ƒ‚t j|  \}}t |¡}g }|D ]X}|\}}	}
}}}}|	|vrnqN|
|vrxqNt||	|
|||t|dkr”|ndd}| |¡ qN|S )zˆReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    z+invalid %r kind argument; choose between %sz, c                 S   s   g | ]}t |ƒ‘qS r5   )Úreprr;   r5   r5   r6   r>   Ù   r?   z#net_connections.<locals>.<listcomp>rh   N©Úpid)	r   Z	conn_tmaprH   Újoinr3   Únet_connectionsr   ÚTCP_STATUSESrb   )ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistrC   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr%   rk   Úntr5   r5   r6   rm   Ò   s&    ÿ
ÿrm   c                  C   sö   t tdœ} tdd„ tƒ D ƒƒ}i }|D ]Ê}t |¡}t |¡}d}d}tjdd|gtj	tj	d}| 
¡ \}	}
tr†d	d„ |	|
fD ƒ\}	}
|jdkr¼t d
|	¡}|dur¼t| d¡ƒ}| d¡}d |¡}d|v }|  |t¡}t |||||¡||< q&|S )z)Get NIC stats (isup, duplex, speed, mtu).)ÚFullZHalfc                 S   s   g | ]}|d  ‘qS )r   r5   r;   r5   r5   r6   r>   í   r?   z net_if_stats.<locals>.<listcomp>r_   r   z/usr/bin/entstatz-d©rK   rL   c                 S   s   g | ]}|  tjj¡‘qS r5   rM   r;   r5   r5   r6   r>   ü   s   ÿz"Running: (\d+) Mbps.*?(\w+) DuplexNr   r   ú,Úrunning)r   r	   ÚsetÚnet_if_addrsÚ
cext_posixZ
net_if_mtuZnet_if_flagsrQ   rR   rS   rT   r   rU   ÚreÚsearchÚintÚgrouprl   Úgetr
   r   Z	snicstats)Z
duplex_mapÚnamesrC   ÚnameZmtuÚflagsZduplexÚspeedr[   rK   rL   Z	re_resultZoutput_flagsZisupr5   r5   r6   Únet_if_statsé   s<    ÿ

ÿÿ

ÿ

rŠ   c                   C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)r3   Ú	boot_timer5   r5   r5   r6   r‹     s    r‹   c                  C   s\   g } t  ¡ }d}|D ]B}|\}}}}}}	|s.q||v r:d}t |||||	¡}
|  |
¡ q| S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú	localhost)r3   Úusersr   Zsuserrb   )rd   rr   rŒ   rs   r)   ÚttyÚhostnameZtstampZuser_processrk   ry   r5   r5   r6   r     s    r   c                   C   s   dd„ t  tƒ ¡D ƒS )z7Returns a list of PIDs currently running on the system.c                 S   s   g | ]}|  ¡ rt|ƒ‘qS r5   )Úisdigitrƒ   r;   r5   r5   r6   r>   0  r?   zpids.<locals>.<listcomp>)rF   Úlistdirr   r5   r5   r5   r6   Úpids.  s    r’   c                 C   s   t j t j tƒ t| ƒd¡¡S )z&Check for the existence of a unix pid.Zpsinfo)rF   ÚpathÚexistsrl   r   Ústrrj   r5   r5   r6   Ú
pid_exists3  s    r–   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )zƒCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c              	      s~   zˆ | g|¢R i |¤ŽW S  t tfyZ   t| jƒsDt| j| jƒ‚nt| j| j| jƒ‚Y n  tyx   t	| j| jƒ‚Y n0 d S ©N)
r   r   r–   rk   r   Ú_namer   Ú_ppidr   r   )ÚselfÚargsÚkwargs©Úfunr5   r6   Úwrapper<  s    
z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rž   rŸ   r5   r   r6   Úwrap_exceptions8  s    r¢   c                   @   sr  e Zd ZdZg d¢Zdd„ Zdd„ Zdd„ Zee	d	d
„ ƒƒZ
e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r¤edd„ ƒZed=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Zed0d1„ ƒZd2d3„ Z ed4d5„ ƒZ!ed6d7„ ƒZ"ed>d9d:„ƒZ#e$rned;d<„ ƒZ%d8S )?ÚProcessz1Wrapper class around underlying C implementation.)rk   r˜   r™   Ú_procfs_pathÚ_cachec                 C   s   || _ d | _d | _tƒ | _d S r—   )rk   r˜   r™   r   r¤   )rš   rk   r5   r5   r6   Ú__init__R  s    zProcess.__init__c                 C   s   | j  | ¡ | j | ¡ d S r—   )Ú_proc_basic_infoZcache_activateÚ
_proc_cred©rš   r5   r5   r6   Úoneshot_enterX  s    zProcess.oneshot_enterc                 C   s   | j  | ¡ | j | ¡ d S r—   )r§   Zcache_deactivater¨   r©   r5   r5   r6   Úoneshot_exit\  s    zProcess.oneshot_exitc                 C   s   t  | j| j¡S r—   )r3   Zproc_basic_infork   r¤   r©   r5   r5   r6   r§   `  s    zProcess._proc_basic_infoc                 C   s   t  | j| j¡S r—   )r3   Z	proc_credrk   r¤   r©   r5   r5   r6   r¨   e  s    zProcess._proc_credc                 C   s$   | j dkrdS t | j | j¡ d¡S )Nr   Zswapperú )rk   r3   Z	proc_namer¤   Úrstripr©   r5   r5   r6   r‡   j  s    
zProcess.namec                 C   sÒ   |   ¡ }|sdS |d }tjj|v r€tj |¡sJtj tj |  ¡ |¡¡}tj |¡rttj |¡rtt 	|tj
¡rt|S tj |¡}tjd  d¡D ]<}tj tj ||¡¡}tj |¡rt 	|tj
¡r|  S qdS )Nr_   r   ÚPATHú:)ÚcmdlinerF   r“   ÚsepÚisabsÚabspathrl   ÚcwdÚisfileÚaccessÚX_OKÚbasenameÚenvironÚsplit)rš   r°   Úexer“   Zpossible_exer5   r5   r6   r»   q  s*    
ÿþÿ
zProcess.exec                 C   s   t  | j¡S r—   )r3   Z	proc_argsrk   r©   r5   r5   r6   r°   Œ  s    zProcess.cmdlinec                 C   s   t  | j¡S r—   )r3   Zproc_environrk   r©   r5   r5   r6   r¹     s    zProcess.environc                 C   s   |   ¡ td  S )Nr"   ©r§   Úproc_info_mapr©   r5   r5   r6   r"   ”  s    zProcess.create_timec                 C   s   |   ¡ td  S )Nr$   r¼   r©   r5   r5   r6   r$   ˜  s    zProcess.num_threadsc                 C   sV   t  | j¡}g }|D ]"\}}}t |||¡}| |¡ q|sRt d| j| jf ¡ |S )Nú%s/%s)	r3   r   rk   r   Zpthreadrb   rF   Ústatr¤   )rš   rr   rd   Ú	thread_idÚutimeZstimerg   r5   r5   r6   Úthreads  s    zProcess.threadsÚinetc                 C   s,   t || jd}|s(t d| j| jf ¡ |S )N)rp   r¾   )rm   rk   rF   r¿   r¤   )rš   ro   rC   r5   r5   r6   Úconnections®  s    zProcess.connectionsc                 C   s   t  | j¡S r—   )r€   Úgetpriorityrk   r©   r5   r5   r6   Únice_get»  s    zProcess.nice_getc                 C   s   t  | j|¡S r—   )r€   Úsetpriorityrk   )rš   Úvaluer5   r5   r6   Únice_set¿  s    zProcess.nice_setc                 C   s   |   ¡ td  | _| jS )Nr   )r§   r½   r™   r©   r5   r5   r6   r   Ã  s    zProcess.ppidc                 C   s"   |   ¡ \}}}}}}t |||¡S r—   ©r¨   r   Zpuids)rš   ÚrealÚ	effectiveÚsavedÚ_r5   r5   r6   ÚuidsÈ  s    zProcess.uidsc                 C   s"   |   ¡ \}}}}}}t |||¡S r—   rÊ   )rš   rÎ   rË   rÌ   rÍ   r5   r5   r6   ÚgidsÍ  s    zProcess.gidsc                 C   s   t  | j| j¡}tj|Ž S r—   )r3   Zproc_cpu_timesrk   r¤   r   Z	pcputimes)rš   rD   r5   r5   r6   rD   Ò  s    zProcess.cpu_timesc                 C   sP   |   ¡ td  }|d@ d? |d@ B }t d¡D ]}t |¡j|kr.|  S q.d S )Nr&   l       ü é   iÿÿ  z	/dev/**/*)r§   r½   ÚglobrF   r¿   Úst_rdev)rš   ZttydevÚdevr5   r5   r6   Úterminal×  s    
zProcess.terminalc                 C   sT   | j }z t d|| jf ¡}| d¡W S  tyN   t d|| jf ¡ Y d S 0 d S )Nz	%s/%s/cwdú/r¾   )r¤   rF   Úreadlinkrk   r­   r   r¿   )rš   Zprocfs_pathÚresultr5   r5   r6   r´   â  s    zProcess.cwdc                 C   s2   |   ¡ }|td  d }|td  d }t||ƒS )Nr    i   r!   )r§   r½   r'   )rš   rC   r    r!   r5   r5   r6   Úmemory_infoì  s    zProcess.memory_infoc                 C   s   |   ¡ td  }t |d¡S )Nr%   ú?)r§   r½   ÚPROC_STATUSESr…   )rš   Úcoder5   r5   r6   r%   õ  s    zProcess.statusc                 C   sÄ   t jddt| jƒgt jt jd}| ¡ \}}trFdd„ ||fD ƒ\}}d| ¡ v r`t| j| j	ƒ‚t
 d|¡}g }|D ]J\}}| ¡ }| d¡rš|d	d … }| ¡ d
kr¨qt| t |t|ƒ¡¡ qt|S )Nz/usr/bin/procfilesz-nr{   c                 S   s   g | ]}|  tjj¡‘qS r5   rM   r;   r5   r5   r6   r>     s   ÿz&Process.open_files.<locals>.<listcomp>zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//r   zcannot be retrieved)rQ   rR   r•   rk   rS   rT   r   Úlowerr   r˜   r   ÚfindallrW   Ú
startswithrb   r   Z	popenfilerƒ   )rš   r[   rK   rL   Z	procfilesrd   rt   r“   r5   r5   r6   Ú
open_filesû  s(    ÿÿ

zProcess.open_filesc                 C   s(   | j dkrdS tt d| j| j f ¡ƒS )Nr   z%s/%s/fd)rk   rY   rF   r‘   r¤   r©   r5   r5   r6   Únum_fds  s    
zProcess.num_fdsc                 C   s   t jt | j¡Ž S r—   )r   Zpctxswr3   Zproc_num_ctx_switchesrk   r©   r5   r5   r6   Únum_ctx_switches  s    
ÿzProcess.num_ctx_switchesNc                 C   s   t  | j|| j¡S r—   )r   Zwait_pidrk   r˜   )rš   Útimeoutr5   r5   r6   Úwait  s    zProcess.waitc                 C   sV   zt  | j¡\}}}}W n, tyD   t| jƒs>t| j| jƒ‚‚ Y n0 t ||||¡S r—   )	r3   r   rk   ÚOSErrorr–   r   r˜   r   Zpio)rš   ÚrcÚwcÚrbÚwbr5   r5   r6   Úio_counters!  s    
zProcess.io_counters)rÃ   )N)&Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r¦   rª   r«   r¢   r   r§   r¨   r‡   r»   r°   r¹   r"   r$   ÚHAS_THREADSrÂ   rÄ   rÆ   rÉ   r   rÏ   rÐ   rD   rÕ   r´   rÙ   Zmemory_full_infor%   rà   rá   râ   rä   ÚHAS_PROC_IO_COUNTERSrê   r5   r5   r5   r6   r£   M  sv   















	



r£   )F)rh   )erî   r    rÒ   rF   r   rQ   rO   Úcollectionsr   r_   r   r   r   r3   r   r€   r   r	   r
   r   r   r   r   r   r   r   Z_compatr   r   r   r   Z__extra__all__Úhasattrrð   ZHAS_NET_IO_COUNTERSrñ   ZgetpagesizeZ	PAGE_SIZEZAF_LINKZSIDLZSTATUS_IDLEZSZOMBZSTATUS_ZOMBIEZSACTIVEZSTATUS_RUNNINGZSSWAPZSSTOPZSTATUS_STOPPEDrÛ   ZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZTCPS_SYN_SENTZCONN_SYN_SENTZTCPS_SYN_RCVDZCONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZTCPS_LAST_ACKZCONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONErn   Údictr½   r'   Zpfullmemr(   r,   r7   r9   rD   r@   rI   r\   r]   Zdisk_io_countersra   r`   r   r   rm   rŠ   r‹   r   r’   r–   r¢   Úobjectr£   r5   r5   r5   r6   Ú<module>   sª   


û	ôø	

(