
    /hm                     `   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 no# e $ rgZ! e"e!          #                                $                    d          r1 ej%                    d         dk     rdZ&e&dz  Z&e&dz  Z& e'e&          e! dZ![!ww xY wg dZ(dZ)d Z*d!ej+        v Z, ej-        d"d#d$i          Z.e.j/        Z/ej0        ej1        ej2        ej3        ej4        ej5        e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)ejG        ejH        iZI G d% d&ej-                  ZJ eK            L                    eJjM                    G d' d(ej-                  ZN eK            L                    eNjM                    eOdi d)dd*dd+d,d-d.d/d0d1d2d3dd4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQZP e	dRg dS          ZQ e	dTg dU          ZR e	dVg dW          ZS e	dXeSjT        dYz             ZU e	dZd[d\g          ZV e	d]d^d_W                    eVjT                  z             ZX e	d`g da          ZY ejZ        dbc          dd             Z[ede             Z\df Z]dg Z^ej_        Z_dh Z`di Zadj Zbdk Zcdl Zddm Zedn Zfdo Zgdpahdq ZiddrZjds Zkdt Zldu Zmdv Zndaodw Zpdx Zqdy Zrdz Zs G d{ d|          Zteju        Zuejv        Zvejw        Zwd} Zxdd~Zyd Zzd Z{ G d d          Z|dS )z Windows platform implementation.    N)
namedtuple   )_common)ENCODING)AccessDenied)NoSuchProcess)TimeoutExpired)	conn_tmap)conn_to_ntuple)debug)isfile_strict)memoize)memoize_when_activated)parse_environ_block)usage_percent)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        D/var/www/html/venv/lib/python3.11/site-packages/psutil/_pswindows.pyr'   r'   e   s4        "="=--15r,   r'   c                       e Zd ZdZdZdZdZdS )
IOPriorityr   r         N)r(   r)   r*   r   r   r   r   r+   r,   r-   r/   r/   q   s"        NJMKKKr,   r/   num_handlesctx_switches	user_timer0   kernel_timer1   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vmsrE   rG   rI   rK   rM   peak_nonpaged_poolnonpaged_poolrS   rU   privatepfullmem)usspmmap_groupedpathrf   	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".
    \Nr1   )joinsplitcextQueryDosDevicelenosrn   )srawdrivedriveletter	remainders       r-   convert_dos_pathr      sb     yyrr*++H%h//K#h--//"I7<<Y///r,   c                  (    t          j                    S N)r}   getpagesizer+   r,   r-   r   r      s    r,   c                      t          j                    } | \  }}}}|}|}|}||z
  }t          ||z
  |d          }	t          |||	||          S )z&System virtual memory as a namedtuple.r   round_)r}   virtual_memr   r_   )
memtotphys	availphys_totsys	_availsysr`   availrd   rc   rb   s
             r-   virtual_memoryr      sd    



C-0*GYEED5=DUU]U1===Gwd333r,   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   r0   g{Gz?        r   )r}   r   swap_percentintroundr   sswap)r   
total_phystotal_systemr`   percentswaprc   rd   rb   s           r-   swap_memoryr      s    



CQJq6L :%E
 qyy'))4+%-..4<DK##G=dGQ:::r,   c                     t          | t                    r|                     t          d          } t	          j        |           \  }}||z
  }t          ||d          }t          j        ||||          S )z'Return disk usage associated with path.strict)errorsr   r   )	
isinstancebytesdecoder   r}   
disk_usager   r   
sdiskusage)rn   r`   rd   rc   rb   s        r-   r   r      sr    $ 6 {{8H{55/$''KE44<DD%222GeT4999r,   c                 B    t          j        |           }d |D             S )zReturn disk partitions.c                 *    g | ]}t          j        | S r+   )r   	sdiskpart).0xs     r-   
<listcomp>z#disk_partitions.<locals>.<listcomp>  s     333aGq!333r,   )r}   disk_partitions)allrawlists     r-   r   r   	  s&    "3''G3373333r,   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 r+   )sum)r   ns     r-   r   zcpu_times.<locals>.<listcomp>  s    KKK1AKKKr,   )r}   	cpu_timesrY   zipper_cpu_timesr]   r^   )rZ   r[   r\   percpu_summeds       r-   r   r     sb    ))D&$ KKT5G5I5I0JKKKLMfdM3]5F  r,   c                      g } t          j                    D ]0\  }}}}}t          |||||          }|                     |           1| S )z6Return system per-CPU times as a list of named tuples.)r}   r   rY   append)retrZ   r[   r\   r]   r^   items          r-   r   r      sY    
C.2.@.B.B  *fdIsvtY<<

