B
    *‹d|  ã               @   s¬  d Z ddlZddlZddlZddlZddlm  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rzej$ej%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ej0ej1iZ2n~er¾ej$ej%ej(ej)ej*ej+ej3ej-ej,ej-ej&ej4ej5ej'iZ2n:erøej$ej%ej(ej)ej*ej+ej,ej-ej&ej4ej5ej'iZ2ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGejHejIejJejKejLejMiZNe O¡ ZPejQZQeRedƒZSeRedƒZTeRedƒZUeRedƒZVeWdddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4ZXed5d6d7d8d9d:d;d<d=d>d?d@gƒZYedAdBdCdDdEdFgƒZZedGdHdIdJdKdLgƒZ[e[Z\edMdBdDdNdOgƒZ]edPdQƒZ^edRdSƒZ_er^edTdUdVdWdXdYdZd[gƒZ`nedTdUdVdWdXgƒZ`d\d]„ Zad^d_„ Zbd`da„ ZceSr˜dbd„ Zdndcd„ Zddded_ededf„ ZfesºerÄdgdh„ Zgndidh„ Zgdjdk„ Zherädldm„ Zineròdndm„ Zid‹dodp„ZjejkZkejlZlejmZmejnZndqdr„ Zodsdt„ Zper:dudv„ Zqdwdx„ Zrdydz„ Zsd{d|„ Zted}d~„ ƒZudd€„ Zvesjertdd‚„ ZwnejwZwdƒd„„ Zxd…d†„ Zyejzd‡dˆ„ ƒZ{G d‰dŠ„ dŠe|ƒZ}dS )Œz5FreeBSD, 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ÚpmemrE   rF   ÚtextÚdataÚstackÚ	pcputimesÚchildren_userÚchildren_systemÚpmmap_groupedz*path rss, private, ref_count, shadow_countÚ	pmmap_extz6addr, perms path rss, private, ref_count, shadow_countÚsdiskioZ
read_countZwrite_countÚ
read_bytesÚwrite_bytesZ	read_timeZ
write_timeZ	busy_timec              C   sê   t  ¡ } tr| \}}}}}}tddƒR}xJ|D ]B}| d¡rRt| ¡ d ƒd }	q.| d¡r.t| ¡ d ƒd }
q.W W d Q R X || }|| }n,| \}}}}}}}	}
|| | }|| | }t|| |dd}t||||||||	||
|ƒS )Nz/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:)Úround_)	ÚcextZvirtual_memr
   ÚopenÚ
startswithÚintÚsplitr   rL   )ZmemrM   rQ   rR   rS   rW   rU   ÚfÚlinerT   rV   rP   ZavailrO   © rs   úZ/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/psutil/_psbsd.pyÚvirtual_memory³   s"    


"
ru   c              C   s4   t  ¡ \} }}}}t|| dd}t | |||||¡S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   )rk   )rl   Zswap_memr   r   Zsswap)rM   rP   rQ   ÚsinZsoutrO   rs   rs   rt   Úswap_memory×   s    rw   c              C   s"   t  ¡ \} }}}}t| ||||ƒS )z+Return system per-CPU times as a namedtuple)rl   Ú	cpu_timesrX   )rY   rZ   r[   r\   r]   rs   rs   rt   rx   ã   s    rx   c              C   sB   g } x8t  ¡ D ],}|\}}}}}t|||||ƒ}|  |¡ qW | S )z'Return system CPU times as a namedtuple)rl   r   rX   Úappend)ÚretZcpu_trY   rZ   r[   r\   r]   Úitemrs   rs   rt   r   ê   s    c               C   s.   t ƒ dkrtƒ gS tjr tdƒ‚dt_tƒ gS )z'Return system CPU times as a namedtupler   z&supported only starting from FreeBSD 8T)Úcpu_count_logicalrx   r   Ú
__called__ÚNotImplementedErrorrs   rs   rs   rt   r   ú   s    
Fc               C   s   t  ¡ S )z0Return the number of logical CPUs in the system.)rl   r|   rs   rs   rs   rt   r|     s    r|   c               C   s   t ƒ dkrdS d S )Nr   )r|   rs   rs   rs   rt   Úcpu_count_cores  s    r   c              C   sx   d} t  ¡ }|dk	rb| d¡}|dkrb|d|d … }t |¡}zt| d¡ƒpRd} W d| ¡  X | sttƒ dkrtdS | S )z-Return the number of CPU cores in the system.Nz	</groups>éÿÿÿÿr#   zgroup/children/group/cpur   )	rl   Zcpu_topologyÚrfindÚETÚ
fromstringÚlenÚfindallÚclearr|   )rz   ÚsÚindexÚrootrs   rs   rt   r     s    



c        	   	   C   sœ   t rt ¡ \} }}}}nttrrt ¡ \} }}}}}}tddƒ.}x&|D ]}| d¡rDt| ¡ d ƒ}qDW W dQ R X ntrŒt ¡ \} }}}}}}t	 
| |||¡S )z*Return various CPU stats as a named tuple.z
/proc/statrj   s   intrr   N)r	   rl   Ú	cpu_statsr
   rm   rn   ro   rp   r   r   Z	scpustats)	ZctxswZintrsZ
soft_intrsZsyscallsZtrapsZfaultsZforksrq   rr   rs   rs   rt   rŠ   +  s    

 rŠ   c           
   C   sÞ   g } t ƒ }xÎt|ƒD ]Â}yt |¡\}}W n tk
r@   wY nX |rÂy t| d¡d  d¡d ƒ}W n ttfk
r‚   d}Y nX y t| d¡d  d¡d ƒ}W n ttfk
rÀ   d}Y nX |  	t
 |||¡¡ qW | S )zªReturn 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|   Úrangerl   Úcpu_freqr~   ro   rp   Ú
IndexErrorÚ
ValueErrorry   r   Úscpufreq)rz   Únum_cpusÚcpuÚcurrentZavailable_freqZmin_freqZmax_freqrs   rs   rt   rŽ   J  s$     
 
rŽ   c              C   s   t t ¡ ƒ} t | dd¡gS )Ng        )Úfloatrl   rŽ   r   r‘   )Úcurrrs   rs   rt   rŽ   b  s    c          	   C   sP   g }t  ¡ }x>|D ]6}|\}}}}d }}	t ||||||	¡}
| |
¡ qW |S )z”Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906
    N)rl   Údisk_partitionsr   Z	sdiskpartry   )ÚallÚretlistZ
partitionsÚ	partitionZdeviceZ
mountpointZfstypeÚoptsZmaxfileZmaxpathÚntuplers   rs   rt   r—   l  s    
r—   c        
      C   s´   t ƒ  ¡ } i }x | D ]˜}y&t |¡}t |¡}t |¡\}}W n0 tk
rn } z|jtjkr^‚ W dd}~X Y qX t	t
dƒr„t
 |¡}d |¡}d|k}	t
 |	||||¡||< qW |S )z)Get NIC stats (isup, duplex, speed, mtu).NÚ	NicDuplexú,Úrunning)Únet_io_countersÚkeysÚ
cext_posixZ
net_if_mtuZnet_if_flagsZnet_if_duplex_speedÚOSErrorÚerrnoZENODEVÚhasattrr   r   ÚjoinZ	snicstats)
Únamesrz   rK   ZmtuÚflagsZduplexÚspeedÚerrZoutput_flagsZisuprs   rs   rt   Únet_if_stats‰  s"    






r«   c          
   C   sÊ   | t jkr*td| d dd„ tD ƒ¡f ƒ‚t|  \}}tƒ }trPt d||¡}ntr`t d¡}nt ¡ }xX|D ]P}|\}}}}	}
}}tsŒt	rž||ksn||kržqnt
||||	|
|t|ƒ}| |¡ qnW t|ƒS )z System-wide network connections.z+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |ƒ‘qS rs   )Úrepr)Ú.0Úxrs   rs   rt   ú
<listcomp>¤  s    z#net_connections.<locals>.<listcomp>r€   )r   r   r   r¦   Úsetr   rl   Únet_connectionsr
   r	   r   ÚTCP_STATUSESÚaddÚlist)ÚkindÚfamiliesÚtypesrz   Úrawlistr{   ÚfdÚfamÚtypeÚladdrÚraddrr4   ÚpidÚntrs   rs   rt   r±      s&    


r±   c              C   sb   yt  ¡ \} }}W n tk
r&   dS X |dk}|r<tj}n|dkrLtj}n|d }t | ||¡S )zReturn battery info.Nr   r€   é<   )rl   Úsensors_batteryr~   r   ZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)rO   ZminsleftZpower_pluggedZsecsleftrs   rs   rt   rÁ   Â  s    rÁ   c           	   C   sz   t tƒ} tƒ }xft|ƒD ]Z}y@t |¡\}}|dkr8d}d| }| d  t ||||¡¡ W q t	k
rp   Y qX qW | S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore %sZcoretemp)
r   r´   r|   r   rl   Zsensors_cpu_temperaturery   r   Zshwtempr~   )rz   r’   r“   r”   ÚhighrK   rs   rs   rt   Úsensors_temperaturesÒ  s    
rÃ   c               C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)rl   Ú	boot_timers   rs   rs   rt   rÄ   é  s    rÄ   c        	      C   sj   g } t  ¡ }xX|D ]P}|\}}}}}|dkr8ts4t‚d}|dkrBqt ||pNd|||¡}|  |¡ qW | S )z:Return currently connected users as a list of namedtuples.r€   Nú~)rl   Úusersr   ÚAssertionErrorr   Zsuserry   )	r™   r¸   r{   rY   ÚttyÚhostnameZtstampr¾   r¿   rs   rs   rt   rÆ   î  s    
rÆ   c               C   s@   yt dƒ ¡  W n& tk
r$   dS  tk
r6   dS X dS d S )Nr   FT)ÚProcessrK   r   r   rs   rs   rs   rt   Ú_pid_0_exists  s    rË   c              C   s*   t  ¡ } tr&d| kr&tƒ r&|  dd¡ | S )z7Returns a list of PIDs currently running on the system.r   )rl   Úpidsr   rË   Úinsert)rz   rs   rs   rt   rÌ     s    rÌ   c             C   s    t  | ¡}|s| tƒ kS dS dS )zReturn True if pid exists.TN)r   Ú
pid_existsrÌ   )r¾   Úexistsrs   rs   rt   rÎ     s    

