U
    ;gm                     @   s  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 zddl
mZ W nl e k
r Z! zLe"e!# $dre% d dk rdZ&e&d7 Z&e&d7 Z&e'e&e!n W 5 dZ![!X Y nX ddd d!d"d#d$d%d&d'd(d)d*d+gZ(d,Z)d-Z*d.ej+kZ,e-d/d+d0iZ.e.j/Z/ej0ej1ej2ej3ej4ej5ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFe)ejGejHiZIG d1d2 d2ej-ZJeK LeJjM G d3d4 d4ej-ZNeK LeNjM eOddd5d6d7d8dd9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHZPe	dIdJdKdLdMdNgZQe	dOdPdQdRdSdTgZRe	dUdVdWdXdYdZd[d\d]d^d_d`dagZSe	dbeSjTdc ZUe	dddedVgZVe	dfdgdhWeVjT ZXe	didjdkdldmdndogZYejZdpdqdrds Z[edtdu Z\dvdw Z]dxdy Z^ej_Z_dzd{ Z`d|d} Zad~d Zbdd Zcdd Zddd Zedd Zfdd Zgdahdd ZidddZjdd Zkdd Zldd Zmdd Zndaodd Zpdd Zqdd Zrdd ZsG dd dZtejuZuejvZvejwZwdd ZxdddZydd Zzdd Z{G dd 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_LINKZ
DELETE_TCBi+  Z__pypy__AddressFamilyc                   @   s$   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    r'   r'   Q/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/psutil/_pswindows.pyr#   e   s   r#   c                   @   s   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   r)   r*   r+               	   
                                    )num_handlesctx_switches	user_timekernel_timecreate_timenum_threads	io_rcount	io_wcount	io_rbytes	io_wbytesio_count_othersio_bytes_othersnum_page_faults	peak_wsetwsetpeak_paged_pool
paged_poolpeak_non_paged_poolnon_paged_poolpagefilepeak_pagefilemem_private	scputimesusersystemidle	interruptdpcsvmemtotal	availablepercentusedfreepmemrssvmsrI   rJ   rK   rL   rM   Zpeak_nonpaged_poolZnonpaged_poolrP   rQ   privatepfullmem)usspmmap_groupedpath	pmmap_extzaddr perms  pioZ
read_countZwrite_count
read_byteswrite_bytesother_countZother_bytesi   )maxsizec                 C   s@   d | ddd }t|}| t|d }tj ||S )zConvert paths using native DOS format like:
        "\Device\HarddiskVolume1\Windows\systemew\file.txt"
    into:
        "C:\Windows\systemew\file.txt".
    \Nr+   )joinsplitcextZQueryDosDevicelenosrf   )sZrawdriveZdriveletter	remainderr'   r'   r(   convert_dos_path   s    
rv   c                   C   s   t  S N)rq   getpagesizer'   r'   r'   r(   rx      s    rx   c            
      C   sJ   t  } | \}}}}|}|}|}|| }t|| |dd}	t|||	||S )z&System virtual memory as a namedtuple.r   Zround_)rq   virtual_memr   rY   )
memZtotphysZ	availphysZ_totsysZ	_availsysrZ   Zavailr^   r]   r\   r'   r'   r(   virtual_memory   s    r|   c                  C   sp   t  } | d }| d }|| }|dkrBt  }td| | }nd}d}|| }t|d}t||||ddS )z=Swap system memory as a (total, used, free, sin, sout) tuple.r   r*   g{Gz?        r   )rq   rz   Zswap_percentintroundr   Zsswap)r{   Z
total_physZtotal_systemrZ   Zpercentswapr]   r^   r\   r'   r'   r(   swap_memory   s    
r   c                 C   sL   t | tr| jtdd} t| \}}|| }t||dd}t||||S )z'Return disk usage associated with path.strict)errorsr   ry   )	
isinstancebytesdecoder   rq   
disk_usager   r   Z
sdiskusage)rf   rZ   r^   r]   r\   r'   r'   r(   r      s    
r   c                 C   s   t | }dd |D S )zReturn disk partitions.c                 S   s   g | ]}t j| qS r'   )r   Z	sdiskpart).0xr'   r'   r(   
<listcomp>  s     z#disk_partitions.<locals>.<listcomp>)rq   disk_partitions)allrawlistr'   r'   r(   r   	  s    
r   c                  C   s<   t  \} }}tdd tt   D  }t| |||j|jS )z)Return system CPU times as a named tuple.c                 S   s   g | ]}t |qS r'   )sum)r   nr'   r'   r(   r     s     zcpu_times.<locals>.<listcomp>)rq   	cpu_timesrS   zipper_cpu_timesrW   rX   )rT   rU   rV   Zpercpu_summedr'   r'   r(   r     s        r   c                  C   s:   g } t  D ](\}}}}}t|||||}| | q| S )z6Return system per-CPU times as a list of named tuples.)rq   r   rS   append)retrT   rU   rV   rW   rX   itemr'   r'   r(   r      s
    r   c                   C   s   t  S )z0Return the number of logical CPUs in the system.)rq   cpu_count_logicalr'   r'   r'   r(   r   )  s    r   c                   C   s   t  S )z-Return the number of CPU cores in the system.)rq   cpu_count_coresr'   r'   r'   r(   r   .  s    r   c                  C   s$   t  \} }}}d}t| |||S )zReturn CPU statistics.r   )rq   	cpu_statsr   Z	scpustats)r>   Z
