JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB xe_@s(dZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%yddl mZ&Wnje'k rZ(zJe)e(*+dre,dd krd!Z-e-d"7Z-e-d#7Z-e.e-nWddZ([(XYnXej/d$krddl0Z0ndZ0d%d&d'd(d)d*d+d,d-d.d/d0d1d2gZ1d3Z2d4Z3d5ej4kZ5e0dkrLd6Z6ne07d7d2d6iZ8e8j6Z6e&j9e j:e&j;e je&j?e j@e&jAe jBe&jCe jDe&jEe jFe&jGe jHe&jIe jJe&jKe jLe&jMe jNe&jOe2e&jPe jQi ZRe0dk rGd8d9d9e0j7ZSeTUeSjVe0dkrdZWdZXd:ZYd;ZZn Gdd?d d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOZ]e dPdQdRdSdTdUgZ^e dVdWdXdYdZd[gZ_e d\d]d^d_d`dadbdcdddedfdgdhg Z`e die`jadjZbe dkdld]gZce dmdndodecjaZee dpdqdrdsdtdudvgZfedwdxdydzZgd{d|Zhed}d~ZiddZjddZke&jlZlddZmddZnddZoddZpddZqddZrddZsddZtdauddZvdddZwddZxddZyddZzddZ{da|ddZ}ddZ~dd%Zdd&ZGdddeZe&jZe&jZe&jZddZdddZddZddZGdddeZdS)z Windows platform implementation.N) namedtuple)_common) AccessDenied) conn_tmap)conn_to_ntuple)debug)ENCODING) ENCODING_ERRS) isfile_strict)memoize)memoize_when_activated) NoSuchProcess)parse_environ_block)TimeoutExpired) usage_percent)long) lru_cache)PY3)range)unicode)ABOVE_NORMAL_PRIORITY_CLASS)BELOW_NORMAL_PRIORITY_CLASS)HIGH_PRIORITY_CLASS)IDLE_PRIORITY_CLASS)NORMAL_PRIORITY_CLASS)REALTIME_PRIORITY_CLASS)_psutil_windowszdll load failedz3this Windows version is too old (< Windows Vista); z:psutil 3.4.2 is the latest version which supports Windows z2000, XP and 2003 server)win_service_iterwin_service_getrrrrrrIOPRIO_VERYLOW IOPRIO_LOW IOPRIO_NORMAL IOPRIO_HIGHCONN_DELETE_TCBAF_LINKZ DELETE_TCBi+__pypy__ AddressFamilyc@s$eZdZeZeZeZeZeZeZdS)PriorityN) __name__ __module__ __qualname__rrrrrrr0r0D/opt/alt/python37/lib64/python3.7/site-packages/psutil/_pswindows.pyr,ms r,rc@seZdZdZdZdZdZdS) IOPriorityrrr2rN)r-r.r/r#r$r%r&r0r0r0r1r3}sr3r  ) num_handles ctx_switches user_time kernel_time create_time num_threads io_rcount io_wcount io_rbytes io_wbytesio_count_othersio_bytes_othersnum_page_faults peak_wsetwsetpeak_paged_pool paged_poolpeak_non_paged_poolnon_paged_poolpagefile peak_pagefile mem_private scputimesusersystemidle interruptdpcsvmemtotalZ availablepercentusedfreepmemrssvmsrPrQrRrSrTZpeak_nonpaged_poolZ nonpaged_poolrWrXZprivatepfullmem)uss pmmap_groupedpath pmmap_extz addr perms  pio read_count write_count read_bytes write_bytes other_countZ other_bytesi)maxsizecCs@d|ddd}t|}|t|d}tj||S)zConvert paths using native DOS format like: "\Device\HarddiskVolume1\Windows\systemew\file.txt" into: "C:\Windows\systemew\file.txt" \Nr)joinsplitcextZwin32_QueryDosDevicelenosrk)sZrawdriveZ driveletter remainderr0r0r1convert_dos_paths r}cCs&tr|St|tr|S|ttSdS)zmEncode a unicode string to a byte string by using the default fs encoding + "replace" error handler. N)r isinstancestrencoder r )r{r0r0r1 py2_strencodes  rcCstS)N)rx getpagesizer0r0r0r1rsrc CsNt}|\}}}}}}|}|}|} ||} t|||dd} t||| | | S)z&System virtual memory as a namedtuple.r)round_)rx virtual_memrr`) memZtotphysZ availphysZtotpagefZ availpagefZtotvirtZfreevirtraZavailrdrcrbr0r0r1virtual_memorysrcCsBt}|d}|d}||}t||dd}t||||ddS)z=Swap system memory as a (total, used, free, sin, sout) tuple.r2rr)rr)rxrrrsswap)rrardrcrbr0r0r1 swap_memorys rcCsPtrt|tr|jtdd}t|\}}||}t||dd}t ||||S)z'Return disk usage associated with path.strict)errorsr)r) rr~bytesdecoder rx disk_usagerr sdiskusage)rkrardrcrbr0r0r1rs rcCst|}dd|DS)zReturn disk partitions.cSsg|]}tj|qSr0)r sdiskpart).0xr0r0r1 sz#disk_partitions..)rxdisk_partitions)allrawlistr0r0r1rs rcCs<t\}}}tddttD}t||||j|jS)z)Return system CPU times as a named tuple.cSsg|] }t|qSr0)sum)rnr0r0r1r szcpu_times..)rx cpu_timesrZzip per_cpu_timesr^r_)r[r\r]Z percpu_summedr0r0r1rsrcCs>g}x4tD](\}}}}}t|||||}||qW|S)z6Return system per-CPU times as a list of named tuples.)rxrrZappend)retr[r\r]r^r_itemr0r0r1r%s rcCstS)z0Return the number of logical CPUs in the system.)rxcpu_count_logicalr0r0r0r1r.srcCstS)z6Return the number of physical CPU cores in the system.)rxZcpu_count_physr0r0r0r1cpu_count_physical3srcCs$t\}}}}d}t||||S)zReturn CPU statistics.r)rx cpu_statsr scpustats)rE interruptsZdpcssyscallssoft_interruptsr0r0r1r8s rcCs(t\}}d}tt||t|gS)zMReturn CPU frequency. On Windows per-cpu frequency is not supported. g)rxcpu_freqrscpufreqfloat)currZmax_Zmin_r0r0r1r@s rFcCs*tstdat}tdd|DS)z~Return the number of processes in the system run queue averaged over the last 1, 5, and 15 minutes respectively as a tupleTcSsg|]}t|dqS)r2)round)rloadr0r0r1rWszgetloadavg..)_loadavg_inititializedrxZinit_loadavg_counter getloadavgtuple)Z raw_loadsr0r0r1rLs rc Cs|tkr(td|dddtDft|\}}t|||}t}xL|D]D}|\}}} } } } } t||| | | | t|dkr| ndd}||qNWt |S)zReturn socket connections. If pid == -1 return system-wide connections (as opposed to connections opened by one process only). z+invalid %r kind argument; choose between %sz, cSsg|] }t|qSr0)repr)rrr0r0r1resz#net_connections..r*N)pid) r ValueErrorrvrxnet_connectionssetr TCP_STATUSESaddlist)kind_pidZfamiliestypesrrrfdfamtypeladdrraddrstatusrntr0r0r1r_s  rcCs|i}t}xj|D]^\}}ts@t|ts8tt|t|}|\}}}}t t dr`t |}t ||||||<qW|S)z)Get NIC stats (isup, duplex, speed, mtu). NicDuplex) rx net_if_statsitemsrr~rAssertionErrorrrhasattrrr snicstats)rZrawdictnamerisupduplexspeedmtur0r0r1rqs   rcCst}tdd|DS)zsReturn network I/O statistics for every network interface installed on the system as a dict of raw tuples. cSsg|]\}}t||fqSr0)r)rkvr0r0r1rsz#net_io_counters..)rxnet_io_countersdictr)rr0r0r1rsrcCs<g}x2tD]&}t|}t|d|d<||qW|S)z,Return the addresses associated to each NIC.r)rx net_if_addrsrrr)rrr0r0r1rs rcCsdt\}}}}|dk}t|d@}t|d@}|r8dS|s@|rHtj}n|dkrVtj}t|||S)zReturn battery information.rr6Nr*)rxsensors_batteryboolrPOWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNsbattery)Z acline_statusflagsrbsecsleft power_pluggedZ no_batteryZchargingr0r0r1rs  rcCs,tt}t|tdkr tS|a|SdS)z:The system boot time expressed in seconds since the epoch.rN)rrx boot_timeabs _last_btime)rr0r0r1rs  rcCsLg}t}x:|D]2}|\}}}t|}t|d||d}||qW|S)z:Return currently connected users as a list of namedtuples.N)rxusersrrsuserr)retlistrrr[hostnameZtstamprr0r0r1rs  rccs.x(tD]\}}tt|t|Vq WdS)z*Yields a list of WindowsService instances.N)rxZwinservice_enumerateWindowsServicer)r display_namer0r0r1r!scCst|d}|d|_|S)zBOpen a Windows service and return it as a WindowsService instance.Nr)r _query_config _display_name)rZservicer0r0r1r"s c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ e j ddZ ddZddZddZddZddZddZddZd d!Zd"d#Zd$S)%rz(Represents an installed Windows service.cCs||_||_dS)N)_namer)selfrrr0r0r1__init__szWindowsService.__init__cCs d|j|jf}d|jj|fS)Nz(name=%r, display_name=%r)z%s%s)rr __class__r-)rdetailsr0r0r1__str__szWindowsService.__str__cCsd|t|fS)Nz <%s at %s>)rid)rr0r0r1__repr__szWindowsService.__repr__cCst|tstS|j|jkS)N)r~rNotImplementedr)rotherr0r0r1__eq__s zWindowsService.__eq__cCs ||k S)Nr0)rrr0r0r1__ne__szWindowsService.__ne__c CsH|t|j\}}}}WdQRXtt|t|t|t|dS)N)rbinpathusername start_type)_wrap_exceptionsrxZwinservice_query_configrrr)rrrrrr0r0r1rs zWindowsService._query_configc Cs<|t|j\}}WdQRX|dkr0d}t||dS)Nr)rr)rrxZwinservice_query_statusrr)rrrr0r0r1 _query_statuss  zWindowsService._query_statusc cs~y dVWnntk rx}zPt|r|}||||d<||d<||d<|S)zUUtility method retrieving all the information above as a dictionary. rrr)rupdaterrrr)rdr0r0r1as_dictPs    zWindowsService.as_dictN)r-r.r/__doc__rrrrrrr contextlibcontextmanagerrrrrrrrrrrr0r0r0r1rs$ rcCs<t|tst||jtjtjfkp:t|ddtjtj fkS)z*Return True if this is a permission error.rr*) r~rrerrnoEPERMEACCESgetattrrxZERROR_ACCESS_DENIEDZERROR_PRIVILEGE_NOT_HELD)excr0r0r1rsrcCsFt|tst|t|r&t||dS|jtjkr>t||dS|dS)z3Convert OSError into NoSuchProcess or AccessDenied.)rrN)r~rrrrrZESRCHr)rrrr0r0r1convert_oserrors    rcstfdd}|S)zDDecorator which converts OSError into NoSuchProcess or AccessDenied.c sJy|f||Stk rD}zt||j|jdWdd}~XYnXdS)N)rr)rrrr)rargskwargsr)funr0r1wrappersz wrap_exceptions..wrapper) functoolswraps)r r r0)r r1wrap_exceptionssr cstfdd}|S)zWorkaround for https://github.com/giampaolo/psutil/issues/875. See: https://stackoverflow.com/questions/4457745#4457745 c sd}d}xt|D]d}y|f||Stk rt}z0|}|jtkrbt|t|dd}wnWdd}~XYqXqWd||f}t|j|j |ddS)Ng-C6?!r2g{Gz?zI%s retried %s times, converted to AccessDenied as it's still returning %r)rrr) r WindowsErrorrERROR_PARTIAL_COPYtimesleepminrrr) rrrdelaytimesr_rr)r r0r1r s   z)retry_error_partial_copy..wrapper)r r )r r r0)r r1retry_error_partial_copysrc@seZdZdZddddgZddZdd Zd d Zed d Z ddZ e eddZ e e ddZe e ddZddZddZe ddZe ddZddZe d d!Ze d"d#Ze dPd%d&Ze d'd(Ze d)d*Ze d+d,Ze d-d.Ze d/d0Ze d1d2Ze d3d4Ze e d5d6Ze d7d8Z e dQd:d;Z!e dd?Z#e d@dAZ$e dBdCZ%e dDdEZ&e dFdGZ'e dHdIZ(e dJdKZ)e dLdMZ*e dNdOZ+d$S)RProcessz1Wrapper class around underlying C implementation.rr_ppid_cachecCs||_d|_d|_dS)N)rrr)rrr0r0r1rszProcess.__init__cCs|j||j|dS)N) _proc_infocache_activateexe)rr0r0r1 oneshot_enters zProcess.oneshot_entercCs|j||j|dS)N)rcache_deactivater)rr0r0r1 oneshot_exits zProcess.oneshot_exitcCs$t|j}t|ttks t|S)zOReturn multiple information about this process as a raw tuple. )rxZ proc_inforry pinfo_mapr)rrr0r0r1rs zProcess._proc_infocCs,|jdkrdS|jdkrdStj|S)zbReturn process name, which on Windows is always the final part of the executable. rzSystem Idle Processr System)rrzrkbasenamer)rr0r0r1rs   z Process.namec Cstr`yt|j}Wqltk r\}z*|jdkrJtd|t|j|jWdd}~XYqlXn t|j}t sxt |}| drt |S|S)Nz%r forced into AccessDeniedru) PYPYrxZproc_exerrrrrrrr startswithr})rrrr0r0r1rs    z Process.exec Cstjtjkrbytj|jdd}Wqrtk r^}z t|rLtj|jdd}nWdd}~XYqrXntj|jdd}trz|Sdd|DSdS)NT)Zuse_pebFcSsg|] }t|qSr0)r)rr{r0r0r1rsz#Process.cmdline..)rxZWINVERZ WINDOWS_8_1Z proc_cmdlinerrrr)rrrr0r0r1cmdlines zProcess.cmdlinecCs6t|j}|r*ts*t|ts*tt|tt |S)N) rxZ proc_environrrr~rrrrr)rZustrr0r0r1environs zProcess.environcCs4y t|jStk r.t|j|jYnXdS)N)ppid_maprKeyErrorrr)rr0r0r1ppid!s z Process.ppidcCsy t|jStk r}z~t|r|}|td|td|td|td|td|td|td|td|td |td f SWdd}~XYnXdS) NrPrQrRrSrTrUrVrWrXrY)rxZproc_memory_inforrrrr!)rrinfor0r0r1_get_raw_meminfo's           zProcess._get_raw_meminfocCs(|}|d}|d}t||f|S)Nr2r5)r-re)rtrfrgr0r0r1 memory_info=szProcess.memory_infocCs,|}t|j}|t9}t||fS)N)r/rxZproc_memory_ussrrrh)rZ basic_memrir0r0r1memory_full_infoGs  zProcess.memory_full_infoc csyt|j}Wn2tk rB}zt||j|jWdd}~XYnBXx>|D]6\}}}}t|}tsjt|}t |}||||fVqJWdS)N) rxZproc_memory_mapsrrrrr}rrhex)rrawraddrZpermrkrfr0r0r1 memory_mapsNs"zProcess.memory_mapscCs t|jS)N)rx proc_killr)rr0r0r1kill]sz Process.killcCsT|tjkrt|jn8|ttdtttdtfkrHt|j|nt ddS)NZ CTRL_C_EVENTZCTRL_BREAK_EVENTzPonly SIGTERM, CTRL_C_EVENT and CTRL_BREAK_EVENT signals are supported on Windows) signalSIGTERMrxr5rrobjectrzr6r)rsigr0r0r1 send_signalas zProcess.send_signalNcCs|dkrtj}n t|d}ttdtj}|dk r<||nd}yt|j|}Wn>tjk rxt||j|jYntj k rd}YnXd}xJt |js|S|r||krt||j|jdt |t |dd}qWdS)Ni monotonicg-C6?)rrr2g{Gz?) rxZINFINITEintrrZ proc_waitrrrZTimeoutAbandoned pid_existsrr)rtimeoutZ cext_timeoutZtimerZstop_atZ exit_coderr0r0r1waitns&    z Process.waitcCs2|jdkrdSt|j\}}t|dt|S)N)rr zNT AUTHORITY\SYSTEMru)rrxZ proc_usernamer)rdomainr[r0r0r1rs zProcess.usernamec CsXyt|j\}}}|Stk rR}zt|r@|tdSWdd}~XYnXdS)NrH)rx proc_timesrrrrr!)rr[r\createdrr0r0r1rHszProcess.create_timecCs|tdS)NrI)rr!)rr0r0r1rIszProcess.num_threadscCs@t|j}g}x*|D]"\}}}t|||}||qW|S)N)rxZ proc_threadsrrpthreadr)rrrZ thread_idutimeZstimentupler0r0r1threadss  zProcess.threadsc Cstyt|j\}}}WnLtk rb}z.t|s2|}|td}|td}Wdd}~XYnXt||ddS)NrFrGg) rxrBrrrrr!r pcputimes)rr[r\rCrr,r0r0r1rs zProcess.cpu_timescCst|jddS)NT)rxproc_suspend_or_resumer)rr0r0r1suspendszProcess.suspendcCst|jddS)NF)rxrIr)rr0r0r1resumeszProcess.resumecCs4|jdkrt|j|jt|j}ttj|S)N)rr ) rrrrxZproc_cwdrrzrknormpath)rrkr0r0r1cwds  z Process.cwdcCsh|jdkrgSt}t|j}x>|D]6}t|}t|r&tsFt|}t |d}| |q&Wt |S)N)rr r*) rrrxZproc_open_filesr}r rrr popenfilerr)rrZraw_file_names_filerFr0r0r1 open_filess    zProcess.open_filesinetcCst||jdS)N)r)rr)rrr0r0r1 connectionsszProcess.connectionscCs t|j}tdk rt|}|S)N)rxZproc_priority_getrenumr,)rvaluer0r0r1nice_gets zProcess.nice_getcCst|j|S)N)rxZproc_priority_setr)rrTr0r0r1nice_setszProcess.nice_setcCs t|j}tdk rt|}|S)N)rxZproc_io_priority_getrrSr3)rrr0r0r1 ionice_gets zProcess.ionice_getcCs:|r td|ttttfkr(td|t|j|dS)Nz&value argument not accepted on Windowsz%s is not a valid priority) TypeErrorr#r$r%r&rrxZproc_io_priority_setr)rioclassrTr0r0r1 ionice_sets  zProcess.ionice_setc Csyt|j}Wnttk r}zVt|s,|}|td|td|td|td|td|tdf}Wdd}~XYnXt|S)NrJrKrLrMrNrO)rxZproc_io_countersrrrrr!rn)rrrr,r0r0r1 io_counters s      zProcess.io_counterscCs t|j}|rtjStjSdS)N)rxZproc_is_suspendedrrSTATUS_STOPPEDSTATUS_RUNNING)r suspendedr0r0r1rs zProcess.statuscCsdd}t|j}||S)NcsfddtdDS)Ncsg|]}d|>@r|qS)rr0)ri)rr0r1r'szBProcess.cpu_affinity_get..from_bitmask..@)r)rr0)rr1 from_bitmask&sz.Process.cpu_affinity_get..from_bitmask)rxZproc_cpu_affinity_getr)rrabitmaskr0r0r1cpu_affinity_get$s zProcess.cpu_affinity_getcCsrdd}tttt}x<|D]4}||kr t|ttfsHtd|q td|q W||}t |j |dS)NcSs2|std|d}x|D]}|d|O}qW|S)Nzinvalid argument %rrr2)r)Zlsoutbr0r0r1 to_bitmask-s   z,Process.cpu_affinity_set..to_bitmaskz&invalid CPU %r; an integer is requiredzinvalid CPU %r) rrryrr~r=rrXrrxZproc_cpu_affinity_setr)rrTrfZallcpusZcpurbr0r0r1cpu_affinity_set+s   zProcess.cpu_affinity_setc CsNy t|jStk rH}zt|r6|tdSWdd}~XYnXdS)NrD)rxZproc_num_handlesrrrrr!)rrr0r0r1rDDs  zProcess.num_handlescCs|td}t|dS)NrEr)rr!rpctxsw)rrEr0r0r1num_ctx_switchesMszProcess.num_ctx_switches)N)rQ),r-r.r/r __slots__rrr r rrr rrr'r(r+r-r/r0r4r6r;r@rrHrIrGrrJrKrMrPrRrUrVrWrZr[rrcrgrDrir0r0r0r1rsX       *              r)r*)NN)rrrr rzr7sysr collectionsrrrrrrr r r r r rrrr_compatrrrrrrrrrrrrrx ImportErrorrrlowerr&getwindowsversionr RuntimeError version_inforSZ__extra__all__r'rbuiltin_module_namesr%r(IntEnumr+ZMIB_TCP_STATE_ESTABCONN_ESTABLISHEDZMIB_TCP_STATE_SYN_SENT CONN_SYN_SENTZMIB_TCP_STATE_SYN_RCVD CONN_SYN_RECVZMIB_TCP_STATE_FIN_WAIT1CONN_FIN_WAIT1ZMIB_TCP_STATE_FIN_WAIT2CONN_FIN_WAIT2ZMIB_TCP_STATE_TIME_WAITCONN_TIME_WAITZMIB_TCP_STATE_CLOSED CONN_CLOSEZMIB_TCP_STATE_CLOSE_WAITCONN_CLOSE_WAITZMIB_TCP_STATE_LAST_ACK CONN_LAST_ACKZMIB_TCP_STATE_LISTEN CONN_LISTENZMIB_TCP_STATE_CLOSING CONN_CLOSINGZMIB_TCP_STATE_DELETE_TCBZPSUTIL_CONN_NONE CONN_NONErr,globalsr __members__r#r$r%r&r3rr!rZr`re_fieldsrhrjrvrlrnr}rrrrZdisk_io_countersrrrrrrrrrrrrrrrrrrr!r"r9rZpidsr>r)rrr rrr0r0r0r1s8                                              *