
    Xh>                        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 g Z ej.                         Zej2                  Ze
j4                  ej6                  e
j8                  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                  iZ2e
jf                  ejh                  e
jj                  ejl                  e
jn                  ejp                  e
jr                  ejt                  e
jv                  ejx                  iZ= e>ddddddddddd      Z? e>dddddddd      Z@ edg d      ZA edg d       ZB ed!g d"      ZC ed#eCj                  d$z         ZEd% ZFd& ZGd' ZHd( ZId) ZJd* ZKd+ ZLd, ZMej                  ZNe
j                  ZOd8d-ZPd. ZQe
j                  ZRej                  ZSd9d/ZTd0 ZUd1 ZVd2 ZWd3 ZXej                  ZYd4 ZZd5 Z[ G d6 d7      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                     	   
   )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   r4   )	r5   r:   r;   r<   r9   speculativeavailr8   r7   s	            Y/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/_psosx.pyvirtual_memoryrH   o   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   rA   )rC   swap_memr   r   sswap)r5   r8   r9   sinsoutr7   s         rG   swap_memoryrO   ~   s?    #'==? E4sDD%2G==dGS$??rI   c                  P    t        j                         \  } }}}t        | |||      S )z(Return system CPU times as a namedtuple.)rC   	cpu_timesr.   r/   s       rG   rQ   rQ      s(    #~~/D$T4..rI   c                      g } t        j                         D ](  }|\  }}}}t        ||||      }| j                  |       * | S )z)Return system CPU times as a named tuple.)rC   per_cpu_timesr.   append)retcpu_tr0   r1   r2   r3   items          rG   rS   rS      sP    
C##% #( dFDtVT2

4 JrI   c                  *    t        j                         S )z0Return the number of logical CPUs in the system.)rC   cpu_count_logical rI   rG   rY   rY      s    !!##rI   c                  *    t        j                         S )z-Return the number of CPU cores in the system.)rC   cpu_count_coresrZ   rI   rG   r\   r\      s    !!rI   c                  f    t        j                         \  } }}}}t        j                  | |||      S N)rC   	cpu_statsr   	scpustats)ctx_switches
interruptssoft_interruptssyscalls_trapss        rG   r_   r_      s:     @L*ox j/8 rI   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.
    )rC   cpu_freqr   scpufreq)currmin_max_s      rG   rg   rg      s.     }}D$T4.//rI   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 )	rC   disk_partitionsospathisabsexistsr   	sdiskpartrT   )	allretlist
partitions	partitiondevice
mountpointfstypeoptsntuples	            rG   ro   ro      s    G%%'J 	+4(
FDVF77==(v0F""6:vtDv NrI   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   <   )rC   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)r7   minsleftpower_pluggedsecslefts       rG   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listrT   r   sconnr
   )kindrU   pidconscs        rG   r   r      s     Cv 	2	23<//5D  2AQ3%AJJw}}a012	2 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)
namesrU   r%   mtuflagsduplexspeedoutput_flagsisuperrs
             rG   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.)rC   	boot_timerZ   rI   rG   r   r     s    >>rI   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)rC   usersr   suserrT   )	rv   rawlistrW   r0   ttyhostnametstampr   nts	            rG   r   r   #  ss    GjjlG +/(c8VS#:]]4h.>$Lr NrI   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   )rC   r   r   create_timeinsertr
   r	   )lss    rG   r   r   7  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)rC   proc_kinfo_oneshotkinfo_proc_mapSZOMBr   )r   sts     rG   	is_zombier   J  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                    | j                   | j                  | j                  }}}	  | g|i |S # t        $ r+}t	        |      rt        |||      |t        ||      |d }~wt        $ r}t        ||      |d }~ww xY wr^   )	r   _ppid_nameProcessLookupErrorr   r   r
   PermissionErrorr	   )selfargskwargsr   r   r%   r   funs          rG   wrapperz wrap_exceptions.<locals>.wrapperW  s    ((DJJ

4T	3t-d-f--! 	4~#Ct4#=T*3 	3sD)s2	3s    3 	B &A""B .A;;B )	functoolswraps)r   r   s   ` rG   wrap_exceptionsr   R  s'    
 __S	3 	3 NrI   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     rG   __init__zProcess.__init__k  s    

rI   c                 ~    t        j                  | j                        }t        |      t        t              k(  sJ |S r^   )rC   r   r   lenr   r   rU   s     rG   _get_kinfo_proczProcess._get_kinfo_procp  s4     %%dhh/3x3~....
rI   c                 ~    t        j                  | j                        }t        |      t        t              k(  sJ |S r^   )rC   proc_pidtaskinfo_oneshotr   r   pidtaskinfo_mapr   s     rG   _get_pidtaskinfozProcess._get_pidtaskinfox  s4     ++DHH53x3////
rI   c                 p    | j                   j                  |        | j                  j                  |        y r^   )r   cache_activater   r   s    rG   oneshot_enterzProcess.oneshot_enter  s*    ++D1,,T2rI   c                 p    | j                   j                  |        | j                  j                  |        y r^   )r   cache_deactivater   r   s    rG   oneshot_exitzProcess.oneshot_exit  s*    --d3..t4rI   c                 |    | j                         t        d      }||S t        j                  | j                        S )Nr%   )r   r   rC   	proc_namer   )r   r%   s     rG   r%   zProcess.name  s7    ##%nV&<='tET^^DHH-EErI   c                 @    t        j                  | j                        S r^   )rC   proc_exer   r   s    rG   exezProcess.exe      }}TXX&&rI   c                 @    t        j                  | j                        S r^   )rC   proc_cmdliner   r   s    rG   cmdlinezProcess.cmdline  s      **rI   c                 R    t        t        j                  | j                              S r^   )r   rC   proc_environr   r   s    rG   environzProcess.environ  s    "4#4#4TXX#>??rI   c                 X    | j                         t        d      | _        | j                  S )Nr   )r   r   r   r   s    rG   r   zProcess.ppid  s&    ))+N6,BC
zzrI   c                 @    t        j                  | j                        S r^   )rC   proc_cwdr   r   s    rG   cwdzProcess.cwd  r   rI   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr   r   r   r   r   puidsr   r   rawtuples     rG   uidszProcess.uids  H    '')}}^F+,^F+,^F+,
 	