rÎ   c             C   s<   y"t  | ¡td  }t |¡tjkS  tk
r6   dS X d S )Nr4   F)rl   Úproc_oneshot_infoÚkinfo_proc_mapÚPROC_STATUSESÚgetr   ÚSTATUS_ZOMBIEÚ	Exception)r¾   Ústrs   rs   rt   Ú	is_zombie'  s
    r×   c                s   t  ˆ ¡‡ fdd„ƒ}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c                s°   yˆ | f|ž|ŽS  t k
rP   t| jƒr>t| j| j| jƒ‚nt| j| jƒ‚Y n\ tk
rp   t| j| jƒ‚Y n< t	k
rª   | jdkr¤dt
ƒ kr¢t| j| jƒ‚n‚ ‚ Y nX d S )Nr   )r   r×   r¾   r   Ú_nameÚ_ppidr   r   r   r£   rÌ   )ÚselfÚargsÚkwargs)Úfunrs   rt   Úwrapper3  s    


z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rÝ   rÞ   rs   )rÝ   rt   Úwrap_exceptions/  s    rá   c          	   c   st   y
dV  W nd t tfk
rN   t| jƒr<t| j| j| jƒ‚nt| j| jƒ‚Y n" tk
rn   t	| j| jƒ‚Y nX dS )z8Same as above, for routines relying on reading /proc fs.N)
r   r   r×   r¾   r   rØ   rÙ   r   r   r   )Úinstrs   rs   rt   Úwrap_exceptions_procfsH  s    

