
    XhXa                        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 g dZ ej<                         Zej@                  Z ejB                  dkD  Z"dZ#dZ$ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  ej^                  ejP                  ej`                  ejb                  iZ2e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                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  e#ej                  e$iZM eNddddddddd d!d"d#$      ZO ed%g d&      ZP ed'g d(      ZQ ed)g d*      ZR ed+d,d-g      ZSeSZT ed.g d/      ZU ed0d1d2j                  eUj                        z         ZXd3 ZYd4 ZZd5 Z[d6 Z\d7 Z]d8 Z^d9 Z_ej                  Z`ej                  ZadDd:Zbej                  Zcej                  ZddEd;Zed< Zfd= Zgd> Zhd? Zid@ ZjdA Zk G dB dC      Zly)Fz'Sun OS Solaris platform implementation.    N)
namedtuple)AF_INET   )_common)_psposix)_psutil_posix)_psutil_sunos)AF_INET6)ENCODING)AccessDenied)NoSuchProcess)ZombieProcess)debug)get_procfs_path)isfile_strict)memoize_when_activated)sockfam_to_enum)socktype_to_enum)usage_percent)	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)r2   r3   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   r9   )r:   r>   availr=   r<   s        [/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/_pssunos.pyvirtual_memoryrP   {   sZ     JJ')3E::/09<<D54<DD%2Gwd33    c            	         t        j                         \  } }t        j                  ddt        j
                  d    ddgt        j                        }|j                         \  }}|j                  t        j                  j                        }|j                  dk7  rd|j                   d	}t        |      |j                         j                  d
      dd }|sd}t        |      dx}}|D ]N  }	|	j                         }	|	dd \  }
}|t!        t!        |
      dz        z  }|t!        t!        |      dz        z  }P ||z
  }t#        ||d      }t%        j&                  ||||| t(        z  |t(        z        S )zReport swap memory metrics.z/usr/bin/envzPATH=/usr/sbin:/sbin:PATHswapz-l)stdoutr   z'swap -l' failed (retcode=)
r   Nzno swap device(s) configuredr   r   i   rI   )cextswap_mem
subprocessPopenrK   environPIPEcommunicatedecodesysrU   encoding
returncodeRuntimeErrorstripsplitintr   r   sswaprM   )sinsoutprU   _msglinesr:   r>   linetfr=   r<   s                 rO   swap_memoryrq      sq   IC 	#BJJv$6#78		
 	A IFA]]3::../F||q*1<<.:3LLN  &qr*E,3ED "zz|Aay1SVc\""CFSL!!	"
 4<DD%2G==tT7C)OTI5E rQ   c                  ~    t        j                         } t        t        |  D cg c]  }t	        |       c} S c c}w )z.Return system-wide CPU times as a named tuple.)rX   per_cpu_timesr1   zipsumretxs     rO   	cpu_timesry      s1    