4Jr,   c                  (    t          j                    S )z0Return the number of logical CPUs in the system.)r}   cpu_count_logicalr+   r,   r-   r   r   )  s    !###r,   c                  (    t          j                    S )z-Return the number of CPU cores in the system.)r}   cpu_count_coresr+   r,   r-   r   r   .  s    !!!r,   c                  d    t          j                    \  } }}}d}t          j        | |||          S )zReturn CPU statistics.r   )r}   	cpu_statsr   	scpustats)r3   
interrupts_dpcssyscallssoft_interruptss        r-   r   r   3  s;    040@0@-L*eXOj/8  r,   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      r-   r   r   <  s<     JD$DU4[[$d<<==r,   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              3   6   K   | ]}t          |d           V  dS )r0   N)r   )r   loads     r-   	<genexpr>zgetloadavg.<locals>.<genexpr>T  s*      66DtQ666666r,   )_loadavg_inititializedr}   init_loadavg_counter
getloadavgtuple)	raw_loadss    r-   r   r   H  sM     " &!###!% !!I66I666666r,   c                    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).
    r%   N)pid)r
   r}   net_connectionssetr   TCP_STATUSESaddlist)kind_pidfamiliestypesr   r   r   fdfamtypeladdrraddrstatusr   nts                  r-   r   r   \  s      oOHe"4599G
%%C  370CueVSrzzt	
 	
 	
 	99r,   c                      i } t          j                    }|                                D ]P\  }}|\  }}}}t          t          d          rt	          j        |          }t	          j        ||||d          | |<   Q| S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex )r}   net_if_statsitemshasattrr   r   	snicstats)r   rawdictnamer   isupduplexspeedmtus           r-   r   r   s  s    
C!!G}} D De#( feS7K(( 	/&v..F%dFE3CCD		Jr,   c                  (    t          j                    S )zsReturn network I/O statistics for every network interface
    installed on the system as a dict of raw tuples.
    )r}   net_io_countersr+   r,   r-   r   r     s     !!!r,   c                  (    t          j                    S )z,Return the addresses associated to each NIC.)r}   net_if_addrsr+   r,   r-   r   r     s    r,   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      r>   Nr%   )r}   sensors_batteryboolr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)acline_statusflagsrb   secsleftpower_plugged
no_batterychargings          r-   r   r     s    
 /3.B.D.D+M5'8!Q&Meck""JEAIH t . ./	R-GX}===r,   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_btime)r   s    r-   r  r    sA       
