§
    ¤	Êjf  ã            
       óä  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddlm
Z
 ddlmZ ddlmZ 	 ddlmZ n# e$ r dZY nw xY w	 ddlmZ n# e$ r dZY nw xY w e ej        d¦  «        ¦  «        Z e¦   «         Zg d	¢Zej        d
k    Zej        dk    Zej                             d¦  «        Zej                             d¦  «        ZeZej                             d¦  «        Zej                             d¦  «        Zej                             d¦  «        Z epepe Z!ej                             d¦  «        Z"ej                             d¦  «        Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0d Z1d!Z2d"Z3d#Z4d$Z5d%Z6d&Z7d'Z8d(Z9d)Z:d*Z;d+Z<d,Z= G d-„ d.ej>        ¦  «        Z? e@¦   «          A                    e?jB        ¦  «          G d/„ d0ej>        ¦  «        ZC e@¦   «          A                    eCjB        ¦  «          ejD        ¦   «         ZE ejF        ¦   «         ZGe
eegeegfe
egegfe
gegfe
egegfe
gegfe
egeegfe
geegfegeegfd1œZHe� eH A                    egegfegegfd2œ¦  «         e�e"seH A                    d3egeegfi¦  «          G d4„ d5eI¦  «        ZJ G d6„ d7eJ¦  «        ZK G d8„ d9eK¦  «        ZL G d:„ d;eJ¦  «        ZM G d<„ d=eJ¦  «        ZNd[d>„ZOd?„ ZPd@„ ZQdA„ ZRdB„ ZSdC„ ZTdD„ ZUdE„ ZVdF„ ZWd[dG„ZXdH„ ZYdI„ ZZ G dJ„ dK¦  «        Z[dL„ Z\ e[¦   «         Z]e]j^        e\_^        e]j_        e\__        dMZ`dN„ ZadO„ ZbeebfdP„ZcefdQ„Zdd\dS„ZedT„ ZfdU„ ZgePejh        fdV„¦   «         Zid]dX„ZjddWejh        fdY„ZkdZ„ ZldS )^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)ÚAF_INET)Ú
SOCK_DGRAM)ÚSOCK_STREAM)ÚAF_INET6)ÚAF_UNIXÚPSUTIL_DEBUG)?Ú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   Ú	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                   ó   — e Zd ZdZdZdZdS )Ú	NicDuplexé   é   r   N)Ú__name__Ú
__module__Ú__qualname__r   r    r!   © ó    ú>C:\Projects\Muse2API\.venv\Lib\site-packages\psutil/_common.pyrj   rj   z   s    € € € € € Ø€OØ€OØÐÐÐrq   rj   c                   ó   — e Zd ZdZdZdS )ÚBatteryTimeéÿÿÿÿéþÿÿÿN)rm   rn   ro   ÚPOWER_TIME_UNKNOWNÚPOWER_TIME_UNLIMITEDrp   rq   rr   rt   rt   „   s   € € € € € ØÐØÐÐÐrq   rt   )ÚallÚtcpÚtcp4ÚudpÚudp4ÚinetÚinet4Úinet6)Útcp6Úudp6Úunixc                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )ÚErrorzQBase exception class. All other psutil exceptions inherit
    from this one.
    Úpsutilc                 ó~   — t          j        ¦   «         }|D ]&}t          | |d ¦  «        }|s|dk    r|dk    r|||<   Œ'|S )NÚpidr   )ÚcollectionsÚOrderedDictÚgetattr)ÚselfÚattrsÚinfoÚnameÚvalues        rr   Ú	_infodictzError._infodict·   sW   € ÝÔ&Ñ(Ô(ˆØð 	#ð 	#ˆDÝ˜D $¨Ñ-Ô-ˆEØð #˜ š˜¨5°Aª:¨:Ø"��T‘
