hyb
2025-12-23 c980682a1fe205d8c21d349e9fc6b9e4951aea34
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
Ë
Iñúh\sã
ó    —dZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddlm
Z
ddlm Z ddlm Z ddlm Z     ddlmZ    ddlmZeej$d    ««Ze«Zgd
¢Zej.d k(Zej.d k(Zej4j7d «Zej4j7d«ZeZej4j7d«Zej4j7d«Z ej4j7d«Z!exse xse!Z"ej4j7d«Z#ej4j7d«Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9d)Z:d*Z;d+Z<d,Z=d-Z>Gd.„d/ej~«Z@eA«j…e@j†«Gd0„d1ej~«ZDeA«j…eDj†«ejŠ«ZFejŽ«ZHe
d2gd3¢«ZIe
d4gd5¢«ZJe
d6gd7¢«ZKe
d8gd9¢«ZLe
d:gd;¢«ZMe
d<gd=¢«ZNe
d>gd?¢«ZOe
d@gdA¢«ZPe
dBgdC¢«ZQe
dDgdE¢«ZRe
dFgdG¢«ZSe
dHgdI¢«ZTe
dJgdK¢«ZUe
dLdMdNg«ZVe
dOgdP¢«ZWe
dQdRdSg«ZXe
dTgdU¢«ZYe
dVgdW¢«ZZe
dXgdW¢«Z[e
dYgdZ¢«Z\e
d[d\d]g«Z]e
d^d_d`g«Z^e
dagdb¢«Z_e
dcdddeg«Z`e eege e gfe ege gfe ge gfe ege gfe ge gfe ege e gfe ge e gfege e gfdfœZaeeaj…ege gfege gfdgœ«ee#seaj…dhege e gfi«Gdi„djeb«ZcGdk„dlec«ZdGdm„dned«ZeGdo„dpec«ZfGdq„drec«Zgdds„Zhdt„Zidu„Zjdv„Zkdw„Zldx„Zmdy„Zndz„Zod{„Zpdd|„Zqd}„Zrd~„ZsGd„d€«Ztd„Zuet«Zvevjîeu_wevjðeu_xd‚Zydƒ„Zzd„„Z{ee{fd…„Z|efd†„Z}dd‡„Z~dˆ„Zd‰„Z€eiejfdŠ„«Z‚d‘dŒ„Zƒdd‹ejfd„Z„dŽ„Z…y#e$rdZYŒ0wxYw#e$rdZYŒ7wxYw)’zCommon objects shared by __init__.py and _ps*.py modules.
 
Note: this module is imported by setup.py, so it should not import
psutil or third-party modules.
éN)Ú
namedtuple)ÚAF_INET)Ú
SOCK_DGRAM)Ú SOCK_STREAM)ÚAF_INET6)ÚAF_UNIXÚ PSUTIL_DEBUG)RÚFREEBSDÚBSDÚLINUXÚNETBSDÚOPENBSDÚMACOSÚOSXÚPOSIXÚSUNOSÚWINDOWSÚ
CONN_CLOSEÚCONN_CLOSE_WAITÚ CONN_CLOSINGÚCONN_ESTABLISHEDÚCONN_FIN_WAIT1ÚCONN_FIN_WAIT2Ú CONN_LAST_ACKÚ CONN_LISTENÚ    CONN_NONEÚ CONN_SYN_RECVÚ CONN_SYN_SENTÚCONN_TIME_WAITÚNIC_DUPLEX_FULLÚNIC_DUPLEX_HALFÚNIC_DUPLEX_UNKNOWNÚ STATUS_DEADÚSTATUS_DISK_SLEEPÚ STATUS_IDLEÚ STATUS_LOCKEDÚSTATUS_RUNNINGÚSTATUS_SLEEPINGÚSTATUS_STOPPEDÚSTATUS_SUSPENDEDÚSTATUS_TRACING_STOPÚSTATUS_WAITINGÚSTATUS_WAKE_KILLÚ STATUS_WAKINGÚ STATUS_ZOMBIEÚ STATUS_PARKEDÚENCODINGÚ ENCODING_ERRSrÚpconnÚ    pcputimesÚpctxswÚpgidsÚpioÚpioniceÚ    popenfileÚpthreadÚpuidsÚsconnÚ    scpustatsÚsdiskioÚ    sdiskpartÚ
sdiskusageÚsnetioÚsnicaddrÚ    snicstatsÚsswapÚsuserÚ    conn_tmapÚdeprecated_methodÚ isfile_strictÚmemoizeÚparse_environ_blockÚpath_exists_strictÚ usage_percentÚ supports_ipv6Úsockfam_to_enumÚsocktype_to_enumÚ wrap_numbersÚ    open_textÚ open_binaryÚcatÚbcatÚ bytes2humanÚconn_to_ntupleÚdebugÚhiliteÚterm_supports_colorsÚ print_colorÚposixÚntÚlinuxÚdarwin)ÚfreebsdÚ midnightbsdÚopenbsdÚnetbsd)ÚsunosÚsolarisÚaixÚrunningÚsleepingz
disk-sleepÚstoppedz tracing-stopÚzombieÚdeadz    wake-killÚwakingÚidleÚlockedÚwaitingÚ    suspendedÚparkedÚ ESTABLISHEDÚSYN_SENTÚSYN_RECVÚ    FIN_WAIT1Ú    FIN_WAIT2Ú    TIME_WAITÚCLOSEÚ
CLOSE_WAITÚLAST_ACKÚLISTENÚCLOSINGÚNONEcó—eZdZdZdZdZy)Ú    NicDuplexéérN)Ú__name__Ú
__module__Ú __qualname__r r!r"©óúAH:\Change_password\venv_build\Lib\site-packages\psutil/_common.pyr~r~s„Ø€OØ€OØÑr…r~có—eZdZdZdZy)Ú BatteryTimeéÿÿÿÿéþÿÿÿN)rr‚rƒÚPOWER_TIME_UNKNOWNÚPOWER_TIME_UNLIMITEDr„r…r†rˆrˆ‰s„ØÐØÑr…rˆrD)ÚtotalÚusedÚfreeÚpercentÚsinÚsoutr@)rrŽrrr>)Ú
read_countÚ write_countÚ
read_bytesÚ write_bytesÚ    read_timeÚ
write_timer?)ÚdeviceÚ
mountpointÚfstypeÚoptsrA)Ú
bytes_sentÚ
bytes_recvÚ packets_sentÚ packets_recvÚerrinÚerroutÚdropinÚdropoutrE)ÚnameÚterminalÚhostÚstartedÚpidr<)ÚfdÚfamilyÚtypeÚladdrÚraddrÚstatusr©rB)r«ÚaddressÚnetmaskÚ    broadcastÚptprC)ÚisupÚduplexÚspeedÚmtuÚflagsr=)Ú ctx_switchesÚ
interruptsÚsoft_interruptsÚsyscallsÚscpufreq)ÚcurrentÚminÚmaxÚshwtemp)Úlabelr¾ÚhighÚcriticalÚsbattery)rÚsecsleftÚ power_pluggedÚsfanrÂr¾r4)ÚuserÚsystemÚ children_userÚchildren_systemr9Úpathrªr:)ÚidÚ    user_timeÚ system_timer;)ÚrealÚ    effectiveÚsavedr6r7)r“r”r•r–r8ÚioclassÚvaluer5Ú    voluntaryÚ involuntaryr3)rªr«r¬r­r®r¯ÚaddrÚipÚport)ÚallÚtcpÚtcp4ÚudpÚudp4ÚinetÚinet4Úinet6)Útcp6Úudp6Úunixcó&—eZdZdZdZd„Zd„Zd„Zy)ÚErrorzQBase exception class. All other psutil exceptions inherit
    from this one.
    Úpsutilcó|—tj«}|D]"}t||d«}|s |dk(sŒ|dk(sŒ|||<Œ$|S)Nr©r)Ú collectionsÚ OrderedDictÚgetattr)ÚselfÚattrsÚinfor¥rÕs     r†Ú    _infodictzError._infodict sL€Ü×&Ñ&Ó(ˆØò    #ˆDܘD $¨Ó-ˆEÙ˜ ›¨5°A«:Ø"T’
