
    ɧd8y                        d Z ddlZddlZddlZddlZddlmc 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 ddlmZ ddlm Z  ddlm!Z! ddlm"Z" g Z#erWe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        iZ2nerWej$        ej%        ej(        ej)        ej*        ej+        ej3        ej-        ej,        ej-        ej&        ej4        ej5        ej'        iZ2nLerJej$        ej%        ej(        ej)        ej*        ej+        ej,        ej-        ej&        ej4        ej5        ej'        iZ2ej6        ej7        ej8        ej9        ej:        ej;        ej<        ej=        ej>        ej?        ej@        ejA        ejB        ejC        ejD        ejE        ejF        ejG        ejH        ejI        ejJ        ejK        ejL        ejM        iZN ejO                    ZPejQ        ZQ eRed          ZS eRed          ZT eRed          ZU eRed          ZV eWdvi dddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLZX edMg dN          ZY edOg dP          ZZ edQg dR          Z[e[Z\ edSg dT          Z] edUdV          Z^ edWdX          Z_er edYg dZ          Z`n edYg d[          Z`d\ Zad] Zbd^ ZceSrd_ Zdn
d` Zddaed_e        db Zfeserdc Zgndd Zgde ZhdwdfZiejj        Zjejk        Zkejl        Zlejm        Zmdg Zndh Zoer	di Zpdj Zqdk Zrdl Zsdm Ztedn             Zudo Zveserdp Zwnejw        Zwdq Zxdr Zyejz        ds             Z{ G dt due|          Z}dS )xz5FreeBSD, OpenBSD and NetBSD platforms implementation.    N)defaultdict)
namedtuple   )_common)_psposix)_psutil_bsd)_psutil_posix)FREEBSD)NETBSD)OPENBSD)AccessDenied)NoSuchProcess)ZombieProcess)	conn_tmap)conn_to_ntuple)memoize)memoize_when_activated)usage_percent)FileNotFoundError)PermissionError)ProcessLookupError)whichper_cpu_timesproc_num_threadsproc_open_filesproc_num_fdsppidstatusreal_uid   effective_uid   	saved_uid   real_gid   effective_gid   	saved_gid   ttynr   create_time	   ctx_switches_vol
   ctx_switches_unvol   read_io_count   write_io_count   	user_time   sys_time   ch_user_time   ch_sys_time   rss   vms   memtext   memdata   memstack   cpunum   name   svmem)total	availablepercentusedfreeactiveinactivebufferscachedsharedwired	scputimesusernicesystemidleirqpmem)r?   rA   textdatastack	pcputimes)r[   r]   children_userchildren_systempmmap_grouped*path rss, private, ref_count, shadow_count	pmmap_ext6addr, perms path rss, private, ref_count, shadow_countsdiskio)
read_countwrite_count
read_byteswrite_bytes	read_time
write_time	busy_time)rl   rm   rn   ro   c                  "   t          j                    } | \  }}}}}}}}t          rt          dd          5 }	|	D ]}
|
                    d          r+t          |
                                d                   dz  }B|
                    d          r*t          |
                                d                   dz  }	 ddd           n# 1 swxY w Y   ||z   |z   }||z   |z   }t          ||z
  |d          }t          |||||||||||          S )	z&System virtual memory as a namedtuple.z/proc/meminforbs   Buffers:r   i   s
   MemShared:Nround_)	cextvirtual_memr   open
startswithintsplitr   rM   )memrN   rR   rS   rT   rX   rV   rU   rW   flineavailrQ   rP   s                 -lib/python3.11/site-packages/psutil/_psbsd.pyvirtual_memoryr      sp   



CDGAE45&'6 9 /4(( 	9A 9 9??;// 9!$**,,q/22T9GG__]33 9 a11D8F	9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 v$EE>F"DUU]U1===Gwd7FFEC C Cs   BCCCc                      t          j                    \  } }}}}t          || d          }t          j        | |||||          S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   ru   )rw   swap_memr   r   sswap)rN   rQ   rR   sinsoutrP   s         r   swap_memoryr      sF    #'=?? E4sDD%222G=dGS$???    c                  Z    t          j                    \  } }}}}t          | ||||          S )z+Return system per-CPU times as a namedtuple)rw   	cpu_timesrY   rZ   s        r   r   r      s0    $(N$4$4!D$cT4s333r   c                      g } t          j                    D ]2}|\  }}}}}t          |||||          }|                     |           3| S )'Return system CPU times as a namedtuple)rw   r   rY   append)retcpu_tr[   r\   r]   r^   r_   items           r   r   r      s^    ')) 	 	E,1)D$cT4s;;DJJt
r   c                      t                      dk    rt                      gS t          j        rt	          d          dt          _        t                      gS )r   r   &supported only starting from FreeBSD 8T)cpu_count_logicalr   r   
__called__NotImplementedError r   r   r   r      sP    !# 	!KK= # 	P%&NOOO#' }r   Fc                  (    t          j                    S )z0Return the number of logical CPUs in the system.)rw   r   r   r   r   r   r      s    !###r   c                  .    t                      dk    rdnd S )Nr   )r   r   r   r   cpu_count_coresr      s    %''1,6qq$6r   c                  ~   d} t          j                    }||                    d          }|dk    rt|d|dz            }t          j        |          }	 t          |                    d                    pd} |                                 n# |                                 w xY w| st                      dk    rdS | S )z-Return the number of CPU cores in the system.Nz	</groups>r.   zgroup/children/group/cpur   )	rw   cpu_topologyrfindET
fromstringlenfindallclearr   )r   sindexroots       r   r   r      s      
	!GGK((E{ !juqyjM}Q''!dll+EFFGGO4C JJLLLLDJJLLLL 	 ""a' q
s   $B B$c                     t           rt          j                    \  } }}}}nt          rt          j                    \  } }}}}}}t	          dd          5 }|D ]>}|                    d          r't          |                                d                   }?	 ddd           n# 1 swxY w Y   n"t          rt          j                    \  } }}}}}}t          j
        | |||          S )z*Return various CPU stats as a named tuple.z
/proc/statrt   s   intrr   N)r
   rw   	cpu_statsr   ry   rz   r{   r|   r   r   	scpustats)	ctxswintrs
soft_intrssyscallstrapsfaultsforksr~   r   s	            r   r   r     s6     59N4D4D1uj(EE	  N 	Auj(E65,%% 	1 1 1??7++ 1

Q00E1	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 
  N 	Auj(E65UE:x@@@s   AB##B'*B'c           	          g }t          j                    }|D ];}|\  }}}}dx}}	t          j        ||||||	          }
|                    |
           <|S )zReturn mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906
    N)rw   disk_partitionsr   	sdiskpartr   )allretlist
partitions	partitiondevice
mountpointfstypeoptsmaxfilemaxpathntuples              r   r   r   >  sw    
 G%''J  	+4(
FD  '"6:vt#*G5 5vNr   c                     t                                                      } i }| D ]}	 t          j        |          }t          j        |          }t          j        |          \  }}t          t          d          rt          j        |          }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).	NicDuplexN)net_io_counterskeys
cext_posix
net_if_mtunet_if_is_runningnet_if_duplex_speedhasattrr   r   	snicstatsOSErrorerrnoENODEV)namesr   rK   mtuisupduplexspeederrs           r   net_if_statsr   [  s    ""$$E
C D D	D'--C/55D&:4@@MFE w,, 3 *622)$sCCCII  	 	 	yEL(     	 Js   ?B++
C5CCc                    t           rg }t                      D ]}	 t          |                              |           }|D ]G}t	          |          }|                    |           |                    t          j        |            Hp# t          t          f$ r Y w xY w|S | t          j
        vr7t          d| dd                    d t          D                                 t          |          \  }}t                      }t          rt          j        d          }nt          j                    }|D ]D}|\  }	}
}}}}}|
|v r4||v r0t#          |	|
||||t$          |          }|                    |           Et	          |          S )z System-wide network connections.invalid  kind argument; choose between , c                 ,    g | ]}t          |          S r   repr.0xs     r   
<listcomp>z#net_connections.<locals>.<listcomp>  s    ,H,H,HT!WW,H,H,Hr   r   )r   pidsProcessconnectionslistr   r   sconnr   r   r   
ValueErrorjoinsetr   rw   net_connectionsr   TCP_STATUSESadd)kindr   pidconsconnfamiliestypesrawlistr   fdfamtypeladdrraddrr   nts                   r   r   r   o  s    66 		5 		5C5s||//55 ! 5 5D::DKK$$$JJw}d344445 "=1    
7$$ Lj DD$)),H,Hi,H,H,H"I"I"IK L L 	LoOHe
%%C )&r**&((  370CueVS(? 	tu} 	CueV ,c3 3BGGBKKK99s   "BBB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 info.Nr   r   <   )rw   sensors_batteryr   r   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)rP   minsleftpower_pluggedsecslefts       r   r   r     s    	/3/C/E/E,GX}}" 	 	 	44	 &* 	%3HH^ 	%1HH"}H=AAAs    
((c            	      8   t          t                    } t                      }t          |          D ]g}	 t	          j        |          \  }}|dk    rd}d|z  }| d                             t          j        ||||                     X# t          $ r Y dw xY w| S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore %scoretemp)
r   r   r   rangerw   sensors_cpu_temperaturer   r   shwtempr   )r   num_cpuscpucurrenthighrK   s         r   sensors_temperaturesr    s    $$&&?? 		 		C $ <S A A19  D 3J&&OD'4>>@ @ @ @&    
s   AB


BBc                  f   g } t                      }t          |          D ]}	 t          j        |          \  }}n# t          $ r Y (w xY w|r	 t          |                    d          d                             d          d                   }n# t          t          f$ r d}Y nw xY w	 t          |                    d          d                             d          d                   }n# t          t          f$ r d}Y nw xY w| 	                    t          j        |||                     | S )zReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
         r   /r   N)r   r  rw   cpu_frequencyr   r{   r|   
IndexErrorr   r   r   scpufreq)r   r  r  r  available_freqmin_freqmax_freqs          r   cpu_freqr    s^   
 $&&?? 	F 	FC*.*<S*A*A'&    $$">#7#7#<#<R#@#F#Fs#K#KA#NOOHH!:. $ $ $#HHH$$">#7#7#<#<Q#?#E#Ec#J#J1#MNNHH!:. $ $ $#HHH$JJw'8DDEEEE
s5   <
A	A	ABB'&B'+AC--DDc                  (    t          j                    S )z:The system boot time expressed in seconds since the epoch.)rw   	boot_timer   r   r   r  r    s    >r   c                      g } t          j                    }|D ]Q}|\  }}}}}|dk    rt          sJ d}|dk    r"t          j        ||pd|||          }|                     |           R| S )z:Return currently connected users as a list of namedtuples.r   N~)rw   usersr   r   suserr   )	r   r   r   r[   ttyhostnametstampr   r   s	            r   r  r    s    GjllG  +/(c8VS"9 	NNNC#: 	]4hDDrNr   c                      	 t          d                                           dS # t          $ r Y dS t          $ r Y dS w xY w)Nr   TF)r   rK   r   r   r   r   r   _pid_0_existsr    sa    

 t    uu   tts   !% 
?	??c                      t          j                    } t          r(d| vr$t                      r|                     dd           | S )z7Returns a list of PIDs currently running on the system.r   )rw   r   r   r  insert)r   s    r   r   r     sF    
)++C ASL moo  	

1aJr   c                 R    t          j        |           }|s| t                      v S dS )zReturn True if pid exists.T)r   
pid_existsr   )r   existss     r   r!  r!  	  s/    $S)) 	 $&&= 4r   c                     	 t          j        |           t          d                  }|t           j        k    S # t          $ r Y dS w xY w)Nr   F)rw   proc_oneshot_infokinfo_proc_mapSZOMB	Exception)r   sts     r   	is_zombier)    sP    #C(()AB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                  t          $ r8 | j        dk    r+dt                      v rt          | j        | j                    w xY wNr   )r   r)  r   r   _name_ppidr   r   r   r   r   )selfargskwargsfuns      r   wrapperz wrap_exceptions.<locals>.wrapper"  s    	3t-d---f---! 	: 	: 	:"" :#DHdj$*EEE#DHdj999 	5 	5 	5tx444 	 	 	x1} ; &tx<<<	s
    B<C)	functoolswraps)r2  r3  s   ` r   wrap_exceptionsr6    s:     _S    " Nr   c              #      K   	 dV  dS # t           t          f$ rO t          | j                  r t	          | j        | j        | j                  t          | j        | j                  t          $ r t          | j        | j                  w xY w)z8Same as above, for routines relying on reading /proc fs.N)