!
!C
3""
r,   c                      g } t          j                    }|D ]5}|\  }}}t          j        |d||d          }|                     |           6| S )z:Return currently connected users as a list of namedtuples.N)r}   usersr   suserr   )retlistr   r   rZ   hostnametstampr   s          r-   r  r    s^    GjllG  !%h]4x>>rNr,   c               #   `   K   t          j                    D ]\  } }t          | |          V  dS )z*Yields a list of WindowsService instances.N)r}   winservice_enumerateWindowsService)r   display_names     r-   r   r     sF      "799 1 1lT<0000001 1r,   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     r-   r   r     s/    T4((G#1133NCGNr,   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      r-   __init__zWindowsService.__init__  s    
)r,   c                 H    d| j         d| j        d}| j        j         | S )Nz(name=z, display_name=))r  r  	__class__r(   )r  detailss     r-   __str__zWindowsService.__str__  s5    O4:OO8JOOO.)47444r,   c                 R    d|                                   dt          |            dS )N<z at >)r!  idr  s    r-   __repr__zWindowsService.__repr__  s)    24<<>>22r$xx2222r,   c                 Z    t          |t                    st          S | j        |j        k    S r   )r   r  NotImplementedr  r  others     r-   __eq__zWindowsService.__eq__  s+     %00 	"!!zU[((r,   c                     | |k     S r   r+   r*  s     r-   __ne__zWindowsService.__ne__  s    5=  r,   c                     |                                  5  t          j        | j                  \  }}}}d d d            n# 1 swxY w Y   t	          ||||          S )N)r  binpathusername
start_type)_wrap_exceptionsr}   winservice_query_configr  dict)r  r  r0  r1  r2  s        r-   r  zWindowsService._query_config  s    ""$$ 	 	,TZ88 8L'8Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 %!	
 
 
 	
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   )r3  r}   winservice_query_statusr  r5  )r  r   r   s      r-   _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           $ rm}| j        }t          |          rd|d}t          d||          ||j        t
          j        t
          j        hv rd|d}t          d||          | d}~ww xY w)z{Ctx manager which translates bare OSError and WindowsError
        exceptions into NoSuchProcess and AccessDenied.
        Nzservice z( is not querable (not enough privileges)r   r   msgz does not exist)	OSErrorr  is_permission_errr   winerrorr}   ERROR_INVALID_NAMEERROR_SERVICE_DOES_NOT_EXISTr   )r  errr   r;  s       r-   r3  zWindowsService._wrap_exceptions  s      
	EEEEE 	 	 	:D %% OtOOO  #t$C@@@cI'1"   9888#4SAAAsJ	s   
 
BA(A<<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    r-   r   zWindowsService.name  s    
 zr,   c                     | j         S )z_The service display name. The value is cached when this class
        is instantiated.
        )r  r&  s    r-   r  zWindowsService.display_name#  s     !!r,   c                 6    |                                  d         S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        r0  r  r&  s    r-   r0  zWindowsService.binpath)  s     !!##I..r,   c                 6    |                                  d         S )z,The name of the user that owns this service.r1  rE  r&  s    r-   r1  zWindowsService.username/  s    !!##J//r,   c                 6    |                                  d         S )zRA string which can either be "automatic", "manual" or
        "disabled".
        r2  rE  r&  s    r-   r2  zWindowsService.start_type3  s     !!##L11r,   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   r8  r&  s    r-   r   zWindowsService.pid;  s     !!##E**r,   c                 6    |                                  d         S )zService status as a string.r   rI  r&  s    r-   r   zWindowsService.statusA  s    !!##H--r,   c                 N    t          j        |                                           S )zService long description.)r}   winservice_query_descrr   r&  s    r-   descriptionzWindowsService.descriptionE  s    *499;;777r,   c                    |                                  }|                    |                                            |                                 |d<   |                                 |d<   |                                 |d<   |S )zUUtility method retrieving all the information above as a
        dictionary.
        r   r  rM  )r  updater8  r   r  rM  )r  ds     r-   as_dictzWindowsService.as_dictK  su       	##%%&&&IIKK&	 --//.++---r,   N)r(   r)   r*   __doc__r  r!  r'  r,  r.  r  r8  
contextlibcontextmanagerr3  r   r  r0  r1  r2  r   r   rM  rQ  r+   r,   r-   r  r    s)       22* * *5 5 53 3 3) ) )! ! !
 
 
, , ,   0  " " "/ / /0 0 02 2 2+ + +. . .8 8 8	 	 	 	 	r,   r  c                     t          | t                    s
J |             t          | t                    p| j        t          j        t          j        hv S )z*Return True if this is a permission error.)r   r<  PermissionErrorr>  r}   ERROR_ACCESS_DENIEDERROR_PRIVILEGE_NOT_HELD)excs    r-   r=  r=    sR    c7##((S(((c?++ s| %@ 0 r,   c                     t          | t                    s
J |             t          |           rt          ||          S t          | t                    rt          ||          S | )z3Convert OSError into NoSuchProcess or AccessDenied.r   r   )r   r<  r=  r   ProcessLookupErrorr   )rY  r   r   s      r-   convert_oserrorr]    sn    c7##((S((( 0$////#)** 140000
Ir,   c                 F     t          j                    fd            }|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                 |    	  | g|R i |S # t           $ r"}t          || j        | j                  |d }~ww xY w)Nr[  )r<  r]  r   r  )r  argskwargsrA  funs       r-   wrapperz wrap_exceptions.<locals>.wrapper  sg    	O3t-d---f--- 	O 	O 	O!#48$*EEE3N	Os    
;6;	functoolswrapsrb  rc  s   ` r-   wrap_exceptionsrh    s?     _SO O O O O Nr,   c                 F     t          j                    fd            }|S )zWorkaround for https://github.com/giampaolo/psutil/issues/875.
    See: https://stackoverflow.com/questions/4457745#4457745.
    c                 :   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| d| }t          | j        | j	        |          )N-C6?!   r0   {Gz?z	 retried z: times, converted to AccessDenied as it's still returning r:  )
ranger<  r>  ERROR_PARTIAL_COPYtimesleepminr   r   r  )	r  r`  ra  delaytimes_rA  r;  rb  s	           r-   rc  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  % %U % %"% % 	 txdjcBBBBs   &
A49A/.A//A4rd  rg  s   ` r-   retry_error_partial_copyrv    s?    
 _SC C C C C& Nr,   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  rz  )r  r   s     r-   r  zProcess.__init__  s    



