B Œ=Ý_VDã@sÖdZddlZddlZddlZddlZddlmZddlmZddlm 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� ZCeBddddddddd�ZDedd d!d"d#gƒZEed$d%d&d'd(d)d*d+d,gƒZFed-d.d/d0d1gƒZGed2eGjHd3ƒZId4d5„ZJd6d7„ZKd8d9„ZLd:d;„ZMdd?„ZOd@dA„ZPdBdC„ZQe jRZRe jSZSd\dEdF„ZTdGdH„ZUe jVZVe jWZWd]dJdK„ZXdLdM„ZYdNdO„ZZdPdQ„Z[dRdS„Z\e j]Z]dTdU„Z^dVdW„Z_ej`dXdY„ƒZaGdZd[„d[ebƒZcdS)^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éééééééé é ) ÚppidÚruidÚeuidÚsuidÚrgidÚegidÚsgidÚttynrÚctimeÚstatusÚname)ÚcpuutimeÚcpustimeÚrssÚvmsÚpfaultsÚpageinsÚ numthreadsÚvolctxswÚ scputimesÚuserÚniceÚsystemÚidleÚsvmemÚtotalZ availableÚpercentÚusedÚfreeÚactiveÚinactiveÚwiredÚpmemr)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 speculativeZavailr7r6©rAú@/opt/alt/python37/lib64/python3.7/site-packages/psutil/_psosx.pyÚvirtual_memoryps rCcCs4t ¡\}}}}}t||dd�}t ||||||¡S)z=Swap system memory as a (total, used, free, sin, sout) tuple.r)r?)r@Zswap_memrrÚsswap)r5r7r8ÚsinÚsoutr6rArArBÚ swap_memory�srGcCst ¡\}}}}t||||ƒS)z(Return system CPU times as a namedtuple.)r@Ú cpu_timesr/)r0r1r2r3rArArBrH�srHcCs>g}x4t ¡D](}|\}}}}t||||ƒ}| |¡qW|S)z(Return system CPU times as a named tuple)r@Ú per_cpu_timesr/Úappend)ÚretZcpu_tr0r1r2r3ÚitemrArArBrI“s  rIcCst ¡S)z0Return the number of logical CPUs in the system.)r@Úcpu_count_logicalrArArArBrM�srMcCst ¡S)z1Return the number of physical CPUs in the system.)r@Zcpu_count_physrArArArBÚcpu_count_physical¢srNcCs"t ¡\}}}}}t ||||¡S)N)r@Ú cpu_statsrÚ scpustats)Ú ctx_switchesÚ interruptsÚsoft_interruptsÚsyscallsZtrapsrArArBrO§srOcCst ¡\}}}t |||¡gS)z¾Return 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_freqrÚscpufreq)ÚcurrZmin_Zmax_rArArBrU®srUFc Cszg}t ¡}xh|D]`}|\}}}}|dkr.d}|sLtj |¡rtj |¡sLqd}} t |||||| ¡} | | ¡qW|S)z8Return mounted disk partitions as a list of namedtuples.ZnoneÚN) r@Údisk_partitionsÚosÚpathÚisabsÚexistsrÚ sdiskpartrJ) ÚallÚretlistÚ partitionsÚ partitionÚdeviceÚ mountpointÚfstypeÚoptsÚmaxfileÚmaxpathÚntuplerArArBrYÁs   rYcCsbyt ¡\}}}Wntk r&dSX|dk}|rt|j|j|jƒ‚nt|j|jƒ‚YnHtk rpt|j|jƒ‚Yn(t j k r–t|j|j|jƒ‚YnXdS)N) rr›rzrÚ_nameÚ_ppidr rrr@ZZombieProcessError)ÚselfÚargsÚkwargs)ÚfunrArBÚwrapperUs z wrap_exceptions..wrapper)Ú functoolsÚwraps)r¡r¢rA)r¡rBÚwrap_exceptionsQs r¥c cs¢y dVWn’ttfk rœ}zpt|tƒs6|jtjkrŠy | ¡}Wntk rZ|‚YqŒX|tjkrzt |j |j |j ƒ‚qŒt |j |j ƒ‚n‚Wdd}~XYnXdS)zýThere 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Ú isinstancer‚ZESRCHr%r rÚ STATUS_ZOMBIErrzrœr�r)ÚprocrŠr%rArArBÚ catch_zombiees    rªc@sleZdZdZddddgZdd„Zeedd „ƒƒZeed d „ƒƒZ d d „Z dd„Z edd„ƒZ edd„ƒZ edd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZed d!„ƒZed"d#„ƒZed$d%„ƒZed&d'„ƒZed(d)„ƒZed*d+„ƒZed,d-„ƒZed.d/„ƒZed@d1d2„ƒZed3d4„ƒZedAd6d7„ƒZed8d9„ƒZed:d;„ƒZ edd?„ƒZ"d5S)Bruz1Wrapper class around underlying C implementation.rzrœr�Ú_cachecCs||_d|_d|_dS)N)rzrœr�)ržrzrArArBÚ__init__„szProcess.__init__cCs$t |j¡}t|ƒttƒks t‚|S)N)r@r–rzÚlenr—ÚAssertionError)ržrKrArArBÚ_get_kinfo_proc‰s zProcess._get_kinfo_procc Cs8t|ƒ�t |j¡}WdQRXt|ƒttƒks4t‚|S)N)rªr@Zproc_pidtaskinfo_oneshotrzr­Úpidtaskinfo_mapr®)ržrKrArArBÚ_get_pidtaskinfo‘s zProcess._get_pidtaskinfocCs|j |¡|j |¡dS)N)r¯Úcache_activater±)ržrArArBÚ oneshot_enteršs zProcess.oneshot_entercCs|j |¡|j |¡dS)N)r¯Úcache_deactivater±)ržrArArBÚ oneshot_exitžs zProcess.oneshot_exitcCs(| ¡td}|dk r|St |j¡S)Nr&)r¯r—r@Z proc_namerz)ržr&rArArBr&¢sz Process.namec Cs t|ƒ�t |j¡SQRXdS)N)rªr@Zproc_exerz)ržrArArBÚexe§s z Process.exec Cs t|ƒ�t |j¡SQRXdS)N)rªr@Z proc_cmdlinerz)ržrArArBÚcmdline¬s zProcess.cmdlinec Cs$t|ƒ�tt |j¡ƒSQRXdS)N)rªrr@Z proc_environrz)ržrArArBÚenviron±s zProcess.environcCs| ¡td|_|jS)Nr)r¯r—r�)ržrArArBr¶sz Process.ppidc Cs t|ƒ�t |j¡SQRXdS)N)rªr@Zproc_cwdrz)ržrArArBÚcwd»s z Process.cwdcCs.| ¡}t |td|td|td¡S)Nrrr)r¯rÚpuidsr—)ržÚrawtuplerArArBÚuidsÀs   z Process.uidscCs.| ¡}t |td|td|td¡S)Nr r!r")r¯rrºr—)ržr»rArArBÚgidsÈs   z Process.gidscCs:| ¡td}t ¡}y||Stk r4dSXdS)Nr#)r¯r—rZget_terminal_mapÚKeyError)ržZtty_nrZtmaprArArBÚterminalÐs zProcess.terminalcCs6| ¡}t|td|td|td|tdƒS)Nr)r*r+r,)r±r<r°)ržr»rArArBÚ memory_infoÙs    zProcess.memory_infocCs"| ¡}t |j¡}t||fŽS)N)rÀr@Zproc_memory_ussrzr=)ržZ basic_memr>rArArBÚmemory_full_infoãs zProcess.memory_full_infocCs(| ¡}t |td|tddd¡S)Nr'r(g)r±rÚ pcputimesr°)ržr»rArArBrHés   zProcess.cpu_timescCs| ¡tdS)Nr$)r¯r—)ržrArArBr”òszProcess.create_timecCs| ¡td}t |d¡S)Nr.r)r±r°rÚpctxsw)ržZvolrArArBÚnum_ctx_switchesöszProcess.num_ctx_switchescCs| ¡tdS)Nr-)r±r°)ržrArArBÚ num_threadsþszProcess.num_threadsc Csf|jdkrgSg}t|ƒ�t |j¡}WdQRXx.|D]&\}}t|ƒr8t ||¡}| |¡q8W|S)Nr)rzrªr@Zproc_open_filesr rÚ popenfilerJ)ržÚfilesr�r[ÚfdrirArArBÚ open_filess   zProcess.open_filesrsc Csœ|tkr(td|d dd„tDƒ¡fƒ‚t|\}}t|ƒ�t |j||¡}WdQRXg}x:|D]2}|\}}} } } } t||| | | | tƒ} |  | ¡qbW|S)Nz+invalid %r kind argument; choose between %sz, cSsg|] }t|ƒ‘qSrA)Úrepr)Ú.0ÚxrArArBú sz'Process.connections..) r Ú ValueErrorÚjoinrªr@Zproc_connectionsrzr Ú TCP_STATUSESrJ)ržryZfamiliesÚtypesr�rKrLrÈÚfamÚtypeÚladdrÚraddrr%r“rArArBrvs   zProcess.connectionsc Cs.|jdkrdSt|ƒ�t |j¡SQRXdS)Nr)rzrªr@Z proc_num_fds)ržrArArBÚnum_fdss  zProcess.num_fdsNcCst |j||j¡S)N)rZwait_pidrzrœ)ržÚtimeoutrArArBÚwait&sz Process.waitc Cs t|ƒ�t |j¡SQRXdS)N)rªr€Ú getpriorityrz)ržrArArBÚnice_get*s zProcess.nice_getc Cs"t|ƒ�t |j|¡SQRXdS)N)rªr€Ú setpriorityrz)ržÚvaluerArArBÚnice_set/s zProcess.nice_setcCs| ¡td}t |d¡S)Nr%ú?)r¯r—Ú PROC_STATUSESÚget)ržÚcoderArArBr%4szProcess.statuscCs@t |j¡}g}x*|D]"\}}}t |||¡}| |¡qW|S)N)r@Z proc_threadsrzrÚpthreadrJ)ržr�r`Z thread_idÚutimeZstimerirArArBÚthreads:s  zProcess.threads)rs)N)#Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__r¬r¥r r¯r±r³rµr&r¶r·r¸rr¹r¼r½r¿rÀrÁrHr”rÄrÅrÉrvrÖrØrÚrÝr%rärArArArBrusD                    ru)F)rs)drèÚ contextlibr‚r£rZÚ collectionsrrXrrrr@rr€rr r r r r rrrÚ_compatrrZ__extra__all__Z getpagesizeZPAGESIZEZAF_LINKZTCPS_ESTABLISHEDÚCONN_ESTABLISHEDZ TCPS_SYN_SENTÚ CONN_SYN_SENTZTCPS_SYN_RECEIVEDÚ CONN_SYN_RECVZTCPS_FIN_WAIT_1ÚCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ÚCONN_FIN_WAIT2ZTCPS_TIME_WAITÚCONN_TIME_WAITZ TCPS_CLOSEDÚ CONN_CLOSEZTCPS_CLOSE_WAITÚCONN_CLOSE_WAITZ TCPS_LAST_ACKÚ CONN_LAST_ACKZ TCPS_LISTENÚ CONN_LISTENZ TCPS_CLOSINGÚ CONN_CLOSINGZPSUTIL_CONN_NONEÚ CONN_NONErÐZSIDLÚ STATUS_IDLEZSRUNÚSTATUS_RUNNINGZSSLEEPÚSTATUS_SLEEPINGZSSTOPÚSTATUS_STOPPEDr˜r¨rßÚdictr—r°r/r4r<Ú_fieldsr=rCrGrHrIrMrNrOrUÚ disk_usageZdisk_io_countersrYrlr~Z net_if_addrsr|r‹rŒrŽrtZ pid_existsr›r¥ÚcontextmanagerrªÚobjectrurArArArBÚs¶