interruptsZ_dpcsZsyscallsZsoft_interruptsr'   r'   r(   r   3  s       r   c                  C   s(   t  \} }d}tt| |t|gS )zMReturn CPU frequency.
    On Windows per-cpu frequency is not supported.
    r}   )rq   cpu_freqr   Zscpufreqfloat)currZmax_Zmin_r'   r'   r(   r   <  s    r   Fc                  C   s*   t st  da t } td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                 s   s   | ]}t |d V  qdS )r*   N)r   )r   loadr'   r'   r(   	<genexpr>T  s     zgetloadavg.<locals>.<genexpr>)_loadavg_inititializedrq   Zinit_loadavg_counter
getloadavgtuple)Z	raw_loadsr'   r'   r(   r   H  s
    r   c                 C   sr   t |  \}}t|||}t }|D ]D}|\}}}	}
}}}t|||	|
||t|dkrV|ndd}|| q$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	   rq   net_connectionssetr
   TCP_STATUSESaddlist)kind_pidZfamiliestypesr   r   r   fdZfamtypeladdrraddrstatusr   ntr'   r'   r(   r   \  s"    
r   c                  C   sX   i } t  }| D ]>\}}|\}}}}ttdr<t|}t||||d| |< q| S )z)Get NIC stats (isup, duplex, speed, mtu).	NicDuplex )rq   net_if_statsitemshasattrr   r   Z	snicstats)r   Zrawdictnamer   ZisupZduplexspeedZmtur'   r'   r(   r   s  s    

r   c                   C   s   t  S )zsReturn network I/O statistics for every network interface
    installed on the system as a dict of raw tuples.
    )rq   net_io_countersr'   r'   r'   r(   r     s    r   c                   C   s   t  S )z,Return the addresses associated to each NIC.)rq   net_if_addrsr'   r'   r'   r(   r     s    r   c                  C   sd   t  \} }}}| dk}t|d@ }t|d@ }|r8dS |s@|rHtj}n|dkrVtj}t|||S )zReturn battery information.r      r/   Nr"   )rq   sensors_batteryboolr   ZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)Zacline_statusflagsr\   ZsecsleftZpower_pluggedZ