CsCy1!s1v1221s   :c                  `    t        j                         } | D cg c]
  }t        |  c}S c c}w )z6Return system per-CPU times as a list of named tuples.)rX   rs   r1   rv   s     rO   rs   rs      s(    



C#&'aIqM'''s   +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)rK   rL   
ValueError rQ   rO   cpu_count_logicalr      s)    zz/00 s    	##c                  *    t        j                         S )z-Return the number of CPU cores in the system.)rX   cpu_count_coresr~   rQ   rO   r   r      s    !!rQ   c                  h    t        j                         \  } }}}d}t        j                  | |||      S )z*Return various CPU stats as a named tuple.r   )rX   	cpu_statsr   	scpustats)ctx_switches
interruptssyscalls_trapssoft_interruptss        rO   r   r      s8    151A.L*hOj/8 rQ   c                 0   g }t        j                         }|D ]S  }|\  }}}}|dk(  rd}| s	 t        |      j                  s*	 t        j                  ||||      }	|j                  |	       U |S # t        $ r}t        d|d|        Y d}~wd}~ww xY w)zReturn system disk partitions.none z	skipping z: N)	rX   disk_partitions
disk_usager:   OSErrorr   r   	sdiskpartappend)
allretlist
partitions	partitiondevice
mountpointfstypeoptserrntuples
             rO   r   r      s     G%%'J 	+4(
FDVF!*-33 4 ""6:vtDv!" N  	*r#78s   A11	B:BBc           
         t         j                  |    \  }}t        j                  |      }t	               }|D ]  }|\  }}}	}
}}}||vr|	|vr|t
        t        hv r(|
rt        j                  |
 }
|rt        j                  | }t        |   }t        |      }t        |	      }	|dk(  rt        j                  |||	|
|||      }nt        j                  |||	|
||      }|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   	conn_tmaprX   net_connectionssetr   r
   addrTCP_STATUSESr   r   sconnpconnaddlist)kind_pidfamiliestypesrawlistrw   itemfdfamtype_laddrraddrr+   pidnts                  rO   r   r     s   
 ''-OHe""4(G
%C 481Cufch7H%%e,e,f%c" '2:r3ueVSIBr3ueVDB'( 9rQ   c                      t        j                         } | j                         D ]M  \  }}|\  }}}}t        t        d      rt	        j
                  |      }t	        j                  ||||d      | |<   O | S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplexr   )rX   net_if_statsitemshasattrr   r   	snicstats)rw   namer   isupduplexspeedmtus          rO   r   r   "  sv    



Cyy{ De#( feS7K(&&v.F%%dFE3CD		D
 JrQ   c                  *    t        j                         S )z:The system boot time expressed in seconds since the epoch.)rX   	boot_timer~   rQ   rO   r   r   2  s    >>rQ   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)rX   usersr   suserr   )r   r   r   r   r2   ttyhostnametstampuser_processr   r   s              rO   r   r   7  sv    GjjlGI 
9=6c8V\3 y "H]]4h<r
 NrQ   c                      t               j                  t              } t        j                  |       D cg c]  }|j                         st        |        c}S c c}w )z7Returns a list of PIDs currently running on the system.)r   encoder   rK   listdirisdigitrf   )rA   rx   s     rO   pidsr   O  s>    ##H-DJJt,<q		CF<<<s   AAc                 ,    t        j                  |       S )z&Check for the existence of a unix pid.)r   
pid_exists)r   s    rO   r   r   U  s    s##rQ   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                  | j                  }}}	  | g|i |S # t        t        f$ r+}t        |      st        ||      |t        |||      |d }~wt        $ r}t        ||      |d }~wt        $ r%}|dk(  rdt               v rt        ||      |  d }~ww xY wNr   )r   _ppid_nameFileNotFoundErrorProcessLookupErrorr   r   r   PermissionErrorr   r   r   )selfargskwargsr   r%   r   r   funs          rO   wrapperz wrap_exceptions.<locals>.wrapper_  s    ((DJJ

4T	t-d-f--!#56 	: c?#C.C7T40c9 	3sD)s2 	ax;&sD1s:	s-   3 B2&A((B24BB2 B--B2)	functoolswraps)r   r   s   ` rO   wrap_exceptionsr   Z  s'    
 __S ( NrQ   c                   0   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*y%))Processz1Wrapper class around underlying C implementation.)_cacher   r   _procfs_pathr   c                 L    || _         d | _        d | _        t               | _        y N)r   r   r   r   r   )r   r   s     rO   __init__zProcess.__init__|  s"    

