
    g?                     J   d 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 g 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&        e
j'        ej(        e
j)        ej*        e
j+        ej,        e
j-        ej.        e
j/        ej0        e
j1        ej2        e
j3        ej4        iZ5e
j6        ej7        e
j8        ej9        e
j:        ej;        e
j<        ej=        e
j>        ej?        iZ@ eAddddddddddd          ZB eAdddddddd          ZC edg d           ZD ed!g d"          ZE ed#g d$          ZF ed%eFjG        d&z             ZHd' ZId( ZJd) ZKd* ZLd+ ZMd, ZNd- ZOd. ZPejQ        ZQe
jR        ZRd<d0ZSd1 ZTe
jU        ZUejV        ZVd=d3ZWd4 ZXd5 ZYd6 ZZd7 Z[ej\        Z\d8 Z]d9 Z^ G d: d;          Z_dS )>zmacOS platform implementation.    N)
namedtuple   )_common)_psposix)_psutil_osx)_psutil_posix)AccessDenied)NoSuchProcess)ZombieProcess)	conn_tmap)conn_to_ntuple)isfile_strict)memoize_when_activated)parse_environ_block)usage_percent)PermissionError)ProcessLookupError                     	   
   )ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins
numthreadsvolctxsw	scputimesusernicesystemidlesvmem)total	availablepercentusedfreeactiveinactivewiredpmem)r*   r+   r,   r-   pfullmem)ussc            
          t          j                    \  } }}}}}||z   }||z   }||z  }t          | |z
  | d          }t          | |||||||          S )z&System virtual memory as a namedtuple.r   round_)cextvirtual_memr   r6   )	r7   r<   r=   r>   r;   speculativeavailr:   r9   s	            I/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/_psosx.pyvirtual_memoryrJ   q   sq    8<8H8J8J5E68UD+
 tOEE>D 	KDUU]U1===GwdFHeLLL    c                      t          j                    \  } }}}}t          || d          }t          j        | |||||          S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   rC   )rE   swap_memr   r   sswap)r7   r:   r;   sinsoutr9   s         rI   swap_memoryrQ      sF    #'=?? E4sDD%222G=dGS$???rK   c                  V    t          j                    \  } }}}t          | |||          S )z(Return system CPU times as a namedtuple.)rE   	cpu_timesr0   r1   s       rI   rS   rS      s,    #~//D$T4...rK   c                      g } t          j                    D ]0}|\  }}}}t          ||||          }|                     |           1| S )z)Return system CPU times as a named tuple.)rE   per_cpu_timesr0   append)retcpu_tr2   r3   r4   r5   items          rI   rU   rU      sZ    
C#%%  #( dFDtVT22

4JrK   c                  (    t          j                    S )z0Return the number of logical CPUs in the system.)rE   cpu_count_logical rK   rI   r[   r[      s    !###rK   c                  (    t          j                    S )z-Return the number of CPU cores in the system.)rE   cpu_count_coresr\   rK   rI   r^   r^      s    !!!rK   c                  b    t          j                    \  } }}}}t          j        | |||          S N)rE   	cpu_statsr   	scpustats)ctx_switches
interruptssoft_interruptssyscalls_trapss        rI   ra   ra      s=     @L*ox j/8  rK   c                  ^    t          j                    \  } }}t          j        | ||          gS )zReturn CPU frequency.
    On macOS per-cpu frequency is not supported.
    Also, the returned frequency never changes, see:
    https://arstechnica.com/civis/viewtopic.php?f=19&t=465002.
    )rE   cpu_freqr   scpufreq)currmin_max_s      rI   ri   ri      s.     }D$T4..//rK   Fc                 2   g }t          j                    }|D ]~}|\  }}}}|dk    rd}| s?t          j                            |          rt          j                            |          sRt          j        ||||          }|                    |           |S )z8Return mounted disk partitions as a list of namedtuples.none )	rE   disk_partitionsospathisabsexistsr   	sdiskpartrV   )	allretlist