rã   c               @   sä  e Zd ZdZddddgZdd„ Zdd	„ Zeed
d„ ƒƒZ	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZerÄed"d#„ ƒZed$d%„ ƒZeZed&d'„ ƒZed(d)„ ƒZed*d+„ ƒZed,d-„ ƒZedOd/d0„ƒZedPd2d3„ƒZed4d5„ ƒZed6d7„ ƒZ ed8d9„ ƒZ!ed:d;„ ƒZ"ed<d=„ ƒZ#e$d>d?ƒZ%e$d>d@ƒZ&dAdB„ Z'e(rŒedCdD„ ƒZ)ne'Z)e*r¤edEdF„ ƒZ+ne'Z+eràedGdH„ ƒZ,edIdJ„ ƒZ-edKdL„ ƒZ.edQdMdN„ƒZ/d1S )RrÊ   z1Wrapper class around underlying C implementation.r¾   rØ   rÙ   Ú_cachec             C   s   || _ d | _d | _d S )N)r¾   rØ   rÙ   )rÚ   r¾   rs   rs   rt   Ú__init__^  s    zProcess.__init__c             C   s   t  | j¡ dS )z+Raise NSP if the process disappeared on us.N)rl   Ú	proc_namer¾   )rÚ   rs   rs   rt   Ú_assert_alivec  s    zProcess._assert_alivec             C   s$   t  | j¡}t|ƒttƒks t‚|S )z;Retrieves multiple process info in one shot as a raw tuple.)rl   rÐ   r¾   r„   rÑ   rÇ   )rÚ   rz   rs   rs   rt   Úoneshoti  s    zProcess.oneshotc             C   s   | j  | ¡ d S )N)rè   Zcache_activate)rÚ   rs   rs   rt   Úoneshot_enterq  s    zProcess.oneshot_enterc             C   s   | j  | ¡ d S )N)rè   Zcache_deactivate)rÚ   rs   rs   rt   Úoneshot_exitt  s    zProcess.oneshot_exitc             C   s(   |   ¡ td  }|d k	r|S t | j¡S )NrK   )rè   rÑ   rl   ræ   r¾   )rÚ   rK   rs   rs   rt   rK   w  s    zProcess.namec          	   C   sv   t r| jdkrdS t | j¡S trR| jdkr0dS t| ƒ t d| j ¡S Q R X n |  ¡ }|rnt	|d ƒpldS dS d S )Nr   Ú z/proc/%s/exe)
r	   r¾   rl   Zproc_exer
   rã   ÚosÚreadlinkÚcmdliner   )rÚ   rî   rs   rs   rt   Úexe|  s    