ð    #ðˆ r…c ó.—|jd«}|rGdjdj|j«Dcgc] \}}|›d|›‘Œc}}««}nd}djt    |dd«|fDcgc]}|sŒ|‘Œ    c}«Scc}}wcc}w)N)r©Úppidr¥z({})ú, ú=ú ÚmsgÚ)rðÚformatÚjoinÚitemsrì)rírïÚkÚvÚdetailsÚxs      r†Ú__str__z Error.__str__sŠ€à~‰~Ð5Ó6ˆÙ Ø—m‘mØ—    ‘    °D·J±J³L×A©D¨A¨q˜a˜S  ! š<ÓAÓBó‰GðˆG؏x‰x¤W¨T°5¸"Ó%=¸wÐ$GÖM˜qÊ1šÒMÓNÐNùó    BùòNs½B Á9BÂBc    óؗ|jd«}dj|j«Dcgc] \}}|›d|›‘Œc}}«}d|jj›d|›dScc}}w)N)r©ròr¥Úsecondsrörórôzpsutil.ú(ú))rðrùrúÚ    __class__r)rírïrûrürýs     r†Ú__repr__zError.__repr__sd€à~‰~ÐGÓHˆØ—)‘)°d·j±j³l×C©d¨a° ˜s ! A 5š\ÓCÓDˆØ˜Ÿ™×0Ñ0Ð1°°7°)¸1Ð=Ð=ùóDs°A&
N)rr‚rƒÚ__doc__rðrÿrr„r…r†rçrçs„ñð€Jòò    Oó>r…rçcó"—eZdZdZdZdd„Zd„Zy)Ú NoSuchProcesszXException raised when a process with a certain PID doesn't
    or no longer exists.
    rèNcó`—tj|«||_||_|xsd|_y)Nzprocess no longer exists©rçÚ__init__r©r¥rö©rír©r¥rös    r†r zNoSuchProcess.__init__,s)€Ü ‰tÔØˆŒØˆŒ    ØÒ4Ð4ˆr…có`—|j|j|j|jffS©N©rr©r¥rö©rís r†Ú