no_batteryZchargingr'   r'   r(   r     s    r   c                  C   s,   t t } t| t dkr tS | a| S dS )z:The system boot time expressed in seconds since the epoch.r   N)r   rq   	boot_timeabs_last_btime)r   r'   r'   r(   r     s
    r   c                  C   s@   g } t  }|D ]*}|\}}}t|d||d}| | q| S )z:Return currently connected users as a list of namedtuples.N)rq   usersr   Zsuserr   )retlistr   r   rT   hostnameZtstampr   r'   r'   r(   r     s    
r   c                  c   s"   t  D ]\} }t| |V  qdS )z*Yields a list of WindowsService instances.N)rq   Zwinservice_enumerateWindowsService)r   display_namer'   r'   r(   r     s    c                 C   s   t | d}| d |_|S )zBOpen a Windows service and return it as a WindowsService instance.Nr   )r   _query_config_display_name)r   Zservicer'   r'   r(   r     s    
c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
ejdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$S )%r   z(Represents an installed Windows service.c                 C   s   || _ || _d S rw   )_namer   )selfr   r   r'   r'   r(   __init__  s    zWindowsService.__init__c                 C   s&   d| j d| jd}| jj | S )Nz(name=z, display_name=))r   r   	__class__r$   )r   detailsr'   r'   r(   __str__  s    zWindowsService.__str__c                 C   s   d|    dt|  dS )N<z at >)r   idr   r'   r'   r(   __repr__  s    zWindowsService.__repr__c                 C   s   t |tstS | j|jkS rw   )r   r   NotImplementedr   r   otherr'   r'   r(   __eq__  s    
zWindowsService.__eq__c                 C   s
   | |k S rw   r'   r   r'   r'   r(   __ne__  s    zWindowsService.__ne__c              	   C   s8   |    t| j\}}}}W 5 Q R X t||||dS )N)r   binpathusername
start_type)_wrap_exceptionsrq   Zwinservice_query_configr   dict)r   r   r   r   r   r'   r'   r(   r     s    

zWindowsService._query_configc              	   C   s<   |    t| j\}}W 5 Q R X |dkr0d }t||dS )Nr   )r   r   )r   rq   Zwinservice_query_statusr   r   )r   r   r   r'   r'   r(   _query_status  s
    
zWindowsService._query_statusc              
   c   s   z
dV  W n t k
r } zb| j}t|rHd|d}td||d|n2|jtjtjhkrxd|d}td||d|n W 5 d}~X Y nX dS )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   winerrorrq   ZERROR_INVALID_NAMEZERROR_SERVICE_DOES_NOT_EXISTr   )r   errr   r   r'   r'   r(   r     s    

zWindowsService._wrap_exceptionsc                 C   s   | 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   r'   r'   r(   r     s    zWindowsService.namec                 C   s   | j S )z_The service display name. The value is cached when this class
        is instantiated.
        )r   r   r'   r'   r(   r   #  s    zWindowsService.display_namec                 C   s   |   d S )zwThe fully qualified path to the service binary/exe file as
        a string, including command line arguments.
        r   r   r   r'   r'   r(   r   )  s    zWindowsService.binpathc                 C   s   |   d S )z,The name of the user that owns this service.r   r   r   r'   r'   r(   r   /  s    zWindowsService.usernamec                 C   s   |   d S )zRA string which can either be "automatic", "manual" or
        "disabled".
        r   r   r   r'   r'   r(   r   3  s    zWindowsService.start_typec                 C   s   |   d S )zzThe process PID, if any, else None. This can be passed
        to Process class to control the service's process.
        r   r   r   r'   r'   r(   r   ;  s    zWindowsService.pidc                 C   s   |   d S )zService status as a string.r   r   r   r'   r'   r(   r   A  s    zWindowsService.statusc                 C   s   t |  S )zService long description.)rq   Zwinservice_query_descrr   r   r'   r'   r(   descriptionE  s    zWindowsService.descriptionc                 C   s>   |   }||   |  |d< |  |d< |  |d< |S )zUUtility method retrieving all the information above as a
        dictionary.
        r   r   r   )r   updater   r   r   r   )r   dr'   r'   r(   as_dictK  s    zWindowsService.as_dictN)r$   r%   r&   __doc__r   r   r   r   r   r   r   
contextlibcontextmanagerr   r   r   r   r   r   r   r   r   r   r'   r'   r'   r(   r     s&   
r   c                 C   s.   t | tst| t | tp,| jtjtjhkS )z*Return True if this is a permission error.)r   r   AssertionErrorPermissionErrorr   rq   ZERROR_ACCESS_DENIEDZERROR_PRIVILEGE_NOT_HELD)excr'   r'   r(   r     s
    r   c                 C   sD   t | tst| t| r&t||dS t | tr<t||dS | dS )z3Convert OSError into NoSuchProcess or AccessDenied.r   r   N)r   r   r   r   r   ProcessLookupErrorr   )r   r   r   r'   r'   r(   convert_oserror  s    
r   c                    s   t   fdd}|S )zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c              
      sN   z | f||W S  t k
rH } zt|| j| jd|W 5 d }~X Y nX d S )Nr   )r   r   r   r   )r   argskwargsr   funr'   r(   wrapper  s    z wrap_exceptions.<locals>.wrapper	functoolswrapsr   r   r'   r   r(   wrap_exceptions  s    r   c                    s   t   fdd}|S )zWorkaround for https://github.com/giampaolo/psutil/issues/875.
    See: https://stackoverflow.com/questions/4457745#4457745.
    c                    s   d}d}t |D ]n}z | f||W   S  tk