zProcess.exec          
   C   s¨   t r| jdkrg S tr˜yt | j¡S  tk
r” } zT|jtjkr‚t| jƒr^t	| j| j
| jƒ‚q„t| jƒs|t| j| j
| jƒ‚q„g S n‚ W d d }~X Y q¤X nt | j¡S d S )Nr   )r   r¾   r
   rl   Zproc_cmdliner£   r¤   ÚEINVALr×   r   rØ   rÙ   rÎ   r   )rÚ   rª   rs   rs   rt   rî   ”  s    

zProcess.cmdlinec             C   s   t  | j¡S )N)rl   Zproc_environr¾   )rÚ   rs   rs   rt   Úenviron®  s    zProcess.environc             C   s:   |   ¡ td  }t ¡ }y|| S  tk
r4   d S X d S )Nr;   )rè   rÑ   r   Zget_terminal_mapÚKeyError)rÚ   Ztty_nrZtmaprs   rs   rt   Úterminal²  s    zProcess.terminalc             C   s   |   ¡ td  | _| jS )Nr3   )rè   rÑ   rÙ   )rÚ   rs   rs   rt   r3   »  s    zProcess.ppidc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr5   r6   r7   )rè   r   ZpuidsrÑ   )rÚ   Úrawtuplers   rs   rt   ÚuidsÀ  s
    

zProcess.uidsc             C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr8   r9   r:   )rè   r   ZpgidsrÑ   )rÚ   rô   rs   rs   rt   ÚgidsÈ  s
    