r   r   r)  r   r   r-  r.  r   r   r   )insts    r   wrap_exceptions_procfsr9  7  s      1 12 6 6 6 TX 	6$*djAAA$*555 1 1 148TZ0001s
   
 BBc                       e Zd ZdZg dZd Z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red             Zed             ZeZed             Zed             Zed             Zed             Zed*d            Zed+d            Zed             Zed             Z ed             Z!ed             Z"ed             Z# e$d d!          Z% e$d d"          Z&d# Z'e(red$             Z)ne'Z)e*red%             Z+ne'Z+er/ed&             Z,ed'             Z-ed(             Z.ed+d)            Z/dS dS ),r   z1Wrapper class around underlying C implementation.)r   r-  r.  _cachec                 0    || _         d | _        d | _        d S N)r   r-  r.  )r/  r   s     r   __init__zProcess.__init__M  s    



r   c                 8    t          j        | j                   dS )z+Raise NSP if the process disappeared on us.N)rw   	proc_namer   r/  s    r   _assert_alivezProcess._assert_aliveR  s     	tx     r   c                     t          j        | j                  }t          |          t          t                    k    sJ |S )z;Retrieves multiple process info in one shot as a raw tuple.)rw   r$  r   r   r%  r/  r   s     r   oneshotzProcess.oneshotX  s:     $TX..3xx3~......
r   c                 :    | j                             |            d S r=  )rE  cache_activaterA  s    r   oneshot_enterzProcess.oneshot_enter`  s    ##D)))))r   c                 :    | j                             |            d S r=  )rE  cache_deactivaterA  s    r   oneshot_exitzProcess.oneshot_exitc  s    %%d+++++r   c                     |                                  t          d                  }||nt          j        | j                  S )NrK   )rE  r%  rw   r@  r   )r/  rK   s     r   rK   zProcess.namef  s4    ||~~nV45EttT^DH-E-EEr   c                 l   t           r&| j        dk    rdS t          j        | j                  S t          rR| j        dk    rdS t          |           5  t          j        d| j        z            cd d d            S # 1 swxY w Y   d S |                                 }|rt          |d                   pdS dS )Nr    z/proc/%s/exe)
r
   r   rw   proc_exer   r9  osreadlinkcmdliner   )r/  rR  s     r   exezProcess.exek  s    	x1} r=*** 	x1} r'-- > >{>DH#<==> > > > > > > > > > > > > > > > > > llnnG WQZ((.B.rs   A::A>A>c                    t           r| j        dk    rg S t          r	 t          j        | j                  S # t
          $ r}|j        t          j        k    rot          | j                  r t          | j        | j
        | j                  t          | j                  s t          | j        | j
        | j                  g cY d }~S  d }~ww xY wt          j        | j                  S r,  )r   r   r   rw   proc_cmdliner   r   EINVALr)  r   r-  r.  r!  r   )r/  r   s     r   rR  zProcess.cmdline  s     	/tx1} 	/I 	/
(222   9, 
 ** "+DHdj$*MMM'11 "+DHdj$*MMM  "						 $TX...s"   6 
C
 A>C>C
CC
c                 4    t          j        | j                  S r=  )rw   proc_environr   rA  s    r   environzProcess.environ  s     ***r   c                     |                                  t          d                  }t          j                    }	 ||         S # t          $ r Y d S w xY w)Nr+   )rE  r%  r   get_terminal_mapKeyError)r/  tty_nrtmaps      r   terminalzProcess.terminal  sX    w 78(**	< 	 	 	44	s   A 
AAc                 d    |                                  t          d                  | _        | j        S )Nr   )rE  r%  r.  rA  s    r   r   zProcess.ppid  s#    \\^^N6$:;
zr   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr   r!   r#   )rE  r   puidsr%  r/  rawtuples     r   uidszProcess.uids  J    <<>>}^J/0^O45^K013 3 	3r   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                            S )Nr%   r'   r)   )rE  r   pgidsr%  rc  s     r   gidszProcess.gids  rf  r   c                     |                                  }t          j        |t          d                  |t          d                  |t          d                  |t          d                            S )Nr7   r9   r;   r=   )rE  r   rd   r%  rc  s     r   r   zProcess.cpu_times  sX    <<>> ^K01^J/0^N34^M23	5 5 	5r   c                 L    |                                  t          d                  S )NrI   rE  r%  rA  s    r   cpu_numzProcess.cpu_num  s    <<>>.":;;r   c           	          |                                  }t          |t          d                  |t          d                  |t          d                  |t          d                  |t          d                            S )Nr?   rA   rC   rE   rG   )rE  r`   r%  rc  s     r   memory_infozProcess.memory_info  sb    <<>>^E*+^E*+^I./^I./^J/02 2 	2r   c                 L    |                                  t          d                  S )Nr-   rl  rA  s    r   r-   zProcess.create_time  s    ||~~n];<<r   c                     t           rt          j        | j                  S t	          |                                           S r=  )HAS_PROC_NUM_THREADSrw   r   r   r   threadsrA  s    r   num_threadszProcess.num_threads  s3     	'(222t||~~&&&r   c                     |                                  }t          j        |t          d                  |t          d                            S )Nr/   r1   )rE  r   pctxswr%  rc  s     r   num_ctx_switcheszProcess.num_ctx_switches  s?    <<>>~^$678^$89:< < 	<r   c                     t          j        | j                  }g }|D ]1\  }}}t          j        |||          }|                    |           2t          r|                                  |S r=  )rw   proc_threadsr   r   pthreadr   r   rB  )r/  r   r   	thread_idutimestimer   s          r   rs  zProcess.threads  sx     #DH--'. 	# 	##Iue_Yu==FNN6"""" 	!   r   inetc           
         |t           vr7t          d|dd                    d t           D                                 t          rt           |         \  }}g }t	          j        | j                  }|D ]P}|\  }}}	}
}}}|| j        k    sJ ||v r3|	|v r/t          |||	|
||t                    }|	                    |           Q| 
                                 t          |          S t           |         \  }}t	          j        | j        ||          }g }|D ]:}|\  }}}	}
}}t          |||	|
||t                    }|	                    |           ;t          r| 
                                 |S )Nr   r   r   c                 ,    g | ]}t          |          S r   r   r   s     r   r   z'Process.connections.<locals>.<listcomp>  s    0L0L0LQa0L0L0Lr   )r   r   r   r   rw   r   r   r   r   r   rB  r   proc_connectionsr   )r/  r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                  r   r   zProcess.connections  s   y  	P* $dii0L0L)0L0L0L&M&M&MO P P P  	'oOHeC*4844G # #;?8CueVSdh&&&(? #tu} #'CueV(46 6BJJrNNN   99#D/%'(EBB 	 	D26/BT5%CueV ,. .BJJrNNNN 	!   