+-rQ   c                 `    t        j                  | j                   d| j                          y)z+Raise NSP if the process disappeared on us./N)rK   statr   r   r   s    rO   _assert_alivezProcess._assert_alive  s&     	4$$%Qtxxj12rQ   c                     | j                   j                  |        | j                  j                  |        | j                  j                  |        y r   )_proc_name_and_argscache_activate_proc_basic_info
_proc_credr   s    rO   oneshot_enterzProcess.oneshot_enter  s<      //5,,T2&&t,rQ   c                     | j                   j                  |        | j                  j                  |        | j                  j                  |        y r   )r   cache_deactivater   r   r   s    rO   oneshot_exitzProcess.oneshot_exit  s<      11$7..t4((.rQ   c                 V    t        j                  | j                  | j                        S r   )rX   proc_name_and_argsr   r   r   s    rO   r   zProcess._proc_name_and_args  s!     &&txx1B1BCCrQ   c                 N   | j                   dk(  rNt        j                  j                  | j                   d| j                    d      st        | j                         t        j                  | j                   | j                        }t        |      t        t              k(  sJ |S )Nr   r   z/psinfo)
r   rK   rA   existsr   r   rX   proc_basic_infolenproc_info_map)r   rw   s     rO   r   zProcess._proc_basic_info  s     88q=  !488*G4"
 txx((""488T->->?3x3}----
rQ   c                 V    t        j                  | j                  | j                        S r   )rX   	proc_credr   r   r   s    rO   r   zProcess._proc_cred  s     ~~dhh(9(9::rQ   c                 (    | j                         d   S r   )r   r   s    rO   r   zProcess.name  s     '')!,,rQ   c                     	 t        j                  | j                   d| j                   d      S # t        $ r Y nw xY w| j                          y)Nr   z/path/a.outr   )rK   readlinkr   r   r   cmdliner   s    rO   exezProcess.exe  sN    	;;$"3"3!4AdhhZ{KLL 		
 	s   .1 	==c                 F    | j                         d   j                  d      S )Nr   rE   )r   re   r   s    rO   r  zProcess.cmdline  s!    '')!,22377rQ   c                 V    t        j                  | j                  | j                        S r   )rX   proc_environr   r   r   s    rO   r\   zProcess.environ        4+<+<==rQ   c                 6    | j                         t        d      S )Nr(   r   r   r   s    rO   r(   zProcess.create_time      $$&}]'CDDrQ   c                 6    | j                         t        d      S )Nr*   r  r   s    rO   r*   zProcess.num_threads  r	  rQ   c                 6    | j                         t        d      S )Nr)   r  r   s    rO   nice_getzProcess.nice_get  s    
 $$&}V'<==rQ   c                     | j                   dv r t        | j                   | j                        t        j                  | j                   |      S )N>   r   r   )r   r   r   
cext_posixsetpriority)r   values     rO   nice_setzProcess.nice_set  s<    88v
 txx44%%dhh66rQ   c                 X    | j                         t        d      | _        | j                  S )Nr%   )r   r   r   r   s    rO   r%   zProcess.ppid  s&    **,]6-BC
zzrQ   c                     	 | j                         \  }}}}}}t	        j
                  |||      S # t        $ r9 | j                         t        d      }| j                         t        d      }d }Y Xw xY w)Nr-   r.   r   r   r   r   r   puids)r   real	effectivesavedrk   s        rO   uidszProcess.uids  s{    	.2oo.?+D)UAq!
 }}T9e44	  	((*=+?@D--/f0EFIE	   0 ?A21A2c                     	 | j                         \  }}}}}}t	        j
                  |||      S # t        $ r9 | j                         t        d      }| j                         t        d      }d }Y Xw xY w)Nr/   r0   r  )r   rk   r  r  r  s        rO   gidszProcess.gids  s{    	.2oo.?+Aq!T9e
 }}T9e44	  	((*=+?@D--/f0EFIE	r  c                     	 t        j                  | j                  | j                        }t        j                  | S # t        $ r1}|j
                  t
        j                  k(  r	t        sd}n Y d }~Gd }~ww xY w)N)        r  r  r  )
rX   proc_cpu_timesr   r   r   errno	EOVERFLOW	IS_64_BITr   r6   )r   timesr   s      rO   ry   zProcess.cpu_times  si    	''$2C2CDE   %((  	yyEOO+I - 	s   *> 	A8'A33A8c                 V    t        j                  | j                  | j                        S r   )rX   proc_cpu_numr   r   r   s    rO   cpu_numzProcess.cpu_num  r  rQ   c                 4   | j                   }d}t        | j                         t        d            }|t        j
                  k7  r0dD ]+  }	 t        j                  | d| j                   d|       c S  |r| j                          y y # t        $ r d}Y Ow xY w)NFr,   )r   r   r      r   /path/T)r   r   r   r   rX   PRNODEVrK   r   r   r   r   )r   procfs_path
hit_enoentr   rx   s        rO   terminalzProcess.terminal  s    ''
d335mG6LMN$,,# ;;+azs'KLL    ) !%Js   &B		BBc                     | j                   }	 t        j                  | d| j                   d      S # t        $ r' t        j
                  | d| j                          Y yw xY w)Nr   z	/path/cwdr   )r   rK   r   r   r   r   )r   r+  s     rO   cwdzProcess.cwd  sa     ''	;;+azCDD  	GG{m1TXXJ/0	s   $3 -A#"A#c                 v    | j                         }|t        d      dz  }|t        d      dz  }t        ||      S )Nr&   i   r'   )r   r   r?   )r   rw   r&   r'   s       rO   memory_infozProcess.memory_info$  sD    ##%-&'$.-&'$.C~rQ   c                 b    | j                         t        d      }t        j                  |d      S )Nr+   ?)r   r   PROC_STATUSESget)r   codes     rO   r+   zProcess.status-  s-    $$&}X'>?  s++rQ   c                    | j                   }g }t        j                  | d| j                   d      }d}|D ]Z  }t	        |      }	 t        j                  | j                  ||      \  }}t        j                  |||      }|j                  |       \ |r| j                          |S # t        $ rR}	|	j                  t        j                  k(  rt        sY d }	~	|	j                  t        j                  k(  rd}Y d }	~	Ƃ d }	~	ww xY w)Nr   z/lwpFT)r   rK   r   r   rf   rX   query_process_threadr   pthreadr   r   r   r!  r"  ENOENTr   )
r   r+  rw   tidsr,  tidutimestimer   r   s
             rO   threadszProcess.threads3  s    ''zz[M488*D9:
 	Cc(C#88HHc; u& __S%7

2/	0  
)  99/	 99,!%Js$   $B))	D2#C?C?>C??Dc           	         g }d}| j                   }| d| j                   d}t        j                  | d| j                   d      D ]  }t        j                  j                  ||      }t        j                  j                  |      sC	 t        j                  |      }t        |      se|j                  t        j                  |t        |                    |r| j                          |S # t        $ r d}Y w xY w)NFr   z/path/fdT)r   r   rK   r   rA   joinislinkr   r   r   r   	popenfilerf   r   r   )r   r   r,  r+  pathdirr   rA   files           rO   
open_fileszProcess.open_filesU  s    
'' M488*E2**}AdhhZs;< 
	IB77<<,Dww~~d#I;;t,D
 %T*w'8'8s2w'GH
	I   ) !%Js   C11C?>C?c              #   j  K   dt        |      g}t        j                  |t        j                  t        j                        }|j	                         \  }}d ||fD        \  }}|j
                  dk7  rvd|j                         v r t        | j                  | j                        d|j                         v r t        | j                  | j                        |d| }t        |      |j                  d      d	d
 }t        |      D ]  \  }}	|	j                         }	|	j                  d      s(|	j                  dd	      d	   }
||d	z
     j!                         }|dk(  rt"        j$                  }n|dk(  rt"        j&                  }nd}dt"        j(                  ||
dt*        j,                  f  y
w)z<Get UNIX sockets used by process by parsing 'pfiles' output.pfiles)rU   stderrc              3   n   K   | ]-  }|j                  t        j                  j                         / y wr   )r_   r`   rU   ra   ).0rx   s     rO   	<genexpr>z,Process._get_unix_sockets.<locals>.<genexpr>s  s(      
./AHHSZZ(()
s   35r   zpermission deniedzno such processz command error
rW   r   Nzsockname: AF_UNIXrE   SOCK_STREAM
SOCK_DGRAMr   r   )strrZ   r[   r]   r^   rb   lowerr   r   r   r   rc   re   	enumeratelstrip
startswithrd   socketrN  rO  AF_UNIXr   	CONN_NONE)r   r   cmdrj   rU   rJ  rl   rm   irn   rA   types               rO   _get_unix_socketszProcess._get_unix_socketsj  s     S"


 
4:F3C
 <<1"flln4"488TZZ88 FLLN2#DHHdjj99G+F84Cs##T"12& ' 	NGAt;;=D23zz#q)!,QU|))+=(!--D\)!,,DD6>>4r7;L;LMM	Ns   D.F31BF3c                 6   t        || j                        }|s.t        j                  | j                   d| j                          |dv rH|j                  | j                  | j                        D cg c]  }t        j                  |  c}       |S c c}w )N)r   r   >   r   unix)	r   r   rK   r   r   extendr[  r   r   )r   r   rw   conns       rO   r   zProcess.net_connections  s    d2 GGt(()488*56 ?"JJ 22488< t$  
	s   4Bmmapzpath rss anon lockedzaddr perms path rss anon lockedc           	      t   d }| j                   }g }	 t        j                  | j                  |      }d}|D ]e  }|\  }}	}
}}}} |||	      }|j                  d      s(	 t        j                  | d| j                   d|       }|j                  ||
||||f       g |r| j                          |S # t        $ r0}|j
                  t
        j                  k(  rt        sg cY d }~S  d }~ww xY w# t        $ r?}|j
                  t
        j                  k(  r| d| j                   d| }d}n Y d }~d }~ww xY w)Nc                     dj                  t        |       dd  j                  d      t        |      dd  j                  d            S )Nz{}-{}r   L)formathexrd   )startends     rO   toaddrz#Process.memory_maps.<locals>.toaddr  sB    >>E