øØˆrq   c                 ó  — |                       d¦  «        }|rEd                     d                     d„ |                     ¦   «         D ¦   «         ¦  «        ¦  «        }nd }d                     d„ t	          | dd¦  «        |fD ¦   «         ¦  «        S )	N)rˆ   Úppidr�   z({})ú, c                 ó"   — g | ]\  }}|› d |›�‘ŒS ©ú=rp   ©Ú.0ÚkÚvs      rr   ú
<listcomp>z!Error.__str__.<locals>.<listcomp>Ä   s&   € ÐAÐAÐA©D¨A¨q˜a˜<˜< !˜<˜<ÐAÐAÐArq   ú c                 ó   — g | ]}|¯|‘ŒS rp   rp   )r™   Úxs     rr   rœ   z!Error.__str__.<locals>.<listcomp>È   s   € ÐMÐMÐM˜qÈ1ÐM˜ÐMÐMÐMrq   ÚmsgÚ )r‘   ÚformatÚjoinÚitemsr‹   ©rŒ   rŽ   Údetailss      rr   Ú__str__zError.__str__¿   s�   € à�~Š~Ð5Ñ6Ô6ˆØð 	Ø—m’mØ—	’	ÐAÐA°D·J²J±L´LÐAÑAÔAÑBÔBñô ˆGˆGð ˆGØ�xŠxÐMÐM¥W¨T°5¸"Ñ%=Ô%=¸wÐ$GÐMÑMÔMÑNÔNÐNrq   c                 ó´   — |                       d¦  «        }d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d| j        j        › d|› d�S )N)rˆ   r“   r�   Úsecondsr    r”   c                 ó"   — g | ]\  }}|› d |›�‘ŒS r–   rp   r˜   s      rr   rœ   z"Error.__repr__.<locals>.<listcomp>Í   s&   € ÐCÐCÐC©d¨a° ˜\˜\ A˜\˜\ÐCÐCÐCrq   zpsutil.ú(ú))r‘   r£   r¤   Ú	__class__rm   r¥   s      rr   Ú__repr__zError.__repr__Ê   sZ   € à�~Š~ÐGÑHÔHˆØ—)’)ÐCÐC°d·j²j±l´lÐCÑCÔCÑDÔDˆØ=˜œÔ0Ð=Ð=°7Ð=Ð=Ð=Ð=rq   N)rm   rn   ro   Ú__doc__r‘   r§   r®   rp   rq   rr   r…   r…   °   sU   € € € € € ðð ð €Jðð ð ð	Oð 	Oð 	Oð>ð >ð >ð >ð >rq   r…   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚNoSuchProcesszXException raised when a process with a certain PID doesn't
    or no longer exists.
    r†   Nc                 óh   — t                                | ¦  «         || _        || _        |pd| _        d S )Nzprocess no longer exists©r…   Ú__init__rˆ   r�   r    ©rŒ   rˆ   r�   r    s       rr   r´   zNoSuchProcess.__init__Ø   s3   € Ý�Š�tÑÔÐØˆŒØˆŒ	ØÐ4Ð4ˆŒˆˆrq   c                 ó8   — | j         | j        | j        | j        ffS ©N©r­   rˆ   r�   r    ©rŒ   s    rr   Ú
