a
    QýIhLG  ã                   @   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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Z+ej,e
j-ej.e
j/ej0e
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
jCiZDeEdddddddddZFeddd gƒZGeGZHed!g d"¢ƒZIed#g d$¢ƒZJd%d&„ ZKd'd(„ ZLd)d*„ ZMd+d,„ ZNd-d.„ ZOd/d0„ ZPd1d2„ ZQejRZRejSZSdGd4d5„ZTejUZUerPejVZVdHd7d8„ZWd9d:„ ZXd;d<„ ZYd=d>„ ZZd?d@„ Z[dAdB„ Z\dCdD„ Z]G dEdF„ dFƒZ^dS )Iz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_percentZ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availr-   Z_pinnedZinuser+   © r0   úG/var/www/html/venv_bot_3.9/lib/python3.9/site-packages/psutil/_psaix.pyÚvirtual_memoryg   s    r2   c                  C   s:   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   Zsswap)r)   r-   ÚsinZsoutr,   r+   r0   r0   r1   Úswap_memorym   s    r4   c                  C   s   t  ¡ } tdd„ t| Ž D ƒŽ S )z.Return system-wide CPU times as a named tuple.c                 S   s   g | ]}t |ƒ‘qS r0   )Úsum©Ú.0Úxr0   r0   r1   Ú
<listcomp>}   ó    zcpu_times.<locals>.<listcomp>)r/   Úper_cpu_timesr$   Úzip©Úretr0   r0   r1   Ú	cpu_timesz   s    r?   c                  C   s   t  ¡ } dd„ | D ƒS )z6Return system per-CPU times as a list of named tuples.c                 S   s   g | ]}t |Ž ‘qS r0   )r$   r6   r0   r0   r1   r9   ƒ   r:   z!per_cpu_times.<locals>.<listcomp>)r/   r;   r=   r0   r0   r1   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Ú
ValueErrorr0   r0   r0   r1   Úcpu_count_logical†   s    rD   c                  C   sv   g d¢} t j| t jt jd}| ¡ \}}dd„ ||fD ƒ\}}|jdkr^| ›d|› }t|ƒ‚| ¡  ¡ }t|ƒptd S )N)Zlsdevz-CcÚ	processor©ÚstdoutÚstderrc                 s   s   | ]}|  tjj¡V  qd S ©N©ÚdecodeÚsysrG   Úencodingr6   r0   r0   r1   Ú	<genexpr>“   r:   z"cpu_count_cores.<locals>.<genexpr>r   z command error
)	Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚRuntimeErrorÚstripÚ
splitlinesÚlen)ÚcmdÚprG   rH   ÚmsgZ
processorsr0   r0   r1   Úcpu_count_cores   s    
r[   c                  C   s    t  ¡ \} }}}t | |||¡S )z*Return various CPU stats as a named tuple.)r/   Ú	cpu_statsr   Z	scpustats)Zctx_switchesZ
interruptsZsoft_interruptsZsyscallsr0   r0   r1   r\   ›   s    ÿr\   Fc           	      C   s\   g }t  ¡ }|D ]F}|\}}}}|dkr,d}| s<t|ƒjs<qt ||||¡}| |¡ q|S )zReturn system disk partitions.ÚnoneÚ )r/   Údisk_partitionsÚ
disk_usager)   r   Z	sdiskpartÚappend)	ÚallÚretlistZ
partitionsÚ	partitionZdeviceZ
mountpointZfstypeÚoptsÚntupler0   r0   r1   r_   ¬   s    
r_   éÿÿÿÿc                 C   s~   t j|  \}}t |¡}g }|D ]X}|\}}}	}
}}}||vr@q |	|vrJq t|||	|
||t|dkrf|ndd}| |¡ q |S )zˆReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    rg   N©Úpid)r   Z	conn_tmapr/   Únet_connectionsr   ÚTCP_STATUSESra   )ÚkindÚ_pidZfamiliesÚtypesÚrawlistr>   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr!   ri   Úntr0   r0   r1   rj   Ì   s*    
ø
rj   c                  C   sî   t tdœ} dd„ tƒ D ƒ}i }|D ]Æ}t |¡}t |¡}d}d}tjdd|gtjtjd}| 	¡ \}	}
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   h | ]}|d  ’qS )r   r0   r6   r0   r0   r1   Ú	<setcomp>ê   r:   znet_if_stats.<locals>.<setcomp>r^   r   z/usr/bin/entstatz-drF   c                 s   s   | ]}|  tjj¡V  qd S rI   rJ   r6   r0   r0   r1   rN   û   s   znet_if_stats.<locals>.<genexpr>z"Running: (\d+) Mbps.*?(\w+) DuplexNr   r   ú,Úrunning)r   r	   Únet_if_addrsÚ
cext_posixZ
net_if_mtuZnet_if_flagsrO   rP   rQ   rR   rS   ÚreÚsearchÚintÚgroupÚjoinÚgetr
   r   Z	snicstats)Z
