oiZ@LdZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZgZe jZe jZe jeje jeje 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/ej0i Z1e j2ej3e j4ej5e j6ej7e j8ej9e j:ej;iZ<e=ddddddddddd Z>e=ddddddddZ?dZ@dZAe jBZBe jCZCdZDd ZEd!ZFd"ZGd#ZHe jIrd$ZJejKZKe jLZLd3d&ZMd'ZNe jOZOe jPZPd4d)ZQd*ZRd+ZS eSZTn"#eU$rZVed,eVdZTYdZV[VndZV[VwwxYwd-ZWd.ZXd/ZYejZZZd0Z[Gd1d2Z\dS)5zmacOS platform implementation.N)_common)_ntuples)_psposix) _psutil_osx) AccessDenied) NoSuchProcess) ZombieProcess) conn_tmap)conn_to_ntuple)debug) isfile_strict)memoize_when_activated)parse_environ_block) usage_percent ) ppidruideuidsuidrgidegidsgidttynrctimestatusname)cpuutimecpustimerssvmspfaultspageins numthreadsvolctxswc tj\}}}}}}||z}||z}||z}t||z |d}tj||||||||S)z&System virtual memory as a namedtuple.rround_)cext virtual_memrntpsvmem) totalactiveinactivewiredfree speculativeavailusedpercents =C:\PYTHON\Scheduler\python\Lib\site-packages\psutil/_psosx.pyvirtual_memoryr?[sz8<8H8J8J5E68UD+ tOE E>D KDUU]U1===G 9 ugtT68U  ctj\}}}}}t||d}tj||||||S)z=Swap system memory as a (total, used, free, sin, sout) tuple.rr/)r1swap_memrr3sswap)r5r<r9sinsoutr=s r> swap_memoryrFlsF#'=?? E4sDD%222G 9UD$d ; ;;r@c`tj\}}}}tj||||S)z(Return system CPU times as a namedtuple.)r1 cpu_timesr3 scputimes)usernicesystemidles r>rHrH}s.#~//D$ =tVT 2 22r@cg}tjD]5}|\}}}}tj||||}||6|S)z)Return system CPU times as a named tuple.)r1 per_cpu_timesr3rIappend)retcpu_trJrKrLrMitems r>rOrOs\ C#%%#( dFD}T466 4 Jr@c(tjS)z0Return the number of logical CPUs in the system.)r1cpu_count_logicalr@r>rUrUs  ! # ##r@c(tjS)z-Return the number of CPU cores in the system.)r1cpu_count_coresrVr@r>rXrXs   ! !!r@cbtj\}}}}}tj||||SN)r1 cpu_statsr3 scpustats) ctx_switches interruptssoft_interruptssyscalls_trapss r>r[r[s5 @L*ox =z?H M MMr@c^tj\}}}tj|||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. )r1cpu_freqr3scpufreq)currmin_max_s r>rcrcs-  =??dD T4..//r@Fc2g}tj}|D]~}|\}}}}|dkrd}|s?tj|rtj|sRt j||||}|||S)z8Return mounted disk partitions as a list of namedtuples.none) r1disk_partitionsospathisabsexistsr3 sdiskpartrP) allretlist partitions partitiondevice mountpointfstypeoptsntuples r>rkrksG%''J +4( FD V  F 7==(( v0F0F vz64@@v Nr@c tj\}}}n#t$rYdSwxYw|dk}|r tj}n|dkr tj}n|dz}t j|||S)zReturn battery information.Nr<)r1sensors_batteryNotImplementedErrorrPOWER_TIME_UNLIMITEDPOWER_TIME_UNKNOWNr3sbattery)r=minsleft power_pluggedsecslefts r>r}r}s+/+?+A+A(== tt"Q&M!/ R-b= <= 9 99s  ((inetcg}tD]p} t||}|r9|D]6}t||gz}|t j|7a#t$rYmwxYw|S)z System-wide network connections.)pidsProcessnet_connectionslistrPr3sconnr )kindrQpidconscs r>rrs Cvv . . .3<<//55D ...AQ3%AJJsy!}----     H  Js"A22 A?>A?ct}i}|D]} tj|}tj|}tj|\}}t tdrtj|}d |}d|v}tj |||||||<#t$r } | j tjkrYd} ~ d} ~ wwxYw|S)z)Get NIC stats (isup, duplex, speed, mtu). NicDuplex,runningN)net_io_counterskeysr1 net_if_mtu net_if_flagsnet_if_duplex_speedhasattrrrjoinr3 snicstatsOSErrorerrnoENODEV) namesrQr%mtuflagsduplexspeed output_flagsisuperrs r> net_if_statsrs     " " $ $E CNN N/$''C%d++E 4T::MFE w ,, 3 *62288E??L%D dFE3 MMCII   yEL(()((((  Js?C C/C**C/c(tjS)z:The system boot time expressed in seconds since the epoch.)r1 boot_timerVr@r>rrs >  r@zignoring exception on import: ctdkr|Sttz }|dkst|dkr|Std|dkr||z S||zS)z!Account for system clock updates.rrz9system clock was updated; adjusting process create_time())INIT_BOOT_TIMErabsr )r#diffs r>adjust_proc_create_timersh IKK 'D qyyCIIMM  EFFF axxt| 4<r@cg}tj}|D]E}|\}}}}}|dkr|stj||pd|pd||}||F|S)z:Return currently connected users as a list of namedtuples.~N)r1usersr3suserrP) rrrawlistrSrJttyhostnametstamprnts r>rr+sGjllG+/(c8VS #::    YtS[D(*:dFC H Hr Nr@ctj}d|vrj td|ddn1#t $rYn%t $r|ddYnwxYw|SNr)r1rr create_timeinsertr r)lss r>rr?s B{{  AJJ " " $ $ $ IIaOOOO    D    IIaOOOOO  Is7A A?A?>A?cFtjfd}|S)z`Decorator which translates bare OSError exceptions into NoSuchProcess and AccessDenied. c^|j|j|j}}} |g|Ri|S#t$r<}t j|rt ||||t|||d}~wt$r}t|||d}~wtj $r}t ||||d}~wwxYwrZ) r_ppid_nameProcessLookupErrorr1proc_is_zombier r PermissionErrorrZombieProcessError)selfargskwargsrrr%rfuns r>wrapperz wrap_exceptions..wrapperWs(DJ 4T :3t-d---f-- -! 4 4 4"3'' >#Ct44#=T** 3 3 3 3sD))s 2& : : :T400c 9 :s, $ B,7A%% B,2BB,B''B,) functoolswraps)rrs` r>wrap_exceptionsrRs: _S : : : : : Nr@cxeZdZdZgdZdZeedZeedZ dZ dZ edZ ed Z ed Zed Zed Zed ZedZedZedZedZedZedZed"dZedZedZedZed#dZedZed$dZedZedZ ed Z!ed!Z"dS)%rz1Wrapper class around underlying C implementation.)_cacherrrc0||_d|_d|_dSrZ)rrr)rrs r>__init__zProcess.__init__ms  r@ctj|j}t|ttksJ|SrZ)r1proc_kinfo_oneshotrlenkinfo_proc_maprrQs r>_get_kinfo_proczProcess._get_kinfo_procrs:%dh//3xx3~...... r@ctj|j}t|ttksJ|SrZ)r1proc_pidtaskinfo_oneshotrrpidtaskinfo_maprs r>_get_pidtaskinfozProcess._get_pidtaskinfozs:+DH553xx3////// r@cn|j||j|dSrZ)rcache_activaterrs r> oneshot_enterzProcess.oneshot_enters6 ++D111 ,,T22222r@cn|j||j|dSrZ)rcache_deactivaterrs r> oneshot_exitzProcess.oneshot_exits6 --d333 ..t44444r@c|td}||ntj|jS)Nr%)rrr1 proc_namer)rr%s r>r%z Process.names8##%%nV&<='ttT^DH-E-EEr@c4tj|jSrZ)r1proc_exerrs r>exez Process.exe}TX&&&r@c4tj|jSrZ)r1 proc_cmdlinerrs r>cmdlinezProcess.cmdlines ***r@cNttj|jSrZ)rr1 proc_environrrs r>environzProcess.environs"4#4TX#>#>???r@cd|td|_|jS)Nr)rrrrs r>rz Process.ppids'))++N6,BC zr@c4tj|jSrZ)r1proc_cwdrrs r>cwdz Process.cwdrr@c|}tj|td|td|tdS)Nrrrrr3puidsrrrawtuples r>uidsz Process.uidsN''))y ^F+ , ^F+ , ^F+ ,   r@c|}tj|td|td|tdS)Nrr r!rrs r>gidsz Process.gidsrr@c|td}tj} ||S#t$rYdSwxYw)Nr")rrrget_terminal_mapKeyError)rtty_nrtmaps r>terminalzProcess.terminals\%%''w(?@(** <    44 sA AAc|}tj|td|td|td|tdS)Nr(r)r*r+)rr3pmemrrs r> memory_infozProcess.memory_infos[((**x _U+ , _U+ , _Y/ 0 _Y/ 0    r@c|}tj|j}t j||fzSrZ)rr1proc_memory_ussrr3pfullmem)r basic_memusss r>memory_full_infozProcess.memory_full_infos9$$&& "48,,|Y#/00r@c|}tj|td|tdddS)Nr&r'g)rr3 pcputimesrrs r>rHzProcess.cpu_timessG((**} _Z0 1 _Z0 1      r@Fcr|td}|st|}|S)Nr#)rrr)r monotonicr#s r>rzProcess.create_times7$$&&~g'>? 3+E22E r@cv|td}tj|dS)Nr-r)rrr3pctxsw)rvols r>num_ctx_switcheszProcess.num_ctx_switchess1 ##%%oj&ABz#q!!!r@cL|tdS)Nr,)rrrs r> num_threadszProcess.num_threadss$$&&|'DEEr@c|jdkrgSg}tj|j}|D]>\}}t|r*t j||}||?|Sr)rr1proc_open_filesrr3 popenfilerP)rfilesrrmfdrys r> open_fileszProcess.open_filessu 8q==I&tx00 % %HD"T"" %tR00 V$$$ r@rc t|\}}tj|j||}g}|D]:}|\}}} } } } t ||| | | | t } || ;|SrZ)r r1proc_net_connectionsrr TCP_STATUSESrP)rrfamiliestypesrrQrSrfamtypeladdrraddrr$rs r>rzProcess.net_connectionss#D/%+DHhFF  D26 /BT5%CueV\B JJrNNNN r@cN|jdkrdStj|jSr)rr1 proc_num_fdsrs r>num_fdszProcess.num_fdss% 8q==1 ***r@NcBtj|j||jSrZ)rwait_pidrr)rtimeouts r>waitz Process.wait s 7DJ???r@c4tj|jSrZ)r1proc_priority_getrrs r>nice_getzProcess.nice_gets%dh///r@c6tj|j|SrZ)r1proc_priority_setr)rvalues r>nice_setzProcess.nice_sets%dh666r@c|td}t|dS)Nr$?)rr PROC_STATUSESget)rcodes r>r$zProcess.statuss3##%%nX&>?  s+++r@ctj|j}g}|D]1\}}}tj|||}||2|SrZ)r1 proc_threadsrr3pthreadrP)rrrr thread_idutimestimerys r>threadszProcess.threadss\#DH--'. # # #Iue[E599F NN6 " " " "r@FrrZ)#__name__ __module__ __qualname____doc__ __slots__rrrrrrrr%rrrrrrrrrr rHrrrrrr%r)r,r0r$r<rVr@r>rrhs';;333I _ _ 333555FF_F''_'++_+@@_@_''_'  _   _ _  _ 11_1   _ _ ""_"FF_F  _    _ ++_+ @@@_@00_077_7,,_, _r@rr=r>)]rBrrrlrjrrr3rrr1rr r r r r rrrr__extra__all__ getpagesizePAGESIZEAF_LINKTCPS_ESTABLISHEDCONN_ESTABLISHED TCPS_SYN_SENT CONN_SYN_SENTTCPS_SYN_RECEIVED CONN_SYN_RECVTCPS_FIN_WAIT_1CONN_FIN_WAIT1TCPS_FIN_WAIT_2CONN_FIN_WAIT2TCPS_TIME_WAITCONN_TIME_WAIT TCPS_CLOSED CONN_CLOSETCPS_CLOSE_WAITCONN_CLOSE_WAIT TCPS_LAST_ACK CONN_LAST_ACK TCPS_LISTEN CONN_LISTEN TCPS_CLOSING CONN_CLOSINGPSUTIL_CONN_NONE CONN_NONErSIDL STATUS_IDLESRUNSTATUS_RUNNINGSSLEEPSTATUS_SLEEPINGSSTOPSTATUS_STOPPEDSZOMB STATUS_ZOMBIEr3dictrrr?rF heap_info heap_trimrHrOrUrXr[ has_cpu_freqrc disk_usagedisk_io_countersrkr}r net_if_addrsrrrr Exceptionrrrr pid_existsrrrVr@r>rssk %$  !!!!!!!!!!!!""""""""""""######""""""++++++(((((("""""" 4    , 73-G1'0'0/g('1-g)w+7,   Iw"Iw%K(J&J%      $        ""<<< N N 333 $$$ """ NNN4 0000 (    *:::,& $6 Y[[NN E 23 2 2333NNNNNN      (     ,}}}}}}}}}}s G""H'G<<H