__reduce__zNoSuchProcess.__reduce__Þ   ó   € Ø” ¤¨4¬9°d´hÐ ?Ð@Ð@rq   ©NN©rm   rn   ro   r¯   r´   rº   rp   rq   rr   r±   r±   Ñ   sM   € € € € € ðð ð €Jð5ð 5ð 5ð 5ðAð Að Að Að Arq   r±   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚZombieProcessa1  Exception 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                 ó`   — t                                | |||¦  «         || _        |pd| _        d S )Nz"PID still exists but it's a zombie)r±   r´   r“   r    )rŒ   rˆ   r�   r“   r    s        rr   r´   zZombieProcess.__init__ì   s4   € Ý×Ò˜t S¨$°Ñ4Ô4Ð4ØˆŒ	ØÐ>Ð>ˆŒˆˆrq   c                 óD   — | j         | j        | j        | j        | j        ffS r·   )r­   rˆ   r�   r“   r    r¹   s    rr   rº   zZombieProcess.__reduce__ñ   s    € Ø” ¤¨4¬9°d´iÀÄÐ JÐKÐKrq   ©NNNr½   rp   rq   rr   r¿   r¿   â   sM   € € € € € ðð ð €Jð?ð ?ð ?ð ?ð
Lð Lð Lð Lð Lrq   r¿   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚAccessDeniedz@Exception raised when permission to perform an action is denied.r†   Nc                 óh   — t                                | ¦  «         || _        || _        |pd| _        d S )Nr¡   r³   rµ   s       rr   r´   zAccessDenied.__init__ú   s1   € Ý�Š�tÑÔÐØˆŒØˆŒ	Ø�9˜"ˆŒˆˆrq   c                 ó8   — | j         | j        | j        | j        ffS r·   r¸   r¹   s    rr   rº   zAccessDenied.__reduce__   r»   rq   rÂ   r½   rp   rq   rr   rÄ   rÄ   õ   sG   € € € € € ØJÐJà€Jðð ð ð ðAð Að Að Að Arq   rÄ   c                   ó$   — e Zd ZdZdZdd„Zd„ ZdS )ÚTimeoutExpiredzWRaised on Process.wait(timeout) if timeout expires and process
    is still alive.
    r†   Nc                 óz   — t                                | ¦  «         || _        || _        || _        d|› d�| _        d S )Nztimeout after z seconds)r…   r´   r©   rˆ   r�   r    )rŒ   r©   rˆ   r�   s       rr   r´   zTimeoutExpired.__init__  s?   € Ý�Š�tÑÔÐØˆŒØˆŒØˆŒ	Ø5 GÐ5Ð5Ð5ˆŒˆˆrq   c                 ó8   — | j         | j        | j        | j        ffS r·   )r­   r©   rˆ   r�   r¹   s    rr   rº   zTimeoutExpired.__reduce__  s   € Ø” ¤¨t¬x¸¼Ð CÐDÐDrq   r¼   r½   rp   rq   rr   rÈ   rÈ     sM   € € € € € ðð ð €Jð6ð 6ð 6ð 6ðEð Eð Eð Eð Erq   rÈ   c                 óx   — 	 t          | ¦  «        |z  dz  }|�t          ||¦  «        }|S # t          $ r Y dS w xY w)z5Calculate percentage usage of 'used' against 'total'.éd   Ng        )ÚfloatÚroundÚZeroDivisionError)ÚusedÚtotalÚround_Úrets       rr   r8   r8     s\   € ðÝ�T‰{Œ{˜UÑ" cÑ)ˆð ÐÝ˜˜VÑ$Ô$ˆCØˆ
øõ ð ð ð Øˆsˆsðøøøs   ‚+ «
9¸9c                 óf   ‡ ‡— t          j        ‰ ¦  «        ˆˆ fd„¦   «         }ˆfd„}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                  óâ   •— | t          t          |                     ¦   «         ¦  «        ¦  «        f}	 ‰|         S # t          $ r) 	  ‰| i |¤Žx}‰|<   n# t          $ r}|d ‚d }~ww xY w|cY S w xY wr·   )Ú	frozensetÚsortedr¤   ÚKeyErrorÚ	Exception)ÚargsÚkwargsÚkeyrÓ   ÚerrÚcacheÚfuns        €€rr   Úwrapperzmemoize.<locals>.wrapper?  s£   ø€ à•Y�v f§l¢l¡n¤nÑ5Ô5Ñ6Ô6Ð7ˆð	Ø˜”:ÐøÝð 	ð 	ð 	ð$Ø#& 3¨Ð#7°Ð#7Ð#7Ð7��e˜C‘j�jøÝð $ð $ð $Ø˜tÐ#øøøøð$øøøàˆJˆJˆJð	øøøs3   ³; »
A.ÁAÁA.Á
A&ÁA!Á!A&Á&A.Á-A.c                  ó0   •— ‰                       ¦   «          dS )zClear cache.N)Úclear)rÞ   s   €rr   Úcache_clearzmemoize.<locals>.cache_clearK  s   ø€ à�Š‰Œˆˆˆrq   )Ú	functoolsÚwrapsrã   )rß   rà   rã   rÞ   s   `  @rr   r5   r5   '  sf   øø€ õ0 „_�SÑÔð	ð 	ð 	ð 	ð 	ñ Ôð	ðð ð ð ð ð €EØ%€GÔØ€Nrq   c                 ón   ‡ — t          j        ‰ ¦  «        ˆ fd„¦   «         }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         ‰         }nz# t          $ r$ 	  ‰| ¦  «        cY S # t          $ r}|d ‚d }~ww xY wt          $ rA 	  ‰| ¦  «        }n# t          $ r}|d ‚d }~ww xY w	 || j         ‰<   n# t          $ r Y nw xY wY nw xY w|S r·   )Ú_cacheÚAttributeErrorrÙ   rØ   )rŒ   rÓ   rÝ   rß   s      €rr   rà   z'memoize_when_activated.<locals>.wrappero  sý   ø€ ð	à”+˜cÔ"ˆCˆCøÝð 	$ð 	$ð 	$ð$Ø�s˜4‘y”yÐ Ð Ð øÝð $ð $ð $Ø˜tÐ#øøøøð$øøøåð 	ð 	ð 	ð$Ø�c˜$‘i”i��øÝð $ð $ð $Ø˜tÐ#øøøøð$øøøðØ#&�”˜CÑ Ð øÝ!ð ð ð ð �ðøøøøøð	øøøð ˆ
sq   ƒ ‘
Bœ
)¦B©
;³6¶;»BÁAÁBÁ
A&ÁA!Á!A&Á&BÁ*
A5Á4BÁ5
BÁ?BÂBÂBÂBc                 ó   — i | _         dS )zsActivate cache. Expects a Process instance. Cache will be
        stored as a "_cache" instance attribute.
        N)rè   ©Úprocs    rr   Úcache_activatez.memoize_when_activated.<locals>.cache_activate‰  s   € ð ˆŒˆˆrq   c                 ó.   — 	 | ` dS # t          $ r Y dS w xY w)zDeactivate and clear cache.N)rè   ré   rë   s    rr   Úcache_deactivatez0memoize_when_activated.<locals>.cache_deactivate�  s2   € ð	Ø���øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ †
“)rä   rå   rí   rï   )rß   rà   rí   rï   s   `   rr   Úmemoize_when_activatedrð   T  sh   ø€ õ6 „_�SÑÔðð ð ð ñ Ôðð2ð ð ðð ð ð ,€GÔØ/€GÔØ€Nrq   c                 ó”   — 	 t          j        | ¦  «        }t          j        |j        ¦  «        S # t          $ r ‚ t
          $ r Y dS w xY w)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)ÚpathÚsts     rr   r4   r4   ›  sa   € ð
(ÝŒW�T‰]Œ]ˆõ Œ|˜BœJÑ'Ô'Ð'øõ ð ð ð ØÝð ð ð Øˆuˆuðøøøs   ‚/ ¯AÁAc                 óf   — 	 t          j        | ¦  «         dS # t          $ r ‚ t          $ r Y dS w xY w)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)rò   ró   rö   r÷   )rø   s    rr   r7   r7   ª  sT   € ð
Ý
Œ�‰Œˆð ˆtøõ ð ð ð ØÝð ð ð Øˆuˆuðøøøs   ‚ ˜0¯0c                  óö   — t           j        rt          €dS 	 t          j         t          t           j        ¦  «        5 } |                      d¦  «         ddd¦  «         n# 1 swxY w Y   dS # t
          $ r Y dS w xY w)z2Return True if IPv6 is supported on this platform.NF)z::1r   T)ÚsocketÚhas_ipv6r   r   Úbindr÷   )Úsocks    rr   r9   r9   ¹  s»   € åŒ?ð �hÐ.ØˆuðÝŒ]�8¥VÔ%7Ñ8Ô8ð 	"¸DØ�IŠI�jÑ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"àˆtøÝð ð ð Øˆuˆuðøøøs4   —$A* »AÁA* ÁA!Á!A* Á$A!Á%A* Á*
