
    bi5>                        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
j0                  Ze
j2                  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`                  iZ1e
jd                  ejf                  e
jh                  ejj                  e
jl                  ejn                  e
jp                  ejr                  e
jt                  ejv                  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?d Z@d ZAe
j                  ZBe
j                  ZCd ZDd  ZEd! ZFd" ZGd# ZH e
j                         rd$ ZJej                  ZKe
j                  ZLd1d%ZMd& ZNe
j                  ZOe
j                  ZPd2d'ZQd( ZRd) ZS	  eS       ZTd+ ZWd, ZXd- ZYej                  ZZd. Z[ G d/ d0      Z\y# eU$ rZV ed*eV       dZTY dZV[V:dZV[Vww xY w)3zmacOS platform implementation.    N   )_common)_ntuples)_psposix)_psutil_osx)AccessDenied)NoSuchProcess)ZombieProcess)	conn_tmap)conn_to_ntuple)debug)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volctxswc            
          t        j                         \  } }}}}}||z   }||z   }||z  }t        | |z
  | d      }t        j                  | |||||||      S )z&System virtual memory as a namedtuple.r   round_)cextvirtual_memr   ntpsvmem)	totalactiveinactivewiredfreespeculativeavailusedpercents	            H/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/psutil/_psosx.pyvirtual_memoryr?   [   sq    8<8H8H8J5E68UD+ tOEE>D 	KDUU]U1=G99ugtT68U     c                      t        j                         \  } }}}}t        || d      }t        j                  | |||||      S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r/   )r1   swap_memr   r3   sswap)r5   r<   r9   sinsoutr=   s         r>   swap_memoryrF   l   s?    #'==? E4sDD%2G99UD$d;;r@   c                  d    t        j                         \  } }}}t        j                  | |||      S )z(Return system CPU times as a namedtuple.)r1   	cpu_timesr3   	scputimes)usernicesystemidles       r>   rH   rH   }   s,    #~~/D$==tVT22r@   c                      g } t        j                         D ]2  }|\  }}}}t        j                  ||||      }| j	                  |       4 | S )z)Return system CPU times as a named tuple.)r1   per_cpu_timesr3   rI   append)retcpu_trJ   rK   rL   rM   items          r>   rO   rO      sT    
C##% #( dFD}}T46

4 Jr@   c                  *    t        j                         S )z0Return the number of logical CPUs in the system.)r1   cpu_count_logical r@   r>   rU   rU      s    !!##r@   c                  *    t        j                         S )z-Return the number of CPU cores in the system.)r1   cpu_count_coresrV   r@   r>   rX   rX      s    !!r@   c                  f    t        j                         \  } }}}}t        j                  | |||      S N)r1   	cpu_statsr3   	scpustats)ctx_switches
interruptssoft_interruptssyscalls_trapss        r>   r[   r[      s3     @L*ox ==z?HMMr@   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.
        )r1   cpu_freqr3   scpufreq)currmin_max_s      r>   rc   rc      s,      ==?dDT4.//r@   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 )	r1   disk_partitionsospathisabsexistsr3   	sdiskpartrP   )	allretlist
partitions	partitiondevice
mountpointfstypeoptsntuples	            r>   rk   rk      s    G%%'J 	+4(
FDVF77==(v0Fvz64@v Nr@   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   <   )r1   sensors_batteryNotImplementedErrorr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNr3   sbattery)r=   minsleftpower_pluggedsecslefts       r>   r}   r}      sx    +/+?+?+A(= "Q&M//	R--b=<<=99  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listrP   r3   sconnr	   )kindrQ   pidconscs        r>   r   r      s     Cv 	.	.3<//5D  .AQ3%AJJsyy!}-.	. 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keysr1   
net_if_mtunet_if_flagsnet_if_duplex_speedhasattrr   r   joinr3   	snicstatsOSErrorerrnoENODEV)
namesrQ   r%   mtuflagsduplexspeedoutput_flagsisuperrs
             r>   net_if_statsr      s    ""$E
C N	N//$'C%%d+E 44T:MFE w, **6288E?L%DdFE3MCIN J  	yyELL( )	s   AB==	C.C))C.c                  *    t        j                         S )z:The system boot time expressed in seconds since the epoch.)r1   	boot_timerV   r@   r>   r   r     s    >>r@   zignoring exception on import: c                     t         dk(  r| S t         t               z
  }|dk(  st        |      dk  r| S t        d       |dk  r| |z
  S | |z   S )z!Account for system clock updates.r   r   z9system clock was updated; adjusting process create_time())INIT_BOOT_TIMEr   absr   )r#   diffs     r>   adjust_proc_create_timer     sU    IK'DqyCIM	
EFaxt|4<r@   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)r1   usersr3   suserrP   )	rr   rawlistrS   rJ   ttyhostnametstampr   nts	            r>   r   r   +  ss    GjjlG +/(c8VS#:YYtS[D(*:dFCHr Nr@   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   )r1   r   r   create_timeinsertr	   r   )lss    r>   r   r   ?  sx    	B{	AJ""$IIaO
 I2I	  	 I  	IIaOI	s   +A	 		A3A32A3c                 B     t        j                          fd       }|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                 b   | j                   | j                  | j                  }}}	  | g|i |S # t        $ r5}t	        j
                  |      rt        |||      |t        ||      |d }~wt        $ r}t        ||      |d }~wt        j                  $ r}t        |||      |d }~ww xY wrZ   )r   _ppid_nameProcessLookupErrorr1   proc_is_zombier
   r	   PermissionErrorr   ZombieProcessError)selfargskwargsr   r   r%   r   funs          r>   wrapperz wrap_exceptions.<locals>.wrapperW  s    ((DJJ

4T		:t-d-f--! 	4""3'#Ct4#=T*3 	3sD)s2&& 	:T40c9	:s,   3 	B.0A,,B.8BB.B))B.)	functoolswraps)r   r   s   ` r>   wrap_exceptionsr   R  s'    
 __S: : Nr@   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 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 rZ   )r   r   r   )r   r   s     r>   __init__zProcess.__init__m  s    

