
    biD                     @   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j:                         Zej>                  Zej@                  ejB                  ejD                  ejF                  ejH                  ejJ                  ejL                  ejJ                  ejN                  ejP                  iZ)ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  ej`                  ejb                  ejd                  ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  ejv                  ejx                  ejz                  ej|                  ej~                  ej                  ej                  iZB eCdddddddd      ZDd ZEd ZFd ZGd  ZHd! ZId" ZJd# ZKej                  ZLej                  ZMd.d$ZNej                  ZOerej                  ZPd/d%ZQd& ZRd' ZSd( ZTd) ZUd* ZVd+ ZW G d, d-      ZXy)0z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_percentPROCFS_PATHproc_threadsnet_io_countersproc_io_counters                  )ppidrssvmscreate_timenicenum_threadsstatusttynrc                      t        j                         \  } }}}}t        | |z
  | d      }t        j                  | ||||      S )Nr   round_)cextvirtual_memr   ntpsvmem)totalavailfree_pinnedinusepercents         H/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/psutil/_psaix.pyvirtual_memoryr2   V   sD    )-)9)9);&E5$UU]U1=G99UE7E488    c                      t        j                         \  } }}}| |z
  }t        || d      }t        j                  | |||||      S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r%   )r'   swap_memr   r)   sswap)r+   r-   sinsoutusedr0   s         r1   swap_memoryr:   \   sF    !]]_E4d4<DD%2G99UD$d;;r3   c                      t        j                         } t        j                  t	        |  D cg c]  }t        |       c} S c c}w )z.Return system-wide CPU times as a named tuple.)r'   per_cpu_timesr)   	scputimeszipsumretxs     r1   	cpu_timesrC   i   s5    



C==395a3q65665s   Ac                  t    t        j                         } | D cg c]  }t        j                  |  c}S c c}w )z6Return system per-CPU times as a list of named tuples.)r'   r<   r)   r=   r@   s     r1   r<   r<   o   s-    



C'*+!CMM1+++s   5c                  L    	 t        j                  d      S # t        $ r Y yw xY w)z0Return the number of logical CPUs in the system.SC_NPROCESSORS_ONLNN)ossysconf
ValueError r3   r1   cpu_count_logicalrK   u   s)    zz/00 s    	##c                  P   g d} t        j                  | t         j                  t         j                        }|j                         \  }}d ||fD        \  }}|j                  dk7  r| d| }t        |      |j                         j                         }t        |      xs d S )N)lsdevz-Cc	processorstdoutstderrc              3   n   K   | ]-  }|j                  t        j                  j                         / y wNdecodesysrP   encoding.0rB   s     r1   	<genexpr>z"cpu_count_cores.<locals>.<genexpr>   s#     Nahhszz223N   35r   z command error
)	
subprocessPopenPIPEcommunicate
returncodeRuntimeErrorstrip
splitlineslen)cmdprP   rQ   msg
processorss         r1   cpu_count_coresri   ~   s    
'CZ__Z__MA]]_NFFNff=MNNFF||q'x03**,Jz?"d"r3   c                  d    t        j                         \  } }}}t        j                  | |||      S )z*Return various CPU stats as a named tuple.)r'   	cpu_statsr)   	scpustats)ctx_switches
interruptssoft_interruptssyscallss       r1   rk   rk      s,    :>..:J7L*ox==z?HMMr3   c                     g }t        j                         }|D ]Q  }|\  }}}}|dk(  rd}| st        |      j                  s)t	        j
                  ||||      }|j                  |       S |S )zReturn system disk partitions.none )r'   disk_partitions
disk_usager+   r)   	sdiskpartappend)	allretlist
partitions	partitiondevice
mountpointfstypeoptsntuples	            r1   rt   rt      s~     G%%'J 	+4(
FDVF j)//vz64@v Nr3   c                     t         j                  |    \  }}t        j                  |      }g }|D ]E  }|\  }}}	}
}}}||vr|	|vrt	        |||	|
||t
        |dk(  r|nd      }|j                  |       G |S )zReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    Npid)r   	conn_tmapr'   net_connectionsr   TCP_STATUSESrw   )kind_pidfamiliestypesrawlistrA   itemfdfamtype_laddrraddrr"   r   nts                  r1   r   r      s     ''-OHe""4(G
C 481Cufchrzt	
 	

2!" Jr3   c                     t         t        d} t               D ch c]  }|d   	 }}i }|D ]"  }t        j                  |      }t        j
                  |      }d}d}t        j                  dd|gt        j                  t        j                        }	|	j                         \  }
}d |
|fD        \  }
}|	j                  dk(  rCt        j                  d|
      }|+t        |j                  d	            }|j                  d
      }dj                  |      }d|v }| j!                  |t"              }t%        j&                  |||||      ||<   % |S c c}w )z)Get NIC stats (isup, duplex, speed, mtu).)FullHalfr   rs   z/usr/bin/entstatz-drO   c              3   n   K   | ]-  }|j                  t        j                  j                         / y wrS   rT   rX   s     r1   rZ   znet_if_stats.<locals>.<genexpr>   (      
./AHHSZZ(()
r[   z"Running: (\d+) Mbps.*?(\w+) Duplexr   r   ,running)r   r	   net_if_addrsr'   
net_if_mtunet_if_flagsr\   r]   r^   r_   r`   researchintgroupjoingetr
   r)   	snicstats)