A8Á7A8c                 ó  — i }d}t           }	 |                      d|¦  «        }||k    rnU|                      d||¦  «        }||k    r2| ||…         }| |dz   |…         }|r|                     ¦   «         }|||<   |dz   }Œr|S )zCParse a C environ block of environment variables into a dictionary.r   Tú r—   rl   )r   ÚfindÚupper)ÚdatarÓ   ÚposÚWINDOWS_Únext_posÚ	equal_posrÜ   r�   s           rr   r6   r6   Å  s«   € ð €CØ
€Cõ €HðØ—9’9˜T 3Ñ'Ô'ˆà�sŠ?ˆ?Øà—I’I˜c 3¨Ñ1Ô1ˆ	Ø�sŠ?ˆ?Ø�s˜9�}Ô%ˆCØ˜ Q™¨Ð1Ô2ˆEàð "Ø—i’i‘k”k�ØˆC�‰HØ˜‰lˆðð  €Jrq   c                 óP   — 	 t          j        | ¦  «        S # t          $ r | cY S w xY w)z�Convert a numeric socket family value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rü   ÚAddressFamilyÚ
ValueError©Únums    rr   r:   r:   á  s<   € ðÝÔ# CÑ(Ô(Ð(øÝð ð ð Øˆ
ˆ
ˆ
ðøøøó   ‚ –%¤%c                 óP   — 	 t          j        | ¦  «        S # t          $ r | cY S w xY w)zConvert a numeric socket type value to an IntEnum member.
    If it's not a known member, return the numeric value itself.
    )rü   Ú
SocketKindr  r  s    rr   r;   r;   ë  s<   € ðÝÔ  Ñ%Ô%Ð%øÝð ð ð Øˆ
ˆ
ˆ
ðøøør  c           	      ó˜  — ddl m} |t          j        t          hv r|r
 |j        |Ž }|r
 |j        |Ž }|t          j        k    r,|t          t          hv r|                     |t          ¦  «        }nt          }t          |¦  «        }t          |¦  «        }|€|                     | |||||¦  «        S |                     | ||||||¦  «        S )z2Convert a raw connection tuple to a proper ntuple.rl   )Ú_ntuples)r¡   r  rü   r   r   Úaddrr   Úgetr   r:   r;   ÚpconnÚsconn)	ÚfdÚfamÚtype_ÚladdrÚraddrÚstatusÚ
status_maprˆ   Úntps	            rr   rB   rB   õ  sâ   € à!Ð!Ð!Ð!Ð!Ð!à
�vŒ~�xÐ(Ð(Ð(Øð 	%Ø�C”H˜eÐ$ˆEØð 	%Ø�C”H˜eÐ$ˆEØ•Ô"Ò"Ð" s­w½Ð.AÐ'AÐ'AØ—’ ­	Ñ2Ô2ˆˆåˆÝ
˜#Ñ
Ô
€CÝ˜UÑ#Ô#€EØ
€{Ø�yŠy˜˜S %¨°°vÑ>Ô>Ð>à�yŠy˜˜S %¨°°v¸sÑCÔCÐCrq   c                 ób  — ddl }| j        r| j        sdS | j        t          j        k    r8t          |                     | j        › d| j        › �d¬¦  «        j        ¦  «        S | j        t          j	        k    r8t          | 
                    | j        › d| j        › �d¬¦  «        j        ¦  «        S dS )zbGiven the address ntuple returned by ``net_if_addrs()``
    calculates the broadcast address.
    r   Nú/F)Ústrict)Ú	ipaddressÚaddressÚnetmaskÚfamilyrü   r   ÚstrÚIPv4NetworkÚbroadcast_addressr   ÚIPv6Network)r  r"  s     rr   Úbroadcast_addrr*  
  sØ   € ð ÐÐÐàŒ<ð ˜tœ|ð ØˆtØ„{•f”nÒ$Ð$ÝØ×!Ò!Ø”<Ð0Ð0 $¤,Ð0Ð0¸ð "ñ ô äñ
ô 
ð 	
ð
 „{•f”oÒ%Ð%ÝØ×!Ò!Ø”<Ð0Ð0 $¤,Ð0Ð0¸ð "ñ ô äñ
ô 
ð 	
ð &Ð%rq   c                 ó   ‡ — ˆ fd„}|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        €‰| _        t          j        | ¦  «        ˆˆfd„¦   «         }|S )Nz*() is deprecated and will be removed; use z
() insteadc                 óh   •— t          j        ‰t          d¬¦  «          t          | ‰¦  «        |i |¤ŽS )Nrk   )ÚcategoryÚ
stacklevel)ÚwarningsÚwarnÚDeprecationWarningr‹   )rŒ   rÚ   rÛ   r    Úreplacements      €€rr   Úinnerz/deprecated_method.<locals>.outer.<locals>.inner-  s:   ø€ åŒM˜#Õ(:ÀqÐIÑIÔIÐIØ-•7˜4 Ñ-Ô-¨tÐ>°vÐ>Ð>Ð>rq   )rm   r¯   rä   rå   )rß   r4  r    r3  s     @€rr   Úouterz deprecated_method.<locals>.outer%  su   øø€ àŒ|ð (ð (Øð(ð (ð (ð 	ð Œ;ÐØˆCŒKå	Œ˜Ñ	Ô	ð	?ð 	?ð 	?ð 	?ð 	?ñ 
Ô	ð	?ð ˆrq   rp   )r3  r5  s   ` rr   r3   r3      s#   ø€ ð
ð ð ð ð ð €Lrq   c                   ó8   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd	d„Zd„ Z	dS )
Ú_WrapNumberszNWatches numbers so that they don't overflow and wrap
    (reset to zero).
    c                 ó`   — t          j        ¦   «         | _        i | _        i | _        i | _        d S r·   )Ú	threadingÚLockÚlockrÞ   Ú	remindersÚreminder_keysr¹   s    rr   r´   z_WrapNumbers.__init__<  s-   € Ý”NÑ$Ô$ˆŒ	ØˆŒ
