U
    +È-eÆ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%d&d'd(d)gƒZNed*d+d,d-d.d/gƒZOd0d1„ ZPd2d3„ ZQd4d5„ ZRd6d7„ ZSd8d9„ ZTd:d;„ ZUd<d=„ ZVejWZWejXZXdRd?d@„ZYejZZZe"rŠej[Z[dSdBdC„Z\dDdE„ Z]dFdG„ Z^dHdI„ Z_dJdK„ Z`dLdM„ ZadNdO„ ZbG dPdQ„ dQƒZcdS )Tz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   úN/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 tuple.c                 S   s   g | ]}t |ƒ‘qS r5   )Úsum©Ú.0Úxr5   r5   r6   Ú
<listcomp>€   s     zcpu_times.<locals>.<listcomp>)r3   Úper_cpu_timesr(   Úzip©Úretr5   r5   r6   Ú	cpu_times}   s    rC   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 r5   )r(   r;   r5   r5   r6   r>   †   s     z!per_cpu_times.<locals>.<listcomp>)r3   r?   rA   r5   r5   r6   r?   ƒ   s    r?   c                   C   s(   zt  d¡W S  tk
r"   Y dS X dS )z0Return the number of logical CPUs in the system.ÚSC_NPROCESSORS_ONLNN)ÚosÚsysconfÚ
ValueErrorr5   r5   r5   r6   Úcpu_count_logical‰   s    rH   c                  C   sv   dddg} t j| t jt jd}| ¡ \}}trDdd„ ||fD ƒ\}}|jdkr^td| |f ƒ‚| ¡  ¡ }t	|ƒptd S )	NZlsdevz-CcÚ	processor©ÚstdoutÚstderrc                 s   s   | ]}|  tjj¡V  qd S ©N©ÚdecodeÚsysrK   Úencodingr;   r5   r5   r6   Ú	<genexpr>—   s   ÿz"cpu_count_cores.<locals>.<genexpr>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   rb   ¯   s     
 ÿrb   éÿÿÿÿc                 C   s¬   t j}| |kr.td| d dd„ |D ƒ¡f ƒ‚t j|  \}}t |¡}g }|D ]X}|\}}	}
}}}}|	|krnqN|
|k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>   Ø   s     z#net_connections.<locals>.<listcomp>rj   N©Úpid)	r   Z	conn_tmaprG   Újoinr3   Únet_connectionsr   ÚTCP_STATUSESrd   )ÚkindÚ_pidZcmapZfamiliesÚtypesÚrawlistrB   ÚitemÚfdÚfamÚtype_ÚladdrÚraddrr%   rm   Úntr5   r5   r6   ro   Ñ   s(    ÿ
 ÿro   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k	r¼t| d¡ƒ}| d¡}d |¡}d|k}|  |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>   ì   s     z net_if_stats.<locals>.<listcomp>ra   r   z/usr/bin/entstatz-drJ   c                 s   s   | ]}|  tjj¡V  qd S rM   rN   r;   r5   r5   r6   rR   û   s   ÿznet_if_stats.<locals>.<genexpr>z"Running: (\d+) Mbps.*?(\w+) DuplexNr   r   ú,Úrunning)r   r	   ÚsetÚnet_if_addrsÚ
cext_posixZ
net_if_mtuZnet_if_flagsrS   rT   rU   rV   r   rW   ÚreÚsearchÚintÚgrouprn   Úgetr
   r   Z	snicstats)Z