r   Nc                 B    t          j        | j        || j                  S r=  )r   wait_pidr   r-  )r/  timeouts     r   waitzProcess.wait  s     7DJ???r   c                 4    t          j        | j                  S r=  )r   getpriorityr   rA  s    r   nice_getzProcess.nice_get  s    %dh///r   c                 6    t          j        | j        |          S r=  )r   setpriorityr   )r/  values     r   nice_setzProcess.nice_set"  s    %dh666r   c                     |                                  t          d                  }t                              |d          S )Nr   ?)rE  r%  PROC_STATUSESget)r/  codes     r   r   zProcess.status&  s/    ||~~nX67  s+++r   c                     |                                  }t          j        |t          d                  |t          d                  dd          S )Nr3   r5   r   )rE  r   pior%  rc  s     r   io_counterszProcess.io_counters,  sD    <<>>{^O45^$456	  	r   c                     t           r| j        dk    rdS t          st          rt	          j        | j                  pdS t          t          rdnd          )z)Return process current working directory.r   Nr   rN  )r   r   r   HAS_PROC_OPEN_FILESrw   proc_cwdr   r
   rA  s    r   cwdzProcess.cwd5  sj    
  		!tx1} 		!4 	!* 	! =**2d2% 88! ! !r   mmaprh   rj   c                     t           r=  )r   rA  s    r   _not_implementedzProcess._not_implementedJ  s    !!r   c                 L    t          j        | j                  }d |D             S )z8Return files opened by process as a list of namedtuples.c                 >    g | ]\  }}t          j        ||          S r   )r   	popenfile)r   pathr   s      r   r   z&Process.open_files.<locals>.<listcomp>T  s)    HHHHD"G%dB//HHHr   )rw   r   r   )r/  r   s     r   
