Vį\cI@ s" dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl mZddlmZddlmZddlmZydd lmZWnek rdZnXydd lmZWnek r-dZnXe jdkrLddlZndZe jd d kZddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVgIZejdWkZejdXkZe jjdYZe jjdZZ e Z!e jjd[Z"e jjd\Z#e jjd]Z$e"pe#pe$Z%e jjdZ&e jjd`Z'daZ(dbZ)dcZ*ddZ+deZ,dfZ-dgZ.dhZ/diZ0djZ1dkZ2dlZ3dmZ4dnZ5doZ6dpZ7dqZ8drZ9dsZ:dtZ;duZ<dvZ=dwZ>dxZ?dyZ@dzZAedkrd{ZBd|ZCd ZDn,d}ejEfd~YZFeGjHeFjIedkrdZJdZKn,dejEfdYZLeGjHeLjIe jMZNesEdZOn6ye jPZOWn#eQk rzerqdndZOnXedIddddddgZRedEddddgZSedCddddddgZTedDddddgZUedFddddddddgZVedJdddddgZWedAdddddddgZXedGdddddgZYedHddddgZZedBddddgZ[eddddgZ\edddddgZ]eddddgZ^edddgZ_ed9ddddgZ`ed>ddgZaed?dddgZbed@dddgZced;dddgZded<ddddgZeed=ddgZfed:ddgZged8ddddddgZhedddgZiieeegeegfd6eegegfd6egegfd6eegegfd6egegfd6eegeegfd6egeegfd6egeegfd6Zjedk rejjHiegegfd6egegfd6nedk r0ejjHiegeegfd6n[[[[ddZkdZldZmdZndZoeldZpdZqdZrdZsdZtdddYZudZveuZwewjxev_xewjyev_ydZzdZ{ddZ|dZ}er dZ~n dZ~dS(s9Common objects shared by __init__.py and _ps*.py modules.i(tdivisionN(t defaultdict(t namedtuple(tAF_INET(t SOCK_DGRAM(t SOCK_STREAM(tAF_INET6(tAF_UNIXiiitFREEBSDtBSDtLINUXtNETBSDtOPENBSDtMACOStOSXtPOSIXtSUNOStWINDOWStENCODINGt ENCODING_ERRSRt CONN_CLOSEtCONN_CLOSE_WAITt CONN_CLOSINGtCONN_ESTABLISHEDtCONN_FIN_WAIT1tCONN_FIN_WAIT2t CONN_LAST_ACKt CONN_LISTENt CONN_NONEt CONN_SYN_RECVt CONN_SYN_SENTtCONN_TIME_WAITtNIC_DUPLEX_FULLtNIC_DUPLEX_HALFtNIC_DUPLEX_UNKNOWNt STATUS_DEADtSTATUS_DISK_SLEEPt STATUS_IDLEt STATUS_LOCKEDtSTATUS_RUNNINGtSTATUS_SLEEPINGtSTATUS_STOPPEDtSTATUS_SUSPENDEDtSTATUS_TRACING_STOPtSTATUS_WAITINGtSTATUS_WAKE_KILLt STATUS_WAKINGt STATUS_ZOMBIEt STATUS_PARKEDtpconnt pcputimestpctxswtpgidstpiotpionicet popenfiletpthreadtpuidstsconnt scpustatstsdiskiot sdiskpartt sdiskusagetsnetiotsnicaddrt snicstatstsswaptsusert conn_tmaptdeprecated_methodt isfile_stricttmemoizetparse_environ_blocktpath_exists_strictt usage_percentt supports_ipv6tsockfam_to_enumtsocktype_to_enumt wrap_numberst bytes2humantposixtnttlinuxtdarwintfreebsdtopenbsdtnetbsdtsunostsolaristaixtrunningtsleepings disk-sleeptstoppeds tracing-stoptzombietdeads wake-killtwakingtidletlockedtwaitingt suspendedtparkedt ESTABLISHEDtSYN_SENTtSYN_RECVt FIN_WAIT1t FIN_WAIT2t TIME_WAITtCLOSEt CLOSE_WAITtLAST_ACKtLISTENtCLOSINGtNONEiit NicDuplexcB seZdZdZdZRS(iii(t__name__t __module__R R!R"(((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRqsit BatteryTimecB seZdZdZRS(ii(RrRstPOWER_TIME_UNKNOWNtPOWER_TIME_UNLIMITED(((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRtstreplacetsurrogateescapettotaltusedtfreetpercenttsintsoutt read_countt write_countt read_bytest write_bytest read_timet write_timetdevicet mountpointtfstypetoptst bytes_sentt bytes_recvt packets_sentt packets_recvterrinterrouttdropintdropouttnametterminalthosttstartedtpidtfdtfamilyttypetladdrtraddrtstatustaddresstnetmaskt broadcasttptptisuptduplextspeedtmtut ctx_switchest interruptstsoft_interruptstsyscallstscpufreqtcurrenttmintmaxtshwtemptlabelthightcriticaltsbatterytsecsleftt power_pluggedtsfantusertsystemt children_usertchildren_systemtpathtidt user_timet system_timetrealt effectivetsavedtioclasstvaluet voluntaryt involuntarytaddrtiptporttallttcpttcp4tudptudp4tinettinet4tinet6ttcp6tudp6tunixcC sqy||d}Wn;tk rOt|ts@t|trFdnd}nX|dk rit||S|SdS(s5Calculate percentage usage of 'used' against 'total'.idgiN(tZeroDivisionErrort isinstancetfloattNonetround(RzRytround_tret((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRJ s .  c sCtjfd}fd}i||_|S(sA simple memoize decorator for functions supporting (hashable) positional arguments. It also provides a cache_clear() function for clearing the cache: >>> @memoize ... def foo() ... return 1 ... >>> foo() 1 >>> foo.cache_clear() >>> c sZ|tt|jf}y |SWn)tk rU||}|<|SXdS(N(t frozensettsortedtitemstKeyError(targstkwargstkeyR(tcachetfun(s4/usr/lib64/python2.7/site-packages/psutil/_common.pytwrapper&s   c sjdS(s Clear cache.N(tclear((R(s4/usr/lib64/python2.7/site-packages/psutil/_common.pyt cache_clear/s(t functoolstwrapsR(RRR((RRs4/usr/lib64/python2.7/site-packages/psutil/_common.pyRGs !  c sFtjfd}d}d}||_||_|S(sA memoize decorator which is disabled by default. It can be activated and deactivated on request. For efficiency reasons it can be used only against class methods accepting no arguments. >>> class Foo: ... @memoize ... def foo() ... print(1) ... >>> f = Foo() >>> # deactivated (default) >>> foo() 1 >>> foo() 1 >>> >>> # activated >>> foo.cache_activate(self) >>> foo() 1 >>> foo() >>> foo() >>> c sWy|j}Wn?tk r+|Stk rR|}|j}x'|j||D]}|j||=qNW|j||=q6WdS(sIn case the number of keys changed between calls (e.g. a disk disappears) this removes the entry from self.reminders. N(RR"tkeysRR(RR#Rtold_dictt gone_keystgone_keytremkey((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyt_remove_dead_reminderss  " c C sT||jkr#|j|||S|j|||j|}i}x|jD]}||}y||}Wntk r|||Clear the internal cache, optionally only for function 'name'.N(RRRRRRtpop(RR((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyR*s    cC s*|j|j|j|jfSWdQXdS(s5Return internal cache dicts as a tuple of 3 elements.N(RRRR(R((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyt cache_info6s N( RrRsRRR$R*R7RRR9(((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRs   ' cC s$tjtj||SWdQXdS(sGiven an `input_dict` and a function `name`, adjust the numbers which "wrap" (restart from zero) across different calls by adding "old value" to "new value" and return an updated dict. N(t_wnRR7(R#R((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRN<s cK st|d|S(Ntrb(topen(tfnameR((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyt open_binaryJscK s9tr)|jdt|jdtnt|d|S(sOn Python 3 opens a file in text mode by using fs encoding and a proper en/decoding errors handler. On Python 2 this is just an alias for open(name, 'rt'). tencodingterrorstrt(tPY3t setdefaultRRR<(R=R((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyt open_textNss%(value).1f%(symbol)sc C sd}i}x4t|d D]"\}}d |d d >||>> bytes2human(10000) '9.8K' >>> bytes2human(100001221) '95.4M' tBtKtMtGtTtPtEtZtYii tsymboliR( RERFRGRHRIRJRKRLRM(t enumeratetreversedRtlocalstdict(tntformattsymbolstprefixR4tsRNR((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyRO\s cC stjdjS(s+Return updated psutil.PROCFS_PATH constant.tpsutil(tsystmodulest PROCFS_PATH(((s4/usr/lib64/python2.7/site-packages/psutil/_common.pytget_procfs_pathpscC s|jdtdtS(NR?R@(tdecodeRR(RW((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyR]vscC s|S(N((RW((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyR]ys(ii(ssunosssolaris((Rt __future__RRRRRRRRYRRt collectionsRRRRRRt ImportErrorRRt version_infoR RBt__all__RRRtplatformt startswithR R RRR R R RtAIXR'R(R$R)R+R/R#R-R.R%R&R,R*R0RRRRRRRRRRRRR R!R"tIntEnumRqtglobalstupdatet __members__RuRvRttgetfilesystemencodingRRtgetfilesystemencodeerrorsRRBR>R<R=R?RCR:R@RAR;RRRRR2R7R8R9R4R5R6R3R1RRDRJRGRRFRIRKRHRLRMRERRNR:RR9R>RDROR\R](((s4/usr/lib64/python2.7/site-packages/psutil/_common.pyts`                                              9    W