duplex_maprB   namesrA   namemtuflagsduplexspeedrf   rP   rQ   	re_resultoutput_flagsisups                  r1   net_if_statsr      sO   )?CJ'>*aQqT*E*
C Jood#!!$'
 t,????

 
4:F3C
 <<1		5vI $IOOA./"+xxE!(:;MM$sLID	;J< JA +s   Ec                  *    t        j                         S )z:The system boot time expressed in seconds since the epoch.)r'   	boot_timerJ   r3   r1   r   r      s    >>r3   c                      g } t        j                         }d}|D ]>  }|\  }}}}}}	|s||v rd}t        j                  |||||	      }
| j	                  |
       @ | S )z:Return currently connected users as a list of namedtuples.)z:0.0z:0	localhost)r'   usersr)   suserrw   )ry   r   r   r   userttyhostnametstampuser_processr   r   s              r1   r   r     sv    GjjlGI 
9=6c8V\3 y "HYYtS(FC8r
 Nr3   c                      t        j                  t                     D  cg c]  } | j                         st	        |         c} S c c} w )z7Returns a list of PIDs currently running on the system.)rG   listdirr   isdigitr   )rB   s    r1   pidsr     s.    JJ'89IqQYY[CFIIIs
   AAc                     t         j                  j                  t         j                  j                  t	               t        |       d            S )z&Check for the existence of a unix pid.psinfo)rG   pathexistsr   r   strr   s    r1   
