
    Xhm                     D   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 g dZ(dZ)d Z*d!ejV                  v Z, ejZ                  d"d#d$i      Z.e.j^                  Z/ej`                  ejb                  ejd                  ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  ejv                  ejx                  ejz                  ej|                  ej~                  ej                  ej                  ej                  ej                  ej                  ej                  ej                  e)ej                  ej                  iZI G d% d&ejZ                        ZJ eK       j                  eJj                          G d' d(ejZ                        ZN eK       j                  eNj                          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	dXeSj                  dYz         ZU e	dZd[d\g      ZV e	d]d^d_j                  eVj                        z         ZX e	d`g da      ZY ej                  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j                  Zuej                  Zvej                  Zwd} Zxdd~Zyd Zzd Z{ G d d      Z|y# e $ rWZ! e"e!      jG                         jI                  d      r, ejJ                         d   dk  rdZ&e&dz  Z&e&dz  Z& e'e&      e! dZ![!ww xY w)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y)PriorityN)	__name__
__module____qualname__r   r   r   r   r   r        ]/var/www/html/cjf29f/d23bf782/d32178f2/venv/lib/python3.12/site-packages/psutil/_pswindows.pyr'   r'   e   s&    "="=--15r,   r'   c                       e Zd ZdZdZdZdZy)
IOPriorityr   r         N)r(   r)   r*   r   r   r   r   r+   r,   r-   r/   r/   q   s    NJMKr,   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j                  | j                  d      dd       }t        j                  |      }| t	        |      d }t
        j                  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      sV     yyr*+H%%h/K#h-/"I77<<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      s[    



C-0*GYEED5=DUU]U1=Gwd33r,   c                      t        j                         } | d   }| d   }||z
  }|dkD  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
 qy'')4+%-.4<DK#G==dGQ::r,   c                     t        | t              r| j                  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      s`    $ {{8H{5//$'KE44<DD%2GeT499r,   c                 v    t        j                  |       }|D cg c]  }t        j                  |  c}S c c}w )zReturn disk partitions.)r}   disk_partitionsr   	sdiskpart)allrawlistxs      r-   r   r   	  s1    ""3'G+23aGq!333s   6c                      t        j                         \  } }}t        t        t        j                          D cg c]  }t        |       c} }t        | |||j                  |j                        S c c}w )z)Return system CPU times as a named tuple.)r}   	cpu_timesrY   zipper_cpu_timessumr]   r^   )rZ   r[   r\   npercpu_summeds        r-   r   r     sh    )D&$ T5G5G5I0JK1AKLMfdM33]5F5F   Ls   A3c                      g } t        j                         D ](  \  }}}}}t        |||||      }| j                  |       * | 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      sO    
C.2.@.@.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                  h    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  s8    04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   <  s8     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   4   K   | ]  }t        |d         yw)r0   N)r   ).0loads     r-   	<genexpr>zgetloadavg.<locals>.<genexpr>T  s     6DtQ6s   )_loadavg_inititializedr}   init_loadavg_counter
getloadavgtuple)	raw_loadss    r-   r   r   H  s8     "!!#!% !I6I666r,   c                     t         |    \  }}t        j                  |||      }t               }|D ];  }|\  }}}	}
}}}t	        |||	|
||t
        |dk(  r|nd      }|j                  |       = t        |      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9G
%C 370CueVSrzt	
 	 9r,   c                      i } t        j                         }|j                         D ]M  \  }}|\  }}}}t        t        d      rt	        j
                  |      }t	        j                  ||||d      | |<   O | 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e#( feS7K(&&v.F%%dFE3CD		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y|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.B.D+M5'8!Q&Meck"JEAIH//	R--GX}==r,   c                  z    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    s7      
