
    g                        d Z ddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ 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& nn# e'$ rfZ( e)e(          *                                +                    d          r0 ej,                    d         d k     rd!Z-e-d"z  Z-e-d#z  Z- e.e-           dZ([(ww xY werddl/Z/ndZ/g d$Z0d%Z1d&Z2d'ej3        v Z4e/d(Z5n e/j6        d)d*d(i          Z7e7j5        Z5e&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        e&jN        e1e&jO        ejP        iZQe/5 G d+ d,e/j6                  ZR eS            T                    eRjU                   e/	dZVdZWd-ZXd.ZYn5 G d/ d0e/j6                  ZZ eS            T                    eZjU                    e[di d1dd2dd3d-d4d.d5d6d7d8d9d d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWZ\ e	dXg dY          Z] e	dZg d[          Z^ e	d\g d]          Z_ e	d^e_j`        d_z             Za e	d`dadbg          Zb e	dcdddec                    ebj`                  z             Zd e	dfg dg          Ze edhi          dj             Zfdk Zgedl             Zhdm Zidn Zje&jk        Zkdo Zldp Zmdq Zndr Zods Zpdt Zqdu Zrdv Zsdwatdx ZuddyZvdz Zwd{ Zxd| Zyd} Zzda{d~ Z|d Z}d Z~d Z G d d          Ze&j        Ze&j        Ze&j        Zd ZddZd Zd Z G d d          ZdS )z Windows platform implementation.    N)
namedtuple   )_common)ENCODING)ENCODING_ERRS)AccessDenied)NoSuchProcess)TimeoutExpired)	conn_tmap)conn_to_ntuple)debug)isfile_strict)memoize)memoize_when_activated)parse_environ_block)usage_percent)PY3)long)	lru_cacherange)unicode)ABOVE_NORMAL_PRIORITY_CLASS)BELOW_NORMAL_PRIORITY_CLASS)HIGH_PRIORITY_CLASS)IDLE_PRIORITY_CLASS)NORMAL_PRIORITY_CLASS)REALTIME_PRIORITY_CLASS)_psutil_windowszdll load failed   z3this Windows version is too old (< Windows Vista); z:psutil 3.4.2 is the latest version which supports Windows z2000, XP and 2003 server)win_service_iterwin_service_getr   r   r   r   r   r   IOPRIO_VERYLOW
IOPRIO_LOWIOPRIO_NORMALIOPRIO_HIGHCONN_DELETE_TCBAF_LINK
DELETE_TCBi+  __pypy__AddressFamilyr(   c                   &    e Zd ZeZeZeZeZeZeZdS )PriorityN)	__name__
__module____qualname__r   r   r   r   r   r        M/var/www/html/ai-engine/env/lib/python3.11/site-packages/psutil/_pswindows.pyr.   r.   s   s4        &A#&A#11 5"9r3   r.         c                       e Zd ZdZdZdZdZdS )
IOPriorityr   r   r5   r6   N)r/   r0   r1   r#   r$   r%   r&   r2   r3   r4   r8   r8      s"        
r3   r8   num_handlesctx_switches	user_timekernel_timecreate_time   num_threads   	io_rcount	io_wcount   	io_rbytes   	io_wbytes	   io_count_others
   io_bytes_others   num_page_faults   	peak_wset   wset   peak_paged_pool   
paged_pool   peak_non_paged_pool   non_paged_pool   pagefile   peak_pagefile   mem_private   	scputimes)usersystemidle	interruptdpcsvmem)total	availablepercentusedfreepmem)rssvmsrL   rN   rP   rR   rT   peak_nonpaged_poolnonpaged_poolrZ   r\   privatepfullmem)usspmmap_groupedpathrm   	pmmap_extzaddr perms  pio)
read_countwrite_count
read_byteswrite_bytesother_countother_bytesi   )maxsizec                     d                     |                     d          dd                   }t          j        |          }| t	          |          d         }t
          j                             ||          S )zConvert paths using native DOS format like:
        "\Device\HarddiskVolume1\Windows\systemew\file.txt"
    into:
        "C:\Windows\systemew\file.txt".
    \Nr6   )joinsplitcextQueryDosDevicelenosru   )srawdrivedriveletter	remainders       r4   convert_dos_pathr      sb     yyrr*++H%h//K#h--//"I7<<Y///r3   c                     t           r| S t          | t                    r| S |                     t          t
                    S )zmEncode a unicode string to a byte string by using the default fs
    encoding + "replace" error handler.
    )r   