duplex_mapÚnamesrB   Ú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||kr:d}t |||||	¡}
|  |
¡ q| S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0Ú	localhost)r3   Úusersr   Zsuserrd   )rf   rt   r   ru   r)   ÚttyÚhostnameZtstampZuser_processrm   r{   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>   /  s      zpids.<locals>.<listcomp>)rE   Ú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)rE   ÚpathÚexistsrn   r   Ústrrl   r5   r5   r6   Ú
pid_exists2  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ˆ | f|ž|ŽW S  t tfk
rV   t| jƒs@t| j| jƒ‚nt| j| j| jƒ‚Y n" tk
rv   t	| j| jƒ‚Y nX d S rM   )
r   r   r—   rm   r   Ú_namer   Ú_ppidr   r   )ÚselfÚargsÚkwargs©Úfunr5   r6   Úwrapper;  s    
z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rž   rŸ   r5   r   r6   Úwrap_exceptions7  s    r¢   c                   @   sx  e Zd ZdZdddddg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dAd 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d0d1„ ƒZed2d3„ ƒZeZed4d5„ ƒZd6d7„ Z ed8d9„ ƒZ!ed:d;„ ƒZ"edBd=d>„ƒZ#e$rted?d@„ ƒZ%d<S )CÚProcessz1Wrapper class around underlying C implementation.rm   r˜   r™   Ú_procfs_pathÚ_cachec                 C   s   || _ d | _d | _tƒ | _d S rM   )rm   r˜   r™   r   r¤   )rš   rm   r5   r5   r6   Ú__init__Q  s    zProcess.__init__c                 C   s   | j  | ¡ | j | ¡ d S rM   )Ú_proc_basic_infoZcache_activateÚ
_proc_cred©rš   r5   r5   r6   Úoneshot_enterW  s    zProcess.oneshot_enterc                 C   s   | j  | ¡ | j | ¡ d S rM   )r§   Zcache_deactivater¨   r©   r5   r5   r6   Úoneshot_exit[  s    zProcess.oneshot_exitc                 C   s   t  | j| j¡S rM   )r3   Zproc_basic_inform   r¤   r©   r5   r5   r6   r§   _  s    zProcess._proc_basic_infoc                 C   s   t  | j| j¡S rM   )r3   Z	proc_credrm   r¤   r©   r5   r5   r6   r¨   d  s    zProcess._proc_credc                 C   s$   | j dkrdS t | j | j¡ d¡S )Nr   Zswapperú )rm   r3   Z	proc_namer¤   Úrstripr©   r5   r5   r6   rˆ   i  s    
zProcess.namec                 C   sÒ   |   ¡ }|sdS |d }tjj|k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 )Nra   r   ÚPATHú:)ÚcmdlinerE   r”   ÚsepÚisabsÚabspathrn   ÚcwdÚisfileÚaccessÚX_OKÚbasenameÚenvironÚsplit)rš   r°   Úexer”   Zpossible_exer5   r5   r6   r»   p  s*    
ÿþÿ
zProcess.exec                 C   s   t  | j¡S rM   )r3   Z	proc_argsrm   r©   r5   r5   r6   r°   ‹  s    zProcess.cmdlinec                 C   s   t  | j¡S rM   )r3   Zproc_environrm   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   rm   r   Zpthreadrd   rE   Ústatr¤   )rš   rt   rf   Ú	thread_idÚutimeZstimeri   r5   r5   r6   Úthreadsœ  s    zProcess.threadsÚinetc                 C   s,   t || jd}|s(t d| j| jf ¡ |S )N)rr   r¾   )ro   rm   rE   r¿   r¤   )rš   rq   rB   r5   r5   r6   Úconnections­  s    zProcess.connectionsc                 C   s   t  | j¡S rM   )r   Úgetpriorityrm   r©   r5   r5   r6   Únice_getº  s    zProcess.nice_getc                 C   s   t  | j|¡S rM   )r   Úsetpriorityrm   )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 rM   ©r¨   r   Zpuids)rš   ÚrealÚ	effectiveÚsavedÚ_r5   r5   r6   ÚuidsÇ  s    zProcess.uidsc                 C   s"   |   ¡ \}}}}}}t |||¡S rM   rÊ   )rš   rÎ   rË   rÌ   rÍ   r5   r5   r6   ÚgidsÌ  s    zProcess.gidsc                 C   s   t  | j| j¡}tj|Ž S rM   )r3   Zproc_cpu_timesrm   r¤   r   Z	pcputimes)rš   Útr5   r5   r6   rC   Ñ  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½   ÚglobrE   r¿   Úst_rdev)rš   ZttydevÚdevr5   r5   r6   ÚterminalÖ  s    
zProcess.terminalc                 C   sV   | j }z t d|| jf ¡}| d¡W S  tk
rP   t d|| jf ¡ Y dS X d S )Nz	%s/%s/cwdú/r¾   ra   )r¤   rE   Úreadlinkrm   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š   rB   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| ¡ k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-nrJ   c                 s   s   | ]}|  tjj¡V  qd S rM   rN   r;   r5   r5   r6   rR     s   ÿz%Process.open_files.<locals>.<genexpr>zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//r   zcannot be retrieved)rS   rT   r–   rm   rU   rV   r   Úlowerr   r˜   r‚   ÚfindallrY   Ú
startswithrd   r   Z	popenfiler„   )rš   r]   rK   rL   Z	procfilesrf   rv   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)rm   r[   rE   r’   r¤   r©   r5   r5   r6   Únum_fds  s    
zProcess.num_fdsc                 C   s   t jt | j¡Ž S rM   )r   Zpctxswr3   Zproc_num_ctx_switchesrm   r©   r5   r5   r6   Únum_ctx_switches  s    
ÿzProcess.num_ctx_switchesNc                 C   s   t  | j|| j¡S rM   )r   Zwait_pidrm   r˜   )rš   Útimeoutr5   r5   r6   Úwait  s    zProcess.waitc                 C   sX   zt  | j¡\}}}}W n. tk
rF   t| jƒs@t| j| jƒ‚‚ Y nX t ||||¡S rM   )	r3   r   rm   Ú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Ð   rC   rÖ   r´   rÚ   Zmemory_full_infor%   rá   râ   rã   rå   ÚHAS_PROC_IO_COUNTERSrë   r5   r5   r5   r6   r£   L  sv   















	



r£   )F)rj   )drï   r    rÓ   rE   r‚   rS   rP   Úcollectionsr   ra   r   r   r   r3   r   r   r   r	   r
   r   r   r   r   r   r   r   Ú_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_NONErp   Údictr½   r'   Zpfullmemr(   r,   r7   r9   rC   r?   rH   r^   r_   Zdisk_io_countersrc   rb   r€   r   ro   r‹   rŒ   rŽ   r“   r—   r¢   r£   r5   r5   r5   r6   Ú<module>   sÌ   


     û	            ôø	

(