!C
3"
r,   c                      g } t        j                         }|D ]2  }|\  }}}t        j                  |d||d      }| j	                  |       4 | S )z:Return currently connected users as a list of namedtuples.N)r}   usersr   suserr   )retlistr   r   rZ   hostnametstampr   s          r-   r  r    sV    GjjlG !%h]]4x>r Nr,   c               #   `   K   t        j                         D ]  \  } }t        | |        yw)z*Yields a list of WindowsService instances.N)r}   winservice_enumerateWindowsService)r   display_names     r-   r   r     s0     "779 1lT<001s   ,.c                 N    t        | d      }|j                         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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y)r  z(Represents an installed Windows service.c                      || _         || _        y r   )_namer  )selfr   r  s      r-   __init__zWindowsService.__init__  s    
)r,   c                 p    d| j                   d| j                  d}| j                  j                   | S )Nz(name=z, display_name=))r  r  	__class__r(   )r  detailss     r-   __str__zWindowsService.__str__  s;    4::.8J8J7MQO..))*7)44r,   c                 B    d| j                          dt        |        dS )N<z at >)r  idr  s    r-   __repr__zWindowsService.__repr__  s"    4<<>"$r$xj22r,   c                 `    t        |t              st        S | j                  |j                  k(  S r   )r   r  NotImplementedr  r  others     r-   __eq__zWindowsService.__eq__  s'     %0!!zzU[[((r,   c                     | |k(   S r   r+   r'  s     r-   __ne__zWindowsService.__ne__  s    5=  r,   c                     | j                         5  t        j                  | j                        \  }}}}d d d        t	              S # 1 sw Y   xY w)N)r  binpathusername
start_type)_wrap_exceptionsr}   winservice_query_configr  dict)r  r  r-  r.  r/  s        r-   r  zWindowsService._query_config  s]    ""$ 	,,TZZ8 8L'8Z	
 %!	
 	
	 	s   %AAc                     | j                         5  t        j                  | j                        \  }}d d d        dk(  rd }t	        |      S # 1 sw Y   xY w)Nr   )r   r   )r0  r}   winservice_query_statusr  r2  )r  r   r   s      r-   _query_statuszWindowsService._query_status  sX    ""$ 	C66tzzBKFC	C!8C6s++		C 	Cs   #AAc              #     K   	 d y# t         $ rs}| 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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   r8  s       r-   r0  zWindowsService._wrap_exceptions  s     
	 	::D %th&NO  #t$C@cI''11"  !8#4SAsJ	s%   B	 B	BA.B  B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    
 zz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                 (    | j                         d   S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        r-  r  r#  s    r-   r-  zWindowsService.binpath)  s     !!#I..r,   c                 (    | j                         d   S )z,The name of the user that owns this service.r.  rB  r#  s    r-   r.  zWindowsService.username/  s    !!#J//r,   c                 (    | j                         d   S )zRA string which can either be "automatic", "manual" or
        "disabled".
        r/  rB  r#  s    r-   r/  zWindowsService.start_type3  s     !!#L11r,   c                 (    | j                         d   S )zzThe process PID, if any, else None. This can be passed
        to Process class to control the service's process.
        r   r5  r#  s    r-   r   zWindowsService.pid;  s     !!#E**r,   c                 (    | j                         d   S )zService status as a string.r   rF  r#  s    r-   r   zWindowsService.statusA  s    !!#H--r,   c                 H    t        j                  | j                               S )zService long description.)r}   winservice_query_descrr   r#  s    r-   descriptionzWindowsService.descriptionE  s    **499;77r,   c                     | j                         }|j                  | j                                | j                         |d<   | j	                         |d<   | j                         |d<   |S )zUUtility method retrieving all the information above as a
        dictionary.
        r   r  rJ  )r  updater5  r   r  rJ  )r  ds     r-   as_dictzWindowsService.as_dictK  sa      	##%&IIK&	 --/.++--r,   N)r(   r)   r*   __doc__r  r  r$  r)  r+  r  r5  
contextlibcontextmanagerr0  r   r  r-  r.  r/  r   r   rJ  rN  r+   r,   r-   r  r    so    2*53)!
,  0"/02+.8	r,   r  c                     t        | t              sJ |        t        | t              xs, | j                  t        j
                  t        j                  hv S )z*Return True if this is a permission error.)r   r9  PermissionErrorr;  r}   ERROR_ACCESS_DENIEDERROR_PRIVILEGE_NOT_HELD)excs    r-   r:  r:    sN    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   r9  r:  r   ProcessLookupErrorr   )rV  r   r   s      r-   convert_oserrorrZ    sI    c7#(S(#$//#)*400
Ir,   c                 B     t        j                          fd       }|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c                     	  | g|i |S # t         $ r(}t        || j                  | j                        |d }~ww xY w)NrX  )r9  rZ  r   r  )r  argskwargsr>  funs       r-   wrapperz wrap_exceptions.<locals>.wrapper  sI    	Ot-d-f-- 	O!#488$**E3N	Os    	A #;A 	functoolswrapsr_  r`  s   ` r-   wrap_exceptionsre    s)     __SO O Nr,   c                 B     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 ]  }	  | g|i |c S   d| d }t        | j                  | j                  |      # t        $ rD}|}|j                  t        k(  r)t	        j
                  |       t        |dz  d      }Y d }~ d }~ww xY w)N-C6?!   r0   {Gz?z	 retried z: times, converted to AccessDenied as it's still returning r7  )
ranger9  r;  ERROR_PARTIAL_COPYtimesleepminr   r   r  )	r  r]  r^  delaytimes_r>  r8  r_  s	           r-   r`  z)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9BBBra  rd  s   ` r-   retry_error_partial_copyrs    s)    
 __S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+y)+Processz1Wrapper class around underlying C implementation.)_cacher  _ppidr   c                 .    || _         d | _        d | _        y r   )r   r  rw  )r  r   s     r-   r  zProcess.__init__  s    

r,   c                 p    | j                   j                  |        | j                  j                  |        y r   )
_proc_infocache_activateexer#  s    r-   oneshot_enterzProcess.oneshot_enter  s&    &&t,%r,   c                 p    | j                   j                  |        | j                  j                  |        y r   )rz  cache_deactivater|  r#  s    r-   oneshot_exitzProcess.oneshot_exit  s&    ((.!!$'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-   rz  zProcess._proc_info  s1    
 nnTXX&3x3y>)))
r,   c                     | j                   dk(  ry| j                   dk(  ryt        j                  j                  | 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  s;     88q=(88q=ww
++r,   c                 j   t         r!	 t        j                  | j                        }nt        j                  | j                        }|j                  d      rt        |      S |S # t        $ rD}|j
                  dk(  r/t        |d       t        | j                  | j                        | d }~ww xY w)N   z translated into AccessDeniedrz   )PYPYr}   proc_exer   r9  errnor   r   r  
startswithr   )r  r|  r>  s      r-   r|  zProcess.exe  s     mmDHH- --)C>>$#C((
   99?SG#@AB&txx<#Es   A% %	B2.?B--B2c                 P   t         j                  t         j                  k\  r"	 t        j                  | j                  d      S t        j                  | j                  d      S # t
        $ r7}t        |      r&t        j                  | j                  d      cY d }~S  d }~ww xY w)NT)use_pebF)r}   WINVERWINDOWS_8_1proc_cmdliner   r9  r:  r  r>  s     r-   cmdlinezProcess.cmdline   s     ;;$***((4@@ $$TXXt<<  $S),,TXXuEE	s#    A% %	B%.+B B%B  B%c                 V    t        j                  | j                        }t        |      S r   )r}   proc_environr   r   )r  r   s     r-   environzProcess.environ  s#     dhh'"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  sA    	@:dhh'' 	@$**54?	@s	    +Ac                    	 t        j                  | j                        S # t        $ r}t	        |      rt        d       | j                         }|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   r9  r:  r   rz  r  )r  r>  infos      r-   _get_raw_meminfoz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                 P    | j                         }|d   }|d   }t        ||f|z    S )Nr0   r<   )r  re   )r  trf   rg   s       r-   memory_infozProcess.memory_info3  s7    
 !!#ddc3Z!^$$r,   c                     | j                         }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=  sB    $$&	""488,{}cV+,,r,   c              #     K   	 t        j                  | j                        }|D ]%  \  }}}}t        |      }t	        |      }||||f ' y # t
        $ r'}t        || j                  | j                        |d }~ww xY wwr   )r}   proc_memory_mapsr   r   hexr9  rZ  r  )r  rawaddrpermrn   rf   r>  s          r-   memory_mapszProcess.memory_mapsD  s     
	.''1C *- .%dD#'-4yT4--.  	F "#txx<#E	Fs'   BA +B	A>"A99A>>Bc                 @    t        j                  | j                        S r   )r}   	proc_killr   r#  s    r-   killzProcess.killQ  s    ~~dhh''r,   c                    |t         j                  k(  r t        j                  | j                         y |t         j
                  t         j                  hv r!t        j                  | j                  |       y 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  sigr8  s      r-   send_signalzProcess.send_signalU  s_    &.. NN488$V((&*A*ABBGGDHHc"+  S/!r,   Nc                 `   |t         j                  }nt        |dz        }t        t        dt        j                        }|
 |       |z   nd }	 t        j
                  | j                  |      }d}	 t        | j                        s|S |r, |       |k\  r"t        || j                  | j                        t	        j                  |       t        |dz  d      }j# t         j                  $ r'}t        || j                  | j                        |d }~wt         j                  $ r d }Y w xY w)Ni  	monotonicrh  rX  r0   rj  )r}   INFINITEr   getattrrm  	proc_waitr   r	   r  TimeoutAbandoned