__reduce__zNoSuchProcess.__reduce__2ó$€Ø—‘ §¡¨4¯9©9°d·h±hР?Ð@Ð@r…©NN©rr‚rƒrr rr„r…r†rr%s„ñð€Jó5ó Ar…rcó"—eZdZdZdZdd„Zd„Zy)Ú ZombieProcessa1Exception raised when querying a zombie process. This is
    raised on macOS, BSD and Solaris only, and not always: depending
    on the query the OS may be able to succeed anyway.
    On Linux all zombie processes are querable (hence this is never
    raised). Windows doesn't have zombie processes.
    rèNcóX—tj||||«||_|xsd|_y)Nz"PID still exists but it's a zombie)rr ròrö)rír©r¥ròrös     r†r zZombieProcess.__init__@s*€Ü×јt S¨$°Ô4؈Œ    ØÒ>Ð>ˆr…cóv—|j|j|j|j|jffSr)rr©r¥ròrörs r†rzZombieProcess.__reduce__Es*€Ø—‘ §¡¨4¯9©9°d·i±iÀÇÁРJÐKÐKr…©NNNrr„r…r†rr6s„ñð€Jó?ó
Lr…rcó"—eZdZdZdZdd„Zd„Zy)Ú AccessDeniedz@Exception raised when permission to perform an action is denied.rèNcó`—tj|«||_||_|xsd|_y)Nr÷r
r s    r†r zAccessDenied.__init__Ns'€Ü ‰tÔØˆŒØˆŒ    Ø’9˜"ˆr…có`—|j|j|j|jffSrrrs r†rzAccessDenied.__reduce__Trr…rrr„r…r†rrIs„ÙJà€Jóó Ar…rcó"—eZdZdZdZdd„Zd„Zy)ÚTimeoutExpiredzWRaised on Process.wait(timeout) if timeout expires and process
    is still alive.
    rèNcón—tj|«||_||_||_d|›d|_y)Nztimeout after z seconds)rçr rr©r¥rö)rírr©r¥s    r†r zTimeoutExpired.__init___s3€Ü ‰tÔØˆŒ ؈ŒØˆŒ    Ø# G 9¨HÐ5ˆr…có`—|j|j|j|jffSr)rrr©r¥rs r†rzTimeoutExpired.__reduce__fs$€Ø—‘ §¡¨t¯x©x¸¿¹РCÐDÐDr…rrr„r…r†rrXs„ñð€Jó6óEr…rcód—    t|«|z dz}| t||«}|S#t$rYywxYw)z5Calculate percentage usage of 'used' against 'total'.édg)ÚfloatÚroundÚZeroDivisionError)rŽrÚround_Úrets    r†rLrLosG€ðܐT‹{˜UÑ" cÑ)ˆð Рܘ˜VÓ$ˆC؈
øô òÙðús ‚#£    /®/cób‡‡—tj‰«ˆˆfd„«}ˆfd„}iŠ||_|S)a¹A 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()
    >>>
 
    It supports:
     - functions
     - classes (acts as a @singleton)
     - staticmethods
     - classmethods
 
    It does NOT support:
     - methods
    cóÀ•—|tt|j«««f}    ‰|S#t$r(    ‰|i|¤Žx}‰|<n#t$r}|d‚d}~wwxYw|cYSwxYwr)Ú    frozensetÚsortedrúÚKeyErrorÚ    Exception)ÚargsÚkwargsÚkeyr(ÚerrÚcacheÚfuns     €€r†Úwrapperzmemoize.<locals>.wrapper“suø€à”Yœv f§l¡l£nÓ5Ó6Ð7ˆð    Ø˜‘:Ð øÜò    ð $Ù#&¨Ð#7°Ñ#7Ð7e˜C’jøÜò $ؘtÐ#ûð $úàŠJð     ús2§,¬    A¶ AÁAÁ    AÁ AÁAÁAÁAcó&•—‰j«y)z Clear cache.N)Úclear)r3s€r†Ú cache_clearzmemoize.<locals>.cache_clearŸs ø€à  ‰  r…)Ú    functoolsÚwrapsr8)r4r5r8r3s`  @r†rIrI{s9ù€ô0‡__SÓô    óð    ôð €EØ%€GÔØ €Nr…cój‡—tj‰«ˆfd„«}d„}d„}||_||_|S)aúA 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ó•—    |j‰}|S#t$r     ‰|«cYS#t$r}|d‚d}~wwxYwt$rC    ‰|«}n#t$r}|d‚d}~wwxYw    ||j‰<Y|S#t$rYY|SwxYwwxYwr)Ú_cacheÚAttributeErrorr.r-)rír(r2r4s   €r†r5z'memoize_when_activated.<locals>.wrapperÃs¸ø€ð    à—+‘+˜cÑ"ˆCð(ˆ
