
    ɧdxH                     l   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j$                    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j1        e
j2        ej3        e
j4        ej5        e
j6        ej7        e
j8        ej9        e
j:        ej;        e
j<        ej=        e
j>        ej?        e
j@        ejA        e
jB        ejC        e
jD        ejE        e
jF        ejG        e
jH        iZI eJdddddddd !          ZK ed"d#d$g          ZLeLZM ed%g d&          ZN ed'g d(          ZOd) ZPd* ZQd+ ZRd, ZSd- ZTd. ZUd/ ZVejW        ZWejX        ZXd<d1ZYejZ        ZZe"rej[        Z[d=d3Z\d4 Z]d5 Z^d6 Z_d7 Z`d8 Zad9 Zb G d: d;ec          ZddS )>z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)ProcessLookupError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idleiowaitsvmem)total	availablepercentusedfreec                      t          j                    \  } }}}}t          | |z
  | d          }t          | ||||          S )Nr   round_)cextvirtual_memr   r/   )r0   availr4   pinnedinuser2   s         -lib/python3.11/site-packages/psutil/_psaix.pyvirtual_memoryr>   j   sI    (,(8(:(:%E5$UU]U1===Gwt444    c                      t          j                    \  } }}}| |z
  }t          || d          }t          j        | |||||          S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r6   )r8   swap_memr   r   sswap)r0   r4   sinsoutr3   r2   s         r=   swap_memoryrE   p   sM    !]__E4d4<DD%222G=dGS$???r?   c                  \    t          j                    } t          d t          |  D              S )z-Return system-wide CPU times as a named tuplec                 ,    g | ]}t          |          S  )sum.0xs     r=   
<listcomp>zcpu_times.<locals>.<listcomp>   s    111!s1vv111r?   )r8   per_cpu_timesr*   ziprets    r=   	cpu_timesrR   }   s.    



C11sCy11122r?   c                  @    t          j                    } d | D             S )z5Return system per-CPU times as a list of named tuplesc                      g | ]}t          | S rH   )r*   rJ   s     r=   rM   z!per_cpu_times.<locals>.<listcomp>   s    '''aIqM'''r?   )r8   rN   rP   s    r=   rN   rN      s$    



C''3''''r?   c                  N    	 t          j        d          S # t          $ r Y dS w xY w)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)ossysconf
ValueErrorrH   r?   r=   cpu_count_logicalrZ      s:    z/000   tts    
$$c                  h   d} t          j        | dt           j        t           j                  }|                                \  }}t          rd ||fD             \  }}|j        dk    rt          | d|          |                                                                }t          |          pd S )Nzlsdev -Cc processorT)shellstdoutstderrc                 V    g | ]&}|                     t          j        j                  'S rH   decodesysr]   encodingrJ   s     r=   rM   z#cpu_count_cores.<locals>.<listcomp>   s9     5 5 5 ((3:#677 5 5 5r?   r   z command error
)

subprocessPopenPIPEcommunicater   
returncodeRuntimeErrorstrip
splitlineslen)cmdpr]   r^   
processorss        r=   cpu_count_coresrp      s    
CD *	1 	1 	1A]]__NFF
 55 5$*F#35 5 5|q CSSS&&ABBB**,,Jz??"d"r?   c                  `    t          j                    \  } }}}t          j        | |||          S )z*Return various CPU stats as a named tuple.)r8   	cpu_statsr   	scpustats)ctx_switches
interruptssoft_interruptssyscallss       r=   rr   rr      s6    :>.:J:J7L*oxj/8= = =r?   Fc           	          g }t          j                    }|D ]Z}|\  }}}}|dk    rd}| st          |          j        s(dx}}	t	          j        ||||||	          }
|                    |
           [|S )zReturn system disk partitions.none N)r8   disk_partitions