ØˆŒØˆÔÐÐrq   c                 óà   — || j         vsJ ‚|| j        vsJ ‚|| j        vsJ ‚|| j         |<   t          j        t
          ¦  «        | j        |<   t          j        t          ¦  «        | j        |<   d S r·   )rÞ   r<  r=  r‰   ÚdefaultdictÚintÚset)rŒ   Ú
input_dictr�   s      rr   Ú	_add_dictz_WrapNumbers._add_dictB  s}   € Ø˜4œ:Ð%Ð%Ð%Ð%Ø˜4œ>Ð)Ð)Ð)Ð)Ø˜4Ô-Ð-Ð-Ð-Ð-Ø%ˆŒ
�4ÑÝ*Ô6µsÑ;Ô;ˆŒ�tÑÝ#.Ô#:½3Ñ#?Ô#?ˆÔ˜4Ñ Ð Ð rq   c                 ó  — | j         |         }t          |                     ¦   «         ¦  «        t          |                     ¦   «         ¦  «        z
  }|D ]4}| j        |         |         D ]}| j        |         |= Œ| j        |         |= Œ5dS )z†In case the number of keys changed between calls (e.g. a
        disk disappears) this removes the entry from self.reminders.
        N)rÞ   rA  Úkeysr=  r<  )rŒ   rB  r�   Úold_dictÚ	gone_keysÚgone_keyÚremkeys          rr   Ú_remove_dead_remindersz#_WrapNumbers._remove_dead_remindersJ  s–   € ð ”:˜dÔ#ˆÝ˜Ÿš™œÑ(Ô(­3¨z¯ªÑ/@Ô/@Ñ+AÔ+AÑAˆ	Ø!ð 	3ð 	3ˆHØÔ,¨TÔ2°8Ô<ð 1ð 1�Ø”N 4Ô(¨Ð0Ð0ØÔ" 4Ô(¨Ð2Ð2ð	3ð 	3rq   c                 ól  — || j         vr|                      ||¦  «         |S |                      ||¦  «         | j         |         }i }|D ]à}||         }	 ||         }n# t          $ r |||<   Y Œ%w xY wg }t	          t          |¦  «        ¦  «        D ]†}	||	         }
||	         }||	f}|
|k     rA| j        |         |xx         |z  cc<   | j        |         |                              |¦  «         | 	                    |
| j        |         |         z   ¦  «         Œ‡t          |¦  «        ||<   Œá|| j         |<   |S )zlCache dict and sum numbers which overflow and wrap.
        Return an updated copy of `input_dict`.
        )rÞ   rC  rJ  rØ   ÚrangeÚlenr<  r=  ÚaddÚappendÚtuple)rŒ   rB  r�   rF  Únew_dictrÜ   Úinput_tupleÚ	old_tupleÚbitsÚiÚinput_valueÚ	old_valuerI  s                rr   Úrunz_WrapNumbers.runU  s  € ð �t”zÐ!Ð!à�NŠN˜: tÑ,Ô,Ð,ØÐà×#Ò# J°Ñ5Ô5Ð5à”:˜dÔ#ˆØˆØð 	(ð 	(ˆCØ$ Sœ/ˆKðØ$ SœM�	�	øÝð ð ð ð !,�˜‘Ø�ð	øøøð ˆDÝ�3˜{Ñ+Ô+Ñ,Ô,ð Hð H�Ø)¨!œn�Ø% aœL�	Ø˜q˜�Ø Ò*Ð*à”N 4Ô(¨Ð0Ð0Ô0°IÑ=Ð0Ð0Ñ0ØÔ& tÔ,¨SÔ1×5Ò5°fÑ=Ô=Ð=Ø—’˜K¨$¬.¸Ô*>¸vÔ*FÑFÑGÔGÐGÐGå! $™KœKˆH�S‰MˆMà%ˆŒ
