JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrB =_VD@sdZddlZddlZddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZgZe Ze jZe jeje j ej!e j"ej#e j$ej%e j&ej'e j(ej)e j*ej+e j,ej-e j.ej/e j0ej1e j2ej3e j4ej5i Z6e j7ej8e j9ej:e j;eje j?ej@iZAeBdddddddddddd ZCeBdddddddddZDedd d!d"d#gZEed$d%d&d'd(d)d*d+d,gZFed-d.d/d0d1gZGed2eGjHd3ZId4d5ZJd6d7ZKd8d9ZLd:d;ZMdd?ZOd@dAZPdBdCZQe jRZRe jSZSd\dEdFZTdGdHZUe jVZVe jWZWd]dJdKZXdLdMZYdNdOZZdPdQZ[dRdSZ\e j]Z]dTdUZ^dVdWZ_ej`dXdYZaGdZd[d[ebZcdS)^zmacOS platform implementation.N) namedtuple)_common)_psposix) _psutil_osx) _psutil_posix) AccessDenied) conn_tmap)conn_to_ntuple) isfile_strict)memoize_when_activated) NoSuchProcess)parse_environ_block) usage_percent) ZombieProcess)PermissionError)ProcessLookupError ) ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins numthreadsvolctxsw scputimesusernicesystemidlesvmemtotalZ availablepercentusedfreeactiveinactivewiredpmemr)r*r+r,pfullmem)ussc CsTt\}}}}}}||}||}||8}t|||dd}t||||||||S)z&System virtual memory as a namedtuple.r)round_)cextZ virtual_memrr4) r5r9r:r;r8Z speculativeZavailr7r6rA@/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psosx.pyvirtual_memoryps rCcCs4t\}}}}}t||dd}t||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.r)r?)r@Zswap_memrrsswap)r5r7r8sinsoutr6rArArB swap_memorysrGcCst\}}}}t||||S)z(Return system CPU times as a namedtuple.)r@ cpu_timesr/)r0r1r2r3rArArBrHsrHcCs>g}x4tD](}|\}}}}t||||}||qW|S)z(Return system CPU times as a named tuple)r@ per_cpu_timesr/append)retZcpu_tr0r1r2r3itemrArArBrIs  rIcCstS)z0Return the number of logical CPUs in the system.)r@cpu_count_logicalrArArArBrMsrMcCstS)z1Return the number of physical CPUs in the system.)r@Zcpu_count_physrArArArBcpu_count_physicalsrNcCs"t\}}}}}t||||S)N)r@ cpu_statsr scpustats) ctx_switches interruptssoft_interruptssyscallsZtrapsrArArBrOsrOcCst\}}}t|||gS)zReturn CPU frequency. On macOS per-cpu frequency is not supported. Also, the returned frequency never changes, see: https://arstechnica.com/civis/viewtopic.php?f=19&t=465002 )r@cpu_freqrscpufreq)currZmin_Zmax_rArArBrUsrUFc Cszg}t}xh|D]`}|\}}}}|dkr.d}|sLtj|rtj|sLqd}} t|||||| } || qW|S)z8Return mounted disk partitions as a list of namedtuples.ZnoneN) r@disk_partitionsospathisabsexistsr sdiskpartrJ) allretlist partitions partitiondevice mountpointfstypeoptsmaxfilemaxpathntuplerArArBrYs   rYcCsbyt\}}}Wntk r&dSX|dk}|rt|j|j|jnt|j|jYnHtk rpt|j|jYn(t j k rt|j|j|jYnXdS)N) rrrzr_name_ppidr rrr@ZZombieProcessError)selfargskwargs)funrArBwrapperUs z wrap_exceptions..wrapper) functoolswraps)rrrA)rrBwrap_exceptionsQs rc csy dVWnttfk r}zpt|ts6|jtjkry |}Wntk rZ|YqX|tjkrzt |j |j |j qt |j |j nWdd}~XYnXdS)zThere are some poor C APIs which incorrectly raise ESRCH when the process is still alive or it's a zombie, or even RuntimeError (those who don't set errno). This is here in order to solve: https://github.com/giampaolo/psutil/issues/1044 N)r RuntimeError isinstancerZESRCHr%r r STATUS_ZOMBIErrzrrr)procrr%rArArB catch_zombiees    rc@sleZdZdZddddgZddZeedd Zeed d Z d d Z ddZ eddZ eddZ eddZeddZeddZeddZeddZeddZed d!Zed"d#Zed$d%Zed&d'Zed(d)Zed*d+Zed,d-Zed.d/Zed@d1d2Zed3d4ZedAd6d7Zed8d9Zed:d;Z edd?Z"d5S)Bruz1Wrapper class around underlying C implementation.rzrr_cachecCs||_d|_d|_dS)N)rzrr)rrzrArArB__init__szProcess.__init__cCs$t|j}t|ttks t|S)N)r@rrzlenrAssertionError)rrKrArArB_get_kinfo_procs zProcess._get_kinfo_procc Cs8t|t|j}WdQRXt|ttks4t|S)N)rr@Zproc_pidtaskinfo_oneshotrzrpidtaskinfo_mapr)rrKrArArB_get_pidtaskinfos zProcess._get_pidtaskinfocCs|j||j|dS)N)rcache_activater)rrArArB oneshot_enters zProcess.oneshot_entercCs|j||j|dS)N)rcache_deactivater)rrArArB oneshot_exits zProcess.oneshot_exitcCs(|td}|dk r|St|jS)Nr&)rrr@Z proc_namerz)rr&rArArBr&sz Process.namec Cs t|t|jSQRXdS)N)rr@Zproc_exerz)rrArArBexes z Process.exec Cs t|t|jSQRXdS)N)rr@Z proc_cmdlinerz)rrArArBcmdlines zProcess.cmdlinec Cs$t|tt|jSQRXdS)N)rrr@Z proc_environrz)rrArArBenvirons zProcess.environcCs|td|_|jS)Nr)rrr)rrArArBrsz Process.ppidc Cs t|t|jSQRXdS)N)rr@Zproc_cwdrz)rrArArBcwds z Process.cwdcCs.|}t|td|td|tdS)Nrrr)rrpuidsr)rrawtuplerArArBuidss   z Process.uidscCs.|}t|td|td|tdS)Nr r!r")rrrr)rrrArArBgidss   z Process.gidscCs:|td}t}y||Stk r4dSXdS)Nr#)rrrZget_terminal_mapKeyError)rZtty_nrZtmaprArArBterminals zProcess.terminalcCs6|}t|td|td|td|tdS)Nr)r*r+r,)rr<r)rrrArArB memory_infos    zProcess.memory_infocCs"|}t|j}t||fS)N)rr@Zproc_memory_ussrzr=)rZ basic_memr>rArArBmemory_full_infos zProcess.memory_full_infocCs(|}t|td|tdddS)Nr'r(g)rr pcputimesr)rrrArArBrHs   zProcess.cpu_timescCs|tdS)Nr$)rr)rrArArBrszProcess.create_timecCs|td}t|dS)Nr.r)rrrpctxsw)rZvolrArArBnum_ctx_switchesszProcess.num_ctx_switchescCs|tdS)Nr-)rr)rrArArB num_threadsszProcess.num_threadsc Csf|jdkrgSg}t|t|j}WdQRXx.|D]&\}}t|r8t||}||q8W|S)Nr)rzrr@Zproc_open_filesr r popenfilerJ)rfilesrr[fdrirArArB open_filess   zProcess.open_filesrsc Cs|tkr(td|dddtDft|\}}t|t|j||}WdQRXg}x:|D]2}|\}}} } } } t||| | | | t} | | qbW|S)Nz+invalid %r kind argument; choose between %sz, cSsg|] }t|qSrA)repr).0xrArArB sz'Process.connections..) r ValueErrorjoinrr@Zproc_connectionsrzr TCP_STATUSESrJ)rryZfamiliestypesrrKrLrfamtypeladdrraddrr%rrArArBrvs   zProcess.connectionsc Cs.|jdkrdSt|t|jSQRXdS)Nr)rzrr@Z proc_num_fds)rrArArBnum_fdss  zProcess.num_fdsNcCst|j||jS)N)rZwait_pidrzr)rtimeoutrArArBwait&sz Process.waitc Cs t|t|jSQRXdS)N)rr getpriorityrz)rrArArBnice_get*s zProcess.nice_getc Cs"t|t|j|SQRXdS)N)rr setpriorityrz)rvaluerArArBnice_set/s zProcess.nice_setcCs|td}t|dS)Nr%?)rr PROC_STATUSESget)rcoderArArBr%4szProcess.statuscCs@t|j}g}x*|D]"\}}}t|||}||qW|S)N)r@Z proc_threadsrzrpthreadrJ)rrr`Z thread_idutimeZstimerirArArBthreads:s  zProcess.threads)rs)N)#__name__ __module__ __qualname____doc__ __slots__rrr rrrrr&rrrrrrrrrrrHrrrrrvrrrrr%rrArArArBrusD                    ru)F)rs)dr contextlibrrrZ collectionsrrXrrrr@rrrr r r r r rrr_compatrrZ__extra__all__Z getpagesizeZPAGESIZEZAF_LINKZTCPS_ESTABLISHEDCONN_ESTABLISHEDZ TCPS_SYN_SENT CONN_SYN_SENTZTCPS_SYN_RECEIVED CONN_SYN_RECVZTCPS_FIN_WAIT_1CONN_FIN_WAIT1ZTCPS_FIN_WAIT_2CONN_FIN_WAIT2ZTCPS_TIME_WAITCONN_TIME_WAITZ TCPS_CLOSED CONN_CLOSEZTCPS_CLOSE_WAITCONN_CLOSE_WAITZ TCPS_LAST_ACK CONN_LAST_ACKZ TCPS_LISTEN CONN_LISTENZ TCPS_CLOSING CONN_CLOSINGZPSUTIL_CONN_NONE CONN_NONErZSIDL STATUS_IDLEZSRUNSTATUS_RUNNINGZSSLEEPSTATUS_SLEEPINGZSSTOPSTATUS_STOPPEDrrrdictrrr/r4r<_fieldsr=rCrGrHrIrMrNrOrU disk_usageZdisk_io_countersrYrlr~Z net_if_addrsr|rrrrtZ pid_existsrrcontextmanagerrobjectrurArArArBs