isinstancestrencoder   r   )r   s    r4   py2_strencoder      s<      5a 	5H88Hm444r3   c                  (    t          j                    S N)r   getpagesizer2   r3   r4   r   r      s    r3   c                      t          j                    } | \  }}}}|}|}|}||z
  }t          ||z
  |d          }	t          |||	||          S )z&System virtual memory as a namedtuple.r   round_)r   virtual_memr   rf   )
memtotphys	availphys_totsys	_availsysrg   availrk   rj   ri   s
             r4   virtual_memoryr      sd    



C-0*GYEED5=DUU]U1===Gwd333r3   c                     t          j                    } | d         }| d         }||z
  }|dk    r)t          j                    }t          d|z  |z            }nd}d}||z
  }t	          |d          }t          j        ||||dd          S )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r5   g{Gz?        r   )r   r   swap_percentintroundr   sswap)r   
total_phystotal_systemrg   percentswaprj   rk   ri   s           r4   swap_memoryr      s    



CQJq6L :%E
 qyy'))4+%-..4<DK##G=dGQ:::r3   c                     t           r1t          | t                    r|                     t          d          } t          j        |           \  }}||z
  }t          ||d          }t          j	        ||||          S )z'Return disk usage associated with path.strict)errorsr   r   )
r   r   bytesdecoder   r   
disk_usager   r   
sdiskusage)ru   rg   rk   rj   ri   s        r4   r   r     sy    
 6z$&& 6 {{8H{55/$''KE44<DD%222GeT4999r3   c                 B    t          j        |           }d |D             S )zReturn disk partitions.c                 *    g | ]}t          j        | S r2   )r   	sdiskpart.0xs     r4   
<listcomp>z#disk_partitions.<locals>.<listcomp>+  s     333aGq!333r3   )r   disk_partitions)allrawlists     r4   r   r   (  s&    "3''G3373333r3   c                      t          j                    \  } }}t          d t          t          j                     D              }t          | |||j        |j                  S )z)Return system CPU times as a named tuple.c                 ,    g | ]}t          |          S r2   )sum)r   ns     r4   r   zcpu_times.<locals>.<listcomp>9  s    KKK1AKKKr3   )r   	cpu_timesr`   zipper_cpu_timesrd   re   )ra   rb   rc   percpu_summeds       r4   r   r   3  sb    ))D&$ KKT5G5I5I0JKKKLMfdM3]5F  r3   c                      g } t          j                    D ]0\  }}}}}t          |||||          }|                     |           1| S )z6Return system per-CPU times as a list of named tuples.)r   r   r`   append)retra   rb   rc   rd   re   items          r4   r   r   ?  sY    
C.2.@.B.B  *fdIsvtY<<

4Jr3   c                  (    t          j                    S )z0Return the number of logical CPUs in the system.)r   cpu_count_logicalr2   r3   r4   r   r   H  s    !###r3   c                  (    t          j                    S )z-Return the number of CPU cores in the system.)r   cpu_count_coresr2   r3   r4   r   r   M  s    !!!r3   c                  d    t          j                    \  } }}}d}t          j        | |||          S )zReturn CPU statistics.r   )r   	cpu_statsr   	scpustats)r:   
interrupts_dpcssyscallssoft_interruptss        r4   r   r   R  s;    040@0@-L*eXOj/8  r3   c                      t          j                    \  } }d}t          j        t	          |           |t	          |                    gS )zMReturn CPU frequency.
    On Windows per-cpu frequency is not supported.
    r   )r   cpu_freqr   scpufreqfloat)currmax_min_s      r4   r   r   [  s<     JD$DU4[[$d<<==r3   Fc                      t           st          j                     da t          j                    } t	          d | D                       S )zReturn the number of processes in the system run queue averaged
    over the last 1, 5, and 15 minutes respectively as a tuple.
    Tc                 .    g | ]}t          |d           S )r5   )r   )r   loads     r4   r   zgetloadavg.<locals>.<listcomp>s  s     777T%a..777r3   )_loadavg_inititializedr   init_loadavg_counter
getloadavgtuple)	raw_loadss    r4   r   r   g  sM     " &!###!% !!I77Y777888r3   c                    | t           vr7t          d| dd                    d t           D                                 t           |          \  }}t          j        |||          }t                      }|D ]E}|\  }}}	}
}}}t          |||	|
||t          |dk    r|nd          }|                    |           Ft          |          S )zReturn socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    zinvalid z kind argument; choose between z, c                 ,    g | ]}t          |          S r2   )reprr   s     r4   r   z#net_connections.<locals>.<listcomp>  s    ;;;AQ;;;r3   r+   N)pid)
r   
ValueErrorr   r   net_connectionssetr   TCP_STATUSESaddlist)kind_pidfamiliestypesr   r   r   fdfamtypeladdrraddrstatusr   nts                  r4   r   r   {  s     9jttTYY;;;;;<<<>
 
 	
  oOHe"4599G
%%C  370CueVSrzzt	
 	
 	
 	99r3   c                  ~   i } t          j                    }|                                D ]\  }}t          s;t	          |t
                    sJ t          |                      t          |          }|\  }}}}t          t          d          rt          j
        |          }t          j        ||||d          | |<   | S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex )r   net_if_statsitemsr   r   r   r   r   hasattrr   r   	snicstats)r   rawdictnamer   isupduplexspeedmtus           r4   r   r     s    