zProcess.gidsc             C   s8   |   ¡ }t |td  |td  |td  |td  ¡S )NrA   rB   rC   rD   )rè   r   rb   rÑ   )rÚ   rô   rs   rs   rt   rx   Ð  s    


zProcess.cpu_timesc             C   s   |   ¡ td  S )NrJ   )rè   rÑ   )rÚ   rs   rs   rt   Úcpu_numÚ  s    zProcess.cpu_numc             C   s@   |   ¡ }t|td  |td  |td  |td  |td  ƒS )NrE   rF   rG   rH   rI   )rè   r^   rÑ   )rÚ   rô   rs   rs   rt   Úmemory_infoÞ  s    



zProcess.memory_infoc             C   s   |   ¡ td  S )Nr<   )rè   rÑ   )rÚ   rs   rs   rt   r<   ê  s    zProcess.create_timec             C   s    t rt | j¡S t|  ¡ ƒS d S )N)ÚHAS_PROC_NUM_THREADSrl   r   r¾   r„   Úthreads)rÚ   rs   rs   rt   Únum_threadsî  s    zProcess.num_threadsc             C   s$   |   ¡ }t |td  |td  ¡S )Nr=   r>   )rè   r   ZpctxswrÑ   )rÚ   rô   rs   rs   rt   Únum_ctx_switchesö  s    
zProcess.num_ctx_switchesc             C   sL   t  | j¡}g }x*|D ]"\}}}t |||¡}| |¡ qW trH|  ¡  |S )N)rl   Zproc_threadsr¾   r   Zpthreadry   r   rç   )rÚ   r¸   r™   Ú	thread_idÚutimeZstimerœ   rs   rs   rt   rú   ý  s    zProcess.threadsÚinetc          	   C   sÖ   |t kr(td|d dd„ t D ƒ¡f ƒ‚t | \}}g }trJt | j¡}n&tr`t | j||¡}nt | j||¡}xX|D ]P}|d d… \}}}	}
}}tr¨||ksv|	|kr¨qvt	|||	|
||t
ƒ}| |¡ qvW |  ¡  |S )Nz+invalid %r kind argument; choose between %sz, c             S   s   g | ]}t |ƒ‘qS rs   )r¬   )r­   r®   rs   rs   rt   r¯     s    z'Process.connections.<locals>.<listcomp>r    )r   r   r¦   r
   rl   r±   r¾   r   Zproc_connectionsr   r²   ry   rç   )rÚ   rµ   r¶   r·   rz   r¸   r{   r¹   rº   r»   r¼   r½   r4   r¿   rs   rs   rt   Úconnections	  s(    
zProcess.connectionsNc             C   s   t  | j|| j¡S )N)r   Zwait_pidr¾   rØ   )rÚ   Útimeoutrs   rs   rt   Úwait%  s    zProcess.waitc             C   s   t  | j¡S )N)r¢   Úgetpriorityr¾   )rÚ   rs   rs   rt   Únice_get)  s    zProcess.nice_getc             C   s   t  | j|¡S )N)r¢   Úsetpriorityr¾   )rÚ   Úvaluers   rs   rt   Únice_set-  s    zProcess.nice_setc             C   s   |   ¡ td  }t |d¡S )Nr4   ú?)rè   rÑ   rÒ   rÓ   )rÚ   Úcoders   rs   rt   r4   1  s    zProcess.statusc             C   s(   |   ¡ }t |td  |td  dd¡S )Nr?   r@   r€   )rè   r   ZpiorÑ   )rÚ   rô   rs   rs   rt   Úio_counters7  s    

zProcess.io_countersc             C   s:   t r| jdkrdS tstr&t | j¡S ttr0dndƒ‚dS )z)Return process current working directory.r   rë   z&supported only starting from FreeBSD 8N)r   r¾   r
   ÚHAS_PROC_OPEN_FILESrl   Zproc_cwdr~   r	   )rÚ   rs   rs   rt   Úcwd@  s    zProcess.cwdÚmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countc             C   s   t ‚d S )N)r~   )rÚ   rs   rs   rt   Ú_not_implementedU  s    zProcess._not_implementedc             C   s   t  | j¡}dd„ |D ƒS )z8Return files opened by process as a list of namedtuples.c             S   s   g | ]\}}t  ||¡‘qS rs   )r   Z	popenfile)r­   Úpathr¹   rs   rs   rt   r¯   _  s    z&Process.open_files.<locals>.<listcomp>)rl   r   r¾   )rÚ   r¸   rs   rs   rt   Ú