�4ÑØˆs   ÁAÁA/Á.A/Nc                 ó„  — | j         5  |€L| j                             ¦   «          | j                             ¦   «          | j                             ¦   «          nQ| j                             |d¦  «         | j                             |d¦  «         | j                             |d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z>Clear the internal cache, optionally only for function 'name'.N)r;  rÞ   râ   r<  r=  Úpop)rŒ   r�   s     rr   rã   z_WrapNumbers.cache_clear|  sú   € àŒYð 	3ð 	3Øˆ|Ø”
× Ò Ñ"Ô"Ð"Ø”×$Ò$Ñ&Ô&Ð&ØÔ"×(Ò(Ñ*Ô*Ð*Ð*à”
—’˜t TÑ*Ô*Ð*Ø”×"Ò" 4¨Ñ.Ô.Ð.ØÔ"×&Ò& t¨TÑ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   ˆB B5Â5B9Â<B9c                 ól   — | j         5  | j        | j        | j        fcddd¦  «         S # 1 swxY w Y   dS )z5Return internal cache dicts as a tuple of 3 elements.N)r;  rÞ   r<  r=  r¹   s    rr   Ú
cache_infoz_WrapNumbers.cache_infoˆ  s“   € àŒYð 	Dð 	DØ”J ¤°Ô0BÐCð	Dð 	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds   ˆ)©-°-r·   )
rm   rn   ro   r¯   r´   rC  rJ  rX  rã   r\  rp   rq   rr   r7  r7  7  s†   € € € € € ðð ð ð  ð  ð@ð @ð @ð	3ð 	3ð 	3ð%ð %ð %ðN
3ð 
3ð 
3ð 
3ðDð Dð Dð Dð Drq   r7  c                 ó„   — t           j        5  t                                | |¦  «        cddd¦  «         S # 1 swxY w Y   dS )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;  rX  )rB  r�   s     rr   r<   r<   Ž  s�   € õ
 
Œð )ð )Ý�wŠw�z 4Ñ(Ô(ð)ð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )ð )ð )s   �5µ9¼9i €  c                 ó0   — t          | dt          ¬¦  «        S )NÚrb)Ú	buffering)ÚopenÚFILE_READ_BUFFER_SIZE)Úfnames    rr   r>   r>   ©  s   € Ý��tÕ'<Ð=Ñ=Ô=Ð=rq   c                 óÂ   — t          | t          t          t          ¬¦  «        }	 t          |_        n.# t
          $ r Y n"t          $ r |                     ¦   «          ‚ w xY w|S )zaOpen a file in text mode by using the proper FS encoding and
    en/decoding error handlers.
    )ra  ÚencodingÚerrors)rb  rc  r0   r1   Ú_CHUNK_SIZEré   rÙ   Úclose)rd  Úfobjs     rr   r=   r=   ­  s   € õ ØÝ'ÝÝð	ñ ô €Dðõ 1ˆÔÐøÝð ð ð ØˆÝð ð ð Ø�
Š
‰ŒˆØðøøøð €Ks   ¤1 ±
A½Ac                 ó  — |t           u r9 || ¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   dS 	  || ¦  «        5 }|                     ¦   «         cddd¦  «         S # 1 swxY w Y   dS # t          $ r |cY S w xY w)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Úreadr÷   )rd  ÚfallbackÚ_openÚfs       rr   r?   r?   Ç  s,  € ð •8ÐÐØˆU�5‰\Œ\ð 	˜QØ—6’6‘8”8ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð	Ø��u‘”ð   Ø—v’v‘x”xð ð  ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  øåð 	ð 	ð 	ØˆOˆOˆOð	øøøsB   •6¶:½:ÁA= ÁA0Á#A= Á0A4Á4A= Á7A4Á8A= Á=BÂBc                 ó0   — t          | |t          ¬¦  «        S )z,Same as above but opens file in binary mode.)rn  ro  )r?   r>   )rd  rn  s     rr   r@   r@   Ø  s   € åˆu˜x­{Ð;Ñ;Ô;Ð;rq   ú%(value).1f%(symbol)sc                 óP  — d}i }t          |dd…         ¦  «        D ]\  }}d|dz   dz  z  ||<   Œt          |dd…         ¦  «        D ]F}t          | ¦  «        ||         k    r+t          | ¦  «        ||         z  }|t	          ¦   «         z  c S ŒG|t          |d         | ¬¦  «        z  S )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ÚYrl   Né
   r   )Úsymbolr�   )Ú	enumerateÚreversedÚabsrÍ   ÚlocalsÚdict)Únr¢   ÚsymbolsÚprefixrU  Úsr~  r�   s           rr   rA   rA   Ý  sÉ   € ð <€GØ€FÝ˜' ! " "œ+Ñ&Ô&ð &ð &‰ˆˆ1Ø˜!˜a™% 2™Ñ%ˆˆq‰	ˆ	Ý˜7 1 2 2œ;Ñ'Ô'ð %ð %ˆÝˆq‰6Œ6�V˜F”^Ò#Ð#Ý˜!‘H”H˜v fœ~Ñ-ˆEØ�F™HœHÑ$Ð$Ð$Ð$ð $ð •D ¨¤