C!!G}} D De 	'dG,,88d4jj888 &&D#( feS7K(( 	/&v..F%dFE3CCD		Jr3   c                  ~    t          j                    } t          d |                                 D                       S )zsReturn network I/O statistics for every network interface
    installed on the system as a dict of raw tuples.
    c                 6    g | ]\  }}t          |          |fS r2   r   )r   kvs      r4   r   z#net_io_counters.<locals>.<listcomp>  s)    ???41a-""A&???r3   )r   net_io_countersdictr   r   s    r4   r  r    s7     

 
 C??399;;???@@@r3   c                      g } t          j                    D ]>}t          |          }t          |d                   |d<   |                     |           ?| S )z,Return the addresses associated to each NIC.r   )r   net_if_addrsr   r   r   )r   r   s     r4   r  r    sY    
C"$$  U q**a

5Jr3   c                      t          j                    \  } }}}| dk    }t          |dz            }t          |dz            }|rdS |s|rt          j        }n|dk    rt          j        }t          j        |||          S )zReturn battery information.r      rE   Nr+   )r   sensors_batteryboolr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)acline_statusflagsri   secsleftpower_plugged
no_batterychargings          r4   r  r    s    
 /3.B.D.D+M5'8!Q&Meck""JEAIH t . ./	R-GX}===r3   c                      t          t          j                              } t          | t          z
            dk    rt          S | a| S )z:The system boot time expressed in seconds since the epoch.r   )r   r   	boot_timeabs_last_btimer
  s    r4   r  r    sA       
!
!C
3""
r3   c                      g } t          j                    }|D ]D}|\  }}}t          |          }t          j        |d||d          }|                     |           E| S )z:Return currently connected users as a list of namedtuples.N)r   usersr   r   suserr   )retlistr   r   ra   hostnametstampr   s          r4   r  r    sk    GjllG  !%hT""]4x>>rNr3   c               #      K   t          j                    D ]1\  } }t          t          |           t          |                    V  2dS )z*Yields a list of WindowsService instances.N)r   winservice_enumerateWindowsServicer   )r   display_names     r4   r!   r!     sZ      "799 O Ol]400-2M2MNNNNNNO Or3   c                 d    t          | d          }|                                d         |_        |S )zBOpen a Windows service and return it as a WindowsService instance.Nr'  )r&  _query_config_display_name)r   services     r4   r"   r"     s/    T4((G#1133NCGNr3   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
ej        d	             Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )r&  z(Represents an installed Windows service.c                 "    || _         || _        d S r   )_namer*  )selfr   r'  s      r4   __init__zWindowsService.__init__  s    
)r3   c                 H    d| j         d| j        d}| j        j        |S )Nz(name=z, display_name=))r.  r*  	__class__r/   )r/  detailss     r4   __str__zWindowsService.__str__  s7     JJJ
 00''::r3   c                 R    d|                                  dt          |           dS )N<z at >)r5  idr/  s    r4   __repr__zWindowsService.__repr__  s%     #||~~~~r$xxxx88r3   c                 Z    t          |t                    st          S | j        |j        k    S r   )r   r&  NotImplementedr.  r/  others     r4   __eq__zWindowsService.__eq__  s+     %00 	"!!zU[((r3   c                     | |k     S r   r2   r>  s     r4   __ne__zWindowsService.__ne__  s    5=  r3   c                 $   |                                  5  t          j        | j                  \  }}}}d d d            n# 1 swxY w Y   t	          t          |          t          |          t          |          t          |                    S )N)r'  binpathusername
start_type)_wrap_exceptionsr   winservice_query_configr.  r	  r   )r/  r'  rD  rE  rF  s        r4   r)  zWindowsService._query_config   s    ""$$ 	 	,TZ88 8L'8Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 &|44!'**"8,,$Z00	
 
 
 	