r| } z4|}|jtkrjt| t|d d}W Y q W 5 d }~X Y qX q  d| d| }t| j| j	|dd S )N-C6?!   r*   {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   r   delaytimes_r   r   r   r'   r(   r     s    

z)retry_error_partial_copy.<locals>.wrapperr   r   r'   r   r(   retry_error_partial_copy  s    r  c                   @   s  e Zd ZdZddddgZdd Zdd	 Zd
d Zedd Z	dd Z
eedd Zeedd Zeedd Zdd Zdd Zedd Zedd Zdd Zed d! Zed"d# ZedQd%d&Zed'd( ZedRd*d+Zed,d- Zed.d/ Zed0d1 Zed2d3 Zed4d5 Zeed6d7 Zed8d9 Z edSd;d<Z!ed=d> Z"ed?d@ Z#edAdB Z$edCdD Z%edEdF Z&edGdH Z'edIdJ Z(edKdL Z)edMdN Z*edOdP Z+d$S )TProcessz1Wrapper class around underlying C implementation._cacher   _ppidr   c                 C   s   || _ d | _d | _d S rw   )r   r   r
  )r   r   r'   r'   r(   r     s    zProcess.__init__c                 C   s   | j |  | j|  d S rw   )
_proc_infoZcache_activateexer   r'   r'   r(   oneshot_enter  s    zProcess.oneshot_enterc                 C   s   | j |  | j|  d S rw   )r  Zcache_deactivater  r   r'   r'   r(   oneshot_exit  s    zProcess.oneshot_exitc                 C   s$   t | j}t|ttks t|S )zOReturn multiple information about this process as a
        raw tuple.
        )rq   Z	proc_infor   rr   	pinfo_mapr   r   r   r'   r'   r(   r    s    zProcess._proc_infoc                 C   s,   | j dkrdS | j dkrdS tj|  S )zbReturn process name, which on Windows is always the final
        part of the executable.
        r   zSystem Idle Processr,   System)r   rs   rf   basenamer  r   r'   r'   r(   r     s
    

zProcess.namec              
   C   s   t rdzt| j}W qp tk
r` } z.|jdkrNt|d t| j| j| W 5 d }~X Y qpX nt| j}|	drt
|S |S )N   z translated into AccessDeniedrn   )PYPYrq   Zproc_exer   r   errnor   r   r   
startswithrv   )r   r  r   r'   r'   r(   r    s    

zProcess.exec              
   C   sz   t jt jkrfzt j| jddW S  tk
rb } z&t|rPt j| jdd W Y S  W 5 d }~X Y qvX nt j| jddS d S )NT)Zuse_pebF)rq   ZWINVERZWINDOWS_8_1Zproc_cmdliner   r   r   r   r   r'   r'   r(   cmdline   s    zProcess.cmdlinec                 C   s   t | j}t|S rw   )rq   Zproc_environr   r   )r   rt   r'   r'   r(   environ  s    zProcess.environc                 C   s8   zt  | j W S  tk
r2   t| j| jd Y nX d S rw   )ppid_mapr   KeyErrorr   r   r   r'   r'   r(   ppid  s    zProcess.ppidc                 C   s   zt | jW S  tk
r } zt|rtd |  }|td  |td  |td  |td  |td  |td  |td  |td	  |td
  |td  f
 W Y S  W 5 d }~X Y nX d S )Nz*attempting memory_info() fallback (slower)rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   )rq   Zproc_memory_infor   r   r   r   r  r  )r   r   infor'   r'   r(   _get_raw_meminfo  s$    









zProcess._get_raw_meminfoc                 C   s(   |   }|d }|d }t||f|  S )Nr*   r.   )r  r_   )r   tr`   ra   r'   r'   r(   memory_info3  s    zProcess.memory_infoc                 C   s,   |   }t| j}|t 9 }t||f  S rw   )r   rq   Zproc_memory_ussr   rx   rc   )r   Z	basic_memrd   r'   r'   r(   memory_full_info=  s    
zProcess.memory_full_infoc              
   c   sz   zt | j}W n4 tk