duplex_mapÚnamesr>   ÚnameZmtuÚflagsZduplexÚspeedrY   rG   rH   Z	re_resultZoutput_flagsZisupr0   r0   r1   Únet_if_statsç   s:    


ýÿ

ÿ

r‡   c                   C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)r/   Ú	boot_timer0   r0   r0   r1   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)r/   Úusersr   Zsuserra   )rc   ro   r‰   rp   r%   ÚttyÚhostnameZtstampZuser_processri   rv   r0   r0   r1   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 r0   )Úisdigitr   r6   r0   r0   r1   r9   1  r:   zpids.<locals>.<listcomp>)rA   Úlistdirr   r0   r0   r0   r1   Ú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)rA   ÚpathÚexistsr   r   Ústrrh   r0   r0   r1   Ú
pid_exists4  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¬   | j | j| j  }}}zˆ | g|¢R i |¤ŽW S  ttfyx } z.t|ƒsVt||ƒ|‚t|||ƒ|‚W Y d }~n8d }~0  ty¦ } zt	||ƒ|‚W Y d }~n
d }~0 0 d S rI   )
ri   Ú_ppidÚ_nameÚFileNotFoundErrorÚProcessLookupErrorr“   r   r   ÚPermissionErrorr   )ÚselfÚargsÚkwargsri   r   r„   Úerr©Úfunr0   r1   Úwrapper>  s    "z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rž   rŸ   r0   r   r1   Úwrap_exceptions9  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.)Ú_cacher•   r”   Ú_procfs_pathri   c                 C   s   || _ d | _d | _tƒ | _d S rI   )ri   r•   r”   r   r¥   )r™   ri   r0   r0   r1   Ú__init__U  s    zProcess.__init__c                 C   s   | j  | ¡ | j | ¡ d S rI   )Ú_proc_basic_infoZcache_activateÚ
_proc_cred©r™   r0   r0   r1   Úoneshot_enter[  s    zProcess.oneshot_enterc                 C   s   | j  | ¡ | j | ¡ d S rI   )r§   Zcache_deactivater¨   r©   r0   r0   r1   Úoneshot_exit_  s    zProcess.oneshot_exitc                 C   s   t  | j| j¡S rI   )r/   Zproc_basic_infori   r¥   r©   r0   r0   r1   r§   c  s    zProcess._proc_basic_infoc                 C   s   t  | j| j¡S rI   )r/   Z	proc_credri   r¥   r©   r0   r0   r1   r¨   h  s    zProcess._proc_credc                 C   s$   | j dkrdS t | j | j¡ d¡S )Nr   Zswapperú )ri   r/   Z	proc_namer¥   Úrstripr©   r0   r0   r1   r„   m  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ú:)ÚcmdlinerA   r   ÚsepÚisabsÚabspathr   ÚcwdÚisfileÚaccessÚX_OKÚbasenameÚenvironÚsplit)r™   r°   Úexer   Zpossible_exer0   r0   r1   r»   t  s,    
ÿ
þýÿ
zProcess.exec                 C   s   t  | j¡S rI   )r/   Z	proc_argsri   r©   r0   r0   r1   r°   ’  s    zProcess.cmdlinec                 C   s   t  | j¡S rI   )r/   Zproc_environri   r©   r0   r0   r1   r¹   –  s    zProcess.environc                 C   s   |   ¡ td  S )Nr   ©r§   Úproc_info_mapr©   r0   r0   r1   r   š  s    zProcess.create_timec                 C   s   |   ¡ td  S )Nr    r¼   r©   r0   r0   r1   r    ž  s    zProcess.num_threadsc                 C   sX   t  | j¡}g }|D ]"\}}}t |||¡}| |¡ q|sTt | j› d| j› ¡ |S )Nú/)	r/   r   ri   r   Zpthreadra   rA   Ústatr¥   )r™   ro   rc   Ú	thread_idÚutimeZstimerf   r0   r0   r1   Úthreads¤  s    zProcess.threadsÚinetc                 C   s.   t || jd}|s*t | j› d| j› ¡ |S )N)rm   r¾   )rj   ri   rA   r¿   r¥   )r™   rl   r>   r0   r0   r1   rj   µ  s    zProcess.net_connectionsc                 C   s   t  | j¡S rI   )r|   Úgetpriorityri   r©   r0   r0   r1   Únice_getÂ  s    zProcess.nice_getc                 C   s   t  | j|¡S rI   )r|   Úsetpriorityri   )r™   Úvaluer0   r0   r1   Únice_setÆ  s    zProcess.nice_setc                 C   s   |   ¡ td  | _| jS )Nr   )r§   r½   r”   r©   r0   r0   r1   r   Ê  s    zProcess.ppidc                 C   s"   |   ¡ \}}}}}}t |||¡S rI   ©r¨   r   Zpuids)r™   ÚrealÚ	effectiveÚsavedÚ_r0   r0   r1   ÚuidsÏ  s    zProcess.uidsc                 C   s"   |   ¡ \}}}}}}t |||¡S rI   rÉ   )r™   rÍ   rÊ   rË   rÌ   r0   r0   r1   ÚgidsÔ  s    zProcess.gidsc                 C   s   t  | j| j¡}tj|Ž S rI   )r/   Zproc_cpu_timesri   r¥   r   Z	pcputimes)r™   Útr0   r0   r1   r?   Ù  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½   ÚglobrA   r¿   Úst_rdev)r™   ZttydevÚdevr0   r0   r1   ÚterminalÞ  s    
zProcess.terminalc                 C   sZ   | j }z$t |› d| j› d¡}| d¡W S  tyT   t |› d| j› ¡ Y dS 0 d S )Nr¾   z/cwdr^   )r¥   rA   Úreadlinkri   r­   r–   r¿   )r™   Zprocfs_pathÚresultr0   r0   r1   r´   é  s    zProcess.cwdc                 C   s2   |   ¡ }|td  d }|td  d }t||ƒS )Nr   i   r   )r§   r½   r#   )r™   r>   r   r   r0   r0   r1   Úmemory_infoó  s    zProcess.memory_infoc                 C   s   |   ¡ td  }t |d¡S )Nr!   ú?)r§   r½   ÚPROC_STATUSESr‚   )r™   Úcoder0   r0   r1   r!   ü  s    zProcess.statusc                 C   sÀ   t jddt| jƒgt jt jd}| ¡ \}}dd„ ||fD ƒ\}}d| ¡ v r\t| j| jƒ‚t	 
d|¡}g }|D ]J\}}| ¡ }| d¡r–|d	d … }| ¡ d
kr¤qp| t |t|ƒ¡¡ qp|S )Nz/usr/bin/procfilesz-nrF   c                 s   s   | ]}|  tjj¡V  qd S rI   rJ   r6   r0   r0   r1   rN     s   z%Process.open_files.<locals>.<genexpr>zno such processz(\d+): S_IFREG.*name:(.*)\nz//r   zcannot be retrieved)rO   rP   r’   ri   rQ   rR   Úlowerr   r•   r}   ÚfindallrU   Ú
startswithra   r   Z	popenfiler   )r™   rY   rG   rH   Z	procfilesrc   rq   r   r0   r0   r1   Ú
open_files  s*    ýÿ