rI   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr   r    r!   r   r   s     rG   gidszProcess.gids  r   rI   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      rG   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     rG   memory_infozProcess.memory_info  sQ    ((*_U+,_U+,_Y/0_Y/0	
 	
rI   c                 x    | j                         }t        j                  | j                        }t	        ||fz    S r^   )r  rC   proc_memory_ussr   r>   )r   	basic_memr?   s      rG   memory_full_infozProcess.memory_full_info  s6    $$&	""488,cV+,,rI   c                 z    | j                         }t        j                  |t        d      |t        d      dd      S )Nr&   r'   g        )r   r   	pcputimesr   r   s     rG   rQ   zProcess.cpu_times  sC    ((*  _Z01_Z01
 	
rI   c                 6    | j                         t        d      S )Nr#   )r   r   r   s    rG   r   zProcess.create_time  s    ##%nW&=>>rI   c                 b    | j                         t        d      }t        j                  |d      S )Nr-   r   )r   r   r   pctxsw)r   vols     rG   num_ctx_switcheszProcess.num_ctx_switches  s-    
 ##%oj&AB~~c1%%rI   c                 6    | j                         t        d      S )Nr,   )r   r   r   s    rG   num_threadszProcess.num_threads  s    $$&|'DEErI   c                     | j                   dk(  rg S g }t        j                  | j                         }|D ]8  \  }}t        |      st	        j
                  ||      }|j                  |       : |S r   )r   rC   proc_open_filesr   r   	popenfilerT   )r   filesr   rq   fdr}   s         rG   
open_fileszProcess.open_files  sk    88q=I&&txx0 	%HD"T" **44V$	% rI   c           
          t         |   \  }}t        j                  | j                  ||      }g }|D ]1  }|\  }}}	}
}}t	        |||	|
||t
              }|j                  |       3 |S r^   )r   rC   proc_net_connectionsr   r   TCP_STATUSESrT   )r   r   familiestypesr   rU   rW   r  famtypeladdrraddrr$   r   s                 rG   r   zProcess.net_connections  sz    #D/%++DHHhF 	D26/BT5%CueV\B JJrN	 
rI   c                 `    | j                   dk(  ryt        j                  | j                         S r   )r   rC   proc_num_fdsr   s    rG   num_fdszProcess.num_fds  s%    88q=  **rI   Nc                 X    t        j                  | j                  || j                        S r^   )r   wait_pidr   r   )r   timeouts     rG   waitzProcess.wait  s      7DJJ??rI   c                 @    t        j                  | j                        S r^   )r   getpriorityr   r   s    rG   nice_getzProcess.nice_get  s    %%dhh//rI   c                 B    t        j                  | j                  |      S r^   )r   setpriorityr   )r   values     rG   nice_setzProcess.nice_set  s    %%dhh66rI   c                 b    | j                         t        d      }t        j                  |d      S )Nr$   ?)r   r   PROC_STATUSESget)r   codes     rG   r$   zProcess.status  s-    ##%nX&>?  s++rI   c                     t        j                  | j                        }g }|D ].  \  }}}t        j                  |||      }|j                  |       0 |S r^   )rC   proc_threadsr   r   pthreadrT   )r   r   rv   	thread_idutimestimer}   s          rG   threadszProcess.threads  sV    ##DHH-'. 	##Iue__Yu=FNN6"	# rI   inetr^   )#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r%   r   r   r   r   r   r   r   r  r  r  rQ   r   r  r  r  r   r"  r&  r)  r-  r$   r9  rZ   rI   rG   r   r   f  s%   ;3I
      35 F F ' ' + + @ @   ' ' 
 
 
 
   
 
 - -
 
 
 ? ? & & F F 	 	 
 
 + +
 @ @ 0 0 7 7 , ,
  rI   r   )Fr:  )]r?  r   r   rp   collectionsr   rn   r   r   r   rC   r   r   r	   r
   r   r   r   r   r   r   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_ZOMBIEr0  dictr   r   r.   r4   r=   _fieldsr>   rH   rO   rQ   rS   rY   r\   r_   rg   
disk_usagedisk_io_countersro   r   r   net_if_addrsr   r   r   r   r   
pid_existsr   r   r   rZ   rI   rG   <module>rm     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   
(( *>, &&&&$:
(    
(z zrI   