
    g?                        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j4                         Zej8                  Ze
j:                  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
jb                  ejd                  e
jf                  ejh                  iZ5e
jl                  ejn                  e
jp                  ejr                  e
jt                  ejv                  e
jx                  ejz                  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%eFj                  d&z         ZHd' ZId( ZJd) ZKd* ZLd+ ZMd, ZNd- ZOd. ZPej                  ZQe
j                  ZRd:d/ZSd0 ZTe
j                  ZUej                  ZVd;d1ZWd2 ZXd3 ZYd4 ZZd5 Z[ej                  Z\d6 Z]d7 Z^ G d8 d9      Z_y)<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	            B/var/www/openai/venv/lib/python3.12/site-packages/psutil/_psosx.pyvirtual_memoryrJ   q   sh    8<8H8H8J5E68UD+
 tOEE>D 	KDUU]U1=GwdFHe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      s?    #'==? E4sDD%2G==dGS$??rK   c                  P    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 ](  }|\  }}}}t        ||||      }| j                  |       * | 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      sK    
C##%#( dFDtVT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                  f    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                  b    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   c                 0   g }t        j                         }|D ]z  }|\  }}}}|dk(  rd}| s?t        j                  j	                  |      rt        j                  j                  |      sRt        j                  ||||      }|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77==(v0F""6:vtDv   NrK   c                      	 t        j                         \  } }}|dk(  }|rt        j                  }n|dk(  rt        j
                  }n|dz  }t        j                  | ||      S # t        $ r Y yw xY w)zReturn battery information.Nr   <   )rE   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)r9   minsleftpower_pluggedsecslefts       rI   r   r      sz    +/+?+?+A(= "Q&M//	R--b=GX}==  s   A$ $	A0/A0c                     g }t               D ]W  }	 t        |      j                  |       }|s!|D ]2  }t        |      |gz   }|j	                  t        j                  |        4 Y |S # t        $ r Y gw xY w)z System-wide network connections.)pidsProcessnet_connectionslistrV   r   sconnr
   )kindrW   pidconscs        rI   r   r      s|     Cv	23<//5D AQ3%AJJw}}a01   J  		s   A))	A54A5c                     t               j                         } i }| D ]  }	 t        j                  |      }t        j                  |      }t        j
                  |      \  }}t        t        d      rt        j                  |      }dj                  |      }d|v }t        j                  |||||      ||<    |S # t        $ r(}	|	j                  t        j                  k7  r Y d}	~	d}	~	ww xY w)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1E&::4@MFE w, **6288E?L%D))feS,CI " J  	yyELL( )	s   AB==	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                  ||xs d|xs d||      }| j	                  |       G | 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   &  sn    GjjlG+/(c8VS#:]]4h.>$Lr  NrK   c                      t        j                         } d| vr.	 t        d      j                          | j	                  dd       | S | S # t
        $ r Y | S t        $ r | j	                  dd       Y | S w xY wNr   )rE   r   r   create_timeinsertr
   r	   )lss    rI   r   r   :  sx    	B{	AJ""$IIaO
 I2I	  	 I  	IIaOI	s   +A	 		A3A32A3c                     	 t        j                  |       t        d      }|t         j                  k(  S # t        $ r Y yw xY w)Nr&   F)rE   proc_kinfo_oneshotkinfo_proc_mapSZOMBr   )r   sts     rI   	is_zombier   M  sB    $$S).*BCTZZ s   14 	A A c                 B     t        j                          fd       }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                 H   	  | g|i |S # t         $ ra 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t-d-f--! 	:"#DHHdjj$**EE#DHHdjj99 	5txx44	5s
    BB!)	functoolswraps)r   r   s   ` rI   wrap_exceptionsr   U  s'    
 __S	5 	5 NrK   c                      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"y)"r   z1Wrapper class around underlying C implementation.)_cacher   r   r   c                 .    || _         d | _        d | _        y 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  s4     %%dhh/3x3~....
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{  s4     ++DHH53x3////
rK   c                 p    | j                   j                  |        | j                  j                  |        y r`   )r   cache_activater   r   s    rI   oneshot_enterzProcess.oneshot_enter  s*    ++D1,,T2rK   c                 p    | j                   j                  |        | j                  j                  |        y r`   )r   cache_deactivater   r   s    rI   oneshot_exitzProcess.oneshot_exit  s*    --d3..t4rK   c                 |    | j                         t        d      }||S t        j                  | j                        S )Nr'   )r   r   rE   	proc_namer   )r   r'   s     rI   r'   zProcess.name  s7    ##%nV&<='tET^^DHH-EErK   c                 @    t        j                  | j                        S r`   )rE   proc_exer   r   s    rI   exezProcess.exe      }}TXX&&rK   c                 @    t        j                  | j                        S r`   )rE   proc_cmdliner   r   s    rI   cmdlinezProcess.cmdline  s      **rK   c                 R    t        t        j                  | j                              S r`   )r   rE   proc_environr   r   s    rI   environzProcess.environ  s    "4#4#4TXX#>??rK   c                 X    | j                         t        d      | _        | j                  S )Nr   )r   r   r   r   s    rI   r   zProcess.ppid  s&    ))+N6,BC
zzrK   c                 @    t        j                  | j                        S r`   )rE   proc_cwdr   r   s    rI   cwdzProcess.cwd  r   rK   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr   r   r    r   r   puidsr   r   rawtuples     rI   uidszProcess.uids  H    '')}}^F+,^F+,^F+,
 	
rK   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr!   r"   r#   r   r   s     rI   gidszProcess.gids  r   rK   c                     | j                         t        d      }t        j                         }	 ||   S # t        $ r Y y w xY w)Nr$   )r   r   r   get_terminal_mapKeyError)r   tty_nrtmaps      rI   terminalzProcess.terminal  sI    %%'w(?@((*	< 		s   5 	A Ac                     | j                         }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  sQ    ((*_U+,_U+,_Y/0_Y/0	
 	
rK   c                 x    | j                         }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  s6    $$&	""488,cV+,,rK   c                 z    | j                         }t        j                  |t        d      |t        d      dd      S )Nr(   r)   g        )r   r   	pcputimesr   r   s     rI   rS   zProcess.cpu_times  sC    ((*  _Z01_Z01
 	
rK   c                 6    | j                         t        d      S )Nr%   )r   r   r   s    rI   r   zProcess.create_time  s    ##%nW&=>>rK   c                 b    | j                         t        d      }t        j                  |d      S )Nr/   r   )r   r   r   pctxsw)r   vols     rI   num_ctx_switcheszProcess.num_ctx_switches  s-    
 ##%oj&AB~~c1%%rK   c                 6    | j                         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 ]8  \  }}t        |      st	        j
                  ||      }|j                  |       : |S r   )r   rE   proc_open_filesr   r   	popenfilerV   )r   filesr   rs   fdr   s         rI   
open_fileszProcess.open_files  sf    88q=I&&txx0HD"T" **44V$   rK   c                 `   |t         vr;t        d|ddj                  t         D cg c]  }t        |       c}            t         |   \  }}t	        j
                  | j                  ||      }g }|D ]1  }|\  }}	}
}}}t        ||	|
|||t              }|j                  |       3 |S c c}w )Nzinvalid z kind argument; choose between z, )
r   
ValueErrorr   reprrE   proc_net_connectionsr   r   TCP_STATUSESrV   )r   r   xfamiliestypesr   rW   rY   r  famtypeladdrraddrr&   r   s                  rI   r   zProcess.net_connections  s    y Y#?YDGY#?@B  $D/%++DHHhFD26/BT5%CueV\B JJrN  
 $@s   B+c                 `    | j                   dk(  ryt        j                  | j                         S r   )r   rE   proc_num_fdsr   s    rI   num_fdszProcess.num_fds	  s%    88q=  **rK   Nc                 X    t        j                  | j                  || j                        S r`   )r   wait_pidr   r   )r   timeouts     rI   waitzProcess.wait  s      7DJJ??rK   c                 @    t        j                  | j                        S r`   )r   getpriorityr   r   s    rI   nice_getzProcess.nice_get  s    %%dhh//rK   c                 B    t        j                  | j                  |      S r`   )r   setpriorityr   )r   values     rI   nice_setzProcess.nice_set  s    %%dhh66rK   c                 b    | j                         t        d      }t        j                  |d      S )Nr&   ?)r   r   PROC_STATUSESget)r   codes     rI   r&   zProcess.status  s-    ##%nX&>?  s++rK   c                     t        j                  | j                        }g }|D ].  \  }}}t        j                  |||      }|j                  |       0 |S r`   )rE   proc_threadsr   r   pthreadrV   )r   r   rx   	thread_idutimestimer   s          rI   threadszProcess.threads!  sQ    ##DHH-'.#Iue__Yu=FNN6" (/ rK   inetr`   )#__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)  r,  r0  r&   r<  r\   rK   rI   r   r   i  s%   ;3I
      35 F F ' ' + + @ @   ' ' 
 
 
 
   
 
 - -
 
 
 ? ? & & F F 	 	  " + +
 @ @ 0 0 7 7 , ,
  rK   r   )Fr=  )`rB  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_ZOMBIEr3  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>rq     s  
 %   	 "   ! ) ! " "  # " + ( " $ '  ":!!#


 	733--G11'00'00//g(('11--g))w++7,,  	IIw""IIw%%KK((JJ&&JJ%% 	
	
	
	
	
	
	

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