zProcess.open_filesc                 C   s,   | j dkrdS tt | j› d| j › d¡ƒS )Nr   r¾   z/fd)ri   rW   rA   rŽ   r¥   r©   r0   r0   r1   Únum_fds  s    
zProcess.num_fdsc                 C   s   t jt | j¡Ž S rI   )r   Zpctxswr/   Zproc_num_ctx_switchesri   r©   r0   r0   r1   Únum_ctx_switches!  s    zProcess.num_ctx_switchesNc                 C   s   t  | j|| j¡S rI   )r   Zwait_pidri   r•   )r™   Útimeoutr0   r0   r1   Úwait%  s    zProcess.waitc              
   C   sj   zt  | j¡\}}}}W n@ tyX } z(t| jƒsBt| j| jƒ|‚‚ W Y d }~n
d }~0 0 t ||||¡S rI   )	r/   r   ri   ÚOSErrorr“   r   r•   r   Zpio)r™   ÚrcÚwcÚrbÚwbrœ   r0   r0   r1   Ú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Â   rj   rÅ   rÈ   r   rÎ   rÏ   r?   rÕ   r´   rØ   Zmemory_full_infor!   rß   rà   rá   rã   ÚHAS_PROC_IO_COUNTERSré   r0   r0   r0   r1   r£   P  sv   















	



r£   )F)rg   )_rí   r    rÒ   rA   r}   rO   rL   Úcollectionsr   r^   r   r   r   r/   r   r|   r   r	   r
   r   r   r   r   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_NONErk   Údictr½   r#   Zpfullmemr$   r(   r2   r4   r?   r;   rD   r[   r\   Zdisk_io_countersr`   r_   r{   r   rj   r‡   rˆ   rŠ   r   r“   r¢   r£   r0   r0   r0   r1   Ú<module>   s¢   


û	ôø	

+