o
    !jD                     @   sb  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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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jAiZBeCdddddddddZDdd ZEdd  ZFd!d" ZGd#d$ ZHd%d& ZId'd( ZJd)d* ZKejLZLejMZMd?d,d-ZNejOZOerejPZPd@d/d0ZQd1d2 ZRd3d4 ZSd5d6 ZTd7d8 ZUd9d: ZVd;d< ZWG d=d> d>ZXdS )AzAIX platform implementation.    N   )_common)_ntuples)_psposix)_psutil_aix)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ttynrc                  C   s6   t  \} }}}}t| | | dd}t| ||||S )Nr   Zround_)cextZvirtual_memr   ntpZsvmem)totalZavailfreeZ_pinnedZinusepercent r(   N/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/psutil/_psaix.pyvirtual_memoryV   s   r*   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soutusedr'   r(   r(   r)   swap_memory\   s   r-   c                  C   s    t  } tjdd t|  D  S )z.Return system-wide CPU times as a named tuple.c                 S   s   g | ]}t |qS r(   )sum.0xr(   r(   r)   
<listcomp>l       zcpu_times.<locals>.<listcomp>)r#   per_cpu_timesr$   	scputimeszipretr(   r(   r)   	cpu_timesi   s   r9   c                  C   s   t  } dd | D S )z6Return system per-CPU times as a list of named tuples.c                 S   s   g | ]}t j| qS r(   )r$   r5   r/   r(   r(   r)   r2   r   s    z!per_cpu_times.<locals>.<listcomp>)r#   r4   r7   r(   r(   r)   r4   o   s   r4   c                   C   s"   zt dW S  ty   Y dS w )z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)ossysconf
ValueErrorr(   r(   r(   r)   cpu_count_logicalu   s
   r>   c                  C   sv   g d} t j| t jt jd}| \}}dd ||fD \}}|jdkr/| d| }t||  }t|p:d S )N)Zlsdevz-Cc	processorstdoutstderrc                 s       | ]
}| tjjV  qd S NdecodesysrA   encodingr/   r(   r(   r)   	<genexpr>   s    z"cpu_count_cores.<locals>.<genexpr>r   z command error
)	
subprocessPopenPIPEcommunicate
returncodeRuntimeErrorstrip
splitlineslen)cmdprA   rB   msgZ
processorsr(   r(   r)   cpu_count_cores~   s   
rV   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syscallsr(   r(   r)   rW      s   rW   Fc           	      C   s\   g }t  }|D ]#}|\}}}}|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ntupler(   r(   r)   rZ      s   
rZ   c                 C   s~   t j|  \}}t|}g }|D ],}|\}}}	}
}}}||vr q|	|vr%qt|||	|
||t|dkr3|ndd}|| q|S )zReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    rb   Npid)r   Z	conn_tmapr#   net_connectionsr   TCP_STATUSESr\   )kind_pidZfamiliestypesrawlistr8   itemfdZfamtype_laddrraddrr    rd   ntr(   r(   r)   re      s*   

re   c                  C   s   t td} dd t D }i }|D ]c}t|}t|}d}d}tjdd|gtjtjd}|	 \}	}
d	d
 |	|
fD \}	}
|j
dkrZtd|	}|durZt|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   r(   r/   r(   r(   r)   	<setcomp>   r3   znet_if_stats.<locals>.<setcomp>rY   r   z/usr/bin/entstatz-dr@   c                 s   rC   rD   rE   r/   r(   r(   r)   rI          
znet_if_stats.<locals>.<genexpr>z"Running: (\d+) Mbps.*?(\w+) DuplexNr   r   ,running)r   r   net_if_addrsr#   Z
net_if_mtuZnet_if_flagsrJ   rK   rL   rM   rN   researchintgroupjoingetr	   r$   Z	snicstats)Z
duplex_mapnamesr8   nameZmtuflagsZduplexspeedrT   rA   rB   Z	re_resultZoutput_flagsZisupr(   r(   r)   net_if_stats   s:   






r   c                   C   s   t  S )z:The system boot time expressed in seconds since the epoch.)r#   	boot_timer(   r(   r(   r)   r      s   r   c                  C   s\   g } t  }d}|D ]!}|\}}}}}}	|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suserr\   )r^   rj   r   rk   userttyhostnameZtstampZuser_processrd   rp   r(   r(   r)   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 r(   )isdigitry   r/   r(   r(   r)   r2     s    zpids.<locals>.<listcomp>)r;   listdirr   r(   r(   r(   r)   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)r;   pathexistsr{   r   strrc   r(   r(   r)   
pid_exists!  s   r   c                    s   t   fdd}|S )zCall 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y6 } zt|s+t|||t||||d }~w tyG } zt	|||d }~ww rD   )
rd   _ppid_nameFileNotFoundErrorProcessLookupErrorr   r   r   PermissionErrorr
   )selfargskwargsrd   r   r~   errfunr(   r)   wrapper+  s   z wrap_exceptions.<locals>.wrapper)	functoolswraps)r   r   r(   r   r)   wrap_exceptions&  s   r   c                   @   st  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rRe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$red;d< Z%d8S d8S )?Processz1Wrapper class around underlying C implementation.)_cacher   r   _procfs_pathrd   c                 C   s   || _ d | _d | _t | _d S rD   )rd   r   r   r   r   )r   rd   r(   r(   r)   __init__B  s   zProcess.__init__c                 C      | j |  | j|  d S rD   )_proc_basic_infoZcache_activate
