
    gc                     <   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dlmZ ddlm Z  ddlm!Z! g dZ" ej#                    Z$ej%        Z%ej&        dk    Z'dZ(dZ)ej*        ej+        ej,        ej-        ej.        ej/        ej0        ej1        ej2        ej3        ej4        ej-        ej5        ej6        iZ7e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        ejI        ejJ        ejK        ejL        ejM        ejN        ejO        ejP        e(ejQ        e)iZR eSddddd d!d"d#d$d%d&d'(          ZT ed)g d*          ZU ed+g d,          ZV ed-g d.          ZW ed/d0d1g          ZXeXZY ed2g d3          ZZ ed4d5d6[                    eZj\                  z             Z]d7 Z^d8 Z_d9 Z`d: Zad; Zbd< Zcd= Zdeje        Zeejf        ZfdJd?Zgejh        Zheji        ZidKdAZjdB ZkdC ZldD ZmdE ZndF ZodG Zp G dH dI          ZqdS )Lz'Sun OS Solaris platform implementation.    N)
namedtuple)AF_INET   )_common)_psposix)_psutil_posix)_psutil_sunos)AF_INET6)AccessDenied)NoSuchProcess)ZombieProcess)debug)get_procfs_path)isfile_strict)memoize_when_activated)sockfam_to_enum)socktype_to_enum)usage_percent)PY3)FileNotFoundError)PermissionError)ProcessLookupError)b)	CONN_IDLE
CONN_BOUNDPROCFS_PATHl        IDLEBOUND                     	   
      )ppidrssvmscreate_timenicenum_threadsstatusttynruideuidgidegid	scputimes)usersystemidleiowait	pcputimes)r6   r7   children_userchildren_systemsvmem)total	availablepercentusedfreepmemr*   r+   pmmap_grouped)pathr*   	anonymouslocked	pmmap_extzaddr perms  c                      t          j        d          t          z  } t          j        d          t          z  x}}| |z
  }t          || d          }t	          | ||||          S )zReport virtual memory metrics.SC_PHYS_PAGESSC_AVPHYS_PAGESr   round_)ossysconf	PAGE_SIZEr   r=   )r>   rB   availrA   r@   s        K/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/_pssunos.pyvirtual_memoryrT      se     J'')3E:/009<<D54<DD%222Gwd333    c            	      D   t          j                    \  } }t          j        ddt          j        d         z  ddgt          j                  }|                                \  }}t          r$|	                    t          j        j                  }|j        dk    rt          d|j        z            |                                                    d	          d
d         }|sd}t          |          dx}}|D ]g}	|	                                }	|	dd         \  }
}|t#          t#          |
          dz            z  }|t#          t#          |          dz            z  }h||z
  }t%          ||d
          }t'          j        ||||| t*          z  |t*          z            S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:%sPATHswapz-l)stdoutr   z'swap -l' failed (retcode=%s)