s   A  AAc                     |                                  5  t          j        | j                  \  }}d d d            n# 1 swxY w Y   |dk    rd }t	          ||          S )Nr   )r   r   )rG  r   winservice_query_statusr.  r	  )r/  r   r   s      r4   _query_statuszWindowsService._query_status-  s    ""$$ 	C 	C6tzBBKFC	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C!88C6s++++s   >AAc              #     K   	 dV  dS # t           $ rv}t          |          r!d| j        z  }t          d| j        |          |j        t
          j        t
          j        fv r!d| j        z  }t          d| j        |           d}~ww xY w)z{Ctx manager which translates bare OSError and WindowsError
        exceptions into NoSuchProcess and AccessDenied.
        Nz2service %r is not querable (not enough privileges)r   r   msgzservice %r does not exist)	OSErroris_permission_errr.  r   winerrorr   ERROR_INVALID_NAMEERROR_SERVICE_DOES_NOT_EXISTr	   )r/  errrN  s      r4   rG  zWindowsService._wrap_exceptions4  s      
	EEEEE 	 	 	 %% Hj!  #t$*#FFFF'1"   2DJ>#4:3GGGG	s   
 
B
A1BB
c                     | j         S )zThe service name. This string is how a service is referenced
        and can be passed to win_service_get() to get a new
        WindowsService instance.
        )r.  r:  s    r4   r   zWindowsService.nameM  s    
 zr3   c                     | j         S )z_The service display name. The value is cached when this class
        is instantiated.
        )r*  r:  s    r4   r'  zWindowsService.display_nameT  s     !!r3   c                 6    |                                  d         S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        rD  r)  r:  s    r4   rD  zWindowsService.binpathZ  s     !!##I..r3   c                 6    |                                  d         S )z,The name of the user that owns this service.rE  rX  r:  s    r4   rE  zWindowsService.username`  s    !!##J//r3   c                 6    |                                  d         S )zRA string which can either be "automatic", "manual" or
        "disabled".
        rF  rX  r:  s    r4   rF  zWindowsService.start_typed  s     !!##L11r3   c                 6    |                                  d         S )zzThe process PID, if any, else None. This can be passed
        to Process class to control the service's process.
        r   rK  r:  s    r4   r   zWindowsService.pidl  s     !!##E**r3   c                 6    |                                  d         S )zService status as a string.r   r\  r:  s    r4   r   zWindowsService.statusr  s    !!##H--r3   c                 h    t          t          j        |                                                     S )zService long description.)r   r   winservice_query_descrr   r:  s    r4   descriptionzWindowsService.descriptionv  s#    T8EEFFFr3   c                    |                                  }|                    |                                            |                                 |d<   |                                 |d<   |                                 |d<   |S )zUUtility method retrieving all the information above as a
        dictionary.
        r   r'  r`  )r)  updaterK  r   r'  r`  )r/  ds     r4   as_dictzWindowsService.as_dict|  su       	##%%&&&IIKK&	 --//.++---r3   N)r/   r0   r1   __doc__r0  r5  r;  r@  rB  r)  rK  
contextlibcontextmanagerrG  r   r'  rD  rE  rF  r   r   r`  rd  r2   r3   r4   r&  r&    s,       22* * *; ; ;9 9 9) ) )! ! !
 
 
, , ,   0  " " "/ / /0 0 02 2 2+ + +. . .G G G	 	 	 	 	r3   r&  c                     t          | t                    s
J |             | j        t          j        t          j        fv rdS t          | dd          t          j        t          j        fv S )z*Return True if this is a permission error.TrQ  r+   )	r   rO  errnoEPERMEACCESgetattrr   ERROR_ACCESS_DENIEDERROR_PRIVILEGE_NOT_HELD)excs    r4   rP  rP    sg    c7##((S(((
yU[%,///t 3
B'' %,  r3   c                     t          | t                    s
J |             t          |           rt          ||          S | j        t          j        k    rt          ||          S | )z3Convert OSError into NoSuchProcess or AccessDenied.r   r   )r   rO  rP  r   ri  ESRCHr	   )ro  r   r   s      r4   convert_oserrorrs    sj    c7##((S((( 0$////
yEK40000
Ir3   c                 F     t          j                    fd            }|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                 z    	  | g|R i |S # t           $ r!}t          || j        | j                  d }~ww xY w)Nrq  )rO  rs  r   r.  )r/  argskwargsrT  funs       r4   wrapperz wrap_exceptions.<locals>.wrapper  se    	F3t-d---f--- 	F 	F 	F!#48$*EEEE	Fs    
:5:	functoolswrapsrx  ry  s   ` r4   wrap_exceptionsr~    s?     _SF F F F F Nr3   c                 F     t          j                    fd            }|S )zWorkaround for https://github.com/giampaolo/psutil/issues/875.
    See: https://stackoverflow.com/questions/4457745#4457745.
    c                 T   d}d}t          |          D ]a}	  | g|R i |c S # t          $ rD}|}|j        t          k    r,t	          j        |           t          |dz  d          }Y d }~Y d }~ww xY wd                    ||          }t          | j	        | j
        |          )N-C6?!   r5   {Gz?zH{} retried {} times, converted to AccessDenied as it's stillreturning {}rM  )r   WindowsErrorrQ  ERROR_PARTIAL_COPYtimesleepminformatr   r   r.  )	r/  rv  rw  delaytimes_rT  rN  rx  s	           r4   ry  z)retry_error_partial_copy.<locals>.wrapper  s    u 		 		As41$111&11111   <#555Ju%%%	400EHHHH!6#uc22 	 txdjcBBBBs   &
A49A/.A//A4rz  r}  s   ` r4   retry_error_partial_copyr    s?    
 _SC C C C C& Nr3   c                      e Zd ZdZg dZd Zd Zd Zed             Z	d Z