°!Ð4Ñ4Ô4Ñ4Ð4rq   c                  ó0   — t           j        d         j        S )z+Return updated psutil.PROCFS_PATH constant.r†   )ÚsysÚmodulesÚPROCFS_PATHrp   rq   rr   Úget_procfs_pathrŒ  ð  s   € åŒ;�xÔ Ô,Ð,rq   c                 óD   — |                       t          t          ¬¦  «        S )N)rf  rg  )Údecoder0   r1   )r‡  s    rr   rŽ  rŽ  õ  s   € Ø�8Š8�X­mˆ8Ñ<Ô<Ð<rq   c                 ó    — t          | d¦  «        r|                      ¦   «         sdS 	 |                      ¦   «          n# t          $ r Y dS w xY wdS )NÚisattyFT)Úhasattrr�  ÚfilenorÙ   ©Úfiles    rr   rE   rE   þ  sc   € å�4˜Ñ"Ô"ð ¨$¯+ª+©-¬-ð ØˆuðØ�Š‰ŒˆˆøÝð ð ð Øˆuˆuðøøøàˆ4s   ¨= ½
AÁ
AFc                 óŽ  — t          ¦   «         s| S g }t          ddddddddd	¬
¦	  «	        }d|d<   	 ||         }nE# t          $ r8 d|›dt          |                     ¦   «         ¦  «        › �}t          |¦  «        d‚w xY w|                     |¦  «         |r|                     d¦  «         dd                     |¦  «        › d| › d�S )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[0m)rE   rƒ  rØ   ÚlistrE  r  rO  r£   )r‡  ÚcolorÚboldÚattrÚcolorsr    s         rr   rD   rD   	  s  € åÑ!Ô!ð ØˆØ€DÝØØØØØØØØØð
ñ 
ô 
€Fð €Fˆ4�Lð(Ø�u”ˆˆøÝð (ð (ð (ØN˜uÐNÐN½¸f¿kºk¹m¼mÑ9LÔ9LÐNÐNˆÝ˜‰oŒo 4Ð'ð(øøøð 	‡K‚K�ÑÔÐØð Ø�Š�CÑÔÐØ.�3—8’8˜D‘>”>Ð.Ð. AÐ.Ð.Ð.Ð.s
   ±: ºAA<c                 óš  — t          ¦   «         st          | |¬¦  «         dS t          r"t          t          | ||¦  «        |¬¦  «         dS ddl}d}|j        j        j        }|j        j        j        }t          dddd¬¦  «        }||d<   	 ||         }nE# t          $ r8 d	|›d
t          |                     ¦   «         ¦  «        ›�}	t          |	¦  «        d‚w xY w|r|dk    r|dz  }|t          j        u rdnd}
|j        |_         ||
¦  «        } |||¦  «         	 t          | |¬¦  «          |||¦  «         dS #  |||¦  «         w xY w)z$Print a colorized version of string.r“  r   Né   rk   é   é   )r¢  r¥  r   r§  r©  z; choose between é   iôÿÿÿiõÿÿÿ)rE   Úprintr   rD   ÚctypesÚwindllÚKernel32ÚGetStdHandleÚSetConsoleTextAttributerƒ  rØ   r­  rE  r  r‰  ÚstderrÚc_ulongÚrestype)r‡  r®  r¯  r”  r¸  ÚDEFAULT_COLORr»  r¼  r±  r    Ú	handle_idÚhandles               rr   rF   rF   %  s¹  € õ  Ñ!Ô!ð !;Ýˆa�dÐÑÔÐÐÐÝ	ð ;Ý�f�Q˜˜tÑ$Ô$¨4Ð0Ñ0Ô0Ð0Ð0Ð0àˆˆˆàˆØ”}Ô-Ô:ˆàŒMÔ"Ô:ð 	 õ ˜A 1¨A°aÐ8Ñ8Ô8ˆØ$ˆˆt‰ð	,Ø˜5”MˆEˆEøÝð 	,ð 	,ð 	,ð, ð ,ð ,Ý˜Ÿš™œÑ'Ô'ð,ð ,ð õ ˜S‘/”/ tÐ+ð	,øøøð ð 	�E˜Q’J�JØ�Q‰JˆEà¥3¤:Ð-Ð-�C�C°3ˆ	Ø%œ~ˆÔØ�˜iÑ(Ô(ˆØÐ ¨Ñ.Ô.Ð.ð	;Ý�!˜$ÐÑÔÐà#Ð# F¨MÑ:Ô:Ð:Ð:Ð:øÐ#Ð# F¨MÑ:Ô:Ð:Ð:øøøs   ÂB ÂACÄD< Ä<E
c                 ó6  — t           r‘ddl}|                     |                     ¦   «         j        ¦  «        \  }}}}}t          | t          ¦  «        r t          | t          ¦  «        rd| › �} nd| ›�} t          d|› d|› d| › �t          j
        ¬¦  «         dS dS )z@If PSUTIL_DEBUG env var is set, print a debug message to stderr.r   Nz	ignoring zpsutil-debug [ú:z]> r“  )r   ÚinspectÚgetframeinfoÚcurrentframeÚf_backÚ