12$$S)3s8AB<+=+=c+B rQ   F[r   r)  T)r   rX   proc_memory_mapsr   r   r   r!  r"  rT  rK   r   r:  r   r   )r   rh  r+  r   r   r   r,  r   r   addrsizepermr   r&   anonrC   s                  rO   memory_mapszProcess.memory_maps  sJ   	
 ''	++DHHkBG 
 	BD<@9D(D$T6$)D??3';;+azv'NOD NND$c4@A%	B&  E  	yyEOO+I 		&  yyELL0 #.azvF%)
 #s;    B3 'C/3	C,<$C' C,&C''C,/	D785D22D7c                 r    t        t        j                  | j                   d| j                   d            S )Nr   rA  )r   rK   r   r   r   r   s    rO   num_fdszProcess.num_fds  s.    2::!2!2 31TXXJcBCDDrQ   c                 v    t        j                  t        j                  | j                  | j
                         S r   )r   pctxswrX   proc_num_ctx_switchesr   r   r   s    rO   num_ctx_switcheszProcess.num_ctx_switches  s-    ~~''$2C2CD
 	
rQ   Nc                 X    t        j                  | j                  || j                        S r   )r   wait_pidr   r   )r   timeouts     rO   waitzProcess.wait  s      7DJJ??rQ   )inetr   )+__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  ry   r&  r-  r/  r1  memory_full_infor+   r?  rG  r[  r   r   nt_mmap_groupednt_mmap_extrn  rp  rt  rx  r~   rQ   rO   r   r   w  s   ;CI.3-
/
 D  D    ;  ; - - 	 	 8 8 > > E E E E > > 7 7   5 5 5 5 ) )" > > ! ! 
 
   #, ,
  B  ( ND  & !)?@OV%FGK, ,\ E E 
 

 @ @rQ   r   )F)r   )mr}  r   r   rK   rU  rZ   r`   collectionsr   r   r   r   r   r   r  r	   rX   r
   r   r   r   r   r   r   r   r   r   r   r   __extra__all__getpagesizerM   AF_LINKmaxsizer"  r   r   SSLEEPSTATUS_SLEEPINGSRUNSTATUS_RUNNINGSZOMBSTATUS_ZOMBIESSTOPSTATUS_STOPPEDSIDLSTATUS_IDLESONPROCSWAITSTATUS_WAITINGr4  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_NONErW  	TCPS_IDLE
TCPS_BOUNDr   dictr   r1   r6   r9   r?   pfullmemr@   rB  _fieldsrD   rP   rq   ry   rs   r   r   r   disk_io_countersr   r   net_io_countersnet_if_addrsr   r   r   r   r   r   r   r   r~   rQ   rO   <module>r     s  
 .   	   
 "    ) #   ! " "  $ " + $ % " < #J""$	


KK%		
 	KK((IIw%%JJ%%JJ&&IIw""LL'((JJ&& 	733----'00'00//g(('11--g))w++7,,NNIOOZ" 	
			

		

	, {$HI	G	 	7MN&5%.); -*?*?!@@	4&\3("
 ((   
> &&&&> 
0=$
:g@ g@rQ   