disk_usager0   r   	sdiskpartappend)allretlist
partitions	partitiondevice
mountpointfstypeoptsmaxfilemaxpathntuples              r=   r{   r{      s     G%''J  	+4(
FDV 	F 	 j))/   '"6:vt#*G5 5vNr?   c                    t           j        }| |vr2t          d| dd                    d |D                                 t           j        |          \  }}t	          j        |          }g }|D ]O}|\  }}	}
}}}}|	|vr|
|vrt          ||	|
|||t          |dk    r|nd          }|                    |           P|S )zReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    zinvalid z kind argument; choose between z, c                 ,    g | ]}t          |          S rH   )reprrJ   s     r=   rM   z#net_connections.<locals>.<listcomp>   s    ,C,C,CT!WW,C,C,Cr?   r   Npid)	r   	conn_tmaprY   joinr8   net_connectionsr   TCP_STATUSESr~   )kind_pidcmapfamiliestypesrawlistrQ   itemfdfamtype_laddrraddrr'   r   nts                   r=   r   r      s    D4 Gj DD$)),C,Cd,C,C,C"D"D"DF G G 	G'-OHe"4((G
C  481Cufch 	 	BUE5&(TRZ.IccTK K K

2Jr?   c                     t           t          d} t          d t                      D                       }i }|D ]	}t	          j        |          \  }}d}d}t          j        dd|gt          j        t          j                  }|	                                \  }	}
t          rd |	|
fD             \  }	}
|j        dk    rNt          j        d	|	          }|7t          |                    d                    }|                    d          }|                     |t"                    }t%          j        ||||          ||<   |S )z)Get NIC stats (isup, duplex, speed, mtu).)FullHalfc                     g | ]
}|d          S )r   rH   rJ   s     r=   rM   z net_if_stats.<locals>.<listcomp>   s    ...!1...r?   rz   r   z/usr/bin/entstatz-dr]   r^   c                 V    g | ]&}|                     t          j        j                  'S rH   r`   rJ   s     r=   rM   z net_if_stats.<locals>.<listcomp>   9     9 9 9"#  hhsz':;; 9 9 9r?   z"Running: (\d+) Mbps.*?(\w+) DuplexNr   r   )r	   r
   setnet_if_addrsr8   net_if_statsrd   re   rf   rg   r   rh   researchintgroupgetr   r   	snicstats)
duplex_mapnamesrQ   nameisupmtuduplexspeedrn   r]   r^   	re_results               r=   r   r      sc   ))+ +J..|~~...//E
C @ @%d++	c
 0$=$.OJOM M M 	99 9(.'79 9 9NFF<1 	,	5v? ?I ,IOOA..//"++(:;;%dFE3??D		Jr?   c                  (    t          j                    S )z:The system boot time expressed in seconds since the epoch.)r8   	boot_timerH   r?   r=   r   r     s    >r?   c                      g } t          j                    }d}|D ]A}|\  }}}}}}	|s||v rd}t          j        |||||	          }
|                     |
           B| S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0	localhost)r8   usersr   suserr~   )r   r   r   r   r+   ttyhostnametstampuser_processr   r   s              r=   r   r     s    GjllGI 
 