r,   c                 n    | j                             |            | j                            |            d S r   )
_proc_infocache_activateexer&  s    r-   oneshot_enterzProcess.oneshot_enter  s4    &&t,,,%%%%%r,   c                 n    | j                             |            | j                            |            d S r   )r}  cache_deactivater  r&  s    r-   oneshot_exitzProcess.oneshot_exit  s4    ((...!!$'''''r,   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     r-   r}  zProcess._proc_info  s7    
 nTX&&3xx3y>>))))
r,   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 Processr7   System)r   r   rn   basenamer  r&  s    r-   r   zProcess.name  sC     8q==((8q==8w

+++r,   c                 Z   t           rf	 t          j        | j                  }nd# t          $ r>}|j        dk    r-t          |d           t          | j        | j                  | d }~ww xY wt          j        | j                  }|	                    d          rt          |          S |S )N   z translated into AccessDeniedrz   )PYPYr}   proc_exer   r<  errnor   r   r  
startswithr   )r  r  rA  s      r-   r  zProcess.exe  s      	*mDH--    9??SAAABBB&tx<<#E -))C>>$ 	)#C(((
s   # 
A+9A&&A+c                 (   t           j        t           j        k    r^	 t          j        | j        d          S # t
          $ r5}t          |          r t          j        | j        d          cY d }~S  d }~ww xY wt          j        | j        d          S )NT)use_pebF)r}   WINVERWINDOWS_8_1proc_cmdliner   r<  r=  r  rA  s     r-   cmdlinezProcess.cmdline   s     ;$***(4@@@@   $S)) ,TXuEEEEEEEEE	 $TXt<<<<s!   7 
A6)A1*A60A11A6c                 R    t          j        | j                  }t          |          S r   )r}   proc_environr   r   )r  r   s     r-   environzProcess.environ  s$     dh''"1%%%r,   c                     	 t                      | j                 S # t          $ r t          | j        | j                  d w xY wr   )ppid_mapr   KeyErrorr   r  r&  s    r-   ppidzProcess.ppid  sN    	@::dh'' 	@ 	@ 	@$*554?	@s	    &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)rE   rG   rI   rK   rM   rO   rQ   rS   rU   rW   )r}   proc_memory_infor   r<  r=  r   r}  r  )r  rA  infos      r-   _get_raw_meminfozProcess._get_raw_meminfo  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 )Nr0   r<   )r  re   )r  trf   rg   s       r-   memory_infozProcess.memory_info3  s:    
 !!##ddc3Z!^$$r,   c                     |                                  }t          j        | j                  }|t	                      z  }t          ||fz    S r   )r  r}   proc_memory_ussr   r   rk   )r  	basic_memrl   s      r-   memory_full_infozProcess.memory_full_info=  sE    $$&&	"48,,{}}cV+,,r,   c              #      K   	 t          j        | j                  }|D ]-\  }}}}t          |          }t	          |          }||||fV  .d S # t
          $ r!}t          || j        | j                  |d }~ww xY wr   )r}   proc_memory_mapsr   r   hexr<  r]  r  )r  rawaddrpermrn   rf   rA  s          r-   memory_mapszProcess.memory_mapsD  s      
	.'11C *- . .%dD#'--4yyT4-----. .  	F 	F 	F "#tx<<#E	Fs   A 
A:A55A:c                 4    t          j        | j                  S r   )r}   	proc_killr   r&  s    r-   killzProcess.killQ  s    ~dh'''r,   c                     |t           j        k    rt          j        | j                   d S |t           j        t           j        hv rt          j        | j        |           d S d}t          |          )NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
signalSIGTERMr}   r  r   CTRL_C_EVENTCTRL_BREAK_EVENTr   r  
ValueError)r  sigr;  s      r-   send_signalzProcess.send_signalU  so    &.  N48$$$$$V(&*ABBBGDHc"""""+  S//!r,   Nc                 B   |t           j        }nt          |dz            }t          t          dt          j                  }| |            |z   nd }	 t          j        | j        |          }nE# t           j        $ r!}t          || j        | j                  |d }~w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  	monotonicrk  Tr[  r0   rm  )r}   INFINITEr   getattrrp  	proc_waitr   r	   r  TimeoutAbandoned
pid_existsrq  rr  )r  timeoutcext_timeouttimerstop_at	exit_coderA  rs  s           r-   waitzProcess.waitb  sG   ?=LL w~..Lk4955'.':%%''G##	 tx>>II" 	I 	I 	I $(DJ??SH$ 		 		 		 III		 	)dh'' !   M5577g--$W$(LLLLJu	4((E	)s   A/ /B1>BB10B1c                 ^    | j         dv rdS t          j        | j                   \  }}| d| S )N   r   r7   zNT AUTHORITY\SYSTEMrz   )r   r}   proc_username)r  domainrZ   s      r-   r1  zProcess.username  s?    8v)))$(33""D"""r,   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)r6   )r}   
proc_timesr   r<  r=  r   r}  r  )r  	fast_only_user_systemcreatedrA  s         r-   r6   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 )Nr8   )r}  r  r&  s    r-   r8   zProcess.num_threads  s      =!9::r,   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          r-   threadszProcess.threads  s\    #DH--'. 	# 	##Iue_Yu==FNN6""""r,   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)r4   r5   r   )
r}   r  r   r<  r=  r   r}  r  r   	pcputimes)r  rZ   r[   _createdrA  r  s         r-   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    r-   suspendzProcess.suspend  s    #DHd33333r,   c                 :    t          j        | j        d           d S )NFr  r&  s    r-   resumezProcess.resume  s    #DHe44444r,   c                     | j         dv rt          | j         | j                  t          j        | j                   }t
          j                            |          S )Nr  )r   r   r  r}   proc_cwdr   rn   normpath)r  rn   s     r-   cwdzProcess.cwd  sN     8vtx444 }TX&&w%%%r,   c                    | j         dv rg S t                      }t          j        | j                   }|D ]J}t	          |          }t          |          r*t          j        |d          }|                    |           Kt          |          S )Nr  r%   )