pid_existsrn  ro  )r  timeoutcext_timeouttimerstop_at	exit_coder>  rp  s           r-   waitzProcess.waitb  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-0"DD-,D-c                 r    | j                   dv ryt        j                  | j                         \  }}| d| S )N   r   r7   zNT AUTHORITY\SYSTEMrz   )r   r}   proc_username)r  domainrZ   s      r-   r.  zProcess.username  s:    88v)))$((3D6""r,   c                     	 t        j                  | j                        \  }}}|S # t        $ r>}t	        |      r-|r t        d       | j                         t        d      cY d }~S  d }~ww xY w)Nz*attempting create_time() fallback (slower)r6   )r}   
proc_timesr   r9  r:  r   rz  r  )r  	fast_only_user_systemcreatedr>  s         r-   r6   zProcess.create_time  sf    		&*oodhh&?#E7GN 	 %BC(=)ABB	s    $' 	A.2A)"A.(A))A.c                 6    | j                         t        d      S )Nr8   )rz  r  r#  s    r-   r8   zProcess.num_threads  s     =!9::r,   c                     t        j                  | j                        }g }|D ].  \  }}}t        j                  |||      }|j                  |       0 |S r   )r}   proc_threadsr   r   pthreadr   )r  r   r
  	thread_idutimestimentuples          r-   threadszProcess.threads  sV    ##DHH-'. 	##Iue__Yu=FNN6"	# r,   c                 $   	 t        j                  | j                        \  }}}t        j                  ||dd      S # t        $ rI}t	        |      s t        d       | j                         }|t        d      }|t        d      }Y d }~ed }~ww xY w)Nz(attempting cpu_times() fallback (slower)r4   r5   r   )