r@   c                 ~    t        j                  | j                        }t        |      t        t              k(  sJ |S rZ   )r1   proc_kinfo_oneshotr   lenkinfo_proc_mapr   rQ   s     r>   _get_kinfo_proczProcess._get_kinfo_procr  s4     %%dhh/3x3~....
r@   c                 ~    t        j                  | j                        }t        |      t        t              k(  sJ |S rZ   )r1   proc_pidtaskinfo_oneshotr   r   pidtaskinfo_mapr   s     r>   _get_pidtaskinfozProcess._get_pidtaskinfoz  s4     ++DHH53x3////
r@   c                 p    | j                   j                  |        | j                  j                  |        y rZ   )r   cache_activater   r   s    r>   oneshot_enterzProcess.oneshot_enter  s*    ++D1,,T2r@   c                 p    | j                   j                  |        | j                  j                  |        y rZ   )r   cache_deactivater   r   s    r>   oneshot_exitzProcess.oneshot_exit  s*    --d3..t4r@   c                 |    | j                         t        d      }||S t        j                  | j                        S )Nr%   )r   r   r1   	proc_namer   )r   r%   s     r>   r%   zProcess.name  s7    ##%nV&<='tET^^DHH-EEr@   c                 @    t        j                  | j                        S rZ   )r1   proc_exer   r   s    r>   exezProcess.exe      }}TXX&&r@   c                 @    t        j                  | j                        S rZ   )r1   proc_cmdliner   r   s    r>   cmdlinezProcess.cmdline  s      **r@   c                 R    t        t        j                  | j                              S rZ   )r   r1   proc_environr   r   s    r>   environzProcess.environ  s    "4#4#4TXX#>??r@   c                 X    | j                         t        d      | _        | j                  S )Nr   )r   r   r   r   s    r>   r   zProcess.ppid  s&    ))+N6,BC
zzr@   c                 @    t        j                  | j                        S rZ   )r1   proc_cwdr   r   s    r>   cwdzProcess.cwd  r   r@   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr   r   r   r   r3   puidsr   r   rawtuples     r>   uidszProcess.uids  H    '')yy^F+,^F+,^F+,
 	
r@   c                     | j                         }t        j                  |t        d      |t        d      |t        d            S )Nr   r    r!   r   r   s     r>   gidszProcess.gids  r   r@   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      r>   terminalzProcess.terminal  sI    %%'w(?@((*	< 		s   5 	A Ac                     | j                         }t        j                  |t        d      |t        d      |t        d      |t        d            S )Nr(   r)   r*   r+   )r   r3   pmemr   r   s     r>   memory_infozProcess.memory_info  sU    ((*xx_U+,_U+,_Y/0_Y/0	
 	