r   r   r}   proc_open_filesr   r   r   	popenfiler   r   )r  r   raw_file_namesfiler  s        r-   
open_fileszProcess.open_files  s    8vIee
 -dh77" 	  	 D#D))DT""   *444Cyyr,   inetc                 .    t          || j                  S )N)r   )r   r   )r  r   s     r-   r   zProcess.net_connections  s    t$(3333r,   c                 V    t          j        | j                  }t          |          }|S r   )r}   proc_priority_getr   r'   r  values     r-   nice_getzProcess.nice_get  s$    &tx00r,   c                 6    t          j        | j        |          S r   )r}   proc_priority_setr   r  s     r-   nice_setzProcess.nice_set  s    %dh666r,   c                 V    t          j        | j                  }t          |          }|S r   )r}   proc_io_priority_getr   r/   r  s     r-   
ionice_getzProcess.ionice_get  s$    '11oo
r,   c                     |rd}t          |          |t          j        t          j        t          j        t          j        hvr| d}t          |          t          j        | j	        |           d S )Nz&value argument not accepted on Windowsz is not a valid priority)
	TypeErrorr/   r   r   r   r   r  r}   proc_io_priority_setr   )r  ioclassr  r;  s       r-   
ionice_setzProcess.ionice_set  s|     	!:CC.. %!$"	
 
 
 666CS//!!$(G44444r,   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)r:   r;   r=   r?   rA   rC   )	r}   proc_io_countersr   r<  r=  r   r}  r  rq   )r  r   rA  r  s       r-   io_counterszProcess.io_counters  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     r-   r   zProcess.status  s.    *4844	 	*))))r,   c                 P    d }t          j        | j                  } ||          S )Nc                 :      fdt          d          D             S )Nc                 $    g | ]}d |z  z  