isinstancerÙ   r÷   r·  r‰  r½  )r    rÅ  rd  ÚlinenoÚ_Ú_linesÚ_indexs          rr   rC   rC   M  sÑ   € åð 
Øˆˆˆà+2×+?Ò+?Ø× Ò Ñ"Ô"Ô)ñ,
ô ,
Ñ(ˆˆv�q˜& &õ �c�9Ñ%Ô%ð 	*Ý˜#�wÑ'Ô'ð *à' #Ð'Ð'��à) #Ð)Ð)�ÝØ5˜UÐ5Ð5 VÐ5Ð5°Ð5Ð5½C¼Jð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ð
ð 
rq   r·   )rr  )NF)mr¯   r‰   Úenumrä   rò   rü   ró   r‰  r9  r0  r   r   r   r   ÚImportErrorr   ÚboolÚgetenvr   Úobjectrl  Ú__all__r�   r   r   ÚplatformÚ
startswithr   r   r   r	   r   r   r
   r   ÚAIXr&   r'   r#   r(   r*   r.   r"   r,   r-   r$   r%   r+   r)   r/   r   r   r   r   r   r   r   r   r   r   r   r   ÚIntEnumrj   ÚglobalsÚupdateÚ__members__rt   Úgetfilesystemencodingr0   Úgetfilesystemencodeerrorsr1   r2   rÙ   r…   r±   r¿   rÄ   rÈ   r8   r5   rð   r4   r7   r9   r6   r:   r;   rB   r*  r3   r7  r<   r^  rã   r\  rc  r>   r=   r?   r@   rA   rŒ  rŽ  ÚstdoutrE   rD   rF   rC   rp   rq   rr   ú<module>rÞ     sy  ðð
ð ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðØÐÐÐÐÐÐøØð ð ð Ø€H€H€HðøøøðØÐÐÐÐÐÐøØð ð ð Ø€G€G€Gðøøøð ˆt�I�B”I˜nÑ-Ô-Ñ.Ô.€Øˆ6‰8Œ8€ðð ð €ðD 	Œ�7Ò€Ø
Œ'�TŠ/€ØŒ×Ò Ñ(Ô(€ØŒ×Ò Ñ)Ô)€Ø€Ø
Œ,×
!Ò
!Ð"<Ñ
=Ô
=€Ø
Œ,×
!Ò
! )Ñ
,Ô
,€Ø	Œ×	 Ò	  Ñ	*Ô	*€ØÐ"�Ð"˜F€ØŒ×ÒÐ 4Ñ5Ô5€Ø	„l×Ò˜eÑ$Ô$€ð €Ø€Ø Ð Ø€Ø$Ð Ø€Ø€ØÐ Ø€Ø€Ø€Ø€ØÐ Ø€ð !Ð Ø€Ø€Ø€Ø€Ø€Ø€
Ø€Ø€Ø€Ø€Ø€	ðð ð ð ð �”ñ ô ð ð €�	„	× Ò �Ô&Ñ 'Ô 'Ð 'ðð ð ð ð �$”,ñ ô ð ð
 €�	„	× Ò �Ô(Ñ )Ô )Ð )ð %ˆ3Ô$Ñ&Ô&€Ø-�Ô-Ñ/Ô/€ð �h Ð(¨;¸
Ð*CÐDØ�hÐ + Ð/ØˆY˜˜Ð&Ø�hÐ * Ð.ØˆY˜˜Ð%Ø�xÐ  ;°
Ð";Ð<Øˆi˜+ zÐ2Ð3Øˆj˜;¨
Ð3Ð4ð	ð 	€	ð ÐØ×ÒØ�˜k˜]Ð+Ø�˜j˜\Ð*ðð ñ ô ð ð
 Ð˜uÐØ×Ò�f ˜y¨;¸
Ð*CÐDÐEÑFÔFÐFð>ð >ð >ð >ð >ˆIñ >ô >ð >ðBAð Að Að Að A�Eñ Aô Að Að"Lð Lð Lð Lð L�Mñ Lô Lð Lð&Að Að Að Að A�5ñ Aô Að AðEð Eð Eð Eð E�Uñ Eô Eð Eð.	ð 	ð 	ð 	ð*ð *ð *ðZDð Dð DðN(ð (ð (ðð ð ð	ð 	ð 	ðð ð ð8ð ð ðð ð ðDð Dð Dð Dð*
ð 
ð 
ð,ð ð ð.TDð TDð TDð TDð TDñ TDô TDð TDðn)ð )ð )ð €l�n„n€Øœ?€Ô Øœ.€Ô ð "Ð ð>ð >ð >ðð ð ð4 !¨	ð ð ð ð ð" "ð <ð <ð <ð <ð
5ð 5ð 5ð 5ð&-ð -ð -ð
=ð =ð =ð 	Ø!œjð ð ð ñ 	„ðð/ð /ð /ð /ð: ˜ C¤Jð%;ð %;ð %;ð %;ðP
ð 
ð 
ð 
ð 
s#   ºA ÁAÁ
AÁA ÁA ÁA 