U |f?@sdZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZgZe Ze jZe jeje jej e j!ej"e j#ej$e j%ej&e j'ej(e j)ej*e j+ej,e j-ej.e j/ej0e j1ej2e j3ej4i Z5e j6ej7e j8ej9e j:ej;e jej?iZ@eAdddddddddddd ZBeAdddddddddZCedd d!d"d#gZDed$d%d&d'd(d)d*d+d,gZEed-d.d/d0d1gZFed2eFjGd3ZHd4d5ZId6d7ZJd8d9ZKd:d;ZLdd?ZNd@dAZOdBdCZPejQZQe jRZRdZdEdFZSdGdHZTe jUZUe jVZVd[dJdKZWdLdMZXdNdOZYdPdQZZdRdSZ[ej\Z\dTdUZ]dVdWZ^GdXdYdYZ_dS)\zmacOS platform implementation.N) namedtuple)_common)_psposix) _psutil_osx) _psutil_posix) AccessDenied) NoSuchProcess) ZombieProcess) conn_tmap)conn_to_ntuple) isfile_strict)memoize_when_activated)parse_environ_block) usage_percent)PermissionError)ProcessLookupError ) ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins numthreadsvolctxsw scputimesusernicesystemidlesvmemtotal availablepercentusedfreeactiveinactivewiredpmemr)r*r+r,pfullmem)ussc CsTt\}}}}}}||}||}||8}t|||dd}t||||||||S)z&System virtual memory as a namedtuple.rZround_)cextZ virtual_memrr4) r5r:r;r<r9Z speculativeZavailr8r7rB@/opt/alt/python38/lib64/python3.8/site-packages/psutil/_psosx.pyvirtual_memoryqs rDcCs4t\}}}}}t||dd}t||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr@)rAZswap_memrrZsswap)r5r8r9sinZsoutr7rBrBrC swap_memorysrFcCst\}}}}t||||S)z(Return system CPU times as a namedtuple.)rA cpu_timesr/)r0r1r2r3rBrBrCrGsrGcCs:g}tD](}|\}}}}t||||}||q |S)z)Return system CPU times as a named tuple.)rA per_cpu_timesr/append)retZcpu_tr0r1r2r3itemrBrBrCrHs    rHcCstS)z0Return the number of logical CPUs in the system.)rAcpu_count_logicalrBrBrBrCrLsrLcCstS)z-Return the number of CPU cores in the system.)rAcpu_count_coresrBrBrBrCrMsrMcCs"t\}}}}}t||||SN)rA cpu_statsrZ scpustats)Z ctx_switchesZ interruptsZsoft_interruptsZsyscallsZ_trapsrBrBrCrOs rOcCst\}}}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. )rAcpu_freqrZscpufreq)currZmin_Zmax_rBrBrCrPsrPFc Csjg}t}|D]T}|\}}}}|dkr,d}|sJtj|rtj|sJqt||||}||q|S)z8Return mounted disk partitions as a list of namedtuples.none) rAdisk_partitionsospathisabsexistsrZ sdiskpartrI) allretlistZ partitions partitionZdeviceZ mountpointZfstypeoptsntuplerBrBrCrTs  rTcCsdzt\}}}Wntk r(YdSX|dk}|r>tj}n|dkrNtj}n|d}t|||S)zReturn battery information.Nr<)rAsensors_batteryNotImplementedErrorrZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNZsbattery)r7ZminsleftZ power_pluggedZsecsleftrBrBrCr`sr`inetc Cslg}tD]\}zt||}Wntk r8Yq Yq X|r |D]"}t||g}|tj|qBq |S)z System-wide network connections.)pidsProcessnet_connectionsr listrIrZsconn)kindrJpidZconscrBrBrCres  rec Cst}i}|D]}z&t|}t|}t|\}}Wn0tk rl}z|jtjkr\W5d}~XYqXt t drt |}d |}d|k} t | ||||||<q|S)z)Get NIC stats (isup, duplex, speed, mtu).N NicDuplex,running)net_io_counterskeys cext_posixZ net_if_mtuZ net_if_flagsZnet_if_duplex_speedOSErrorerrnoZENODEVhasattrrrjjoinZ snicstats) namesrJr&ZmtuflagsZduplexspeederrZ output_flagsZisuprBrBrC net_if_statss,        rxcCstS)z:The system boot time expressed in seconds since the epoch.)rA boot_timerBrBrBrCry!sryc Cs\g}t}|D]F}|\}}}}}|dkr,q|s2qt||p>d|pDd||}||q|S)z:Return currently connected users as a list of namedtuples.~N)rAusersrZsuserrI) rZrawlistrKr0ttyhostnameZtstamprhntrBrBrCr{&s r{cCsdt}d|kr`ztd|ddWn2tk r@Yn tk r^|ddYnX|SNr)rArcrd create_timeinsertr r)ZlsrBrBrCrc:s rccCs:zt|td}|tjkWStk r4YdSXdS)Nr%F)rAproc_kinfo_oneshotkinfo_proc_mapSZOMBrp)rhstrBrBrC is_zombieMs  rcstfdd}|S)z`Decorator which translates bare OSError exceptions into NoSuchProcess and AccessDenied. csxz|f||WStk rRt|jr@t|j|j|jnt|j|jYn"tk rrt|j|jYnXdSrN) rrrhr _name_ppidr rr)selfargskwargsfunrBrCwrapperZs z wrap_exceptions..wrapper) functoolswraps)rrrBrrCwrap_exceptionsUs 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)Brdz1Wrapper class around underlying C implementation.rhrr_cachecCs||_d|_d|_dSrN)rhrr)rrhrBrBrC__init__nszProcess.__init__cCs$t|j}t|ttks t|SrN)rArrhlenrAssertionErrorrrJrBrBrC_get_kinfo_procss zProcess._get_kinfo_proccCs$t|j}t|ttks t|SrN)rAZproc_pidtaskinfo_oneshotrhrpidtaskinfo_maprrrBrBrC_get_pidtaskinfo{s zProcess._get_pidtaskinfocCs|j||j|dSrN)rZcache_activaterrrBrBrC oneshot_enters zProcess.oneshot_entercCs|j||j|dSrN)rZcache_deactivaterrrBrBrC oneshot_exits zProcess.oneshot_exitcCs(|td}|dk r|St|jS)Nr&)rrrAZ proc_namerh)rr&rBrBrCr&sz Process.namecCs t|jSrN)rAZproc_exerhrrBrBrCexesz Process.execCs t|jSrN)rAZ proc_cmdlinerhrrBrBrCcmdlineszProcess.cmdlinecCstt|jSrN)rrAZ proc_environrhrrBrBrCenvironszProcess.environcCs|td|_|jS)Nr)rrrrrBrBrCrsz Process.ppidcCs t|jSrN)rAZproc_cwdrhrrBrBrCcwdsz Process.cwdcCs.|}t|td|td|tdS)NrrrrrZpuidsrrZrawtuplerBrBrCuidss    z Process.uidscCs.|}t|td|td|tdS)Nr r!r"rrrBrBrCgidss    z Process.gidscCs>|td}t}z ||WStk r8YdSXdS)Nr#)rrrZget_terminal_mapKeyError)rZtty_nrZtmaprBrBrCterminals  zProcess.terminalcCs6|}t|td|td|td|tdS)Nr)r*r+r,)rr=rrrBrBrC memory_infos    zProcess.memory_infocCs"|}t|j}t||fSrN)rrAZproc_memory_ussrhr>)rZ basic_memr?rBrBrCmemory_full_infos zProcess.memory_full_infocCs(|}t|td|tdddS)Nr'r(g)rrZ pcputimesrrrBrBrCrGs  zProcess.cpu_timescCs|tdS)Nr$)rrrrBrBrCrszProcess.create_timecCs|td}t|dS)Nr.r)rrrZpctxsw)rZvolrBrBrCnum_ctx_switchesszProcess.num_ctx_switchescCs|tdS)Nr-)rrrrBrBrC num_threadsszProcess.num_threadscCsN|jdkrgSg}t|j}|D]&\}}t|r"t||}||q"|Sr)rhrAZproc_open_filesr rZ popenfilerI)rfilesr|rVfdr]rBrBrC open_filess     zProcess.open_filesrbc Cs|tkr(td|dddtDft|\}}t|j||}g}|D]2}|\}}} } } } t||| | | | t} || qL|S)Nz+invalid %r kind argument; choose between %sz, cSsg|] }t|qSrB)repr).0xrBrBrC sz+Process.net_connections..) r ValueErrorrsrAZproc_net_connectionsrhr TCP_STATUSESrI)rrgZfamiliestypesr|rJrKrfamtypeladdrraddrr%rrBrBrCres,  zProcess.net_connectionscCs|jdkrdSt|jSr)rhrAZ proc_num_fdsrrBrBrCnum_fds s zProcess.num_fdsNcCst|j||jSrN)rZwait_pidrhr)rtimeoutrBrBrCwaitsz Process.waitcCs t|jSrN)ro getpriorityrhrrBrBrCnice_getszProcess.nice_getcCst|j|SrN)ro setpriorityrh)rvaluerBrBrCnice_setszProcess.nice_setcCs|td}t|dS)Nr%?)rr PROC_STATUSESget)rcoderBrBrCr%szProcess.statuscCs<t|j}g}|D]"\}}}t|||}||q|SrN)rAZ proc_threadsrhrZpthreadrI)rr|rZ thread_idutimeZstimer]rBrBrCthreads!s   zProcess.threads)rb)N)#__name__ __module__ __qualname____doc__ __slots__rrrrrrrr&rrrrrrrrrrrGrrrrrerrrrr%rrBrBrBrCrdisr                         rd)F)rb)`rrqrrU collectionsrrSrrrrArrorr r r r r rrrZ_compatrrZ__extra__all__Z getpagesizePAGESIZEZAF_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_NONErZSIDLZ STATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDrZ STATUS_ZOMBIErdictrrr/r4r=_fieldsr>rDrFrGrHrLrMrOrP disk_usageZdisk_io_countersrTr`rmZ net_if_addrsrerxryr{rcZ pid_existsrrrdrBrBrBrCs