partitions	partitiondevice
mountpointfstypeoptsntuples	            rI   rq   rq      s    G%''J  	+4(
FDVF 	7==(( v0F0F "6:vtDDvNrK   c                      	 t          j                    \  } }}n# t          $ r Y dS w xY w|dk    }|rt          j        }n|dk    rt          j        }n|dz  }t          j        | ||          S )zReturn battery information.Nr   <   )rE   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)r9   minsleftpower_pluggedsecslefts       rI   r   r      s    +/+?+A+A(==   tt "Q&M !/	R-b=GX}===s    
((inetc                    g }t                      D ]p}	 t          |                              |           }|r9|D ]6}t          |          |gz   }|                    t          j        |            7a# t          $ r Y mw xY w|S )z System-wide network connections.)pidsProcessnet_connectionslistrV   r   sconnr
   )kindrW   pidconscs        rI   r   r      s     Cvv 	2 	2	23<<//55D  2 2 2AQ3%AJJw}a01111  	 	 	H	 Js   "A22
A?>A?c                     t                                                      } i }| D ]}	 t          j        |          }t          j        |          }t          j        |          \  }}t          t          d          rt          j        |          }d	                    |          }d|v }t          j
        |||||          ||<   # t          $ r }	|	j        t          j        k    r Y d}	~	d}	~	ww xY w|S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex,runningN)net_io_counterskeys
cext_posix
net_if_mtunet_if_flagsnet_if_duplex_speedhasattrr   r   join	snicstatsOSErrorerrnoENODEV)
namesrW   r'   mtuflagsduplexspeedoutput_flagsisuperrs
             rI   net_if_statsr     s   ""$$E
C  	'--C+D11E&:4@@MFE w,, 3 *62288E??L%D)feS, CII  	 	 	yEL(( )((((	 Js   ?C
C/C**C/c                  (    t          j                    S )z:The system boot time expressed in seconds since the epoch.)rE   	boot_timer\   rK   rI   r   r   !  s    >rK   c                      g } t          j                    }|D ]E}|\  }}}}}|dk    r|st          j        ||pd|pd||          }|                     |           F| S )z:Return currently connected users as a list of namedtuples.~N)rE   usersr   suserrV   )	rx   rawlistrY   r2   ttyhostnametstampr   nts	            rI   r   r   &  s    GjllG  +/(c8VS#:: 	]4h.>$LLrNrK   c                     t          j                    } d| vrj	 t          d                                           |                     dd           n1# t
          $ r Y n%t          $ r |                     dd           Y nw xY w| S Nr   )rE   r   r   create_timeinsertr
   r	   )lss    rI   r   r   :  s    	B{{	AJJ""$$$IIaOOOO 	 	 	D 	 	 	IIaOOOOO	Is   7A 
A?A?>A?c                     	 t          j        |           t          d                  }|t           j        k    S # t          $ r Y dS w xY w)Nr&   F)rE   proc_kinfo_oneshotkinfo_proc_mapSZOMBr   )r   sts     rI   	is_zombier   M  sP    $S)).*BCTZ   uus   47 
AAc                 F     t          j                    fd            }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                    	  | g|R i |S # t           $ rO t          | j                  r t          | j        | j        | j                  t          | j        | j                  t          $ r t          | j        | j                  w xY wr`   )	r   r   r   r   _name_ppidr
   r   r	   )selfargskwargsfuns      rI   wrapperz wrap_exceptions.<locals>.wrapperZ  s    	53t-d---f---! 	: 	: 	:"" :#DHdj$*EEE#DHdj999 	5 	5 	5tx444	5s
    A<B)	functoolswraps)r   r   s   ` rI   wrap_exceptionsr   U  s:    
 _S	5 	5 	5 	5 	5 NrK   c                   v   e Zd ZdZg dZd Zeed                         Zeed                         Z	d Z
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d!d            Zed             Zed"d            Zed             Zed             Z ed             Z!ed              Z"dS )#r   z1Wrapper class around underlying C implementation.)_cacher   r   r   c                 0    || _         d | _        d | _        d S r`   )r   r   r   )r   r   s     rI   __init__zProcess.__init__n  s    



