
    _i*                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSK	Jr  SSK
Jr  SSK
Jr  SSK
Jr  SS	K
Jr  SS
K
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr   SSK	Jr   / SQr)Sr*S r+S!\RX                  ;   r-\R\                  " S"S#S$05      r/\/R`                  r0\ Rb                  \
Rd                  \ Rf                  \
Rh                  \ Rj                  \
Rl                  \ Rn                  \
Rp                  \ Rr                  \
Rt                  \ Rv                  \
Rx                  \ Rz                  \
R|                  \ R~                  \
R                  \ R                  \
R                  \ R                  \
R                  \ R                  \
R                  \ R                  \*\ R                  \
R                  0rJ " S% S&\R\                  5      rK\L" 5       R                  \KR                  5         " S' S(\R\                  5      rO\L" 5       R                  \OR                  5        \P" St0 S)S_S*S_S+S,_S-S._S/S0_S1S2_S3S_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_SLSM_SNSO_SPSQ_6rQ\R                  " SRSS9ST 5       rS\SU 5       rTSV rUSW rV\ R                  rW\ R                  rX\ R                  rYSX rZSY r[SZ r\S[ r]S\ r^S] r_S^ r`S_ raS`qb\R                  " 5       rdSa reSb rfSuSc jrgSd rhSe riSf rjSg rkSqlSh rmSi rnSj roSk rp " Sl Sm5      rq\ R                  rr\ R                  rs\ R                  rtSn ruSvSo jrvSp rwSq rx " Sr Ss5      ryg! \! a]  r"\#" \"5      RI                  5       RK                  S5      (       a-  \RL                  " 5       S   S:  a  Sr'\'S-  r'\'S-  r'\(" \'5      \"ee Sr"C"ff = f)wz Windows platform implementation.    N   )_common)_ntuples)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                   ,    \ rS rSr\r\r\r\r\r\	r	Sr
g)Prioritye    N)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   __static_attributes__r)       M/var/www/html/land-ocr/venv/lib/python3.13/site-packages/psutil/_pswindows.pyr'   r'   e   s&    "="=--15r/   r'   c                   $    \ rS rSrSrSrSrSrSrg)
IOPriorityq   r   r         r)   N)	r*   r+   r,   r-   r   r   r   r   r.   r)   r/   r0   r2   r2   q   s    NJMKr/   r2   num_handlesctx_switches	user_timer4   kernel_timer5   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   i   )maxsizec                    U R                  S5      (       a  U $ SR                  U R                  S5      SS 5      nUS;   aJ  SR                  U R                  S5      SS 5      nSSR                  U R                  S5      SS 5      -   nOAUR                  S5      (       a  U R                  S5      S   nO[        R                  " U5      nU [        U5      S n[        R                  R                  X#5      $ )	zConvert paths using native DOS format like:
    "\Device\HarddiskVolume1\Windows\systemew\file.txt" or
    "\??\C:\Windows\systemew\file.txt"
into:
    "C:\Windows\systemew\file.txt".
z\\\Nr5   >   \??\UNC\Device\Mupr=   z\??\r4   )
startswithjoinsplitcextQueryDosDevicelenospath)srawdrivedriveletter	remainders       r0   convert_dos_pathrn      s     	||Fyyr*+H1199QWWT]2A./tyyq);<<			X	&	&ggdmA&))(3#h-/"I77<<//r/   c                  ,    [         R                  " 5       $ N)re   getpagesizer)   r/   r0   rq   rq      s    r/   c                      [         R                  " 5       n U u  pp4UnUnUnXV-
  n[        XV-
  USS9n	[        R                  " XVXU5      $ )z&System virtual memory as a namedtuple.r   round_)re   virtual_memr   ntpsvmem)
memtotphys	availphys_totsys	_availsystotalavailfreeusedpercents
             r0   virtual_memoryr      sS    



C-0*GEED=DU]U1=G99U7$77r/   c                      [         R                  " 5       n U S   nU S   nX!-
  nUS:  a'  [         R                  " 5       n[        SU-  U-  5      nOSnSnX5-
  n[	        US5      n[
        R                  " X5XgSS5      $ )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r4   g{Gz?        r   )re   ru   swap_percentintroundrv   sswap)rx   
total_phystotal_systemr}   percentswapr   r   r   s           r0   swap_memoryr      s    



CQJq6L %E
 qy'')4+%-.<DK#G99U$A66r/   c                     [        U [        5      (       a  U R                  [        SS9n [        R
                  " U 5      u  pn[        X!SS9n[        R                  " XX45      $ )z'Return disk usage associated with path.strict)errorsr   rs   )	
isinstancebytesdecoder   re   
disk_usager   rv   
sdiskusage)ri   r}   r   r   r   s        r0   r   r      sS    $ {{8H{5-ED2G>>%t55r/   c                     [         R                  " U 5      nU Vs/ s H  n[        R                  " U6 PM     sn$ s  snf )zReturn disk partitions.)re   disk_partitionsrv   	sdiskpart)allrawlistxs      r0   r   r      s3    ""3'G'./w!CMM1w///s   ;c                      [         R                  " 5       u  pn[        R                  " [	        [         R
                  " 5       6  Vs/ s H  n[        U5      PM     sn6 n[        R                  " XX$R                  UR                  5      $ s  snf )z)Return system CPU times as a named tuple.)	re   	cpu_timesrv   	scputimeszipper_cpu_timessum	interruptdpc)usersystemidlenpercpu_summeds        r0   r   r     st    )D$ MMt1134	54Q#a&4	5M ==d33]5F5F  