r@   c                     | j                         }t        j                  | j                        }t	        j
                  ||fz    S rZ   )r  r1   proc_memory_ussr   r3   pfullmem)r   	basic_memusss      r>   memory_full_infozProcess.memory_full_info  s:    $$&	""488,||Y#/00r@   c                 z    | j                         }t        j                  |t        d      |t        d      dd      S )Nr&   r'   g        )r   r3   	pcputimesr   r   s     r>   rH   zProcess.cpu_times  sA    ((*}}_Z01_Z01
 	
r@   c                 T    | j                         t        d      }|st        |      }|S )Nr#   )r   r   r   )r   	monotonicr#   s      r>   r   zProcess.create_time  s,    $$&~g'>?+E2Er@   c                 b    | j                         t        d      }t        j                  |d      S )Nr-   r   )r   r   r3   pctxsw)r   vols     r>   num_ctx_switcheszProcess.num_ctx_switches  s-    
 ##%oj&ABzz#q!!r@   c                 6    | j                         t        d      S )Nr,   )r   r   r   s    r>   num_threadszProcess.num_threads  s    $$&|'DEEr@   c                     | j                   dk(  rg S g }t        j                  | j                         }|D ]8  \  }}t        |      st	        j
                  ||      }|j                  |       : |S r   )r   r1   proc_open_filesr   r3   	popenfilerP   )r   filesr   rm   fdry   s         r>   
open_fileszProcess.open_files  si    88q=I&&txx0 	%HD"T"tR0V$	% r@   c           
          t         |   \  }}t        j                  | j                  ||      }g }|D ]1  }|\  }}}	}
}}t	        |||	|
||t
              }|j                  |       3 |S rZ   )r   r1   proc_net_connectionsr   r   TCP_STATUSESrP   )r   r   familiestypesr   rQ   rS   r  famtypeladdrraddrr$   r   s                 r>   r   zProcess.net_connections  sz    #D/%++DHHhF 	D26/BT5%CueV\B JJrN	 
r@   c                 `    | j                   dk(  ryt        j                  | j                         S r   )r   r1   proc_num_fdsr   s    r>   num_fdszProcess.num_fds  s%    88q=  **r@   Nc                 X    t        j                  | j                  || j                        S rZ   )r   wait_pidr   r   )r   timeouts     r>   waitzProcess.wait  s      7DJJ??r@   c                 @    t        j                  | j                        S rZ   )r1   proc_priority_getr   r   s    r>   nice_getzProcess.nice_get  s    %%dhh//r@   c                 B    t        j                  | j                  |      S rZ   )r1   proc_priority_setr   )r   values     r>   nice_setzProcess.nice_set  s    %%dhh66r@   c                 b    | j                         t        d      }t        j                  |d      S )Nr$   ?)r   r   PROC_STATUSESget)r   codes     r>   r$   zProcess.status  s-    ##%nX&>?  s++r@   c                     t        j                  | j                        }g }|D ].  \  }}}t        j                  |||      }|j                  |       0 |S rZ   )r1   proc_threadsr   r3   pthreadrP   )r   r   rr   	thread_idutimestimery   s          r>   threadszProcess.threads  sV    ##DHH-'. 	##Iue[[E59FNN6"	# r@   FinetrZ   )#__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r%   r   r   r   r   r   r   r   r   r  r  rH   r   r  r  r  r   r$  r(  r+  r/  r$   r;  rV   r@   r>   r   r   h  s%   ;3I
      35 F F ' ' + + @ @   ' ' 
 
 
 
   
 
 1 1
 
 
   " " F F 	 	 
 
 + +
 @ @ 0 0 7 7 , ,
  r@   r   r<  r=  )]rB  r   r   rl   rj   r   r   r3   r   r   r1   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_STOPPEDSZOMBSTATUS_ZOMBIEr2  dictr   r   r?   rF   	heap_info	heap_trimrH   rO   rU   rX   r[   has_cpu_freqrc   
disk_usagedisk_io_countersrk   r}   r   net_if_addrsr   r   r   r   	Exceptionr   r   r   r   
pid_existsr   r   rV   r@   r>   <module>rs     s  
 %   	    ! ! " "  #  " + ( " 4
,, 	733--G11'00'00//g(('11--g))w++7,,  	IIw""IIw%%KK((JJ&&JJ%% 	
	
	
	
	
	
	


	 			""< NN	NN	3$
"
N 40   
(( *:, &&  $6
[N(    
,} }e  	*3'
23Ns   "K K(K##K(