eed                         Zeed	                         Zeed
                         Zd Zd Zed             Zed             Z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ed             Zeed                         Zed             Z ed,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+dS )-Processz1Wrapper class around underlying C implementation.)_cacher.  _ppidr   c                 0    || _         d | _        d | _        d S r   )r   r.  r  )r/  r   s     r4   r0  zProcess.__init__  s    



r3   c                 n    | j                             |            | j                            |            d S r   )
_proc_infocache_activateexer:  s    r4   oneshot_enterzProcess.oneshot_enter  s4    &&t,,,%%%%%r3   c                 n    | j                             |            | j                            |            d S r   )r  cache_deactivater  r:  s    r4   oneshot_exitzProcess.oneshot_exit
  s4    ((...!!$'''''r3   c                     t          j        | j                  }t          |          t          t                    k    sJ |S )zOReturn multiple information about this process as a
        raw tuple.
        )r   	proc_infor   r   	pinfo_mapr/  r   s     r4   r  zProcess._proc_info  s7    
 nTX&&3xx3y>>))))
r3   c                     | j         dk    rdS | j         dk    rdS t          j                            |                                           S )zbReturn process name, which on Windows is always the final
        part of the executable.
        r   zSystem Idle Processr>   System)r   r   ru   basenamer  r:  s    r4   r   zProcess.name  sC     8q==((8q==8w

+++r3   c                    t           re	 t          j        | j                  }nc# t          $ r=}|j        dk    r,t          d|z             t          | j        | j                   d }~ww xY wt          j        | j                  }t          st          |          }|                    d          rt          |          S |S )N   z%r translated into AccessDeniedr   )PYPYr   proc_exer   r  ri  r   r   r.  r   r   
startswithr   )r/  r  rT  s      r4   r  zProcess.exe#  s      	*mDH--    9??;cABBB&tx<<< -))C 	%$$C>>$ 	)#C(((
s   # 
A*8A%%A*c                 V   t           j        t           j        k    r`	 t          j        | j        d          }n^# t
          $ r6}t          |          rt          j        | j        d          }n Y d }~n#d }~ww xY wt          j        | j        d          }t          r|S d |D             S )NT)use_pebFc                 ,    g | ]}t          |          S r2   r  )r   r   s     r4   r   z#Process.cmdline.<locals>.<listcomp>J  s     222M!$$222r3   )r   WINVERWINDOWS_8_1proc_cmdliner   rO  rP  r   )r/  r   rT  s      r4   cmdlinezProcess.cmdline8  s     ;$***'$???   $S)) +DHeDDDCC CCCC #DHd;;;C 	3J22c2222s   8 
A8,A33A8c                     t          j        | j                  }|r3t          s,t	          |t
                    sJ t          |                      t          t          |                    S r   )	r   proc_environr   r   r   r   r   r   r   )r/  ustrs     r4   environzProcess.environL  s_      ** 	9 	9dG,,88d4jj888"=#6#6777r3   c                     	 t                      | j                 S # t          $ r t          | j        | j                  w xY wr   )ppid_mapr   KeyErrorr	   r.  r:  s    r4   ppidzProcess.ppidT  sG    	6::dh'' 	6 	6 	6$*555	6s	    %A c                 6   	 t          j        | j                  S # t          $ r}t	          |          rt          d           |                                 }|t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d	                  |t          d
                  |t          d                  f
cY d }~S  d }~ww xY w)Nz*attempting memory_info() fallback (slower)rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   )r   proc_memory_infor   rO  rP  r   r  r  )r/  rT  infos      r4   _get_raw_meminfozProcess._get_raw_meminfoZ  s   	(222 	 	 	 %%  BCCC((#456;/06*+#456<01#89:#345:./?34=12       %	s!    
DC'DDDDc                 f    |                                  }|d         }|d         }t          ||f|z    S )Nr5   rC   )r  rl   )r/  trm   rn   s       r4   memory_infozProcess.memory_infoq  s:    
 !!##ddc3Z!^$$r3   c                     |                                  }t          j        | j                  }|t	                      z  }t          ||fz    S r   )r  r   proc_memory_ussr   r   rr   )r/  	basic_memrs   s      r4   memory_full_infozProcess.memory_full_info{  sE    $$&&	"48,,{}}cV+,,r3   c              #   $  K   	 t          j        | j                  }|D ]C\  }}}}t          |          }t          st          |          }t          |          }||||fV  Dd S # t          $ r }t          || j        | j	                  d }~ww xY wr   )
r   proc_memory_mapsr   r   r   r   hexrO  rs  r.  )r/  rawaddrpermru   rm   rT  s          r4   memory_mapszProcess.memory_maps  s      	.'11C *- . .%dD#'-- /(..D4yyT4-----. .  	= 	= 	= "#tx<<<	=s   A% %
B/B

Bc                 4    t          j        | j                  S r   )r   	proc_killr   r:  s    r4   killzProcess.kill  s    ~dh'''r3   c                 >   |t           j        k    rt          j        | j                   d S |t          t           dt                                t          t           dt                                fv rt          j        | j        |           d S d}t          |          )NCTRL_C_EVENTCTRL_BREAK_EVENTzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
signalSIGTERMr   r  r   rl  objectr   r  r   )r/  sigrN  s      r4   send_signalzProcess.send_signal  s    &.  N48$$$$$FNFHH55F.99
 
 
 GDHc"""""+  S//!r3   Nc                 8   |t           j        }nt          |dz            }t          t          dt          j                  }| |            |z   nd }	 t          j        | j        |          }n@# t           j        $ r t          || j        | j                  t           j	        $ r d }Y nw xY wd}	 t          | j                  s|S |r* |            |k    rt          || j        | j                  t	          j        |           t          |dz  d          }j)Ni  	monotonicr  Trq  r5   r  )r   INFINITEr   rl  r  	proc_waitr   r
   r.  TimeoutAbandoned
pid_existsr  r  )r/  timeoutcext_timeouttimerstop_at	exit_coder  s          r4   waitzProcess.wait  sA   ?=LL w~..Lk4955'.':%%''G##	 tx>>II" 	@ 	@ 	@ $(DJ???$ 		 		 		 III		 	)dh'' !   M5577g--$W$(LLLLJu	4((E	)s   A/ /:B,+B,c                     | j         dv rdS t          j        | j                   \  }}t          |          dz   t          |          z   S )Nr   r>   zNT AUTHORITY\SYSTEMr   )r   r   proc_usernamer   )r/  domainra   s      r4   rE  zProcess.username  sK    8v)))$(33V$$t+mD.A.AAAr3   Fc                     	 t          j        | j                  \  }}}|S # t          $ rQ}t	          |          r<|r t          d           |                                 t          d                  cY d }~S  d }~ww xY w)Nz*attempting create_time() fallback (slower)r=   )r   
proc_timesr   rO  rP  r   r  r  )r/  	fast_only_user_systemcreatedrT  s         r4   r=   zProcess.create_time  s    		&*odh&?&?#E7GN 	 	 	 %% C BCCC((=)ABBBBBBB	s!   ! 
A<AA70A<6A77A<c                 L    |                                  t          d                  S )Nr?   )r  r  r:  s    r4   r?   zProcess.num_threads  s      =!9::r3   c                     t          j        | j                  }g }|D ]1\  }}}t          j        |||          }|                    |           2|S r   )r   proc_threadsr   r   pthreadr   )r/  r   r!  	thread_idutimestimentuples          r4   threadszProcess.threads  s\    #DH--'. 	# 	##Iue_Yu==FNN6""""r3   c                 N   	 t          j        | j                  \  }}}np# t          $ rc}t	          |          s t          d           |                                 }|t          d                  }|t          d                  }Y d }~nd }~ww xY wt          j	        ||dd          S )Nz(attempting cpu_times() fallback (slower)r;   r<   r   )
r   r  r   rO  rP  r   r  r  r   	pcputimes)r/  ra   rb   _createdrT  r  s         r4   r   zProcess.cpu_times  s    	4%)_TX%>%>"D&(( 	4 	4 	4$S)) <===??$$D	+./D)M23FFFFFF	4  vsC888s     
BABBc                 :    t          j        | j        d           d S )NTr   proc_suspend_or_resumer   r:  s    r4   suspendzProcess.suspend  s    #DHd33333r3   c                 :    t          j        | j        d           d S )NFr  r:  s    r4   resumezProcess.resume  s    #DHe44444r3   c                     | j         dv rt          | j         | j                  t          j        | j                   }t          t          j                            |                    S )Nr  )	r   r   r.  r   proc_cwdr   r   ru   normpath)r/  ru   s     r4   cwdzProcess.cwd
  sV     8vtx444 }TX&&RW--d33444r3   c                 J   | j         dv rg S t                      }t          j        | j                   }|D ]`}t	          |          }t          |          r@t          st          |          }t          j	        |d          }|
                    |           at          |          S )Nr  r+   )r   r   r   proc_open_filesr   r   r   r   r   	popenfiler   r   )r/  r   raw_file_names_filer  s        r4   
open_fileszProcess.open_files  s    8vIee
 -dh77# 	  	 E$U++EU##   1)%00E *5"55Cyyr3   inetc                 .    t          || j                  S )N)r   )r   r   )r/  r   s     r4   r   zProcess.net_connections'  s    t$(3333r3   c                 d    t          j        | j                  }t          t	          |          }|S r   )r   proc_priority_getr   enumr.   r/  values     r4   nice_getzProcess.nice_get+  s*    &tx00UOOEr3   c                 6    t          j        | j        |          S r   )r   proc_priority_setr   r
  s     r4   nice_setzProcess.nice_set2  s    %dh666r3   c                 d    t          j        | j                  }t          t	          |          }|S r   )r   proc_io_priority_getr   r	  r8   r  s     r4   
ionice_getzProcess.ionice_get6  s*    '11S//C
r3   c                     |rd}t          |          |t          t          t          t          fvrt          d|z            t          j        | j        |           d S )Nz&value argument not accepted on Windowsz%s is not a valid priority)		TypeErrorr#   r$   r%   r&   r   r   proc_io_priority_setr   )r/  ioclassr  rN  s       r4   
ionice_setzProcess.ionice_set=  sj     	!:CC.. 	
 
 
 9GCDDD!$(G44444r3   c           	         	 t          j        | j                  }n# t          $ r}t	          |          s t          d           |                                 }|t          d                  |t          d                  |t          d                  |t          d                  |t          d                  |t          d                  f}Y d }~nd }~ww xY wt          | S )Nz*attempting io_counters() fallback (slower)rA   rB   rD   rF   rH   rJ   )	r   proc_io_countersr   rO  rP  r   r  r  rx   )r/  r   rT  r  s       r4   io_counterszProcess.io_countersK  s    	'11CC 	 	 	$S)) >?????$$DY{+,Y{+,Y{+,Y{+,Y012Y012CCCCCC	 Cys    
CB!CCc                 h    t          j        | j                  }|rt          j        S t          j        S r   )r   proc_is_suspendedr   r   STATUS_STOPPEDSTATUS_RUNNING)r/  	suspendeds     r4   r   zProcess.status^  s.    *4844	 	*))))r3   c                 P    d }t          j        | j                  } ||          S )Nc                 :      fdt          d          D             S )Nc                 $    g | ]}d |z  z  
|S )r   r2   )r   ir   s     r4   r   zBProcess.cpu_affinity_get.<locals>.from_bitmask.<locals>.<listcomp>i  s&    999!Q!VqL9A999r3   @   r   )r   s   `r4   from_bitmaskz.Process.cpu_affinity_get.<locals>.from_bitmaskh  s#    9999uRyy9999r3   )r   proc_cpu_affinity_getr   )r/  r%  bitmasks      r4   cpu_affinity_getzProcess.cpu_affinity_getf  s5    	: 	: 	: ,TX66|G$$$r3   c                 R   d }t          t          t          t                                                    }|D ]F}||vr@t	          |t
          t          f          st          d|z            t          d|z            G ||          }t          j
        | j        |           d S )Nc                 L    | st          d| z            d}| D ]
}|d|z  z  }|S )Nzinvalid argument %rr   r5   )r   )lsoutbs      r4   
to_bitmaskz,Process.cpu_affinity_set.<locals>.to_bitmaskp  sF     = !6!;<<<C  q!tJr3   z&invalid CPU %r; an integer is requiredzinvalid CPU %r)r   r   r   r   r   r   r   r  r   r   proc_cpu_affinity_setr   )r/  r  r.  allcpuscpur'  s         r4   cpu_affinity_setzProcess.cpu_affinity_setn  s    	 	 	 uS112233 	= 	=C'!!!#T{33 =#@3F   %%5%;<<< " *U##"48W55555r3   c                     	 t          j        | j                  S # t          $ rN}t	          |          r9t          d           |                                 t          d                  cY d }~S  d }~ww xY w)Nz*attempting num_handles() fallback (slower)r9   )r   proc_num_handlesr   rO  rP  r   r  r  )r/  rT  s     r4   r9   zProcess.num_handles  s    	(222 	 	 	 %% CBCCC((=)ABBBBBBB		s!    
A3AA.'A3-A..A3c                 v    |                                  t          d                  }t          j        |d          S )Nr:   r   )r  r  r   pctxsw)r/  r:   s     r4   num_ctx_switcheszProcess.num_ctx_switches  s-    ((>)BC~lA...r3   r   )F)r  ),r/   r0   r1   re  	__slots__r0  r  r  r   r  r   r~  r  r  r  r  r  r  r  r  r  r  r  r  rE  r=   r?   r  r   r  r  r  r  r   r  r  r  r  r  r   r(  r2  r9   r7  r2   r3   r4   r  r    s       ;;333I  & & &( ( (   
, 
, 
,    _& 3 3  _3$ 8 8  _86 6 6  . % % _% - - _-. . . ( ( _( " " _"  () () () _()T B B _B    _ ; ; _;   _ 9 9 _9 4 4 _4 5 5 _5 5 5  _5   _$ 4 4 4 _4   _ 7 7 _7   _ 5 5 _5   _$ * * _* % % _% 6 6 _62   _ / / _/ / /r3   r  r2   )r+   )NN)re  rf  ri  r{  r   r  sysr  collectionsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   _compatr   r   r   r   r   r   r   r   r   r   r   r   r   ImportErrorrT  r   lowerr  getwindowsversionrN  RuntimeErrorr	  __extra__all__r'   r  builtin_module_namesr  r(   IntEnumr,   MIB_TCP_STATE_ESTABCONN_ESTABLISHEDMIB_TCP_STATE_SYN_SENTCONN_SYN_SENTMIB_TCP_STATE_SYN_RCVDCONN_SYN_RECVMIB_TCP_STATE_FIN_WAIT1CONN_FIN_WAIT1MIB_TCP_STATE_FIN_WAIT2CONN_FIN_WAIT2MIB_TCP_STATE_TIME_WAITCONN_TIME_WAITMIB_TCP_STATE_CLOSED
CONN_CLOSEMIB_TCP_STATE_CLOSE_WAITCONN_CLOSE_WAITMIB_TCP_STATE_LAST_ACKCONN_LAST_ACKMIB_TCP_STATE_LISTENCONN_LISTENMIB_TCP_STATE_CLOSINGCONN_CLOSINGMIB_TCP_STATE_DELETE_TCBPSUTIL_CONN_NONE	CONN_NONEr   r.   globalsrb  __members__r#   r$   r%   r&   r8   r	  r  r`   rf   rl   _fieldsrr   rt   r   rv   rx   r   r   r   r   r   disk_io_countersr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r!   r"   r&  pidsr  r  rP  rs  r~  r  r  r2   r3   r4   <module>ra     s  
 ' &          				  



  " " " " " "             " " " " " " ! ! ! ! ! ! " " " " " " # # # # # #       # # # # # #       " " " " " "       + + + + + + ( ( ( ( ( ( " " " " " "                               8 8 8 8 8 8 8 8 8 8 8 8 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 4 4 4 4 4 4)))))))   C##$566!C!##A&** DKK))l3   KKKKD

 
 
$  S--<GG DL9b/BBM#G 	g6!6!6 '"8 '"8 '"8w1!7#:!6w2 4!?7,  : : : : :4< : : : GIIX)***<NJMKK    T\    GIIZ+,,,D    a 	
   a a a a B B B b 
  B!" r#$ %& 2'( R)* "+, -	B J{EEEG G	 	
7MMMNNz
 5 5 56 6 :j$,":;;
?VUO<<J-*?!@!@@B B	 j 7 7 7 8 8 3	0 	0 	0
5 
5 
5 	  		4 	4 	4; ; ;> ( 	: 	: 	:4 4 4	 	 	  $ $ $
" " "
  > > >  9 9 9(   8  A A A  > > >2   	 	 	"O O O  @ @ @ @ @ @ @ @^ y_
=     
 
 
  8\/ \/ \/ \/ \/ \/ \/ \/ \/ \/s   <C D.A!D))D.