r}   r  r   r9  r:  r   rz  r  r   	pcputimes)r  rZ   r[   _createdr>  r  s         r-   r   zProcess.cpu_times  s    	4%)__TXX%>"D&(   vsC88  	4$S)<=??$D	+./D)M23F	4s   #= 	B?B

Bc                 D    t        j                  | j                  d       y )NTr}   proc_suspend_or_resumer   r#  s    r-   suspendzProcess.suspend  s    ##DHHd3r,   c                 D    t        j                  | j                  d       y )NFr  r#  s    r-   resumezProcess.resume  s    ##DHHe4r,   c                     | j                   dv r t        | j                   | j                        t        j                  | j                         }t
        j                  j                  |      S )Nr  )r   r   r  r}   proc_cwdr   rn   normpath)r  rn   s     r-   cwdzProcess.cwd  sN     88vtxx44 }}TXX&ww%%r,   c                    | j                   dv rg S t               }t        j                  | j                         }|D ]@  }t	        |      }t        |      st        j                  |d      }|j                  |       B t        |      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  sz    88vIe
 --dhh7" 	 D#D)DT" **44		 
 Cyr,   c                 0    t        || j                        S )N)r   )r   r   )r  r   s     r-   r   zProcess.net_connections  s    t$((33r,   c                 Z    t        j                  | j                        }t        |      }|S r   )r}   proc_priority_getr   r'   r  values     r-   nice_getzProcess.nice_get  s$    &&txx0r,   c                 B    t        j                  | j                  |      S r   )r}   proc_priority_setr   r  s     r-   nice_setzProcess.nice_set  s    %%dhh66r,   c                 Z    t        j                  | j                        }t        |      }|S r   )r}   proc_io_priority_getr   r/   r  s     r-   