pid_existsr   !  s-    77>>"'',,'8#c(HMNNr3   c                 B     t        j                          fd       }|S )zCall callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c                    | j                   | j                  | j                  }}}	  | g|i |S # t        t        f$ r+}t        |      st        ||      |t        |||      |d }~wt        $ r}t        ||      |d }~ww xY wrS   )
r   _ppid_nameFileNotFoundErrorProcessLookupErrorr   r   r   PermissionErrorr   )selfargskwargsr   r   r   errfuns          r1   wrapperz wrap_exceptions.<locals>.wrapper+  s    ((DJJ

4T
	3t-d-f--!#56 	: c?#C.C7T40c9 	3sD)s2	3s!   3 B&A((B4BB)	functoolswraps)r   r   s   ` r1   wrap_exceptionsr   &  s'    
 __S3 3 Nr3   c                      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%yy)"Processz1Wrapper class around underlying C implementation.)_cacher   r   _procfs_pathr   c                 L    || _         d | _        d | _        t               | _        y rS   )r   r   r   r   r   )r   r   s     r1   __init__zProcess.__init__B  s"    

+-r3   c                 p    | j                   j                  |        | j                  j                  |        y rS   )_proc_basic_infocache_activate
_proc_credr   s    r1   oneshot_enterzProcess.oneshot_enterH  s(    ,,T2&&t,r3   c                 p    | j                   j                  |        | j                  j                  |        y rS   )r   cache_deactivater   r   s    r1   oneshot_exitzProcess.oneshot_exitL  s(    ..t4((.r3   c                 V    t        j                  | j                  | j                        S rS   )r'   proc_basic_infor   r   r   s    r1   r   zProcess._proc_basic_infoP  s!     ##DHHd.?.?@@r3   c                 V    t        j                  | j                  | j                        S rS   )r'   	proc_credr   r   r   s    r1   r   zProcess._proc_credU  s     ~~dhh(9(9::r3   c                     | j                   dk(  ryt        j                  | j                   | j                        j	                  d      S )Nr   swapper )r   r'   	proc_namer   rstripr   s    r1   r   zProcess.nameZ  s6    88q=~~dhh(9(9:AA&IIr3   c                    | j                         }|sy|d   }t        j                  j                  |v rt        j                  j	                  |      sKt        j                  j                  t        j                  j                  | j                         |            }t        j                  j	                  |      rEt        j                  j                  |      r&t        j                  |t        j                        r|S t        j                  j                  |      }t        j                  d   j                  d      D ]  }t        j                  j                  t        j                  j                  ||            }t        j                  j                  |      s`t        j                  |t        j                        s|c S  y)Nrs   r   PATH:)cmdlinerG   r   sepisabsabspathr   cwdisfileaccessX_OKbasenameenvironsplit)r   r   exer   possible_exes        r1   r   zProcess.exea  s%    ,,.aj77;;#77==%ggoobggll488:s&CDc"GGNN3'IIc277+
''""3'CJJv&,,S1 	$D77??277<<c+BCLww~~l+		bgg1 $#	$ r3   c                 @    t        j                  | j                        S rS   )r'   	proc_argsr   r   s    r1   r   zProcess.cmdline  s    ~~dhh''r3   c                 @    t        j                  | j                        S rS   )r'   proc_environr   r   s    r1   r   zProcess.environ  s      **r3   c                 6    | j                         t        d      S )Nr   r   proc_info_mapr   s    r1   r   zProcess.create_time      $$&}]'CDDr3   c                 6    | j                         t        d      S )Nr!   r  r   s    r1   r!   zProcess.num_threads  r  r3   c                    t        j                  | j                        }g }|D ].  \  }}}t        j                  |||      }|j                  |       0 |s.t        j                  | j                   d| j                          |S )N/)	r'   r   r   r)   pthreadrw   rG   statr   )r   r   ry   	thread_idutimestimer   s          r1   threadszProcess.threads  s{    ''1GG+2 ''	5%Yu=v&' 4,,-Qtxxj9:Nr3   c                     t        || j                        }|s.t        j                  | j                   d| j                          |S )N)r   r  )r   r   rG   r	  r   )r   r   rA   s      r1   r   zProcess.net_connections  s>    d2 GGt(()488*56
r3   c                 @    t        j                  | j                        S rS   )r'   proc_priority_getr   r   s    r1   nice_getzProcess.nice_get  s    %%dhh//r3   c                 B    t        j                  | j                  |      S rS   )r'   proc_priority_setr   )r   values     r1   nice_setzProcess.nice_set  s    %%dhh66r3   c                 X    | j                         t        d      | _        | j                  S )Nr   )r   r  r   r   s    r1   r   zProcess.ppid  s&    **,]6-BC
zzr3   c                 ^    | j                         \  }}}}}}t        j                  |||      S rS   r   r)   puids)r   real	effectivesaved_s        r1   uidszProcess.uids  s.    *.//*;'i1ayyy%00r3   c                 ^    | j                         \  }}}}}}t        j                  |||      S rS   r  )r   r  r  r  r  s        r1   gidszProcess.gids  s.    *.//*;'1ay%yyy%00r3   c                 z    t        j                  | j                  | j                        }t	        j
                  | S rS   )r'   proc_cpu_timesr   r   r)   	pcputimes)r   ts     r1   rC   zProcess.cpu_times  s-    $*;*;<}}a  r3   c                     | j                         t        d      }|dz  dz	  |dz  z  }t        j                  d      D ](  }t        j                  |      j
                  |k(  s&|c S  y )Nr#   l           i  z	/dev/**/*)r   r  globrG   r	  st_rdev)r   ttydevdevs      r1   terminalzProcess.terminal  sk    &&(w)?@..25&6/J99[) 	Cwws|##v-
	 r3   c                     | j                   }	 t        j                  | d| j                   d      }|j	                  d      S # t
        $ r' t        j                  | d| j                          Y yw xY w)Nr  z/cwdrs   )r   rG   readlinkr   r   r   r	  )r   procfs_pathresults      r1   r   zProcess.cwd  sm    ''	[[K=$((4!@AF==%%  	GG{m1TXXJ/0	s   5A -A43A4c                     | j                         }|t        d      dz  }|t        d      dz  }t        j                  ||      S )Nr   i   r   )r   r  r)   pmem)r   rA   r   r   s       r1   memory_infozProcess.memory_info  sI    ##%-&'$.-&'$.xxS!!r3   c                 b    | j                         t        d      }t        j                  |d      S )Nr"   ?)r   r  PROC_STATUSESr   )r   codes     r1   r"   zProcess.status  s-    $$&}X'>?  s++r3   c           	      T   t        j                  ddt        | j                        gt         j                  t         j                        }|j                         \  }}d ||fD        \  }}d|j                         v r t        | j                  | j                        t        j                  d|      }g }|D ]m  \  }}|j                         }|j                  d      r|dd  }|j                         d	k(  r@|j                  t        j                  |t!        |                   o |S )