rD } zt|| j| j|W 5 d }~X Y n2X |D ]*\}}}}t|}t|}||||fV  qJd S rw   )rq   Zproc_memory_mapsr   r   r   r   rv   hex)r   rawr   addrpermrf   r`   r'   r'   r(   memory_mapsD  s    $zProcess.memory_mapsc                 C   s   t | jS rw   )rq   	proc_killr   r   r'   r'   r(   killQ  s    zProcess.killc                 C   sH   |t jkrt| j n,|t jt jhkr8t| j| nd}t	|d S )NzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows)
signalSIGTERMrq   r'  r   ZCTRL_C_EVENTZCTRL_BREAK_EVENTrs   r(  
ValueError)r   sigr   r'   r'   r(   send_signalU  s    
zProcess.send_signalNc              
   C   s   |d krt j}nt|d }ttdtj}|d k	r<| | nd }zt | j|}W nN t jk
r } zt|| j| j|W 5 d }~X Y n t j	k
r   d }Y nX d}t
| js|S |r| |krt|| j| jdt| t|d d}qd S )Ni  	monotonicr   r   r*   r   )rq   ZINFINITEr~   getattrr  Z	proc_waitr   r   r   ZTimeoutAbandoned
pid_existsr  r  )r   timeoutZcext_timeoutZtimerZstop_at	exit_coder   r  r'   r'   r(   waitb  s$    "	


zProcess.waitc                 C   s,   | j dkrdS t| j \}}| d| S )N   r   r,   zNT AUTHORITY\SYSTEMrn   )r   rq   Zproc_username)r   domainrT   r'   r'   r(   r     s    
zProcess.usernameFc              
   C   sp   zt | j\}}}|W S  tk
rj } z4t|rX|r8 td |  td   W Y S  W 5 d }~X Y nX d S )Nz*attempting create_time() fallback (slower)rA   )rq   
proc_timesr   r   r   r   r  r  )r   Z	fast_only_userZ_systemcreatedr   r'   r'   r(   rA     s    zProcess.create_timec                 C   s   |   td  S )NrB   )r  r  r   r'   r'   r(   rB     s    zProcess.num_threadsc                 C   s<   t | j}g }|D ]"\}}}t|||}|| q|S rw   )rq   Zproc_threadsr   r   Zpthreadr   )r   r   r   Z	thread_idutimeZstimentupler'   r'   r(   threads  s    zProcess.threadsc              
   C   s|   zt | j\}}}W nT tk
rj } z6t|s2 td |  }|td  }|td  }W 5 d }~X Y nX t	||ddS )Nz(attempting cpu_times() fallback (slower)r?   r@   r}   )
rq   r6  r   r   r   r   r  r  r   Z	pcputimes)r   rT   rU   Z_createdr   r  r'   r'   r(   r     s    zProcess.cpu_timesc                 C   s   t | jd d S )NTrq   Zproc_suspend_or_resumer   r   r'   r'   r(   suspend  s    zProcess.suspendc                 C   s   t | jd d S )NFr<  r   r'   r'   r(   resume  s    zProcess.resumec                 C   s0   | j dkrt| j | jt| j }tj|S )Nr4  )r   r   r   rq   Zproc_cwdrs   rf   normpath)r   rf   r'   r'   r(   cwd  s    
zProcess.cwdc                 C   sX   | j dkrg S t }t| j }|D ]*}t|}t|r$t|d}|| q$t	|S )Nr4  r"   )
r   r   rq   Zproc_open_filesrv   r   r   Z	popenfiler   r   )r   r   Zraw_file_namesfiler:  r'   r'   r(   
open_files  s    
zProcess.open_filesinetc                 C   s   t || jdS )N)r   )r   r   )r   r   r'   r'   r(   r     s    zProcess.net_connectionsc                 C   s   t | j}t|}|S rw   )rq   Zproc_priority_getr   r#   r   valuer'   r'   r(   nice_get  s    zProcess.nice_getc                 C   s   t | j|S rw   )rq   Zproc_priority_setr   rD  r'   r'   r(   nice_set  s    zProcess.nice_setc                 C   s   t | j}t|}|S rw   )rq   Zproc_io_priority_getr   r)   r  r'   r'   r(   
ionice_get  s    zProcess.ionice_getc                 C   sL   |rd}t ||tjtjtjtjhkr:| d}t|t| j	| d S )Nz&value argument not accepted on Windowsz is not a valid priority)
	TypeErrorr)   r   r   r   r   r+  rq   Zproc_io_priority_setr   )r   ZioclassrE  r   r'   r'   r(   
ionice_set  s    
zProcess.ionice_setc                 C   s   zt | j}W n| tk
r } z^t|s, td |  }|td  |td  |td  |td  |td  |td  f}W 5 d }~X Y nX t| S )Nz*attempting io_counters() fallback (slower)rC   rD   rE   rF   rG   rH   )	rq   Zproc_io_countersr   r   r   r   r  r  ri   )r   r   r   r  r'   r'   r(   io_counters  s    





zProcess.io_countersc                 C   s    t | j}|rtjS tjS d S rw   )rq   Zproc_is_suspendedr   r   ZSTATUS_STOPPEDZSTATUS_RUNNING)r   Z	suspendedr'   r'   r(   r     s    zProcess.statusc                 C   s   dd }t | j}||S )Nc                    s    fddt dD S )Nc                    s   g | ]}d |>  @ r|qS )r   r'   )r   ir   r'   r(   r   "  s      zBProcess.cpu_affinity_get.<locals>.from_bitmask.<locals>.<listcomp>@   )r   rM  r'   rM  r(   from_bitmask!  s    z.Process.cpu_affinity_get.<locals>.from_bitmask)rq   Zproc_cpu_affinity_getr   )r   rO  bitmaskr'   r'   r(   cpu_affinity_get  s    zProcess.cpu_affinity_getc                 C   sv   dd }t ttt }|D ]<}||krt|tsHd|d}t|d|}t|q||}t	| j
| d S )Nc                 S   s4   | sd| }t |d}| D ]}|d| O }q|S )Nzinvalid argument r   r*   )r+  )Zlsr   outbr'   r'   r(   
to_bitmask)  s    
z,Process.cpu_affinity_set.<locals>.to_bitmaskzinvalid CPU z; an integer is required)r   r   rr   r   r   r~   rI  r+  rq   Zproc_cpu_affinity_setr   )r   rE  rT  Zallcpuscpur   rP  r'   r'   r(   cpu_affinity_set'  s    


zProcess.cpu_affinity_setc              
   C   s`   zt | jW S  tk