|S )r   r+   )r   ir   s     r-   r   zBProcess.cpu_affinity_get.<locals>.from_bitmask.<locals>.<listcomp>"  s&    999!Q!VqL9A999r,   @   )rn  )r   s   `r-   from_bitmaskz.Process.cpu_affinity_get.<locals>.from_bitmask!  s#    9999uRyy9999r,   )r}   proc_cpu_affinity_getr   )r  r  bitmasks      r-   cpu_affinity_getzProcess.cpu_affinity_get  s5    	: 	: 	: ,TX66|G$$$r,   c                 N   d }t          t          t          t                                                    }|D ]D}||vr>t	          |t
                    sd|d}t          |          d|}t          |          E ||          }t          j	        | j
        |           d S )Nc                 P    | sd| }t          |          d}| D ]
}|d|z  z  }|S )Nzinvalid argument r   r0   )r  )lsr;  outbs       r-   
to_bitmaskz,Process.cpu_affinity_set.<locals>.to_bitmask)  sK     &0"00 oo%C  q!tJr,   zinvalid CPU z; an integer is required)r   rn  r   r   r   r   r  r  r}   proc_cpu_affinity_setr   )r  r  r  allcpuscpur;  r  s          r-   cpu_affinity_setzProcess.cpu_affinity_set'  s    	 	 	 uS112233 	& 	&C'!!!#s++ )HHHHC#C..(,S,, oo% " *U##"48W55555r,   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)r2   )r}   proc_num_handlesr   r<  r=  r   r}  r  r  s     r-   r2   zProcess.num_handlesA  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 )Nr3   r   )r}  r  r   pctxsw)r  r3   s     r-   num_ctx_switcheszProcess.num_ctx_switchesK  s-    ((>)BC~lA...r,   r   )F)r  ),r(   r)   r*   rR  	__slots__r  r  r  r   r}  r   rh  r  rv  r  r  r  r  r  r  r  r  r  r  r1  r6   r8   r  r   r  r  r  r  r   r  r  r  r   r  r   r  r  r2   r   r+   r,   r-   rx  rx    s       ;;333I  & & &( ( (   
, 
, 
,    _" = =  _= & &  _&@ @ @  . % % _% - - _-. . . ( ( _( 
" 
" _
" () () () _()T # # _#    _ ; ; _;   _ 9 9 _9 4 4 _4 5 5 _5 & &  _&   _  4 4 4 _4   _
 7 7 _7   _
 5 5 _5   _$ * * _* % % _% 6 6 _62   _ / / _/ / /r,   rx  r+   )r%   )NN)}rR  rS  enumre  r   r  sysrp  collectionsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   ImportErrorrA  strlowerr  getwindowsversionr;  RuntimeError__extra__all__r    ro  builtin_module_namesr  IntEnumr$   r!   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'   globalsrO  __members__r/   r5  r  rY   r_   re   _fieldsrk   rm   r{   ro   rq   	lru_cacher   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  r=  r]  rh  rv  rx  r+   r,   r-   <module>rL     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S((
 
 
$  S--_y"o>>

 	g6!6!6 '"8 '"8 '"8w1!7#:!6w2 4!?7,"6 6 6 6 6t| 6 6 6 		  % & & &        		  ' ( ( (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 S!!!	0 	0 "!	0 	  		4 	4 	4; ; ;> ( 	: 	: 	:4 4 4	 	 	  $ $ $
" " "
  > > >  7 7 7(   .	 	 	" " "  > > >2      1 1 1  } } } } } } } }X y_
=     
 
 
  8K/ K/ K/ K/ K/ K/ K/ K/ K/ K/s   B D$A"DD