6s   Bc                      / n [         R                  " 5        H0  u  pp4n[        R                  " XX4U5      nU R	                  U5        M2     U $ )z6Return system per-CPU times as a list of named tuples.)re   r   rv   r   append)retr   r   r   r   r   items          r0   r   r     sG    
C.2.@.@.B*ds}}T4C@

4 /C Jr/   c                  ,    [         R                  " 5       $ )z0Return the number of logical CPUs in the system.)re   cpu_count_logicalr)   r/   r0   r   r     s    !!##r/   c                  ,    [         R                  " 5       $ )z-Return the number of CPU cores in the system.)re   cpu_count_coresr)   r/   r0   r   r     s    !!r/   c                  d    [         R                  " 5       u  pp#Sn[        R                  " XXC5      $ )zReturn CPU statistics.r   )re   	cpu_statsrv   	scpustats)r7   
interrupts_dpcssyscallssoft_interruptss        r0   r   r   #  s)    040@-LeO==?MMr/   c                      [         R                  " 5       u  pSn[        R                  " [	        U 5      U[	        U5      5      /$ )zEReturn CPU frequency.
On Windows per-cpu frequency is not supported.
r   )re   cpu_freqrv   scpufreqfloat)currmax_min_s      r0   r   r   *  s4     JDDLLtdE$K899r/   Fc                  P    [         R                  " 5       n [        S U  5       5      $ )Nc              3   :   #    U  H  n[        US 5      v   M     g7f)r4   N)r   ).0loads     r0   	<genexpr>#_getloadavg_impl.<locals>.<genexpr>:  s     6IDtQIs   )re   
getloadavgtuple)	raw_loadss    r0   _getloadavg_implr   7  s    !I6I666r/   c                      [         (       a
  [        5       $ [           [         (       d  [        R                  " 5         Sq SSS5        [        5       $ ! , (       d  f       [        5       $ = f)z|Return the number of processes in the system run queue averaged
over the last 1, 5, and 15 minutes respectively as a tuple.
TN)_loadavg_initializedr   _lockre   init_loadavg_counterr)   r/   r0   r   r   =  sQ     !!	##%%'#'  

  

 s   #A
A(c                     [         U    u  p#[        R                  " XU5      n[        5       nU H7  nUu  pxppn[	        UUU	U
UU[
        US:X  a  UOSS9nUR                  U5        M9     [        U5      $ )zReturn socket connections.  If pid == -1 return system-wide
connections (as opposed to connections opened by one process only).
r%   N)pid)r
   re   net_connectionssetr   TCP_STATUSESaddlist)kind_pidfamiliestypesr   r   r   fdfamtypeladdrraddrstatusr   nts                  r0   r   r   S  s      oOH""459G
%C370eSrzt	
 	  9r/   c                      0 n [         R                  " 5       nUR                  5        HO  u  p#Uu  pEpg[        [        S5      (       a  [        R
                  " U5      n[        R                  " XEXgS5      X'   MQ     U $ )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex )re   net_if_statsitemshasattrr   r   rv   	snicstats)r   rawdictnamer   isupduplexspeedmtus           r0   r   r   j  si    
C!G}}#( e7K((&&v.FMM$B?		 '
 Jr/   c                  ,    [         R                  " 5       $ )zkReturn network I/O statistics for every network interface
installed on the system as a dict of raw tuples.
)re   net_io_countersr)   r/   r0   r   r   v  s     !!r/   c                  ,    [         R                  " 5       $ )z,Return the addresses associated to each NIC.)re   net_if_addrsr)   r/   r0   r   r   }  s    r/   c                     [         R                  " 5       u  pp#U S:H  n[        US-  5      n[        US-  5      nU(       a  gU(       d  U(       a  [        R                  nOUS:X  a  [        R
                  n[        R                  " X#U5      $ )zReturn battery information.r      rB   Nr%   )re   sensors_batteryboolr   POWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNrv   sbattery)acline_statusflagsr   secsleftpower_plugged
no_batterychargings          r0   r   r     su    
 /3.B.B.D+M'!Q&Meck"JEAIH//	R--<<=99r/   c                      [         R                   " 5       [        R                  " 5       -
  n [        U [        -
  5      S::  a  [        $ U qU $ )zyThe system boot time expressed in seconds since the epoch. This
also includes the time spent during hybernate / suspend.
r   )timere   uptimeabs_last_btime)r   s    r0   	boot_timer    s<     ))+
%C
3"
r/   c                      / n [         R                  " 5       nU H2  nUu  p4n[        R                  " USXES5      nU R	                  U5        M4     U $ )z:Return currently connected users as a list of namedtuples.N)re   usersrv   suserr   )retlistr   r   r   hostnametstampr   s          r0   r  r    sM    GjjlG!%YYtT8T:r  Nr/   c               #   b   #    [         R                  " 5        H  u  p[        X5      v   M     g7f)z*Yields a list of WindowsService instances.N)re   winservice_enumerateWindowsService)r   display_names     r0   r   r     s&     "779T00 :s   -/c                 N    [        U S5      nUR                  5       S   Ul        U$ )zBOpen a Windows service and return it as a WindowsService instance.Nr  )r
  _query_config_display_name)r   services     r0   r   r     s)    T4(G#113NCGNr/   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 r\R                  S
 5       rS rS rS rS rS rS rS rS rS rSrg)r
  i  z(Represents an installed Windows service.c                     Xl         X l        g rp   )_namer  )selfr   r  s      r0   __init__WindowsService.__init__  s    
)r/   c                 t    SU R                   < SU R                  < S3nU R                  R                   U 3$ )Nz(name=z, display_name=))r  r  	__class__r*   )r  detailss     r0   __str__WindowsService.__str__  s;    4::.8J8J7MQO..))*7)44r/   c                 B    SU R                  5        S[        U 5       S3$ )N<z at >)r  idr  s    r0   __repr__WindowsService.__repr__  s"    4<<>"$r$xj22r/   c                 j    [        U[        5      (       d  [        $ U R                  UR                  :H  $ rp   )r   r
  NotImplementedr  r  others     r0   __eq__WindowsService.__eq__  s*     %00!!zzU[[((r/   c                     X:X  + $ rp   r)   r%  s     r0   __ne__WindowsService.__ne__  s      r/   c                     U R                  5          [        R                  " U R                  5      u  pp4S S S 5        [	        WWWWS9$ ! , (       d  f       N= f)N)r  binpathusername
start_type)_wrap_exceptionsre   winservice_query_configr  dict)r  r  r-  r.  r/  s        r0   r  WindowsService._query_config  sR    ""$,,TZZ8 8L8 %
 %!	
 	
 %$s   $A		
Ac                     U R                  5          [        R                  " U R                  5      u  pS S S 5        WS:X  a  S n[	        WUS9$ ! , (       d  f       N = f)Nr   )r   r   )r0  re   winservice_query_statusr  r2  )r  r   r   s      r0   _query_statusWindowsService._query_status  sK    ""$66tzzBKF %!8C6s++	 %$s   #A
Ac              #     #     Sv   g! [          at  nU R                  n[        U5      (       a  SU< S3n[        SX#S9UeUR                  [
        R                  [
        R                  1;   a  SU< S3n[        SX#S9Uee SnAff = f7f)zkCtx 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   winerrorre   ERROR_INVALID_NAMEERROR_SERVICE_DOES_NOT_EXISTr   )r  errr   r:  s       r0   r0  WindowsService._wrap_exceptions  s     
	 	::D %%th&NO  #t$@cI''11"  !8#4AsJ	s%   B
	 B

BA/BBB
c                     U R                   $ )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    r0   r   WindowsService.name  s    
 zzr/   c                     U R                   $ )zOThe service display name. The value is cached when this class
is instantiated.
)r  r   s    r0   r  WindowsService.display_name  s     !!!r/   c                 (    U R                  5       S   $ )zgThe fully qualified path to the service binary/exe file as
a string, including command line arguments.
r-  r  r   s    r0   r-  WindowsService.binpath"  s     !!#I..r/   c                 (    U R                  5       S   $ )z,The name of the user that owns this service.r.  rG  r   s    r0   r.  WindowsService.username(  s    !!#J//r/   c                 (    U R                  5       S   $ )zBA string which can either be "automatic", "manual" or
"disabled".
r/  rG  r   s    r0   r/  WindowsService.start_type,  s     !!#L11r/   c                 (    U R                  5       S   $ )zjThe process PID, if any, else None. This can be passed
to Process class to control the service's process.
r   r6  r   s    r0   r   WindowsService.pid4  s     !!#E**r/   c                 (    U R                  5       S   $ )zService status as a string.r   rN  r   s    r0   r   WindowsService.status:  s    !!#H--r/   c                 J    [         R                  " U R                  5       5      $ )zService long description.)re   winservice_query_descrr   r   s    r0   descriptionWindowsService.description>  s    **499;77r/   c                     U R                  5       nUR                  U R                  5       5        U R                  5       US'   U R	                  5       US'   U R                  5       US'   U$ )zEUtility method retrieving all the information above as a
dictionary.
r   r  rT  )r  updater6  r   r  rT  )r  ds     r0   as_dictWindowsService.as_dictD  sa      	##%&IIK&	 --/.++--r/   )r  r  N)r*   r+   r,   r-   __doc__r  r  r!  r'  r*  r  r6  
contextlibcontextmanagerr0  r   r  r-  r.  r/  r   r   rT  rY  r.   r)   r/   r0   r
  r
    so    2*53)!
,  0"/02+.8	r/   r
  c                     [        U [        5      (       d   U 5       e[        U [        5      =(       d-    U R                  [        R
                  [        R                  1;   $ )z*Return True if this is a permission error.)r   r;  PermissionErrorr=  re   ERROR_ACCESS_DENIEDERROR_PRIVILEGE_NOT_HELD)excs    r0   r<  r<    sQ    c7##(S(#c?+ s||  %%@ 0 r/   c                     [        U [        5      (       d   U 5       e[        U 5      (       a	  [        XS9$ [        U [        5      (       a	  [        XS9$ U e)z3Convert OSError into NoSuchProcess or AccessDenied.r   r   )r   r;  r<  r   ProcessLookupErrorr   )rb  r   r   s      r0   convert_oserrorrf    sN    c7##(S(#//#)**00
Ir/   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                    >  T" U /UQ70 UD6$ ! [          a$  n[        X0R                  U R                  S9UeS nAff = f)Nrd  )r;  rf  r   r  )r  argskwargsr@  funs       r0   wrapper wrap_exceptions.<locals>.wrapper  sG    	Ot-d-f-- 	O!#88$**E3N	Os    
=8=	functoolswrapsrk  rl  s   ` r0   wrap_exceptionsrr    s)     __SO O Nr/   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )zyWorkaround for https://github.com/giampaolo/psutil/issues/875.
See: https://stackoverflow.com/questions/4457745#4457745.
c                 D  > SnSn[        U5       H  n T" U /UQ70 UD6s  $    T SU SW 3n[        U R                  U R                  US9e! [         aG  nUnUR                  [        :X  a+  [        R
                  " U5        [        US-  S5      n S nAM  e S nAff = f)N-C6?!   r4   {Gz?z	 retried z: times, converted to AccessDenied as it's still returning r9  )
ranger;  r=  ERROR_PARTIAL_COPYr   sleepminr   r   r  )	r  ri  rj  delaytimes_r@  r:  rk  s	           r0   rl  )retry_error_partial_copy.<locals>.wrapper  s    uA41$1&11  e9UG $"e% 	 txxdjjcBB  <<#55JJu%	40Es   A
B;BBBrn  rq  s   ` r0   retry_error_partial_copyr    s)    
 __SC C& Nr/   c                   N   \ rS rSrSr/ SQrS rS rS r\	S 5       r
S r\\	S	 5       5       r\\S
 5       5       r\\S 5       5       rS rS r\S 5       r\S 5       rS r\S 5       r\S 5       r\S*S j5       r\S 5       r\S+S j5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\\S 5       5       r \S 5       r!\S,S j5       r"\S 5       r#\S  5       r$\S! 5       r%\S" 5       r&\S# 5       r'\S$ 5       r(\S% 5       r)\S& 5       r*\S' 5       r+\S( 5       r,S)r-g)-Processi  z1Wrapper class around underlying C implementation.)_cacher  _ppidr   c                 ,    Xl         S U l        S U l        g rp   )r   r  r  )r  r   s     r0   r  Process.__init__  s    

r/   c                 p    U R                   R                  U 5        U R                  R                  U 5        g rp   )
_proc_infocache_activateexer   s    r0   oneshot_enterProcess.oneshot_enter  s&    &&t,%r/   c                 p    U R                   R                  U 5        U R                  R                  U 5        g rp   )r  cache_deactivater  r   s    r0   oneshot_exitProcess.oneshot_exit  s&    ((.!!$'r/   c                     [         R                  " U R                  5      n[        U5      [        [        5      :X  d   eU$ )z?Return multiple information about this process as a
raw tuple.
)re   	proc_infor   rg   	pinfo_mapr  r   s     r0   r  Process._proc_info  s1    
 nnTXX&3x3y>)))
r/   c                     U R                   S:X  a  gU R                   S:X  a  g[        R                  R                  U R	                  5       5      $ )zRReturn process name, which on Windows is always the final
part of the executable.
r   zSystem Idle Processr;   System)r   rh   ri   basenamer  r   s    r0   r   Process.name  s;     88q=(88q=ww
++r/   c                    [         (       a"   [        R                  " U R                  5      nO [        R                  " U R                  5      nUR                  S5      (       a  [        U5      $ U$ ! [         aF  nUR
                  S:X  a0  [        U< S35        [        U R                  U R                  5      Uee S nAff = f)N   z translated into AccessDeniedr_   )PYPYre   proc_exer   r;  errnor   r   r  rb   rn   )r  r  r@  s      r0   r  Process.exe  s     4mmDHH- --)C>>$#C((
   99?SG#@AB&txx<#Es    A1 1
C;AB<<Cc                 R   [         R                  [         R                  :  a    [         R                  " U R                  SS9$ [         R                  " U R                  SS9$ ! [
         a:  n[        U5      (       a$  [         R                  " U R                  SS9s S nA$ e S nAff = f)NT)use_pebF)re   WINVERWINDOWS_8_1proc_cmdliner   r;  r<  r  r@  s     r0   cmdlineProcess.cmdline  s     ;;$***((4@@ $$TXXt<<  $S)),,TXXuEE	s#   A" "
B&,.B!B& B!!B&c                 X    [         R                  " U R                  5      n[        U5      $ rp   )re   proc_environr   r   )r  rj   s     r0   environProcess.environ	  s#     dhh'"1%%r/   c                      [        5       U R                     $ ! [         a"    [        U R                  U R                  5      S ef = frp   )ppid_mapr   KeyErrorr   r  r   s    r0   ppidProcess.ppid  sA    	@:dhh'' 	@$**54?	@s	    ,Ac                     [         R                  " U R                  5      $ ! [         a  n[	        U5      (       a  [        S5        U R                  5       nU[        S      U[        S      U[        S      U[        S      U[        S      U[        S      U[        S      U[        S	      U[        S
      U[        S      4
s S nA$ e S nAff = f)Nz*attempting memory_info() fallback (slower)rI   rK   rM   rO   rQ   rS   rU   rW   rY   r[   )re   proc_memory_infor   r;  r<  r   r  r  )r  r@  infos      r0   _get_raw_meminfoProcess._get_raw_meminfo  s    	((22 	 %% BC(#456;/06*+#456<01#89:#345:./?34=12  %	s!   " 
CBCCCCc                 d    U R                  5       nUS   nUS   n[        R                  " X#4U-   6 $ )Nr4   r@   )r  rv   pmem)r  trssvmss       r0   memory_infoProcess.memory_info,  s9    
 !!#ddxx#a((r/   c                     U R                  5       n[        R                  " U R                  5      nU[	        5       -  n[
        R                  " X4-   6 $ rp   )r  re   proc_memory_ussr   rq   rv   pfullmem)r  	basic_memusss      r0   memory_full_infoProcess.memory_full_info6  sD    $$&	""488,{}||Y/00r/   c              #     #     [         R                  " U R                  5      nU H"  u  p#pE[        U5      n[	        U5      nX#XE4v   M$     g ! [
         a&  n[        X`R                  U R                  5      UeS nAff = f7frp   )re   proc_memory_mapsr   rn   hexr;  rf  r  )r  rawaddrpermri   r  r@  s          r0   memory_mapsProcess.memory_maps=  sy     
	.''1C *-%D'-4y4-- *-  	F "#xx<#E	Fs'   B  A )B 
A=!A88A==B c                 B    [         R                  " U R                  5      $ rp   )re   	proc_killr   r   s    r0   killProcess.killJ  s    ~~dhh''r/   c                    U[         R                  :X  a!  [        R                  " U R                  5        g U[         R
                  [         R                  1;   a"  [        R                  " U R                  U5        g Sn[        U5      e)NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
signalSIGTERMre   r  r   CTRL_C_EVENTCTRL_BREAK_EVENTrh   r  
ValueError)r  sigr:  s      r0   send_signalProcess.send_signalN  s_    &.. NN488$V((&*A*ABBGGDHHc"+  S/!r/   Nc                 z   Uc  [         R                  nO[        US-  5      n[        [        S[        R                  5      nUb
  U" 5       U-   OS n [         R
                  " U R                  U5      nSn [        U R                  5      (       d  U$ U(       a)  U" 5       U:  a  [        XR                  U R                  S9e[        R                  " U5        [        US-  S5      nMs  ! [         R                   a&  n[        XR                  U R                  5      UeS nAf[         R                   a    S n Nf = f)Ni  	monotonicru  rd  r4   rw  )re   INFINITEr   getattrr   	proc_waitr   r	   r  TimeoutAbandoned
pid_existsrz  r{  )r  timeoutcext_timeouttimerstop_at	exit_coder@  r|  s           r0   waitProcess.wait[  s   ?==L w~.Lk4995'.':%'G#	 txx>I& dhh''  57g-$W((LLJJu	4(E ' "" 	I ((DJJ?SH$$ 		 I		s   !C) )D:=!DD:9D:c                 v    U R                   S;   a  g[        R                  " U R                   5      u  pU SU 3$ )N   r   r;   zNT AUTHORITY\SYSTEMr_   )r   re   proc_username)r  domainr   s      r0   r.  Process.username  s8    88v)))$((3D6""r/   c                      [         R                  " U R                  5      u  p#nU$ ! [         aH  n[	        U5      (       a2  U(       a  e [        S5        U R                  5       [        S      s S nA$ e S nAff = f)Nz*attempting create_time() fallback (slower)r:   )re   
proc_timesr   r;  r<  r   r  r  )r  	fast_only_user_systemcreatedr@  s         r0   r:   Process.create_time  sg    		&*oodhh&?#EGN 	 %%BC(=)ABB	s    $' 
A9<A4-A93A44A9c                 6    U R                  5       [        S      $ )Nr<   )r  r  r   s    r0   r<   Process.num_threads  s     =!9::r/   c                     [         R                  " U R                  5      n/ nU H.  u  p4n[        R                  " X4U5      nUR                  U5        M0     U$ rp   )re   proc_threadsr   rv   pthreadr   )r  r   r  	thread_idutimestimentuples          r0   threadsProcess.threads  sM    ##DHH-'.#Ie[[59FNN6" (/ r/   c                 0    [         R                  " U R                  5      u  pn[        R                  " XSS5      $ ! [         aN  n[	        U5      (       d  e [        S5        U R                  5       nU[        S      nU[        S      n S nANkS nAff = f)Nz(attempting cpu_times() fallback (slower)r8   r9   r   )
re   r  r   r;  r<  r   r  r  rv   	pcputimes)r  r   r   _createdr@  r  s         r0   r   Process.cpu_times  s    	4%)__TXX%>"D( }}T344  	4$S))<=??$D	+./D)M23F	4s   #= 
BABBc                 F    [         R                  " U R                  S5        g )NTre   proc_suspend_or_resumer   r   s    r0   suspendProcess.suspend  s    ##DHHd3r/   c                 F    [         R                  " U R                  S5        g )NFr  r   s    r0   resumeProcess.resume  s    ##DHHe4r/   c                     U R                   S;   a   [        U R                   U R                  5      e[        R                  " U R                   5      n[
        R                  R                  U5      $ )Nr  )r   r   r  re   proc_cwdrh   ri   normpath)r  ri   s     r0   cwdProcess.cwd  sN     88vtxx44 }}TXX&ww%%r/   c                 ,   U R                   S;   a  / $ [        5       n[        R                  " U R                   5      nU HH  n[	        U5      n[        U5      (       d  M   [        R                  " US5      nUR                  U5        MJ     [        U5      $ )Nr  r%   )
r   r   re   proc_open_filesrn   r   rv   	popenfiler   r   )r  r   raw_file_namesfiler  s        r0   
open_filesProcess.open_files  sv    88vIe
 --dhh7"D#D)DT""tR0	 #
 Cyr/   c                 (    [        XR                  S9$ )N)r   )r   r   )r  r   s     r0   r   Process.net_connections  s    t((33r/   c                 \    [         R                  " U R                  5      n[        U5      nU$ rp   )re   proc_priority_getr   r'   r  values     r0   nice_getProcess.nice_get  s$    &&txx0r/   c                 D    [         R                  " U R                  U5      $ rp   )re   proc_priority_setr   r  s     r0   nice_setProcess.nice_set  s    %%dhh66r/   c                 \    [         R                  " U R                  5      n[        U5      nU$ rp   )re   proc_io_priority_getr   r2   r  s     r0   
ionice_getProcess.ionice_get  s$    ''1o
r/   c                    U(       a  Sn[        U5      eU[        R                  [        R                  [        R                  [        R
                  1;  a  U S3n[        U5      e[        R                  " U R                  U5        g )Nz&value argument not accepted on Windowsz is not a valid priority)
	TypeErrorr2   r   r   r   r   r  re   proc_io_priority_setr   )r  ioclassr  r:  s       r0   
ionice_setProcess.ionice_set  sr    :CC. %%!!$$""	
 
 I56CS/!!!$((G4r/   c           	      x    [         R                  " U R                  5      n[        R                  " U6 $ ! [         az  n[	        U5      (       d  e [        S5        U R                  5       nU[        S      U[        S      U[        S      U[        S      U[        S      U[        S      4n S nANS nAff = f)Nz*attempting io_counters() fallback (slower)r>   r?   rA   rC   rE   rG   )
re   proc_io_countersr   r;  r<  r   r  r  rv   pio)r  r   r@  r  s       r0   io_countersProcess.io_counters  s    	''1C ww}  	$S))>???$DY{+,Y{+,Y{+,Y{+,Y012Y012C	s    5 
B9A0B44B9c                     [         R                  " U R                  5      nU(       a  [        R                  $ [        R
                  $ rp   )re   proc_is_suspendedr   r   STATUS_STOPPEDSTATUS_RUNNING)r  	suspendeds     r0   r   Process.status  s1    **4884	))))))r/   c                 X    S n[         R                  " U R                  5      nU" U5      $ )Nc                 b    [        S5       Vs/ s H  nSU-  U -  (       d  M  UPM     sn$ s  snf )N@   r   )rx  )r   is     r0   from_bitmask.Process.cpu_affinity_get.<locals>.from_bitmask  s(    $Ry9y!Q!VqLAy999s   ,,)re   proc_cpu_affinity_getr   )r  r;  bitmasks      r0   cpu_affinity_getProcess.cpu_affinity_get  s(    	: ,,TXX6G$$r/   c                 2   S n[        [        [        [        5       5      5      5      nU H@  nXC;  d  M
  [	        U[
        5      (       d  SU< S3n[        U5      eSU< 3n[        U5      e   U" U5      n[        R                  " U R                  U5        g )Nc                 \    U (       d  SU < 3n[        U5      eSnU  H  nUSU-  -  nM     U$ )Nzinvalid argument r   r4   )r  )lsr:  outbs       r0   
to_bitmask,Process.cpu_affinity_set.<locals>.to_bitmask"  s<    )"0 o%Cq!t Jr/   zinvalid CPU z; an integer is required)r   rx  rg   r   r   r   r'  r  re   proc_cpu_affinity_setr   )r  r  rF  allcpuscpur:  r>  s          r0   cpu_affinity_setProcess.cpu_affinity_set   s    	 uS123C!!#s++(/GHC#C.($SG, o%  U#""488W5r/   c                      [         R                  " U R                  5      $ ! [         a@  n[	        U5      (       a*  [        S5        U R                  5       [        S      s S nA$ e S nAff = f)Nz*attempting num_handles() fallback (slower)r6   )re   proc_num_handlesr   r;  r<  r   r  r  r  s     r0   r6   Process.num_handles:  sZ    	((22 	 %%BC(=)ABB		s    " 
A,4A' A,&A''A,c                 d    U R                  5       [        S      n[        R                  " US5      $ )Nr7   r   )r  r  rv   pctxsw)r  r7   s     r0   num_ctx_switchesProcess.num_ctx_switchesD  s)    (>)BCzz,**r/   )r  r  r   rp   )F)inet).r*   r+   r,   r-   r[  	__slots__r  r  r  r   r  r   rr  r  r  r  r  r  r  r  r  r  r  r  r  r.  r:   r<   r  r   r  r  r  r  r   r  r   r$  r*  r/  r   r?  rK  r6   rR  r.   r)   r/   r0   r  r    s   ;3I&(  
,   " =  = &  &@. ) ) 1 1. ( ( 
" 
" () ()T # #   ; ;   5 5 4 4 5 5 &  &    4 4  
 7 7  
 5 5  $ * * % % 6 62   + +r/   r  r)   )r%   )NN)zr[  r\  enumro  rh   r  sys	threadingr   r   r   r   rv   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   re   ImportErrorr@  strlowerrb   getwindowsversionr:  RuntimeError__extra__all__r    ry  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'   globalsrW  __members__r2   r2  r  	lru_cachern   rq   r   r   	heap_info	heap_trimdisk_io_countersr   r   r   r   r   r   r   r   r   Lockr   r   r   r   r   r   r   r   r   r  r  r   r   r
  pidsr  r  r<  rf  rr  r  r  r)   r/   r0   <module>r     sS  
 '    	  
      ! " #  #  "  + ( " 8 8 0 0 2 4)*
$  S---_y"o>


 	g66!6!6!6!6  '"8"8  '"8"8  '"8"8w11!!7#:#:!6!6w22 4 4!!?7,,"6t|| 6 	  %% &  	  '' (   	
           
  !" #$ %& '( )* +, -	> S!0 "0* 	 		876 NN	NN	 (( 60$
"
N:  7,.	":2   1} }X yy__
==
8K+ K+m  C##$566!!#A&* DKK))3S(s   N O$AOO$