rZ } z.t|rHtd |  td   W Y S  W 5 d }~X Y nX d S )Nz*attempting num_handles() fallback (slower)r=   )rq   Zproc_num_handlesr   r   r   r   r  r  r  r'   r'   r(   r=   A  s    zProcess.num_handlesc                 C   s   |   td  }t|dS )Nr>   r   )r  r  r   Zpctxsw)r   r>   r'   r'   r(   num_ctx_switchesK  s    zProcess.num_ctx_switches)N)F)rC  ),r$   r%   r&   r   	__slots__r   r  r  r   r  r   r   r  r  r  r  r  r  r   r!  r&  r(  r-  r3  r   rA   rB   r;  r   r=  r>  r@  rB  r   rF  rG  rH  rJ  rK  r   rQ  rV  r=   rW  r'   r'   r'   r(   r    s   

	


*















	r  )r"   )NN)}r   r   enumr   rs   r)  sysr  collectionsr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   ImportErrorr   strlowerr  getwindowsversionr   RuntimeErrorZ__extra__all__r   r   builtin_module_namesr  IntEnumr!   r    ZMIB_TCP_STATE_ESTABZCONN_ESTABLISHEDZMIB_TCP_STATE_SYN_SENTZCONN_SYN_SENTZMIB_TCP_STATE_SYN_RCVDZCONN_SYN_RECVZMIB_TCP_STATE_FIN_WAIT1ZCONN_FIN_WAIT1ZMIB_TCP_STATE_FIN_WAIT2ZCONN_FIN_WAIT2ZMIB_TCP_STATE_TIME_WAITZCONN_TIME_WAITZMIB_TCP_STATE_CLOSEDZ
CONN_CLOSEZMIB_TCP_STATE_CLOSE_WAITZCONN_CLOSE_WAITZMIB_TCP_STATE_LAST_ACKZCONN_LAST_ACKZMIB_TCP_STATE_LISTENZCONN_LISTENZMIB_TCP_STATE_CLOSINGZCONN_CLOSINGZMIB_TCP_STATE_DELETE_TCBZPSUTIL_CONN_NONEZ	CONN_NONEr   r#   globalsr   __members__r)   r   r  rS   rY   r_   _fieldsrc   re   ro   rg   ri   	lru_cacherv   rx   r|   r   Zdisk_io_countersr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpidsr0  r  r   r   r   r  r  r'   r'   r'   r(   <module>   sl          
             	!           


				

 -	