r   Nzno swap device(s) configuredr    r"   i   rM   )cextswap_mem
subprocessPopenrO   environPIPEcommunicater   decodesysrY   encoding
returncodeRuntimeErrorstripsplitintr   r   sswaprQ   )sinsoutprY   _linesmsgr>   rB   linetfrA   r@   s                 rS   swap_memoryrt      s   IC 	%
6(::		
 	 	 	A IFA
 4sz233|q:Q\IJJJLLNN  &&qrr*E  ,3ED " "zz||AaCy1SVVc\"""CFFSL!!!4<DD%222G=tT7C)OTI5E  rU   c                  \    t          j                    } t          d t          |  D              S )z.Return system-wide CPU times as a named tuple.c                 ,    g | ]}t          |          S  )sum.0xs     rS   
<listcomp>zcpu_times.<locals>.<listcomp>   s    111!s1vv111rU   )r[   per_cpu_timesr5   ziprets    rS   	cpu_timesr      s.    



C11sCy11122rU   c                  @    t          j                    } d | D             S )z6Return system per-CPU times as a list of named tuples.c                      g | ]}t          | S rw   )r5   ry   s     rS   r|   z!per_cpu_times.<locals>.<listcomp>   s    '''aIqM'''rU   )r[   r}   r   s    rS   r}   r}      s$    



C''3''''rU   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)rO   rP   
ValueErrorrw   rU   rS   cpu_count_logicalr      s:    z/000   tts    
$$c                  (    t          j                    S )z-Return the number of CPU cores in the system.)r[   cpu_count_coresrw   rU   rS   r   r      s    !!!rU   c                  d    t          j                    \  } }}}d}t          j        | |||          S )z*Return various CPU stats as a named tuple.r   )r[   	cpu_statsr   	scpustats)ctx_switches
interruptssyscalls_trapssoft_interruptss        rS   r   r      s;    151A1A.L*hOj/8  rU   Fc                 :   g }t          j                    }|D ]}|\  }}}}|dk    rd}| sC	 t          |          j        s)n,# t          $ r}t          d|d|           Y d}~Nd}~ww xY wt          j        ||||          }	|                    |	           |S )zReturn system disk partitions.none z	skipping z: N)	r[   disk_partitions
disk_usager>   OSErrorr   r   	sdiskpartappend)
allretlist
partitions	partitiondevice
mountpointfstypeoptserrntuples
             rS   r   r      s     G%''J  	+4(
FDVF 
	!*--3    :::ss;<<< "6:vtDDvNs   A
A+A&&A+c           
         t           j                                        }|dk    r|                    dd           | |vr2t	          d| dd                    d |D                                 t           j        |          \  }}t          j        |          }t                      }|D ]}|\  }}	}
}}}}|	|vr|
|vr|	t          t          fv r |rt          j        | }|rt          j        | }t          |         }t          |	          }	t          |
          }
|dk    rt          j        ||	|
||||          }nt          j        ||	|
|||          }|                    |           t%          |          S )zReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    Only INET sockets are returned (UNIX are not).
    r   unixr   zinvalid z kind argument; choose between z, c                 ,    g | ]}t          |          S rw   )reprry   s     rS   r|   z#net_connections.<locals>.<listcomp>  s    666AQ666rU   )r   	conn_tmapcopypopr   joinr[   net_connectionssetr   r
   addrTCP_STATUSESr   r   sconnpconnaddlist)kind_pidcmapfamiliestypesrawlistr   itemfdfamtype_laddrraddrr/   pidnts                   rS   r   r     s   
 !!##Drzz4jttTYY666667779
 
 	
 '-OHe"4((G
%%C  481Cufch7H%%% -e, -e,f%c"" ''2::r3ueVSIIBBr3ueVDDB99rU   c                      t          j                    } |                                 D ]P\  }}|\  }}}}t          t          d          rt	          j        |          }t	          j        ||||d          | |<   Q| S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplexr   )r[   net_if_statsitemshasattrr   r   	snicstats)r   namer   isupduplexspeedmtus          rS   r   r   .  s    



Cyy{{ D De#( feS7K(( 	/&v..F%dFE3CCD		JrU   c                  (    t          j                    S )z:The system boot time expressed in seconds since the epoch.)r[   	boot_timerw   rU   rS   r   r   >  s    >rU   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)r[   usersr   suserr   )r   r   r   r   r6   ttyhostnametstampuser_processr   r   s              rS   r   r   C  s    GjllGI 
 
9=6c8V\3  	y  "H]4h<<rNrU   c                  p    d t          j        t          t                                          D             S )z7Returns a list of PIDs currently running on the system.c                 T    g | ]%}|                                 t          |          &S rw   )isdigitri   ry   s     rS   r|   zpids.<locals>.<listcomp>]  s+    LLLq		LCFFLLLrU   )rO   listdirr   r   rw   rU   rS   pidsr   [  s.    LLBJq):):';';<<LLLLrU   c                 *    t          j        |           S )z&Check for the existence of a unix pid.)r   
pid_exists)r   s    rS   r   r   `  s    s###rU   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                  t          $ r8 | j        dk    r+dt                      v rt          | j        | j                    w xY wNr   )r   r   r   r   r   _namer   _ppidr   r   r   r   )selfargskwargsfuns      rS   wrapperz wrap_exceptions.<locals>.wrapperj  s    	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 	 	 	x1}};;&tx<<<	s
    CC)	functoolswraps)r   r   s   ` rS   wrap_exceptionsr   e  s:    
 _S    * NrU   c                      e Zd ZdZg dZd Zd Zd Zd Ze	e
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	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e	d             Z e	d             Z!d Z"e	d(d            Z# e$d d!          Z% e$d d"          Z&e	d#             Z'e	d$             Z(e	d%             Z)e	d)d'            Z*d&S )*Processz1Wrapper class around underlying C implementation.)_cacher   r   _procfs_pathr   c                 V    || _         d | _        d | _        t                      | _        d S N)r   r   r   r   r   )r   r   s     rS   __init__zProcess.__init__  s+    

+--rU   c                 L    t          j        | j        d| j                   dS )z+Raise NSP if the process disappeared on us./N)rO   statr   r   r   s    rS   _assert_alivezProcess._assert_alive  s,     	4,,,dhh788888rU   c                     | j                             |            | j                            |            | j                            |            d S r   )_proc_name_and_argscache_activate_proc_basic_info
_proc_credr   s    rS   oneshot_enterzProcess.oneshot_enter  sL     //555,,T222&&t,,,,,rU   c                     | j                             |            | j                            |            | j                            |            d S r   )r   cache_deactivater   r   r   s    rS   oneshot_exitzProcess.oneshot_exit  sL     11$777..t444((.....rU   c                 @    t          j        | j        | j                  S r   )r[   proc_name_and_argsr   r   r   s    rS   r   zProcess._proc_name_and_args  s     &tx1BCCCrU   c                 .   | j         dk    rCt          j                            | j        d| j         d          st          | j                   t          j        | j         | j                  }t          |          t          t                    k    sJ |S )Nr   r   z/psinfo)
r   rO   rE   existsr   r   r[   proc_basic_infolenproc_info_map)r   r   s     rS   r   zProcess._proc_basic_info  s     8q=="///:"
 "
= tx((("48T->??3xx3}------
rU   c                 @    t          j        | j        | j                  S r   )r[   	proc_credr   r   r   s    rS   r   zProcess._proc_cred  s     ~dh(9:::rU   c                 6    |                                  d         S r   )r   r   s    rS   r   zProcess.name  s     ''))!,,rU   c                     	 t          j        | j        d| j        d          S # t          $ r Y nw xY w|                                  dS )Nr   z/path/a.outr   )rO   readlinkr   r   r   cmdliner   s    rS   exezProcess.exe  sh    	;&*&7&7&7B    	 	 	D	
 	rs   #& 
33c                 \    |                                  d                             d          S )Nr   rI   )r   rh   r   s    rS   r  zProcess.cmdline  s'    ''))!,223777rU   c                 @    t          j        | j        | j                  S r   )r[   proc_environr   r   r   s    rS   r_   zProcess.environ       4+<===rU   c                 L    |                                  t          d                  S )Nr,   r   r  r   s    rS   r,   zProcess.create_time      $$&&}]'CDDrU   c                 L    |                                  t          d                  S )Nr.   r  r   s    rS   r.   zProcess.num_threads  r  rU   c                 L    |                                  t          d                  S )Nr-   r  r   s    rS   nice_getzProcess.nice_get  s     
 $$&&}V'<==rU   c                 |    | j         dv rt          | j         | j                  t          j        | j         |          S )N)r   r    )r   r   r   
cext_posixsetpriority)r   values     rS   nice_setzProcess.nice_set  s:    8v
 tx444%dh666rU   c                 d    |                                  t          d                  | _        | j        S )Nr)   )r   r  r   r   s    rS   r)   zProcess.ppid  s'    **,,]6-BC
zrU   c                     	 |                                  \  }}}}}}n\# t          $ rO |                                 t          d                  }|                                 t          d                  }d }Y nw xY wt	          j        |||          S )Nr1   r2   r   r   r   r  r   puids)r   real	effectivesavedrn   s        rS   uidszProcess.uids  s    	.2oo.?.?+D)UAq!! 	 	 	((**=+?@D--//f0EFIEEE	 }T9e444    AA76A7c                     	 |                                  \  }}}}}}n\# t          $ rO |                                 t          d                  }|                                 t          d                  }d }Y nw xY wt	          j        |||          S )Nr3   r4   r   )r   rn   r"  r#  r$  s        rS   gidszProcess.gids  s    	.2oo.?.?+Aq!T9ee 	 	 	((**=+?@D--//f0EFIEEE	 }T9e444r&  c                     	 t          j        | j        | j                  }n7# t          $ r*}|j        t
          j        k    r
t          sd}n Y d }~nd }~ww xY wt          j	        | S )N)        r*  r*  r*  )
r[   proc_cpu_timesr   r   r   errno	EOVERFLOW	IS_64_BITr   r:   )r   timesr   s      rS   r   zProcess.cpu_times   s|    	'$2CDDEE 	 	 	yEO++I+ - 	  %((s   " 
A AAc                 @    t          j        | j        | j                  S r   )r[   proc_cpu_numr   r   r   s    rS   cpu_numzProcess.cpu_num  r  rU   c                 <   | j         }d}t          |                                 t          d                            }|t          j        k    r8dD ]5}	 t          j        d|| j        |fz            c S # t          $ r d}Y 2w xY w|r| 
                                 d S d S )NFr0   )r   r   r      z%s/%d/path/%dT)r   r   r   r  r[   PRNODEVrO   r  r   r   r   )r   procfs_path
hit_enoentr   r{   s        rS   terminalzProcess.terminal  s    '
d3355mG6LMNN$,#  ;';!*DD     )   !%JH  	!     	! 	!s   A22B Bc                     | j         }	 t          j        |d| j        d          S # t          $ r" t          j        |d| j                   Y dS w xY w)Nr   z	/path/cwdr   )r   rO   r  r   r   r   )r   r6  s     rS   cwdzProcess.cwd'  so     '	;;;;IJJJ  	 	 	G{{{DHH566622	s   ( (AAc                     |                                  }|t          d                  dz  }|t          d                  dz  }t          ||          S )Nr*   i   r+   )r   r  rC   )r   r   r*   r+   s       rS   memory_infozProcess.memory_info4  sI    ##%%-&'$.-&'$.C~~rU   c                     |                                  t          d                  }t                              |d          S )Nr/   ?)r   r  PROC_STATUSESget)r   codes     rS   r/   zProcess.status=  s3    $$&&}X'>?  s+++rU   c                    | j         }g }t          j        d|| j        fz            }d}|D ]}t	          |          }	 t          j        | j        ||          \  }}t          j        |||          }|	                    |           \# t          $ rC}	|	j        t          j        k    rt          sY d }	~	|	j        t          j        k    rd}Y d }	~	 d }	~	ww xY w|r|                                  |S )Nz	%s/%d/lwpFT)r   rO   r   r   ri   r[   query_process_threadr   pthreadr   EnvironmentErrorr,  r-  r.  ENOENTr   )
r   r6  r   tidsr7  tidutimestimer   r   s
             rS   threadszProcess.threadsC  s   'z+dh(??@@
 	 	Cc((C#8Hc;   u& _S%77

2# $   9//	/ HHHH9,,!%JHHHH$  	!   
s#   B
CC3CCCc           	         g }d}| j         }d|| j        fz  }t          j        d|| j        fz            D ]}t          j                            ||          }t          j                            |          rl	 t          j        |          }t          |          r5|	                    t          j        |t          |                               # t          $ r d}Y w xY w|r|                                  |S )NFz
%s/%d/pathz%s/%d/fdT)r   r   rO   r   rE   r   islinkr  r   r   r   	popenfileri   r   r   )r   r   r7  r6  pathdirr   rE   files           rS   
open_fileszProcess.open_filese  s   
'+tx!88*Z;*AABB 
	I 
	IB7<<,,Dw~~d## II;t,,D
 %T** Iw'8s2ww'G'GHHH )   !%JHI  	!   s   8CC C c              #     K   dt          |          g}t          j        |t          j        t          j                  }|                                \  }}t
          rd ||fD             \  }}|j        dk    rtd|                                v rt          | j	        | j
                  d|                                v rt          | j	        | j
                  t          |d|          |                    d          d	d
         }t          |          D ]\  }}|                                }|                    d          r|                    dd	          d	         }	||d	z
                                           }
|
dk    rt$          j        }
n|
dk    rt$          j        }
nd}
dt$          j        |
|	dt,          j        fV  d
S )z<Get UNIX sockets used by process by parsing 'pfiles' output.pfiles)rY   stderrc              3   ^   K   | ](}|                     t          j        j                  V  )d S r   )rb   rc   rY   rd   ry   s     rS   	<genexpr>z,Process._get_unix_sockets.<locals>.<genexpr>  sD        23,--     rU   r   zpermission deniedzno such processz command error
rZ   r   Nzsockname: AF_UNIXrI   SOCK_STREAM
SOCK_DGRAMr   r   )strr]   r^   r`   ra   r   re   lowerr   r   r   r   rf   rh   	enumeratelstrip
startswithrg   socketrW  rX  AF_UNIXr   	CONN_NONE)r   r   cmdrm   rY   rT  ro   irq   rE   types              rS   _get_unix_socketszProcess._get_unix_socketsz  s      S"


 
 
  	 8>7G  NFF <1"fllnn44"48TZ888 FLLNN22#DHdj999ffEFFFT""122& '' 	N 	NGAt;;==D233 	Nzz#q))!,QU|))++=((!-DD\))!,DDD6>4r7;LMMMM	N 	NrU   inetc                     t          || j                  }|s#t          j        | j        d| j                   |dv r7|                    d |                     | j                  D                        |S )N)r   r   )r   r   c                 *    g | ]}t          j        | S rw   )r   r   )rz   conns     rS   r|   z+Process.net_connections.<locals>.<listcomp>  s/        t$  rU   )r   r   rO   r   r   extendrd  )r   r   r   s      rS   r   zProcess.net_connections  s    d222  	=Gt000$((;<<< ?""JJ   2248<<      
rU   mmapzpath rss anon lockedzaddr perms path rss anon lockedc           	      L   d }| j         }g }	 t          j        | j        |          }n6# t          $ r)}|j        t
          j        k    rt          sg cY d }~S  d }~ww xY wd}|D ]}|\  }}	}
}}}} |||	          }|                    d          sb	 t          j
        |d| j        d|          }n?# t          $ r2}|j        t
          j        k    r|d| j        d|}d}n Y d }~nd }~ww xY w|                    ||
||||f           |r|                                  |S )Nc                     t          |           dd                              d          dt          |          dd                              d          S )Nr   L-)hexrg   )startends     rS   toaddrz#Process.memory_maps.<locals>.toaddr  sS    E

122$$S))))C""3''' rU   F[r   z/path/T)r   r[   proc_memory_mapsr   r   r,  r-  r.  r]  rO   r  rF  r   r   )r   rr  r6  r   r   r   r7  r   r   addrsizepermr   r*   anonrG   s                  rS   memory_mapszProcess.memory_maps  s   	 	 	 '	+DHkBBGG 	 	 	yEO++I+ 							 
 	B 	BD<@9D(D$T66$))D??3'' ;+6;;$$G DD    yEL00 3>++txxxN%)

 #



 NND$c4@AAAA 	!   s8   ) 
AAAAA!B33
C/=(C**C/c                 d    t          t          j        | j        d| j        d                    S )Nr   z/fd)r  rO   r   r   r   r   s    rS   num_fdszProcess.num_fds  s.    2:D,=,=,=txxxHIIJJJrU   c                 X    t          j        t          j        | j        | j                   S r   )r   pctxswr[   proc_num_ctx_switchesr   r   r   s    rS   num_ctx_switcheszProcess.num_ctx_switches  s&    ~'$2CDD
 	
rU   Nc                 B    t          j        | j        || j                  S r   )r   wait_pidr   r   )r   timeouts     rS   waitzProcess.wait  s     7DJ???rU   )re  r   )+__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r   r   r   r  r  r_   r,   r.   r  r  r)   r%  r(  r   r2  r8  r:  r<  memory_full_infor/   rK  rQ  rd  r   r   nt_mmap_groupednt_mmap_extrx  rz  r~  r  rw   rU   rS   r   r     s       ;;CCCI. . .9 9 9- - -
/ / /
 D D  _D    _ ; ;  _; - - _-   _ 8 8 _8 > > _> E E _E E E _E > > _> 7 7 _7   _ 5 5 _5 5 5 _5 ) ) _)" > > _> ! ! _!  
 
 _
   _ #, , _,
   _B   _( N  N  ND    _& !j)?@@O*V%FGGK/ / _/b K K _K 
 
 _

 @ @ @ _@ @ @rU   r   )F)r   )rr  r,  r   rO   r^  r]   rc   collectionsr   r   r   r   r   r   r  r	   r[   r
   r   r   r   r   r   r   r   r   r   r   _compatr   r   r   r   r   __extra__all__getpagesizerQ   AF_LINKmaxsizer.  r   r   SSLEEPSTATUS_SLEEPINGSRUNSTATUS_RUNNINGSZOMBSTATUS_ZOMBIESSTOPSTATUS_STOPPEDSIDLSTATUS_IDLESONPROCSWAITSTATUS_WAITINGr?  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_NONEr`  	TCPS_IDLE
TCPS_BOUNDr   dictr  r5   r:   r=   rC   pfullmemrD   r   _fieldsrH   rT   rt   r   r}   r   r   r   disk_io_countersr   r   net_io_countersnet_if_addrsr   r   r   r   r   r   r   r   rw   rU   rS   <module>r     sG  
 . -      				      



 " " " " " "                   ) ) ) ) ) ) # # # # # #       ! ! ! ! ! ! " " " " " " " " " " " "       $ $ $ $ $ $ " " " " " " + + + + + + $ $ $ $ $ $ % % % % % % " " " " " "       & & & & & & $ $ $ $ $ $ ' ' ' ' ' '       <;; #J"$$	

K%		
 	K(Iw%J%J&Iw"L'(J& 	73--'0'0/g('1-g)w+7,NIOZ" 	
			

		

	  , J{$H$H$HII	JGGG 	 	
7MMMNNz&5%.))
;;;  J-*?!@!@@ 	4 4 4& & &\3 3 3( ( (  " " "
   (  
   > &&$ $ $ $N     
  0M M M
$ $ $
  <n@ n@ n@ n@ n@ n@ n@ n@ n@ n@rU   