9=6c8V\3  	y  	#"H]4h<<rNr?   c                  V    d t          j        t                                D             S )z7Returns a list of PIDs currently running on the system.c                 T    g | ]%}|                                 t          |          &S rH   )isdigitr   rJ   s     r=   rM   zpids.<locals>.<listcomp>-  s+    IIIqQYY[[ICFFIIIr?   )rW   listdirr   rH   r?   r=   pidsr   +  s&    IIBJ'8'899IIIIr?   c                     t           j                            t           j                            t	                      t          |           d                    S )z&Check for the existence of a unix pid.psinfo)rW   pathexistsr   r   strr   s    r=   
pid_existsr   0  s4    7>>"',,'8'8#c((HMMNNNr?   c                 F     t          j                    fd            }|S )zCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c                 *   	  | g|R i |S # t           t          f$ rO t          | j                  st	          | j        | j                  t          | j        | j        | j                  t          $ r t          | j        | j                  w xY wN)
r   r   r   r   r   _namer   _ppidr   r   )selfargskwargsfuns      r=   wrapperz wrap_exceptions.<locals>.wrapper9  s    	53t-d---f---!#56 	F 	F 	F dh'' F#DHdj999#DHdj$*EEE 	5 	5 	5tx444	5s
    BB)	functoolswraps)r   r   s   ` r=   wrap_exceptionsr   5  s:     _S5 5 5 5 5 Nr?   c                   v   e Zd ZdZg dZd Zd Zd Zee	d                         Z
ee	d                         Zed             Zed	             Zed
             Zed             Zed             Zed             Zered             Zed!d            Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             Zed             ZeZed             Zd Z ed             Z!ed             Z"ed"d            Z#e$red              Z%dS dS )#Processz1Wrapper class around underlying C implementation.)r   r   r   _procfs_path_cachec                 V    || _         d | _        d | _        t                      | _        d S r   )r   r   r   r   r   )r   r   s     r=   __init__zProcess.__init__O  s+    

+--r?   c                 n    | j                             |            | j                            |            d S r   )_proc_basic_infocache_activate
_proc_credr   s    r=   oneshot_enterzProcess.oneshot_enterU  s5    ,,T222&&t,,,,,r?   c                 n    | j                             |            | j                            |            d S r   )r   cache_deactivater   r   s    r=   oneshot_exitzProcess.oneshot_exitY  s5    ..t444((.....r?   c                 @    t          j        | j        | j                  S r   )r8   proc_basic_infor   r   r   s    r=   r   zProcess._proc_basic_info]  s     #DHd.?@@@r?   c                 @    t          j        | j        | j                  S r   )r8   	proc_credr   r   r   s    r=   r   zProcess._proc_credb  s     ~dh(9:::r?   c                     | j         dk    rdS t          j        | j         | j                                      d          S )Nr   swapper )r   r8   	proc_namer   rstripr   s    r=   r   zProcess.nameg  s:    8q= 	9~dh(9::AA&IIIr?   c                    |                                  }|sdS |d         }t          j        j        |v rt          j                            |          sOt          j                            t          j                            |                                 |                    }t          j                            |          r@t          j                            |          r!t          j	        |t          j
                  r|S t          j                            |          }t          j        d                             d          D ]}t          j                            t          j                            ||                    }t          j                            |          r#t          j	        |t          j
                  r|c S dS )Nrz   r   PATH:)cmdlinerW   r   sepisabsabspathr   cwdisfileaccessX_OKbasenameenvironsplit)r   r   exer   possible_exes        r=   r  zProcess.exen  s]    ,,.. 	2aj7;# 
	(7==%% Egoobgll488::s&C&CDDc"" GNN3''Ic27++ 
'""3''CJv&,,S11 	$ 	$D7??27<<c+B+BCCL|,, $IlBG44$####rr?   c                 4    t          j        | j                  S r   )r8   	proc_argsr   r   s    r=   r   zProcess.cmdline  s    ~dh'''r?   c                 4    t          j        | j                  S r   )r8   proc_environr   r   s    r=   r   zProcess.environ  s     ***r?   c                 L    |                                  t          d                  S )Nr$   r   proc_info_mapr   s    r=   r$   zProcess.create_time      $$&&}]'CDDr?   c                 L    |                                  t          d                  S )Nr&   r  r   s    r=   r&   zProcess.num_threads  r
  r?   c                     t          j        | j                  }g }|D ]1\  }}}t          j        |||          }|                    |           2|s#t          j        | j        d| j                   |S )N/)	r8   r   r   r   pthreadr~   rW   statr   )r   r   r   	thread_idutimestimer   s          r=   threadszProcess.threads  s    '11GG+2 ' ''	5% E5AAv&&&&  A4#4#4#4dhh?@@@Nr?   inetc                 |    t          || j                  }|s#t          j        | j        d| j                   |S )N)r   r  )r   r   rW   r  r   )r   r   rQ   s      r=   connectionszProcess.connections  sG    d222  	=Gt000$((;<<<
r?   c                 4    t          j        | j                  S r   )
cext_posixgetpriorityr   r   s    r=   nice_getzProcess.nice_get  s    %dh///r?   c                 6    t          j        | j        |          S r   )r  setpriorityr   )r   values     r=   nice_setzProcess.nice_set  s    %dh666r?   c                 d    |                                  t          d                  | _        | j        S )Nr!   )r   r	  r   r   s    r=   r!   zProcess.ppid  s'    **,,]6-BC
zr?   c                 d    |                                  \  }}}}}}t          j        |||          S r   r   r   puids)r   real	effectivesaved_s        r=   uidszProcess.uids  s2    *.//*;*;'i1a}T9e444r?   c                 d    |                                  \  }}}}}}t          j        |||          S r   r!  )r   r&  r#  r$  r%  s        r=   gidszProcess.gids  s2    *.//*;*;'1ay%}T9e444r?   c                 \    t          j        | j        | j                  }t	          j        | S r   )r8   proc_cpu_timesr   r   r   	pcputimes)r   rR   s     r=   rR   zProcess.cpu_times  s'    '$2CDD	 ),,r?   c                     |                                  t          d                  }|dz  dz	  |dz  z  }t          j        d          D ]#}t          j        |          j        |k    r|c S $d S )Nr(   l           i  z	/dev/**/*)r   r	  globrW   r  st_rdev)r   ttydevdevs      r=   terminalzProcess.terminal  sz    &&((w)?@//B66F?K9[)) 	 	Cws||#v- 


tr?   c                     | j         }	 t          j        |d| j        d          }|                    d          S # t
          $ r" t          j        |d| j                   Y d S w xY w)Nr  z/cwd)r   rW   readlinkr   r   r   r  )r   procfs_pathresults      r=   r   zProcess.cwd  s~    '	[TXXX!FGGF==%%%  	 	 	G{{{DHH566644	s   3= (A)(A)c                     |                                  }|t          d                  dz  }|t          d                  dz  }t          ||          S )Nr"   i   r#   )r   r	  r)   )r   rQ   r"   r#   s       r=   memory_infozProcess.memory_info  sI    ##%%-&'$.-&'$.C~~r?   c                     |                                  t          d                  }t                              |d          S )Nr'   ?)r   r	  PROC_STATUSESr   )r   codes     r=   r'   zProcess.status  s3    $$&&}X'>?  s+++r?   c           	         t          j        ddt          | j                  gt           j        t           j                  }|                                \  }}t          rd ||fD             \  }}d|                                v rt          | j        | j	                  t          j        d|          }g }|D ]\  }}|                                }|                    d          r
|dd          }|                                d	k    rQ|                    t          j        |t#          |                               |S )
Nz/usr/bin/procfilesz-nr   c                 V    g | ]&}|                     t          j        j                  'S rH   r`   rJ   s     r=   rM   z&Process.open_files.<locals>.<listcomp>  r   r?   zno such processz (\d+): S_IFREG.*\s*.*name:(.*)\nz//r   zcannot be retrieved)rd   re   r   r   rf   rg   r   lowerr   r   r   findallrj   
startswithr~   r   	popenfiler   )r   rn   r]   r^   	procfilesr   r   r   s           r=   
open_fileszProcess.open_files  s@    2D#dh--H$.OJOM M M 	99 9(.'79 9 9NFF. 	6$*555JBFKK	! 	= 	=HB::<<Dt$$  ABBxzz||44 NN7,T3r77;;<<<<r?   c                 ~    | j         dk    rdS t          t          j        | j        d| j         d                    S )Nr   r  z/fd)r   rl   rW   r   r   r   s    r=   num_fdszProcess.num_fds  sA    8q= 	12:D,=,=,=txxxHIIJJJr?   c                 L    t          j        t          j        | j                   S r   )r   pctxswr8   proc_num_ctx_switchesr   r   s    r=   num_ctx_switcheszProcess.num_ctx_switches  s!    ~'113 	3r?   Nc                 B    t          j        | j        || j                  S r   )r   wait_pidr   r   )r   timeouts     r=   waitzProcess.wait  s     7DJ???r?   c                     	 t          j        | j                  \  }}}}n=# t          $ r0 t	          | j                  st          | j        | j                   w xY wt          j        ||||          S r   )	r8   r   r   OSErrorr   r   r   r   pio)r   rcwcrbwbs        r=   io_counterszProcess.io_counters  s    !%!6tx!@!@BBB    "$(++ >'$*=== ;r2r2...s	   ! :A)r  r   )&__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)  rR   r3  r   r9  memory_full_infor'   rE  rG  rK  rO  HAS_PROC_IO_COUNTERSrW  rH   r?   r=   r   r   J  s<       ;;CCCI. . .- - -/ / / A A  _A ; ;  _; J J _J   _4 ( ( _( + + _+ E E _E E E _E  		 	 
	  
 
 
 _
 0 0 _0 7 7 _7   _ 5 5 _5 5 5 _5 - - _-   _   _   _ #, , _,
  , K K _K
 3 3 _3 @ @ @ _@  /			/ 		/ 
		/ 		/ 		// /r?   r   )F)r   )er[  r   r/  rW   r   rd   rb   collectionsr   rz   r   r   r   r8   r   r  r	   r
   r   r   r   r   r   r   r   r   _compatr   r   r   r   __extra__all__hasattrr]  HAS_NET_IO_COUNTERSr_  getpagesize	PAGE_SIZEAF_LINKSIDLSTATUS_IDLESZOMBSTATUS_ZOMBIESACTIVESTATUS_RUNNINGSSWAPSSTOPSTATUS_STOPPEDr<  TCPS_ESTABLISHEDCONN_ESTABLISHEDTCPS_SYN_SENTCONN_SYN_SENTTCPS_SYN_RCVDCONN_SYN_RECVTCPS_FIN_WAIT_1CONN_FIN_WAIT1TCPS_FIN_WAIT_2CONN_FIN_WAIT2TCPS_TIME_WAITCONN_TIME_WAITTCPS_CLOSED