open_files[  s    zProcess.open_filesc             C   s   t  | j¡}tr|  ¡  |S )z=Return the number of file descriptors opened by this process.)rl   r   r¾   r
   rç   )rÚ   rz   rs   rs   rt   Únum_fdsf  s    zProcess.num_fdsc             C   s   t  | j¡S )N)rl   Zproc_cpu_affinity_getr¾   )rÚ   rs   rs   rt   Úcpu_affinity_gett  s    zProcess.cpu_affinity_getc          
   C   s¬   t tttƒ ƒƒƒ}x$|D ]}||krtd||f ƒ‚qW yt | j|¡ W n\ tk
r¦ } z>|j	t	j
t	jfkr”x$|D ]}||krttd||f ƒ‚qtW ‚ W d d }~X Y nX d S )Nz#invalid CPU #%i (choose between %s))Útupler   r„   r   r   rl   Zproc_cpu_affinity_setr¾   r£   r¤   rð   ZEDEADLK)rÚ   ZcpusZallcpusr“   rª   rs   rs   rt   Úcpu_affinity_setx  s    

zProcess.cpu_affinity_setc             C   s   t  | j¡S )N)rl   Zproc_memory_mapsr¾   )rÚ   rs   rs   rt   Úmemory_maps‘  s    zProcess.memory_mapsc             C   sP   |d krt  | j|¡S t|ƒdkr2tdt|ƒ ƒ‚|\}}t  | j|||¡S d S )Nr   z4second argument must be a (soft, hard) tuple, got %s)rl   Zproc_getrlimitr¾   r„   r   r¬   Zproc_setrlimit)rÚ   ÚresourceZlimitsZsoftÚhardrs   rs   rt   Úrlimit•  s    zProcess.rlimit)rÿ   )N)N)0Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rå   rç   rá   r   rè   ré   rê   rK   rï   rî   rñ   ró   r3   rõ   rö   rx   r	   r÷   rø   Zmemory_full_infor<   rû   rü   rú   r   r  r  r  r4   r
  r  r   Znt_mmap_groupedZnt_mmap_extr  r  r  ÚHAS_PROC_NUM_FDSr  r  r  r  r  rs   rs   rs   rt   rÊ   Y  sf   		
	rÊ   )F)~r  Ú
contextlibr¤   rß   rì   Zxml.etree.ElementTreeÚetreeZElementTreer‚   Úcollectionsr   r   rë   r   r   r   rl   r   r¢   r	   r
   r   r   r   r   r   r   r   r   r   Z_compatr   r   r   r   Z__extra__all__ZSIDLZSTATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDZSZOMBrÔ   ZSWAITZSTATUS_WAITINGZSLOCKZSTATUS_LOCKEDrÒ   ZSDEADZSTATUS_WAKINGZSONPROCZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZTCPS_SYN_SENTZCONN_SYN_SENTZTCPS_SYN_RECEIVEDZCONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZTCPS_LAST_ACKZCONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONEr²   ZgetpagesizeÚPAGESIZEZAF_LINKr¥   ZHAS_PER_CPU_TIMESrù   r  r  ÚdictrÑ   rL   rX   r^   Zpfullmemrb   re   rf   rg   ru   rw   rx   r   r}   r|   r   rŠ   rŽ   r—   Ú
disk_usageZdisk_io_countersr    Znet_if_addrsr«   r±   rÁ   rÃ   rÄ   rÆ   rË   rÌ   rÎ   r×   rá   Úcontextmanagerrã   ÚobjectrÊ   rs   rs   rs   rt   Ú<module>   s.  






$
	



 