øô'ò    $ð $Ù˜4“yÒ øÜò $ؘtÐ#ûð $úäò     ð $Ù˜$“i‘øÜò $ؘtÐ#ûð $úð Ø#&— ‘ ˜CÒ ð
ˆ
øô    "ò ñ؈
ð     úð     úseƒ”    Bž(¥B¨    9±4´9¹ BÁAÁ BÁ    AÁAÁAÁBÁ#A5Á5    BÁ>BÂBÂBcó—i|_y)zsActivate cache. Expects a Process instance. Cache will be
        stored as a "_cache" instance attribute.
        N)r=©Úprocs r†Úcache_activatez.memoize_when_activated.<locals>.cache_activateÝs €ðˆ r…có(—    |`y#t$rYywxYw)zDeactivate and clear cache.N)r=r>r@s r†Úcache_deactivatez0memoize_when_activated.<locals>.cache_deactivateãs€ð    Ø‘ øÜò    Ù ð    ús ‚…    )r9r:rBrD)r4r5rBrDs`   r†Úmemoize_when_activatedrE¨sAø€ô6‡__SÓóóðò2ò ð,€GÔØ/€GÔØ €Nr…c󜗠   tj|«}tj|j«S#t$r‚t
$rYywxYw)zSame as os.path.isfile() but does not swallow EACCES / EPERM
    exceptions, see:
    http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
    F)ÚosÚstatÚS_ISREGÚst_modeÚPermissionErrorÚOSError)rÍÚsts  r†rHrHïsH€ð
(Ü W‰WT‹]ˆô |‰|˜BŸJ™JÓ'Ð'øô òØ Ü òÙðús‚6¶A Á
A có`—    tj|«y#t$r‚t$rYywxYw)zSame as os.path.exists() but does not swallow EACCES / EPERM
    exceptions. See:
    http://mail.python.org/pipermail/python-dev/2012-June/120787.html.
    TF)rGrHrKrL)rÍs r†rKrKþs6€ð
Ü
‰Œ ð øô òØ Ü òÙðús ‚˜-¬-cóî—tjrt€y    tjttj«5}|j    d«ddd«y#1swYyxYw#t
$rYywxYw)z2Return True if IPv6 is supported on this platform.NF)z::1rT)ÚsocketÚhas_ipv6rrÚbindrL)Úsocks r†rMrM s_€ä ?Š?œhÐ.ØðÜ ]‰]œ8¤V×%7Ñ%7Ó 8ð    "¸DØ I‰IjÔ !÷    "à÷    "àûÜ òÙðús/™(A(ÁAÁA(ÁA%Á!A(Á%A(Á(    A4Á3A4cóЗi}d}t}    |jd|«}||kr    |S|jd||«}||kDr$|||}||dz|}|r|j«}|||<|dz}Œ\)zCParse a C environ block of environment variables into a dictionary.rúrôr€)rÚfindÚupper)Údatar(ÚposÚWINDOWS_Únext_posÚ    equal_posr1rÕs        r†rJrJs•€ð €CØ
€Cô€HØ
Ø—9‘9˜T 3Ó'ˆà sŠ?Ø ð €Jð—I‘I˜c 3¨Ó1ˆ    Ø sŠ?ؐs˜9Ð%ˆCؘ Q™¨Ð2ˆEáØ—i‘i“kØˆC‰Hؘ‰lˆð r…cóP—    tj|«S#t$r|cYSwxYw)zConvert a numeric socket family value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rPÚ AddressFamilyÚ
ValueError©Únums r†rNrN5s,€ðÜ×#Ñ# CÓ(Ð(øÜ òØŠ
ðúó ‚— %¤%cóP—    tj|«S#t$r|cYSwxYw)zConvert a numeric socket type value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rPÚ
SocketKindr_r`s r†rOrO?s,€ðÜ× Ñ  Ó%Ð%øÜ òØŠ
ðúrbc    óH—|tjthvr|rt|Ž}|rt|Ž}|tjk(r%|tthvr|j |t «}nt }t|«}t|«}|€t||||||«St|||||||«S)z2Convert a raw connection tuple to a proper ntuple.) rPrrrØrÚgetrrNrOr3r<)rªÚfamÚtype_r­r®r¯Ú
status_mapr©s        r†rVrVIsŸ€à
Œv~‰~œxÐ(Ñ(٠ܘ%LˆE٠ܘ%LˆEØ ”×"Ñ"Ò" s¬w¼Ð.AÑ'AØ—‘ ¬    Ó2‰äˆÜ
˜#Ó
€CÜ ˜UÓ #€EØ
€{ܐR˜˜e U¨E°6Ó:Ð:äR˜˜e U¨E°6¸3Ó?Ð?r…có®—ddl}|jr |jsy|jtj
k(r?t |j|j›d|j›d¬«j«S|jtjk(r?t |j|j›d|j›d¬«j«Sy)zbGiven the address ntuple returned by ``net_if_addrs()``
    calculates the broadcast address.
    rNú/F)Ústrict) Ú    ipaddressr°r±r«rPrÚstrÚ IPv4NetworkÚbroadcast_addressrÚ IPv6Network)rØrms  r†Úbroadcast_addrrr\sº€óà <Š<˜tŸ|š|ØØ ‡{{”f—n‘nÒ$ÜØ × !Ñ !Ø—<‘<.  $§,¡, Ð0¸ð "ó çÑó
ð    
ð
 ‡{{”f—o‘oÒ%ÜØ × !Ñ !Ø—<‘<.  $§,¡, Ð0¸ð "ó çÑó
ð    
ð&r…có‡—ˆfd„}|S)zƒA decorator which can be used to mark a method as deprecated
    'replcement' is the method name which will be called instead.
    c󐕇—|j›d‰›dŠ|j€‰|_tj|«ˆˆfd„«}|S)Nz*() is deprecated and will be removed; use z