CONN_CLOSETCPS_CLOSE_WAITCONN_CLOSE_WAITTCPS_LAST_ACKCONN_LAST_ACKTCPS_LISTENCONN_LISTENTCPS_CLOSINGCONN_CLOSINGPSUTIL_CONN_NONE	CONN_NONEr   dictr	  r)   pfullmemr*   r/   r>   rE   rR   rN   rZ   rp   rr   disk_io_countersr|   r{   r   r   r   r   r   r   r   r   r   objectr   rH   r?   r=   <module>r     s   # "      				 				     



 " " " " " "             ! ! ! ! ! ! ) ) ) ) ) ) $ $ $ $ $ $ $ $ $ $ $ $ ' ' ' ' ' ' ! ! ! ! ! ! " " " " " " " " " " " " # # # # # # $ $ $ $ $ $ + + + + + + " " " " " "       & & & & & & $ $ $ $ $ $ ' ' ' ' ' '   gdN++gd$566 wt%788 "J"$$	

 	Iw"J%L'(J&J& 	73--'0'0/g('1-g)w+7, 	
			

  " z&5%.))J{$H$H$HII	
7MMMNN5 5 5@ @ @3 3 3( ( (  # # #= = = (  
   8 & +*O   .  J  
  0J J J
O O O
  *^/ ^/ ^/ ^/ ^/f ^/ ^/ ^/ ^/ ^/r?   