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 ZCeBdddddddddZDedd 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_memrrZsswap)r5r7r8ZsinZsoutr6rArArBÚ swap_memorysrDcCst ¡\}}}}t||||ƒS)z(Return system CPU times as a namedtuple.)r@Ú cpu_timesr/)r0r1r2r3rArArBrEsrEcCs>g}x4t ¡D](}|\}}}}t||||ƒ}| |¡qW|S)z(Return system CPU times as a named tuple)r@Ú per_cpu_timesr/Úappend)ÚretZcpu_tr0r1r2r3ÚitemrArArBrF“s  rFcCst ¡S)z0Return the number of logical CPUs in the system.)r@Úcpu_count_logicalrArArArBrJsrJcCst ¡S)z1Return the number of physical CPUs in the system.)r@Zcpu_count_physrArArArBÚcpu_count_physical¢srKcCs"t ¡\}}}}}t ||||¡S)N)r@Ú cpu_statsrZ scpustats)Z ctx_switchesZ interruptsZsoft_interruptsZsyscallsZtrapsrArArBrL§srLcCst ¡\}}}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_freqrZscpufreq)ZcurrZmin_Zmax_rArArBrM®srMFc 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ÚexistsrZ sdiskpartrG) ÚallÚretlistZ partitionsÚ partitionZdeviceZ mountpointZfstypeZoptsZmaxfileZmaxpathÚntuplerArArBrOÁs   rOcCsbyt ¡\}}}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{rbrÚ_nameÚ_ppidr rrr@ZZombieProcessError)ÚselfÚargsÚkwargs)ÚfunrArBÚwrapperUs z wrap_exceptions..wrapper)Ú functoolsÚwraps)rr‚rA)rrBÚ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)riÚ RuntimeErrorÚ isinstancerjZESRCHr%r rÚ STATUS_ZOMBIErrbr|r}r)Úprocrmr%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)Br^z1Wrapper class around underlying C implementation.rbr|r}Ú_cachecCs||_d|_d|_dS)N)rbr|r})r~rbrArArBÚ__init__„szProcess.__init__cCst |j¡}|S)N)r@rvrb)r~rHrArArBÚ_get_kinfo_proc‰s zProcess._get_kinfo_procc Cs$t|ƒt |j¡}WdQRX|S)N)rŠr@Zproc_pidtaskinfo_oneshotrb)r~rHrArArBÚ_get_pidtaskinfo‘s zProcess._get_pidtaskinfocCs|j |¡|j |¡dS)N)rZcache_activaterŽ)r~rArArBÚ oneshot_enteršs zProcess.oneshot_entercCs|j |¡|j |¡dS)N)rZcache_deactivaterŽ)r~rArArBÚ oneshot_exitžs zProcess.oneshot_exitcCs(| ¡td}|dk r|St |j¡S)Nr&)rrwr@Z proc_namerb)r~r&rArArBr&¢sz Process.namec Cs t|ƒt |j¡SQRXdS)N)rŠr@Zproc_exerb)r~rArArBÚexe§s z Process.exec Cs t|ƒt |j¡SQRXdS)N)rŠr@Z proc_cmdlinerb)r~rArArBÚcmdline¬s zProcess.cmdlinec Cs$t|ƒtt |j¡ƒSQRXdS)N)rŠrr@Z proc_environrb)r~rArArBÚenviron±s zProcess.environcCs| ¡td|_|jS)Nr)rrwr})r~rArArBr¶sz Process.ppidc Cs t|ƒt |j¡SQRXdS)N)rŠr@Zproc_cwdrb)r~rArArBÚcwd»s z Process.cwdcCs.| ¡}t |td|td|td¡S)Nrrr)rrÚpuidsrw)r~ÚrawtuplerArArBÚuidsÀs   z Process.uidscCs.| ¡}t |td|td|td¡S)Nr r!r")rrr•rw)r~r–rArArBÚgidsÈs   z Process.gidscCs:| ¡td}t ¡}y||Stk r4dSXdS)Nr#)rrwrZget_terminal_mapÚKeyError)r~Ztty_nrZtmaprArArBÚterminalÐs zProcess.terminalcCs6| ¡}t|td|td|td|tdƒS)Nr)r*r+r,)rŽr<Úpidtaskinfo_map)r~r–rArArBÚ memory_infoÙs    zProcess.memory_infocCs"| ¡}t |j¡}t||fŽS)N)rœr@Zproc_memory_ussrbr=)r~Z basic_memr>rArArBÚmemory_full_infoãs zProcess.memory_full_infocCs(| ¡}t |td|tddd¡S)Nr'r(g)rŽrZ pcputimesr›)r~r–rArArBrEés   zProcess.cpu_timescCs| ¡tdS)Nr$)rrw)r~rArArBrtòszProcess.create_timecCs| ¡td}t |d¡S)Nr.r)rŽr›rZpctxsw)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)rbrŠr@Zproc_open_filesr rZ popenfilerG)r~ÚfilesrrrQÚfdrWrArArBÚ open_filess   zProcess.open_filesr\c 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_connectionsrbr Ú TCP_STATUSESrG)r~raZfamiliesÚtypesrrrHrIr¡ZfamÚtypeZladdrZraddrr%rsrArArBr_s   zProcess.connectionsc Cs.|jdkrdSt|ƒt |j¡SQRXdS)Nr)rbrŠr@Z proc_num_fds)r~rArArBÚnum_fdss  zProcess.num_fdsNcCst |j||j¡S)N)rZwait_pidrbr|)r~ZtimeoutrArArBÚwait&sz Process.waitc Cs t|ƒt |j¡SQRXdS)N)rŠrhÚ getpriorityrb)r~rArArBÚnice_get*s zProcess.nice_getc Cs"t|ƒt |j|¡SQRXdS)N)rŠrhÚ setpriorityrb)r~ÚvaluerArArBÚnice_set/s zProcess.nice_setcCs| ¡td}t |d¡S)Nr%ú?)rrwÚ PROC_STATUSESÚget)r~ÚcoderArArBr%4szProcess.statuscCs@t |j¡}g}x*|D]"\}}}t |||¡}| |¡qW|S)N)r@Z proc_threadsrbrZpthreadrG)r~rrrUZ thread_idÚutimeZstimerWrArArBÚthreads:s  zProcess.threads)r\)N)#Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú __slots__rŒr…r rrŽrrr&r‘r’r“rr”r—r˜ršrœrrErtržrŸr¢r_r¬r­r¯r²r%r¸rArArArBr^sD                    r^)F)r\)dr¼Ú contextlibrjrƒrPÚ collectionsrrNrrrr@rrhrr r r r r rrrZ_compatrrZ__extra__all__Z getpagesizeZPAGESIZEZAF_LINKZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZ TCPS_SYN_SENTZ CONN_SYN_SENTZTCPS_SYN_RECEIVEDZ CONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZ TCPS_CLOSEDZ CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZ TCPS_LAST_ACKZ CONN_LAST_ACKZ TCPS_LISTENZ CONN_LISTENZ TCPS_CLOSINGZ CONN_CLOSINGZPSUTIL_CONN_NONEZ CONN_NONEr©ZSIDLZ STATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDrxrˆr´Údictrwr›r/r4r<Ú_fieldsr=rCrDrErFrJrKrLrMZ disk_usageZdisk_io_countersrOrZrfZ net_if_addrsrdrnrorqr]Z pid_existsr{r…ÚcontextmanagerrŠÚobjectr^rArArArBÚs¶