() insteadcó`•—tj‰td¬«t|‰«|i|¤ŽS)Nr)ÚcategoryÚ
stacklevel)ÚwarningsÚwarnÚDeprecationWarningrì)rír/r0röÚ replacements   €€r†Úinnerz/deprecated_method.<locals>.outer.<locals>.inners-ø€ä M‰M˜#Ô(:ÀqÕ IØ-”7˜4 Ó-¨tÐ>°vÑ>Ð >r…)rrr9r:)r4r|rör{s  @€r†Úouterz deprecated_method.<locals>.outerwsWù€à|‰|ˆnð؈}˜Jð (ð     ð ;‰;Р؈CŒKä    ‰˜Ó    ô    ?ó
ð    ?ðˆ r…r„)r{r}s` r†rGrGrsø€ô
ð €Lr…có6—eZdZdZd„Zd„Zd„Zd„Zd    d„Zd„Z    y)
Ú _WrapNumberszNWatches numbers so that they don't overflow and wrap
    (reset to zero).
    có`—tj«|_i|_i|_i|_yr)Ú    threadingÚLockÚlockr3Ú    remindersÚ reminder_keysrs r†r z_WrapNumbers.__init__Žs&€Ü—N‘NÓ$ˆŒ    ØˆŒ
؈ŒØˆÕr…có—||jvsJ‚||jvsJ‚||jvsJ‚||j|<tjt
«|j|<tjt «|j|<yr)r3r„r…rêÚ defaultdictÚintÚset)ríÚ
input_dictr¥s   r†Ú    _add_dictz_WrapNumbers._add_dict”s|€Ø˜4Ÿ:™:Ñ%Ð%Ð%ؘ4Ÿ>™>Ñ)Ð)Ð)ؘ4×-Ñ-Ñ-Ð-Ð-Ø%ˆ
‰
4ÑÜ*×6Ñ6´sÓ;ˆ‰tÑÜ#.×#:Ñ#:¼3Ó#?ˆ×ј4Ò r…có—|j|}t|j««t|j««z
}|D]9}|j||D]}|j||=Œ|j||=Œ;y)z†In case the number of keys changed between calls (e.g. a
        disk disappears) this removes the entry from self.reminders.
        N)r3r‰Úkeysr…r„)rírŠr¥Úold_dictÚ    gone_keysÚgone_keyÚremkeys       r†Ú_remove_dead_remindersz#_WrapNumbers._remove_dead_remindersœs…€ð—:‘:˜dÑ#ˆÜ˜Ÿ ™ ›Ó(¬3¨z¯©Ó/@Ó+AÑAˆ    Ø!ò    3ˆHØ×,Ñ,¨TÑ2°8Ñ<ò 1Ø—N‘N 4Ñ(¨Ñ0ð 1à×"Ñ" 4Ñ(¨Ñ2ñ    3r…có0—||jvr|j||«|S|j||«|j|}i}|D]¨}||}    ||}g}t    t |««D]t}    ||    }
||    } ||    f} |
| kr;|j || xx| z cc<|j||j| «|j|
|j || z«Œvt|«||<Œª||j|<|S#t$r|||<YŒÌwxYw)zlCache dict and sum numbers which overflow and wrap.
        Return an updated copy of `input_dict`.
        ) r3r‹r’r-ÚrangeÚlenr„r…ÚaddÚappendÚtuple) rírŠr¥rŽÚnew_dictr1Ú input_tupleÚ    old_tupleÚbitsÚiÚ input_valueÚ    old_valuer‘s              r†Úrunz_WrapNumbers.run§sK€ð t—z‘zÑ !à N‰N˜: tÔ ,ØÐ à ×#Ñ# J°Ô5à—:‘:˜dÑ#ˆØˆØò    (ˆCØ$ S™/ˆKð Ø$ S™M    ðˆDÜœ3˜{Ó+Ó,ò HØ)¨!™n Ø% a™L    Ø˜q˜Ø Ò*à—N‘N 4Ñ(¨Ó0°IÑ=Ó0Ø×&Ñ& tÑ,¨SÑ1×5Ñ5°fÔ=Ø— ‘ ˜K¨$¯.©.¸Ñ*>¸vÑ*FÑFÕGð Hô" $›KˆHSŠMð+    (ð.&ˆ
‰
4ÑØˆøô)ò ð!,˜‘ Ùð     úsÁDÄDÄDNcó—|j5|€O|jj«|jj«|jj«nT|jj |d«|jj |d«|jj |d«ddd«y#1swYyxYw)z>Clear the internal cache, optionally only for function 'name'.N)rƒr3r7r„r…Úpop)rír¥s  r†r8z_WrapNumbers.cache_clearÎs‘€à Y‰Yñ    3؈|Ø—
‘
× Ñ Ô"Ø—‘×$Ñ$Ô&Ø×"Ñ"×(Ñ(Õ*à—
‘
—‘˜t TÔ*Ø—‘×"Ñ" 4¨Ô.Ø×"Ñ"×&Ñ& t¨TÔ2÷    3÷    3ñ    3ús B&B<Â<CcóŒ—|j5|j|j|jfcddd«S#1swYyxYw)z5Return internal cache dicts as a tuple of 3 elements.N)rƒr3r„r…rs r†Ú
cache_infoz_WrapNumbers.cache_infoÚs:€à Y‰Yñ    DØ—J‘J §¡°×0BÑ0BÐC÷    D÷    Dò    Dús    #:ºAr)
rr‚rƒrr r‹r’r r8r¤r„r…r†rr‰s(„ñò ò @ò    3ò%óN
3óDr…rcóz—tj5tj||«cddd«S#1swYyxYw)zÅGiven 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)Ú_wnrƒr )rŠr¥s  r†rPrPàs.€ô
 
‰ñ)܏w‰wz 4Ó(÷)÷)ò)ús‘1±:i€có&—t|dt¬«S)NÚrb)Ú    buffering)ÚopenÚFILE_READ_BUFFER_SIZE)Úfnames r†rRrRûs€Ü tÔ'<Ô =Ð=r…có¦—t|ttt¬«}    t|_|S#t
$rY|St $r|j«‚wxYw)zaOpen a file in text mode by using the proper FS encoding and
    en/decoding error handlers.
    )r©ÚencodingÚerrors)rªr«r1r2Ú _CHUNK_SIZEr>r.Úclose)r¬Úfobjs  r†rQrQÿsa€ô Ø Ü'ÜÜô     €Dð ô1ˆÔð €Køô ò Ø ð
€Kô     òØ 
‰
Œ Ø ðús *ª    A¶Acóî—|tur"||«5}|j«cddd«S    ||«5}|j«cddd«S#1swYyxYw#1swYyxYw#t$r|cYSwxYw)zÛRead entire file content and return it as a string. File is
    opened in text mode. If specified, `fallback` is the value
    returned in case of error, either if the file does not exist or
    it can't be read().
    N)Ú_DEFAULTÚreadrL)r¬ÚfallbackÚ_openÚfs    r†rSrSs|€ð ”8ÑÙ 5‹\ð    ˜QØ—6‘6“8÷    ñ    ð    Ùu“ð   Ø—v‘v“x÷  ñ  ÷        ð    ú÷  ð  ûäò    ØŠOð    ús9‘A¬A&´AÁ    A&ÁAÁA#ÁA&Á#A&Á& A4Á3A4có&—t||t¬«S)z,Same as above but opens file in binary mode.)r¶r·)rSrR)r¬r¶s  r†rTrT*s€ä ˆu˜x¬{Ô ;Ð;r…có—d}i}t|dd«D]\}}d|dzdzz||<Œt|dd«D]3}t|«||k\sŒt|«||z }|t    «zcS|t |d|¬«zS)zÚUsed by various scripts. See: https://code.activestate.com/recipes/578019-bytes-to-human-human-to-bytes-converter/?in=user-4178764.
 
    >>> bytes2human(10000)
    '9.8K'
    >>> bytes2human(100001221)
    '95.4M'
    )    ÚBÚKÚMÚGÚTÚPÚEÚZÚYr€Né
r)ÚsymbolrÕ)Ú    enumerateÚreversedÚabsr$ÚlocalsÚdict)ÚnrøÚsymbolsÚprefixrÚsrÅrÕs        r†rUrU/s£€ð<€GØ €Fܘ' ! "˜+Ó&ò&‰ˆˆ1ؘ!˜a™% 2™Ñ%ˆˆqŠ    ð&ä˜7 1 2˜;Ó'ò%ˆÜ ˆq‹6V˜F‘^Ó #ܘ!“H˜v f™~Ñ-ˆEØœF›HÑ$Ò $ð%ð ”D ¨¡
°!Ô4Ñ 4Ð4r…có<—tjdjS)z+Return updated psutil.PROCFS_PATH constant.rè)ÚsysÚmodulesÚ PROCFS_PATHr„r…r†Úget_procfs_pathrÓBs€ä ;‰;xÑ  × ,Ñ ,Ð,r…có8—|jtt¬«S)N)r®r¯)Údecoder1r2)rÎs r†rÕrÕGs€Ø 8‰8œX¬mˆ8Ó <Ð<r…cóƗtjdk(ry    ddl}|j«sJ‚|j    «|j d«dkDsJ‚    y#t $rYywxYw)Nr\TrÚcolorsF)rGr¥ÚcursesÚisattyÚ    setuptermÚtigetnumr.)ÚfilerØs  r†rYrYPsb€ä    ‡ww$‚Øð    Ûà{‰{Œ}Ј}Ø×ÑÔØ‰˜xÓ(¨1Ò,Ð,Ñ,ðøô òÙðús–<AÁ    A ÁA Fc óD—t«s|Sg}tddddddddd    ¬
«    }d |d <    ||}|j |«|r|j d«ddj|«›d|›dS#t$r,d |›dt|j    ««›}t |«d ‚wxYw)z*Return an highlighted version of 'string'.Ú34Ú33Ú30Ú32Ú37Ú36Ú91Ú35Ú93)    ÚblueÚbrownÚdarkgreyÚgreenÚgreyÚ    lightblueÚredÚvioletÚyellowÚ29Núinvalid color z; choose amongst Ú1z[ú;Úmz)rYrÊr-Úlistrr_r—rù)rÎÚcolorÚboldÚattrr×rös      r†rXrX`sǀä Ô !ØˆØ €DÜ Ø ØØØØ ØØ ØØô
€Fð€Fˆ4Lð(ؐu‘ ˆð    ‡KKÔÙ Ø  ‰ CÔØ 3—8‘8˜D“>Ð" ! A 3 gÐ .Ð.øô ò(ؘu˜iÐ'8¼¸f¿k¹k»mÓ9LÐ8MÐNˆÜ˜‹o 4Ð'ð(ús ©A*Á*5Bcót—t«st||¬«ytrtt|||«|¬«yddl}d}|j
j j}|j
j j}tdddd¬«}||d<    ||}|r
|dkr|d z }|tjurd nd }
|j |_||
«} || |«    t||¬«|| |«y#t$r,d    |›d
t|j««›}    t|    «d‚wxYw#|| |«wxYw)z$Print a colorized version of string.©rÜrNéréé)rêrírèrïrñz; choose between éiôÿÿÿiõÿÿÿ)rYÚprintrrXÚctypesÚwindllÚKernel32Ú GetStdHandleÚSetConsoleTextAttributerÊr-rõrr_rÐÚstderrÚc_ulongÚrestype) rÎrör÷rÜrÚ DEFAULT_COLORrrr×röÚ    handle_idÚhandles             r†rZrZ|s:€ô  Ô !Ü ˆadÖÝ    Ü ŒfQ˜˜tÓ$¨4Ö0ãàˆ Ø—}‘}×-Ñ-×:Ñ:ˆ à M‰M× "Ñ "× :Ñ :ð     ô˜A 1¨A°aÔ8ˆØ$ˆˆt‰ ð    ,ؘ5‘MˆEñ E˜Q’JØ Q‰JˆEà¤3§:¡:Ñ-‘C°3ˆ    Ø%Ÿ~™~ˆ ÔÙ˜iÓ(ˆÙ ¨Ô.ð    ;Ü !˜$Õ á # F¨MÕ :øô!ò    ,à       ð*ܘŸ™›Ó'Ð*ð,ð ô˜S“/ tÐ +ð     ,ûñ  $ F¨MÕ :úsÂC4à D,Ã45D)Ä, D7có—trƒddl}|j|j«j«\}}}}}t |t «rt |t«rd|›}nd|›}td|›d|›d|›tj¬«yy)z@If PSUTIL_DEBUG env var is set, print a debug message to stderr.rNz    ignoring zpsutil-debug [ú:z]> rú) r    ÚinspectÚ getframeinfoÚ currentframeÚf_backÚ
isinstancer.rLrÿrÐr)rör r¬ÚlinenoÚ_Ú_linesÚ_indexs       r†rWrW¤sŒ€åÛà+2×+?Ñ+?Ø ×  Ñ  Ó "× )Ñ )ó,
Ñ(ˆˆvq˜& &ô cœ9Ô %ܘ#œwÔ'à! # Ð'‘à! # Ð)Ü ؘU˜G 1 V H¨C°¨uÐ 5¼C¿J¹Jö    
ðr…r)z%(value).1f%(symbol)s)NF)†rrêÚenumr9rGrPrHrÐrrxrrrrrÚ ImportErrorrÚboolÚgetenvr    Úobjectr´Ú__all__r¥rrÚplatformÚ
startswithr rrr
rr r rÚAIXr'r(r$r)r+r/r#r-r.r%r&r,r*r0rrrrrrrrrrrrÚIntEnumr~ÚglobalsÚupdateÚ __members__rˆÚgetfilesystemencodingr1Úgetfilesystemencodeerrorsr2rDr@r>r?rArEr<rBrCr=r½rÁrÅrÈr4r9r:r;r6r7r8r5r3rØrFr.rçrrrrrLrIrErHrKrMrJrNrOrVrrrGrrPr¦r8r¤r«rRrQrSrTrUrÓrÕÚstdoutrYrXrZrWr„r…r†ú<module>r&sãðñ
ó Û ÛÛ    Û Û Û
ÛÛÝ"ÝÝÝðÝðÝñ
IB—I‘I˜nÓ-Ó.€ Ù ‹8€ò €ðL     ‰7Ñ€Ø
'‰'T‰/€Ø  ‰ ×Ñ Ó(€Ø  ‰ ×Ñ Ó)€Ø €Ø
,‰,×
!Ð"<Ó
=ۯ
,‰,×
! )Ó
,€Ø     ‰×     Ñ      Ó    *€Ø Ò"Ò"˜F€Ø  ‰ ×ÑР4Ó5€Ø    ‡ll×јeÓ$€ð€Ø€Ø ÐØ€Ø$ÐØ€ Ø€ ØÐØ€ Ø€ Ø€ Ø€ØÐØ€ ð!ÐØ€ Ø€ Ø€Ø€Ø€Ø €
؀؀ Ø€ Ø€ Ø €    ô— ‘ ôñ ƒ    ×ѐ×&Ñ&Ô'ô$—,‘,ôñ
ƒ    ×ѐ×(Ñ(Ô)ð %ˆ3× $Ñ $Ó &€Ø-×-Ñ-Ó/€ ñ    7ò%ó    &€ñ˜ Ò&JÓ K€
á
Yò!<ó =€ñ {Ò$NÓ O€    á    Hò4ó
5ۖ
    7ÒJÓK€á7ò.ó    /€ñ jÚJó L€ñ {ÚBó D€    ñ ØÒNó P€    ñ jÒ";Ó <€á
Ø Ò7ó 9€ñ jÒ"JÓ K€á&˜7 IÐ.Ó/€ñ ØÒGó €    ñ { V¨T NÓ 3€    á
YÒ BÓ
C€á7Ò:Ó;€á7Ò:Ó;€áØ    Ò Eó€ñ Y ¨GР4Ó
5€á    H˜{¨MÐ:Ó    ;€áØ Ò Aó    €ñ
&˜4 ˜.Ó)€ðh Ð (¨;¸
Ð*CÐ DØ hÐ  + Ð /؈Y˜˜ Ð &Ø hÐ  * Ð .؈Y˜˜ Ð %ؐxÐ   ;°
Ð";Ð <؈i˜+ zÐ2Ð 3؈j˜;¨
Ð3Ð 4ñ     €    ð ÐØ ×ÑØ˜k˜]Ð+ؐ˜j˜\Ð*ñôð
 ЙuØ ×ѐf ˜y¨;¸
Ð*CÐDÐEÔFô>ˆIô>ôBAEôAô"LMôLô& A5ô AôEUôEó.    ò*òZDòN (ò ò    òò8òó@ò&
ò,÷.TDñTDòn)ñƒn€ØŸ?™?€ ÔØŸ.™.€ Ôð"Ðò>òð4!¨    óð""ó<ó
5ò&-ò
=ð    Ø!Ÿjšjò ó    ð ó/ð:˜ C§J¢Jó%;óP
øðSò؃Hðûðò؃Gðús$ÁQ,ÁQ:Ñ,Q7Ñ6Q7Ñ:RÒR