Nz/usr/bin/procfilesz-nrO   c              3   n   K   | ]-  }|j                  t        j                  j                         / y wrS   rT   rX   s     r1   rZ   z%Process.open_files.<locals>.<genexpr>  r   r[   zno such processz(\d+): S_IFREG.*name:(.*)\nz//r   zcannot be retrieved)r\   r]   r   r   r^   r_   lowerr   r   r   findallrb   
startswithrw   r)   	popenfiler   )r   rf   rP   rQ   	procfilesry   r   r   s           r1   
open_fileszProcess.open_files  s    !4TXX7????

 
4:F3C
 .$**55JJ=vF	! 	9HB::<Dt$ABxzz|44NN3==s2w78	9 r3   c                     | j                   dk(  ryt        t        j                  | j                   d| j                    d            S )Nr   r  z/fd)r   rd   rG   r   r   r   s    r1   num_fdszProcess.num_fds  s<    88q=2::!2!2 31TXXJcBCDDr3   c                 `    t        j                  t        j                  | j                         S rS   )r)   pctxswr'   proc_num_ctx_switchesr   r   s    r1   num_ctx_switcheszProcess.num_ctx_switches  s     zz455dhh?@@r3   Nc                 X    t        j                  | j                  || j                        S rS   )r   wait_pidr   r   )r   timeouts     r1   waitzProcess.wait  s      7DJJ??r3   c                    	 t        j                  | j                        \  }}}}t        j                  ||||      S # t        $ r<}t	        | j                        s!t        | j                  | j                        | d }~ww xY wrS   )	r'   r   r   OSErrorr   r   r   r)   pio)r   rcwcrbwbr   s         r1   io_counterszProcess.io_counters  st    !%!6!6txx!@BB 772r2r**   "$((+'$**=3Fs   $> 	B7A>>B)inetrS   )&__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   r2  memory_full_infor"   r>  r@  rD  rH  HAS_PROC_IO_COUNTERSrP  rJ   r3   r1   r   r   =  s-   ;CI.-/ A  A ;  ; J J  : ( ( + + E E E E 		 
	  
 
 0 0 7 7   1 1 1 1 ! !     " " #, ,
2 E E
 A A @ @ 			+ 
		+ r3   r   )F)r   )YrU  r   r'  rG   r   r\   rV   rs   r   r   r)   r   r   r'   r   r	   r
   r   r   r   r   r   r   r   __extra__all__hasattrrW  HAS_NET_IO_COUNTERSrY  getpagesize	PAGE_SIZEAF_LINKSIDLSTATUS_IDLESZOMBSTATUS_ZOMBIESACTIVESTATUS_RUNNINGSSWAPSSTOPSTATUS_STOPPEDr5  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  r2   r:   rC   r<   rK   ri   rk   disk_io_countersru   rt   r   r   r   r   r   r   r   r   r   r   rJ   r3   r1   <module>r     sl   #   	 	  
    ! $ $ ' ! " " # $ + " dN+d$56 t%78 D	
,, 	IIw""JJ%%LL'((JJ&&JJ&& 	733----'00'00//g(('11--g))w++7,, 	
			

	"9<7,	#N ((   
4   **O6#V
0J
O
.e+ e+r3   