open_fileszProcess.open_filesP  s*     *4844GHHHHHHr   c                 n    t          j        | j                  }t          r|                                  |S )z=Return the number of file descriptors opened by this process.)rw   r   r   r   rB  rD  s     r   num_fdszProcess.num_fds[  s5     #DH--C %""$$$Jr   c                 4    t          j        | j                  S r=  )rw   proc_cpu_affinity_getr   rA  s    r   cpu_affinity_getzProcess.cpu_affinity_geti  s    -dh777r   c                 ~   t          t          t          t                                                    }|D ]}||vrt	          d||fz            	 t          j        | j        |           d S # t          $ rB}|j	        t          j
        t          j        fv r|D ]}||vrt	          d||fz             d }~ww xY w)Nz#invalid CPU #%i (choose between %s))tupler  r   r   r   rw   proc_cpu_affinity_setr   r   r   rV  EDEADLK)r/  cpusallcpusr  r   s        r   cpu_affinity_setzProcess.cpu_affinity_setm  s   
 E#moo"6"67788G 7 7g% 7$%J(+W~&6 7 7 77*48T:::::   
 9u} == 3# 3 3g- 3", E$'I2 !2#3 #3 33 s   A0 0
B<:=B77B<c                 4    t          j        | j                  S r=  )rw   proc_memory_mapsr   rA  s    r   memory_mapszProcess.memory_maps  s    (222r   c                     |t          j        | j        |          S t          |          dk    rt	          dt          |          z            |\  }}t          j        | j        |||          S )Nr    z4second argument must be a (soft, hard) tuple, got %s)rw   proc_getrlimitr   r   r   r   proc_setrlimit)r/  resourcelimitssofthards        r   rlimitzProcess.rlimit  s|     K*48X>>>v;;!# 1$!#'<<01 1 1 $
d*48XtTJJJr   )r~  r=  )0__name__
__module____qualname____doc__	__slots__r>  rB  r6  r   rE  rH  rK  rK   rS  rR  rY  r_  r   re  ri  r   r
   rm  ro  memory_full_infor-   rt  rw  rs  r   r  r  r  r   r  r  r   nt_mmap_groupednt_mmap_extr  r  r  HAS_PROC_NUM_FDSr  r  r  r  r  r   r   r   r   r   H  s)       ;;333I  