_proc_credr   r(   r(   r)   oneshot_enterH     zProcess.oneshot_enterc                 C   r   rD   )r   Zcache_deactivater   r   r(   r(   r)   oneshot_exitL  r   zProcess.oneshot_exitc                 C      t | j| jS rD   )r#   Zproc_basic_inford   r   r   r(   r(   r)   r   P     zProcess._proc_basic_infoc                 C   r   rD   )r#   Z	proc_credrd   r   r   r(   r(   r)   r   U  r   zProcess._proc_credc                 C   s$   | j dkrdS t| j | jdS )Nr   Zswapper )rd   r#   Z	proc_namer   rstripr   r(   r(   r)   r~   Z  s   
zProcess.namec                 C   s   |   }|sdS |d }tjj|v r@tj|s%tjtj|  |}tj|r:tj|r:t	|tj
r:|S tj|}tjd dD ]}tjtj||}tj|rft	|tj
rf|  S qHdS )NrY   r   PATH:)cmdliner;   r   sepisabsabspathr{   cwdisfileaccessX_OKbasenameenvironsplit)r   r   exer   Zpossible_exer(   r(   r)   r   a  s.   

zProcess.exec                 C      t | jS rD   )r#   Z	proc_argsrd   r   r(   r(   r)   r        zProcess.cmdlinec                 C   r   rD   )r#   Zproc_environrd   r   r(   r(   r)   r     r   zProcess.environc                 C      |   td  S )Nr   r   proc_info_mapr   r(   r(   r)   r        zProcess.create_timec                 C   r   )Nr   r   r   r(   r(   r)   r     r   zProcess.num_threadsc                 C   sX   t | j}g }|D ]\}}}t|||}|| q
|s*t| j d| j  |S )N/)	r#   r   rd   r$   Zpthreadr\   r;   statr   )r   rj   r^   	thread_idutimeZstimera   r(   r(   r)   threads  s   zProcess.threadsinetc                 C   s.   t || jd}|st| j d| j  |S )N)rh   r   )re   rd   r;   r   r   )r   rg   r8   r(   r(   r)   re     s   zProcess.net_connectionsc                 C   r   rD   )r#   Zproc_priority_getrd   r   r(   r(   r)   nice_get  r   zProcess.nice_getc                 C      t | j|S rD   )r#   Zproc_priority_setrd   )r   valuer(   r(   r)   nice_set     zProcess.nice_setc                 C   s   |   td  | _| jS )Nr   )r   r   r   r   r(   r(   r)   r     s   zProcess.ppidc                 C   s"   |   \}}}}}}t|||S rD   r   r$   Zpuids)r   real	effectivesaved_r(   r(   r)   uids     zProcess.uidsc                 C   s"   |   \}}}}}}t|||S rD   r   )r   r   r   r   r   r(   r(   r)   gids  r   zProcess.gidsc                 C   s   t | j| j}tj| S rD   )r#   Zproc_cpu_timesrd   r   r$   Z	pcputimes)r   tr(   r(   r)   r9     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   globr;   r   st_rdev)r   Zttydevdevr(   r(   r)   terminal  s   zProcess.terminalc                 C   sV   | j }zt| d| j d}|dW S  ty*   t| d| j  Y dS w )Nr   z/cwdrY   )r   r;   readlinkrd   r   r   r   )r   Zprocfs_pathresultr(   r(   r)   r     s   zProcess.cwdc                 C   s4   |   }|td  d }|td  d }t||S )Nr   i   r   )r   r   r$   Zpmem)r   r8   r   r   r(   r(   r)   memory_info  s   zProcess.memory_infoc                 C   s   |   td  }t|dS )Nr    ?)r   r   PROC_STATUSESr|   )r   coder(   r(   r)   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 ]%\}}| }|drK|d	d  }| d
krRq8|t|t| q8|S )Nz/usr/bin/procfilesz-nr@   c                 s   rC   rD   rE   r/   r(   r(   r)   rI     rs   z%Process.open_files.<locals>.<genexpr>zno such processz(\d+): S_IFREG.*name:(.*)\nz//r   zcannot be retrieved)rJ   rK   r   rd   rL   rM   lowerr   r   rw   findallrP   
startswithr\   r$   Z	popenfilery   )r   rT   rA   rB   Z	procfilesr^   rl   r   r(   r(   r)   
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)rd   rR   r;   r   r   r   r(   r(   r)   num_fds  s   
zProcess.num_fdsc                 C   s   t jt| j S rD   )r$   Zpctxswr#   Zproc_num_ctx_switchesrd   r   r(   r(   r)   num_ctx_switches  s   zProcess.num_ctx_switchesNc                 C   r   rD   )r   Zwait_pidrd   )r   timeoutr(   r(   r)   wait  r   zProcess.waitc              
   C   s^   zt | j\}}}}W n ty& } zt| js!t| j| j| d }~ww t||||S rD   )	r#   r   rd   OSErrorr   r   r   r$   Zpio)r   rcwcrbwbr   r(   r(   r)   io_counters  s   
zProcess.io_counters)r   rD   )&__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r~   r   r   r   r   r   HAS_THREADSr   re   r   r   r   r   r   r9   r   r   r   Zmemory_full_infor    r   r   r   r   HAS_PROC_IO_COUNTERSr   r(   r(   r(   r)   r   =  sz    















	



r   )F)rb   )Yr   r   r   r;   rw   rJ   rG   rY   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_NONErf   dictr   r*   r-   r9   r4   r>   rV   rW   Zdisk_io_countersr[   rZ   rv   r   re   r   r   r   r   r   r   r   r(   r(   r(   r)   <module>   s   


		

+