rK   c                     t          j        | j                  }t          |          t          t                    k    sJ |S r`   )rE   r   r   lenr   r   rW   s     rI   _get_kinfo_proczProcess._get_kinfo_procs  s:     %dh//3xx3~......
rK   c                     t          j        | j                  }t          |          t          t                    k    sJ |S r`   )rE   proc_pidtaskinfo_oneshotr   r   pidtaskinfo_mapr   s     rI   _get_pidtaskinfozProcess._get_pidtaskinfo{  s:     +DH553xx3//////
rK   c                 n    | j                             |            | j                            |            d S r`   )r   cache_activater   r   s    rI   oneshot_enterzProcess.oneshot_enter  s6    ++D111,,T22222rK   c                 n    | j                             |            | j                            |            d S r`   )r   cache_deactivater   r   s    rI   oneshot_exitzProcess.oneshot_exit  s6    --d333..t44444rK   c                     |                                  t          d                  }||nt          j        | j                  S )Nr'   )r   r   rE   	proc_namer   )r   r'   s     rI   r'   zProcess.name  s8    ##%%nV&<='ttT^DH-E-EErK   c                 4    t          j        | j                  S r`   )rE   proc_exer   r   s    rI   exezProcess.exe      }TX&&&rK   c                 4    t          j        | j                  S r`   )rE   proc_cmdliner   r   s    rI   cmdlinezProcess.cmdline  s     ***rK   c                 N    t          t          j        | j                            S r`   )r   rE   proc_environr   r   s    rI   environzProcess.environ  s    "4#4TX#>#>???rK   c                 d    |                                  t          d                  | _        | j        S )Nr   )r   r   r   r   s    rI   r   zProcess.ppid  s'    ))++N6,BC
zrK   c                 4    t          j        | j                  S r`   )rE   proc_cwdr   r   s    rI   cwdzProcess.cwd  r   rK   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr   r   r    r   r   puidsr   r   rawtuples     rI   uidszProcess.uids  N    ''))}^F+,^F+,^F+,
 
 	
rK   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr!   r"   r#   r   r   s     rI   gidszProcess.gids  r   rK   c                     |                                  t          d                  }t          j                    }	 ||         S # t          $ r Y d S w xY w)Nr$   )r   r   r   get_terminal_mapKeyError)r   tty_nrtmaps      rI   terminalzProcess.terminal  s\    %%''w(?@(**	< 	 	 	44	s   A 
AAc                     |                                  }t          |t          d                  |t          d                  |t          d                  |t          d                            S )Nr*   r+   r,   r-   )r   r?   r   r   s     rI   memory_infozProcess.memory_info  sY    ((**_U+,_U+,_Y/0_Y/0	
 
 	
rK   c                 v    |                                  }t          j        | j                  }t	          ||fz    S r`   )r  rE   proc_memory_ussr   r@   )r   	basic_memrA   s      rI   memory_full_infozProcess.memory_full_info  s7    $$&&	"48,,cV+,,rK   c                     |                                  }t          j        |t          d                  |t          d                  dd          S )Nr(   r)   g        )r   r   	pcputimesr   r   s     rI   rS   zProcess.cpu_times  sH    ((** _Z01_Z01
 
 	
rK   c                 L    |                                  t          d                  S )Nr%   )r   r   r   s    rI   r   zProcess.create_time  s    ##%%nW&=>>rK   c                 v    |                                  t          d                  }t          j        |d          S )Nr/   r   )r   r   r   pctxsw)r   vols     rI   num_ctx_switcheszProcess.num_ctx_switches  s1    
 ##%%oj&AB~c1%%%rK   c                 L    |                                  t          d                  S )Nr.   )r   r   r   s    rI   num_threadszProcess.num_threads  s    $$&&|'DEErK   c                     | j         dk    rg S g }t          j        | j                   }|D ]>\  }}t          |          r*t	          j        ||          }|                    |           ?|S r   )r   rE   proc_open_filesr   r   	popenfilerV   )r   filesr   rs   fdr   s         rI   
open_fileszProcess.open_files  sv    8q==I&tx00 	% 	%HD"T"" % *444V$$$rK   r   c           
      Z   |t           vr7t          d|dd                    d t           D                                 t           |         \  }}t          j        | j        ||          }g }|D ]:}|\  }}}	}
}}t          |||	|
||t                    }|                    |           ;|S )Nzinvalid z kind argument; choose between z, c                 ,    g | ]}t          |          S r\   )repr).0xs     rI   
<listcomp>z+Process.net_connections.<locals>.<listcomp>  s    #?#?#?DGG#?#?#?rK   )	r   
ValueErrorr   rE   proc_net_connectionsr   r   TCP_STATUSESrV   )r   r   familiestypesr   rW   rY   r  famtypeladdrraddrr&   r   s                 rI   r   zProcess.net_connections  s    y  *44#?#?Y#?#?#?@@@B   $D/%+DHhFF 	 	D26/BT5%CueV\ B JJrNNNN
rK   c                 N    | j         dk    rdS t          j        | j                   S r   )r   rE   proc_num_fdsr   s    rI   num_fdszProcess.num_fds	  s%    8q==1 ***rK   Nc                 B    t          j        | j        || j                  S r`   )r   wait_pidr   r   )r   timeouts     rI   waitzProcess.wait  s     7DJ???rK   c                 4    t          j        | j                  S r`   )r   getpriorityr   r   s    rI   nice_getzProcess.nice_get  s    %dh///rK   c                 6    t          j        | j        |          S r`   )r   setpriorityr   )r   values     rI   nice_setzProcess.nice_set  s    %dh666rK   c                     |                                  t          d                  }t                              |d          S )Nr&   ?)r   r   PROC_STATUSESget)r   codes     rI   r&   zProcess.status  s3    ##%%nX&>?  s+++rK   c                     t          j        | j                  }g }|D ]1\  }}}t          j        |||          }|                    |           2|S r`   )rE   proc_threadsr   r   pthreadrV   )r   r   rx   	thread_idutimestimer   s          rI   threadszProcess.threads!  s\    #DH--'. 	# 	##Iue_Yu==FNN6""""rK   r   r`   )#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r'   r   r   r   r   r   r   r   r  r  r  rS   r   r  r  r  r   r)  r-  r0  r4  r&   r@  r\   rK   rI   r   r   i  s"       ;;333I  
    _    _3 3 35 5 5 F F _F ' ' _' + + _+ @ @ _@   _ ' ' _' 
 
 _
 
 
 _
   _ 
 
 _
 - - _-
 
 
 _
 ? ? _? & & _& F F _F 	 	 _	    _" + + _+
 @ @ @ _@ 0 0 _0 7 7 _7 , , _,
   _  rK   r   )FrA  )`rE  r   r   rr   collectionsr   rp   r   r   r   rE   r   r   r	   r
   r   r   r   r   r   r   r   _compatr   r   __extra__all__getpagesizePAGESIZEAF_LINKTCPS_ESTABLISHEDCONN_ESTABLISHEDTCPS_SYN_SENTCONN_SYN_SENTTCPS_SYN_RECEIVED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   SIDLSTATUS_IDLESRUNSTATUS_RUNNINGSSLEEPSTATUS_SLEEPINGSSTOPSTATUS_STOPPEDr   STATUS_ZOMBIEr7  dictr   r   r0   r6   r?   _fieldsr@   rJ   rQ   rS   rU   r[   r^   ra   ri   
disk_usagedisk_io_countersrq   r   r   net_if_addrsr   r   r   r   r   
pid_existsr   r   r   r\   rK   rI   <module>rt     s  
 % $      				 " " " " " "             ! ! ! ! ! ! ) ) ) ) ) ) ! ! ! ! ! ! " " " " " " " " " " " "       # # # # # # " " " " " " + + + + + + ( ( ( ( ( ( " " " " " " $ $ $ $ $ $ ' ' ' ' ' '  ":!##

 	73-G1'0'0/g('1-g)w+7,  	Iw"Iw%K(J&J% 	
	
	
	
	
	
	


	   $			 	 	& J{$F$F$FGG	
 - - -	. 	. z&>>>??:j$,":;;M M M @ @ @/ / /  $ $ $
" " "
  0 0 0  
(    *> > >, &&   $  :  
  (     
    (         rK   