! ! !    _* * *, , , F F _F   _. / / _/2 + + _+   _   _ 3 3 _3 3 3 _3 5 5 _5  <		< 	< 
	< 2 2 _2 #= = _= ' ' _' < < _< 	 	 _	    _B @ @ @ _@ 0 0 _0 7 7 _7 , , _,
   _ ! ! _! !j<> >O*HJ JK" " "
  &		I 	I 
	I 	I
 &
  	#		 	 
	 	 #  -K		8 	8 
	8 
	 	 
	0 
	3 	3 
	3 
		K 		K 		K 
		K 		K 		KI-K -Kr   r   r   )F)~r  
contextlibr   r4  rP  xml.etree.ElementTreeetreeElementTreer   collectionsr   r   rN  r   r   r   rw   r	   r   r
   r   r   r   r   r   r   r   r   r   r   _compatr   r   r   r   __extra__all__SIDLSTATUS_IDLESRUNSTATUS_RUNNINGSSLEEPSTATUS_SLEEPINGSSTOPSTATUS_STOPPEDr&  STATUS_ZOMBIESWAITSTATUS_WAITINGSLOCKSTATUS_LOCKEDr  SDEADSTATUS_WAKINGSONPROC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   getpagesizePAGESIZEAF_LINKr   HAS_PER_CPU_TIMESrr  r  r  dictr%  rM   rY   r`   pfullmemrd   rg   ri   rk   r   r   r   r   r   r   r   r   r   
disk_usagedisk_io_countersr   net_if_addrsr   r   r   r  r  r  r  r  r   r!  r)  r6  contextmanagerr9  objectr   r   r   r   <module>r     sh  
 < ;          				 " " " " " " " " " # # # # # # " " " " " "             ! ! ! ! ! ! ) ) ) ) ) )                   ! ! ! ! ! ! " " " " " " " " " " " "       # # # # # #       + + + + + + " " " " " " & & & & & & $ $ $ $ $ $ ' ' ' ' ' '         (	7&	7)W,
G*
G)
G*
G)MM  	7&W,
G* 	
G)
G) 		7(g,'MM*  	7&W,
G*
G)	7(g,M 	73-G1'0'0/g('1-g)w+7, ":!##

GD/22 wt%788 gd$566 7400    	
1 Q !	
 a Q ! a !  R r " 2 b  R!" #$ %& 	'( 	)* B+, B-. R/0 212 
3F 	
 L L L	M 	M J:::< <	 z&AAABBJ{MMMO O	 
AC C JIK K	  Cj %2 %2 %2 3 3GG
 j %B %B %B C CGC C C(@ @ @4 4 4  %        %M$ $ $
  f 7 7 7 7  6A A AF      
(  &&  (     P  9B B B   "  <  
  * 	  	    %f %    $J    2 1 1 1 LK LK LK LK LKf LK LK LK LK LKr   