� ;��g�o� � �dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddlm Z ddlm Z ddlm Z ddlm Z  ddlmZn #e$rdZYnwxYw ddlmZn #e$rdZYnwxYweejd ����Ze��Zgd �Zejd kZejd kZej�d ��Zej�d��ZeZej�d��Zej�d��Z ej�d��Z!epe pe!Z"ej�d��Z#ej�d��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���Be@jC��Gd0�d1ej?��ZDeA���BeDjC��ejE��ZFejG��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� ea�Bege gfege gfdg���e�e#sea�Bdhege e gfi��Gdi�djeb��ZcGdk�dlec��ZdGdm�dned��ZeGdo�dpec��ZfGdq�drec��Zgd�ds�Zhdt�Zidu�Zjdv�Zkdw�Zleidx���Zmdy�Zndz�Zod{�Zpd�d|�Zqd}�Zrd~�ZsGd�d���Ztd��Zuet��Zvevjweu_wevjxeu_xd�Zyd��Zzd��Z{ee{fd��Z|efd��Z}d�d��Z~d��Zd��Z�eiej�fd����Z�d�d��Z�dd�ej�fd��Z�d��Z�dS)�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��eZdZdZdZdZdS)� NicDuplex��rN)�__name__� __module__� __qualname__r r!r"���^/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/psutil/_common.pyr~r~�s �������O��O����r�r~c��eZdZdZdZdS)� 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�ZdS)�ErrorzQBase exception class. All other psutil exceptions inherit from this one. �psutilc�~�tj��}|D]&}t||d��}|s |dkr |dkr|||<�'|S)Nr�r)� collections� OrderedDict�getattr)�self�attrs�infor�r�s r�� _infodictzError._infodict sW���&�(�(��� #� #�D��D�$��-�-�E�� #�����5�A�:�:�"��T� ��� r�c��|�d��}|rEd�d�d�|���D������}nd}d�d�t |dd��|fD����S) N)r��ppidr�z({})�, c�"�g|] \}}|�d|���� S��=r���.0�k�vs r�� <listcomp>z!Error.__str__.<locals>.<listcomp>s&��A�A�A�D�A�q�a�<�<�!�<�<�A�A�Ar�� c��g|]}|�|��Sr�r�)r��xs r�r�z!Error.__str__.<locals>.<listcomp>s��M�M�M�q�1�M��M�M�Mr��msg�)r��format�join�itemsr��r�r��detailss r��__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�Nr�c��|�d��}d�d�|���D����}d|jj�d|�d�S)N)r�r�r��secondsr�r�c�"�g|] \}}|�d|���� Sr�r�r�s r�r�z"Error.__repr__.<locals>.<listcomp>"s&��C�C�C�d�a���\�\�A�\�\�C�C�Cr�zpsutil.�(�))r�rr� __class__r�rs r��__repr__zError.__repr__sZ���~�~�G�H�H���)�)�C�C�d�j�j�l�l�C�C�C�D�D��=���0�=�=�7�=�=�=�=r�N)r�r�r��__doc__r�rr r�r�r�r�r�sU���������J���� O� O� O�>�>�>�>�>r�r�c�$�eZdZdZdZdd�Zd�ZdS)� NoSuchProcesszXException raised when a process with a certain PID doesn't or no longer exists. r�Nc�h�t�|��||_||_|pd|_dS)Nzprocess no longer exists�r��__init__r�r�r��r�r�r�r�s r�rzNoSuchProcess.__init__-s3�� ���t��������� ��4�4����r�c�8�|j|j|j|jffS�N�r r�r�r��r�s r�� __reduce__zNoSuchProcess.__reduce__3�������4�9�d�h� ?�@�@r��NN�r�r�r�rrrr�r�r�rr&sM���������J�5�5�5�5� A�A�A�A�Ar�rc�$�eZdZdZdZdd�Zd�ZdS)� 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�`�t�||||��||_|pd|_dS)Nz"PID still exists but it's a zombie)rrr�r�)r�r�r�r�r�s r�rzZombieProcess.__init__As4�����t�S�$��4�4�4��� ��>�>����r�c�D�|j|j|j|j|jffSr)r r�r�r�r�rs r�rzZombieProcess.__reduce__Fs ������4�9�d�i��� J�K�Kr��NNNrr�r�r�rr7sM���������J�?�?�?�?� L�L�L�L�Lr�rc�$�eZdZdZdZdd�Zd�ZdS)� AccessDeniedz@Exception raised when permission to perform an action is denied.r�Nc�h�t�|��||_||_|pd|_dS)Nrrrs r�rzAccessDenied.__init__Os1�� ���t��������� ��9�"����r�c�8�|j|j|j|jffSrrrs r�rzAccessDenied.__reduce__Urr�r!rr�r�r�r#r#JsG������J�J��J����� A�A�A�A�Ar�r#c�$�eZdZdZdZdd�Zd�ZdS)�TimeoutExpiredzWRaised on Process.wait(timeout) if timeout expires and process is still alive. r�Nc�z�t�|��||_||_||_d|�d�|_dS)Nztimeout after z seconds)r�rrr�r�r�)r�rr�r�s r�rzTimeoutExpired.__init__`s?�� ���t������ ������ �5�G�5�5�5����r�c�8�|j|j|j|jffSr)r rr�r�rs r�rzTimeoutExpired.__reduce__gs������t�x��� C�D�Dr�rrr�r�r�r'r'YsM���������J�6�6�6�6�E�E�E�E�Er�r'c�x� t|��|z dz}|�t||��}|S#t$rYdSwxYw)z5Calculate percentage usage of 'used' against 'total'.�dNg)�float�round�ZeroDivisionError)r�r��round_�rets r�rLrLps\����T�{�{�U�"�c�)�� � ���V�$�$�C�� �� �����s�s����s �+� 9�9c�f���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|�������f} �|S#t$r) �|i|��x}�|<n#t$r}|d�d}~wwxYw|cYSwxYwr)� frozenset�sortedr�KeyError� Exception)�args�kwargs�keyr0�err�cache�funs ��r��wrapperzmemoize.<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������dS)z Clear cache.N)�clear)r;s�r�� cache_clearzmemoize.<locals>.cache_clear�s��� � � � � � � � r�)� functools�wrapsr@)r<r=r@r;s` @r�rIrI|sf����0�_�S��� � � � � ��� ������ �E�%�G�� �Nr�c�n��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�}nz#t$r$ �|��cYS#t$r}|d�d}~wwxYwt$rA �|��}n#t$r}|d�d}~wwxYw ||j�<n#t$rYnwxYwYnwxYw|Sr)�_cache�AttributeErrorr6r5)r�r0r:r<s �r�r=z'memoize_when_activated.<locals>.wrapper�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�4B�5 B�?B�B�B�Bc��i|_dS)zsActivate cache. Expects a Process instance. Cache will be stored as a "_cache" instance attribute. N)rE��procs r��cache_activatez.memoize_when_activated.<locals>.cache_activate�s���� � � r�c�.� |`dS#t$rYdSwxYw)zDeactivate and clear cache.N)rErFrHs r��cache_deactivatez0memoize_when_activated.<locals>.cache_deactivate�s2�� �� � � ��� � � � �D�D� ���s �� �)rArBrJrL)r<r=rJrLs` r��memoize_when_activatedrM�sh���6�_�S����������2��� ���,�G��/�G�� �Nr�c�� tj|��}tj|j��S#t$r�t $rYdSwxYw)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�sa�� (� �W�T�]�]�� �|�B�J�'�'�'�� ���� � �����u�u����s�/�A�Ac�f� tj|��dS#t$r�t$rYdSwxYw)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)rOrPrSrT)r�s r�rKrK�sT�� � ��� � � � �t�� ���� � �����u�u����s ��0�0c���tjrt�dS tjttj��5}|�d��ddd��n #1swxYwYdS#t $rYdSwxYw)z2Return True if IPv6 is supported on this platform.NF)z::1rT)�socket�has_ipv6rr�bindrT)�socks r�rMrMs��� �?��h�.��u�� �]�8�V�%7� 8� 8� "�D� �I�I�j� !� !� !� "� "� "� "� "� "� "� "� "� "� "���� "� "� "� "��t�� �����u�u����s4�$A*�A� A*�A!�!A*�$A!�%A*�* A8�7A8c��i}d}t} |�d|��}||krnU|�d||��}||kr2|||�}||dz|�}|r|���}|||<|dz}�r|S)zCParse a C environ block of environment variables into a dictionary.rT�r�r�)r�find�upper)�datar0�pos�WINDOWS_�next_pos� equal_posr9r�s r�rJrJs��� �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��� �Jr�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. )rX� AddressFamily� ValueError��nums r�rNrN7s<����#�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. )rX� SocketKindrgrhs r�rOrOAs<���� ��%�%�%�� ����� � � ����rjc �p�|tjthvr|r t|�}|r t|�}|tjkr,|tthvr|�|t ��}nt }t|��}t|��}|�t||||||��St|||||||��S)z2Convert a raw connection tuple to a proper ntuple.) rXrrr�r�getrrNrOr3r<)r��fam�type_r�r�r�� status_mapr�s r�rVrVKs��� �v�~�x�(�(�(� � !��%�L�E� � !��%�L�E� ��"�"�"�s�w��.A�'A�'A����� �2�2����� �#� � �C� �U� #� #�E� �{��R��e�U�E�6�:�:�:��R��e�U�E�6�3�?�?�?r�c�b�ddl}|jr|jsdS|jtjkr8t |�|j�d|j��d���j��S|jtj kr8t |� |j�d|j��d���j��SdS)zbGiven the address ntuple returned by ``net_if_addrs()`` calculates the broadcast address. rN�/F)�strict) � ipaddressr�r�r�rXr�str� IPv4Network�broadcast_addressr� IPv6Network)r�rus r��broadcast_addrrz^s������� �<��t�|���t� �{�f�n�$�$�� � !� !��<�0�0�$�,�0�0�� "� � �� � � �  �{�f�o�%�%�� � !� !��<�0�0�$�,�0�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�h��tj�td���t|���|i|��S)Nr)�category� stacklevel)�warnings�warn�DeprecationWarningr�)r�r7r8r�� replacements ��r��innerz/deprecated_method.<locals>.outer.<locals>.inner�s:��� �M�#�(:�q� I� I� I� I�-�7�4��-�-�t�>�v�>�>� >r�)r�rrArB)r<r�r�r�s @�r��outerz deprecated_method.<locals>.outerysu�����|� (� (�� (� (� (� � �;� ��C�K� ��� � � ?� ?� ?� ?� ?� � � ?�� r�r�)r�r�s` r�rGrGts#��� � � � � � �Lr�c�8�eZdZdZd�Zd�Zd�Zd�Zd d�Zd�Z dS) � _WrapNumberszNWatches numbers so that they don't overflow and wrap (reset to zero). c�`�tj��|_i|_i|_i|_dSr)� threading�Lock�lockr;� reminders� reminder_keysrs r�rz_WrapNumbers.__init__�s-���N�$�$�� ��� ��������r�c���||jvsJ�||jvsJ�||jvsJ�||j|<tjt ��|j|<tjt ��|j|<dSr)r;r�r�r�� defaultdict�int�set)r�� input_dictr�s r�� _add_dictz_WrapNumbers._add_dict�s}���4�:�%�%�%�%��4�>�)�)�)�)��4�-�-�-�-�-�%�� �4��*�6�s�;�;���t��#.�#:�3�#?�#?���4� � � r�c��|j|}t|�����t|�����z }|D]4}|j||D]}|j||=�|j||=�5dS)z�In case the number of keys changed between calls (e.g. a disk disappears) this removes the entry from self.reminders. N)r;r��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�A� �!� 3� 3�H��,�T�2�8�<� 1� 1���N�4�(��0�0��"�4�(��2�2� 3� 3r�c�l�||jvr|�||��|S|�||��|j|}i}|D]�}||} ||}n#t$r|||<Y�%wxYwg}t t |����D]�} || } || } || f} | | krA|j|| xx| z cc<|j||�| ��|� | |j|| z����t|��||<��||j|<|S)zlCache dict and sum numbers which overflow and wrap. Return an updated copy of `input_dict`. ) r;r�r�r5�range�lenr�r��add�append�tuple) r�r�r�r��new_dictr9� input_tuple� old_tuple�bits�i� input_value� old_valuer�s r��runz_WrapNumbers.run�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��|j5|�L|j���|j���|j���nQ|j�|d��|j�|d��|j�|d��ddd��dS#1swxYwYdS)z>Clear the internal cache, optionally only for function 'name'.N)r�r;r?r�r��pop)r�r�s r�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�5B9�<B9c�l�|j5|j|j|jfcddd��S#1swxYwYdS)z5Return internal cache dicts as a tuple of 3 elements.N)r�r;r�r�rs r�� 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� Ds �)�-�-r) r�r�r�rrr�r�r�r@r�r�r�r�r�r��s��������� � � � @�@�@� 3� 3� 3�%�%�%�N 3� 3� 3� 3�D�D�D�D�Dr�r�c��tj5t�||��cddd��S#1swxYwYdS)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 �5�9�9i�c�0�t|dt���S)N�rb)� buffering)�open�FILE_READ_BUFFER_SIZE)�fnames r�rRrR�s�� ��t�'<� =� =� =�=r�c���t|ttt���} t|_n.#t $rYn"t $r|����wxYw|S)zaOpen a file in text mode by using the proper FS encoding and en/decoding error handlers. )r��encoding�errors)r�r�r1r2� _CHUNK_SIZErFr6�close)r��fobjs r�rQrQs�� � �'���  � � �D� �1����� � � � � �� ���� � � � � � � ����� �Ks� 1� A�Ac��|tur9||��5}|���cddd��S#1swxYwYdS ||��5}|���cddd��S#1swxYwYdS#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�readrT)r��fallback�_open�fs r�rSrSs,�� �8��� �U�5�\�\� �Q��6�6�8�8� � � � � � � � � � � � ���� � � � � � � ���u��� ���v�v�x�x� � � � � � � � � � � � ���� � � � � � ��� � � ��O�O�O� ���sB�6�:�:� A=�A0�# A=�0A4�4A=�7A4�8A=�= B � B c�0�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��%(value).1f%(symbol)sc�P�d}i}t|dd���D]\}}d|dzdzz||<�t|dd���D]F}t|��||kr+t|��||z }|t ��zcS�G|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�rUrU1s���<�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�4r�c�0�tjdjS)z+Return updated psutil.PROCFS_PATH constant.r�)�sys�modules� PROCFS_PATHr�r�r��get_procfs_pathr�Ds�� �;�x� � ,�,r�c�D�|�tt���S)N)r�r�)�decoder1r2)r�s r�r�r�Is�� �8�8�X�m�8� <� <�<r�c���tjdkrdS ddl}|���sJ�|���|�d��dksJ� dS#t $rYdSwxYw)Nr\Tr�colorsF)rOr��curses�isatty� setupterm�tigetnumr6)�filer�s r�rYrYRs��� �w�$����t� �� � � ��{�{�}�}���}����������x�(�(�1�,�,�,�,�,��t�� �����u�u����s�A A � A.�-A.Fc ��t��s|Sg}tddddddddd � � � }d |d < ||}nE#t$r8d |�dt|�������}t |��d �wxYw|�|��|r|�d��dd�|���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)rYr�r5�listr�rgr�r)r��color�bold�attrr�r�s r�rXrXbs�� � !� !���� �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 �:�AA<c��t��st||���dStr"tt|||��|���dSddl}d}|jjj}|jjj}tdddd���}||d< ||}nE#t$r8d |�d t|� ������} t| ��d�wxYw|r |dkr|d z }|tjurd nd } |j|_|| ��} || |�� t||���|| |��dS#|| |��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�r5r�r�rgr��stderr�c_ulong�restype) r�r�rr�r � DEFAULT_COLORr r r�r�� handle_id�handles r�rZrZ~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�AC�D<�<E c�6�tr�ddl}|�|���j��\}}}}}t |t ��r t |t��rd|��}nd|��}td|�d|�d|��tj ���dSdS)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� isinstancer6rTrr�r)r�rr��lineno�_�_lines�_indexs r�rWrW�s���� �����+2�+?�+?� � � � "� "� )�, �, �(��v�q�&�&� �c�9� %� %� *��#�w�'�'� *�'�#�'�'���)�#�)�)�� � 5�U� 5� 5�V� 5� 5�� 5� 5�C�J� � � � � � � � r�r)r�)NF)�rr��enumrArOrXrPr�r�r�rrrrr� 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�rFr6r�rrr#r'rLrIrMrHrKrMrJrNrOrVrzrGr�rPr�r@r�r�rRrQrSrTrUr�r��stdoutrYrXrZrWr�r�r��<module>r/s4 �� �� ���� � � � ����� � � � � � � � � � � � � � � � ���������"�"�"�"�"�"���������������������������������H�H�H�������������������G�G�G������t�I�B�I�n�-�-�.�.� � �6�8�8�� � � ��L ��7��� �'�T�/�� � ����(�(�� � ����)�)�� �� �,� !� !�"<� =� =�� �,� !� !�)� ,� ,�� �� � �� *� *�� �"��"�F�� � ��� 4�5�5�� �l���e�$�$������ ����$��� �� ���� �� �� ������ �!��� �� ������� � ���� �� �� � � ������� ���� �� � ����&�'�'�'������$�,���� �� � ����(�)�)�)� %�3� $� &� &��-��-�/�/� � � �7�%�%�%� &� &���Z� �&J�&J�&J� K� K� � �*�Y�!<�!<�!<� =� =�� �J�{�$N�$N�$N� O� O� � ��H�4�4�4� 5� 5�� � �7�J�J�J�K�K��� �7�.�.�.� /� /�� �:�j�J�J�J� L� L�� �J�{�B�B�B� D� D� � �J��N�N�N� P� P� � �:�j�";�";�";� <� <�� �*� �7�7�7� 9� 9�� �:�j�"J�"J�"J� K� K���z�&�7�I�.�/�/�� �J��G�G�G� � � � �J�{�V�T�N� 3� 3� � �*�Y� B� B� B� C� C��� �7�:�:�:�;�;��� �7�:�:�:�;�;���j� � E� E� E���� �*�Y��G� 4� 5� 5�� ��H�{�M�:� ;� ;��� � � A� A� A� � �� �z�&�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�F�F�>�>�>�>�>�I�>�>�>�BA�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�. � � � �*�*�*�ZD�D�D�N (� (� (� � � � � � � �� ����8������@�@�@�@�& � � �,���.TD�TD�TD�TD�TD�TD�TD�TD�n)�)�)��l�n�n���?� ���.� ��"��>�>�>����4!� �����""�<�<�<�<� 5�5�5�5�&-�-�-� =�=�=� �!�j� � � � �� �/�/�/�/�:��C�J�%;�%;�%;�%;�P � � � � s$�A�A�A�A�A&�%A&
Memory