ionice_getzProcess.ionice_get  s$    ''1o
r,   c                    |rd}t        |      |t        j                  t        j                  t        j                  t        j
                  hvr| d}t        |      t        j                  | j                  |       y )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  r8  s       r-   
ionice_setzProcess.ionice_set  sr    :CC. %%!!$$""	
 
 I56CS/!!!$((G4r,   c           	      b   	 t        j                  | j                        }t        | S # t        $ r|}t	        |      s t        d       | j                         }|t        d      |t        d      |t        d      |t        d      |t        d      |t        d      f}Y d }~t        | S d }~ww xY w)Nz*attempting io_counters() fallback (slower)r:   r;   r=   r?   rA   rC   )	r}   proc_io_countersr   r9  r:  r   rz  r  rq   )r  r   r>  r  s       r-   io_counterszProcess.io_counters  s    	''1C Cy  	$S)>???$DY{+,Y{+,Y{+,Y{+,Y012Y012C Cy	s   ) 	B.A+B))B.c                     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  s1    **4884	))))))r,   c                 V    d }t        j                  | j                        } ||      S )Nc                 P    t        d      D cg c]  }d|z  | z  s| c}S c c}w )N@   r   )rk  )r   is     r-   from_bitmaskz.Process.cpu_affinity_get.<locals>.from_bitmask!  s$    $Ry9!Q!VqLA999s   ##)r}   proc_cpu_affinity_getr   )r  r	  bitmasks      r-   cpu_affinity_getzProcess.cpu_affinity_get  s(    	: ,,TXX6G$$r,   c                    d }t        t        t        t                                 }|D ]7  }||vst	        |t
              sd|d}t        |      d|}t        |        ||      }t        j                  | j                  |       y )Nc                 L    | sd| }t        |      d}| D ]
  }|d|z  z  } |S )Nzinvalid argument r   r0   )r  )lsr8  outbs       r-   
to_bitmaskz,Process.cpu_affinity_set.<locals>.to_bitmask)  sA    )"0 o%C q!tJr,   zinvalid CPU z; an integer is required)r   rk  r   r   r   r   r  r  r}   proc_cpu_affinity_setr   )r  r  r  allcpuscpur8  r  s          r-   cpu_affinity_setzProcess.cpu_affinity_set'  s    	 uS123 	&C'!!#s+(/GHC#C.($SG, o%	& U#""488W5r,   c                     	 t        j                  | j                        S # t        $ r;}t	        |      r*t        d       | j                         t        d      cY d }~S  d }~ww xY w)Nz*attempting num_handles() fallback (slower)r2   )r}   proc_num_handlesr   r9  r:  r   rz  r  r  s     r-   r2   zProcess.num_handlesA  sW    	((22 	 %BC(=)ABB		s    ! 	A%/A A%A  A%c                 b    | j                         t        d      }t        j                  |d      S )Nr3   r   )rz  r  r   pctxsw)r  r3   s     r-   num_ctx_switcheszProcess.num_ctx_switchesK  s)    (>)BC~~lA..r,   r   )F)inet),r(   r)   r*   rO  	__slots__r  r}  r  r   rz  r   re  r|  rs  r  r  r  r  r  r  r  r  r  r  r.  r6   r8   r  r   r  r  r  r  r   r  r  r  r  r  r   r  r  r2   r  r+   r,   r-   ru  ru    s   ;3I&(  
,   " =  = &  &@. % % - -. ( ( 
" 
" () ()T # #   ; ;   9 9 4 4 5 5 &  &    4 4  
 7 7  
 5 5  $ * * % % 6 62   / /r,   ru  r+   )r%   )NN)}rO  rP  enumrb  r   r  sysrm  collectionsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   ImportErrorr>  strlowerr  getwindowsversionr8  RuntimeError__extra__all__r    rl  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'   globalsrL  __members__r/   r2  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:  rZ  re  rs  ru  r+   r,   r-   <module>rH     s  
 '    	  
  "   ! " #  #  "  + ( " 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 	  %% &  	  '' (   	
           
  !" #$ %& '( )* +, -	B {EG	 	7MN
 56 j$,,":;?VUO<-*?*?!@@B	  7 8 S!	0 "	0 	 		4;> (( 	:4	$
"
>  7(.	">2  1} }X yy__
==
8K/ K/{  C##$56!C!!#A&* DKK))3S(s   O PAPP