OwlCyberSecurity - MANAGER
Edit File: __init__.cpython-312.pyc
� ����X��gh����������������������������d�Z�ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddlZddlZddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ�ddlmZ�ddlmZ� �ddlZddl!Z!ddl!m"Z"�ddl!m#Z#�ddl!m$Z$�dd l!m%Z%�dd l!m&Z&�ddl!m'Z'�ddl!m(Z(�dd l!m)Z)�ddl*m+Z+�ddl*m,Z,�ddl*m-Z-�ddl*m.Z.�ddl*m/Z/�e'rddl0m1Z1�g�d�Z2dejf������������������v�Z4de jj������������������v�xs�de jj������������������v�Z6e6Z7de jj������������������v�Z8de jj������������������v�Z9ejt������������������dkD��Z;�ejx��������������������������dk(��Z=e-d����������Z>e$r�e>��������dkD��Z?�e>��������dk\��Z@ndZ?dZ@d ZAd!ZBd"ZCd#ZDe7reAd$z��ZAeDd$z��ZDeBd%z��ZBeCd$z��ZCe j�������������������d&k(��rd'�e j�����������������������������d(�ZGnd)�e j�����������������������������d(�ZGd*ZHd+j�������������������d,d-�������ZJ�ej���������������������������j���������������������������d.v�ZMe j�������������������j�������������������e j�������������������j�������������������e j�������������������j�������������������eR�������d/d/��������������ZSe jj������������������j�������������������d0e j�������������������j�������������������eSd1��������������ZUe j�������������������j�������������������e j�������������������j�������������������eR��������������ZV�eWe!j�������������������d2�������ZY�eWe!d3�������ZZ�eWe!j�������������������d4�������Z[�eWe!d5�������Z\�eWe!j�������������������d6�������Z]�eWe!j�������������������d7�������Z^e'xr�e(�Z_�eWe!d8�������Z`�eWe!j�������������������d9�������Za�eWe!j�������������������d:�������Zb�eWe!j�������������������d;�������Zc�eWe!d<�������Zd �edxr��ee�e!j����������������������������������Zg�eWe!d=�������Zi�eWe!d>�������Zj�eWe!j�������������������d?�������Zke$xs�e"xr��e j���������������������������dk7��Zmd@��Zn�en��������\��ZoZp�eqe j�������������������dA�������Zs�ej�������������������esj����������������������������eve!�������D���cg�c]��}�|�j�������������������dB�������s��exe!|�����������c}�Zy�exedC�ez���������������Z{�e|��������Z}�e|��������Z~�G�dD��dEej��������������������������Z�dF��Z�e�d�dG���������Z�e�dH����������Z�dI��Z�e�dJ����������Z�e�dK����������Z�e�j������������������eDfdL�Z�d�dM�Z�dN��Z�dO��Z��G�dP��dQ�������Z��e�e!�j������������������deDdR�S�������dT����������Z��e�e�e�fdeDdR�S�������d�dU���������Z��e�e�deDdR�S�������dV����������Z�dW��Z�dX��Z�e�j*������������������dY����������Z�dZ��Z�d�d[�Z�d�d\�Z��G�d]��d^�������Z�e�e�Z�G�d_��d`e�j6�������������������������Z�e�j:�������������������j=������������������e4da�b��������G�dc��dde����������������Z�de��Z�df��Z�dg��Z��G�dh��di�������Z��G�dj��dk�������Z�eAfdl�Z�d�dm�Z�d�dn�Z�d�do�Z�eedfdp�Z�ej<������������������fdq�Z�d�dr�Z�ds��Z�e�j*������������������dt����������Z�du��Z�dv��Z�dw��Z�dx��Z�dy��Z�dz��Z�d{��Z�e're�j*������������������d�d|���������Z�ne�j*������������������d�d}���������Z�ej�������������������d~����������Z�e'r �ej"������������������e�j������������������d����������yy#�e $�r�dZY����w�xY�w#�eh$�r�dZgY����w�xY�wc�c}�w�)�zTest utilities.�����N)�AF_INET)�AF_INET6)�SOCK_STREAM)�AIX)�LINUX)�MACOS)�NETBSD)�OPENBSD)�POSIX)�SUNOS)�WINDOWS)�bytes2human)�debug)�memoize)�print_color)� supports_ipv6)�wait_pid)K�DEVNULL�GLOBAL_TIMEOUT�TOLERANCE_SYS_MEM� NO_RETRIES�PYPY� PYTHON_EXE�PYTHON_EXE_ENV�ROOT_DIR�SCRIPTS_DIR� TESTFN_PREFIX�UNICODE_SUFFIX�INVALID_UNICODE_SUFFIX� CI_TESTING�VALID_PROC_STATUSES�TOLERANCE_DISK_USAGE�IS_64BIT�HAS_CPU_AFFINITY�HAS_CPU_FREQ�HAS_ENVIRON�HAS_PROC_IO_COUNTERS� HAS_IONICE�HAS_MEMORY_MAPS�HAS_PROC_CPU_NUM� HAS_RLIMIT�HAS_SENSORS_BATTERY�HAS_BATTERY�HAS_SENSORS_FANS�HAS_SENSORS_TEMPERATURES�HAS_NET_CONNECTIONS_UNIX�MACOS_11PLUS�MACOS_12PLUS�COVERAGE�AARCH64�PYTEST_PARALLEL�pyrun� terminate� reap_children�spawn_testproc�spawn_zombie�spawn_children_pair� ThreadTask�unittest�skip_on_access_denied�skip_on_not_implemented�retry_on_failure�TestMemoryLeak�PsutilTestCase�process_namespace�system_namespace� print_sysinfo�is_win_secure_system_proc�fake_pytest�chdir�safe_rmpath� create_py_exe�create_c_exe� get_testfn� get_winver�kernel_version� call_until�wait_for_pid� wait_for_file�check_net_address�filter_proc_net_connections� get_free_port�bind_socket�bind_unix_socket�tcp_socketpair�unix_socketpair�create_sockets� reload_module�import_module_by_path�warn�copyload_shared_lib� is_namedtuple�__pypy__�GITHUB_ACTIONS�CIBUILDWHEEL�COVERAGE_RUN�PYTEST_XDIST_WORKERl���������aarch64c�������������������B����t��������j��������������������������d���}�t��������t��������t��������|�j������������������d�������d�d���������������}|dk(��rWt ��������j������������������t��������j������������������dddgdd id ��������}�t��������t��������t��������|�j������������������d�������d�d���������������}|S�)Nr����.����)� �������z-sS�-cz-import platform; print(platform.mac_ver()[0])�SYSTEM_VERSION_COMPAT�0T)�env�universal_newlines) �platform�mac_ver�tuple�map�int�split� subprocess�check_output�sys� executable)�version_str�versions��� �F/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/__init__.py� macos_versionr|���z���s��������"�"�$�Q�'�K��C��[�.�.�s�3�B�Q�7�8�9�G��(���!�-�-������?� ��)�#�.�#� �����C��!2�!2�3�!7���!;�<�=���N�����)rh�������)����r���Frh���i��P�i�����������������javaz$psutil-�-z@psutil-u���-ƒőős���f���utf8�surrogateescape>����us-ascii�asciiz..�PSUTIL_SCRIPTS_DIR�scripts�cpu_affinity�cpu_freq�environ� getloadavg�ionice�memory_maps�net_io_counters�cpu_num�io_counters�rlimit�sensors_battery�sensors_fans�sensors_temperatures�threadsc������������ �������6����d��}�t���������j������������������j��������������������������}t��������t��������dd��������}t ��������r,t��������j������������������dk\��r|�t��������j������������������|d<���||fS�t��������rt��������j������������������|fS�t��������r��|�t��������j�������������������������xs���|�t���������j������������������j������������������t��������j��������������������������������xsc��|�t��������j�������������������dj������������������t��������j������������������d�d�����������������xs(��|�t��������j ��������������������������j#���������������������������������}|st%��������d��������||fS�t���������j������������������j������������������t��������j�������������������������}t���������j������������������j'������������������|�������sJ�|���������||fS�)Nc����������������������� �t��������j������������������|�dgt���������j������������������t���������j���������������������������|�S�#�t���������j������������������$�r�Y�y�w�xY�w)Nz-V)�stdout�stderr)ru���� check_call�PIPE�CalledProcessError)�exes��� r{����attemptz_get_py_exe.<locals>.attempt����sI������ ��!�!��d��J�O�O�J�O�O� ���J����,�,�� �� �s����6:��A�A�_base_executable)r���������__PYVENV_LAUNCHER__zpython{}.{}rg���z"can't find python exe real abspath)�osr�����copy�getattrrw���r ����version_inforx���r`���r����path�realpath�shutil�which�format�psutil�Processr����� ValueError�exists)r����rm����baser����s��� r{����_get_py_exer��������sI������� �*�*�/�/� �C���3�*�D�1�D��3�#�#�v�-�$�2B��&)�^�^��!�"��S�y�� ��~�~�s�"�"� ��C�N�N�#�� /��r�w�w�'�'����7�8� /�����1�]�1�1�3�3C�3C�B�Q�3G�H�I�� /� ��v�~�~�'�+�+�-�.� � ����A�B�B��C�x���g�g���s�~�~�.���w�w�~�~�c�"�'�C�'�"��C�x�r}���zr+�STATUS_�AF_UNIXc��������������������F�������e�Zd�ZdZ��fd�Zd��Zd��Zd��Zd��Zd��Z d��Z ��xZS�) r<���z6A thread task which does nothing expect staying alive.c������������������p������t����������|�������������d|�_��������d|�_��������t ��������j ��������������������������|�_��������y�)NF���MbP?)�super�__init__�_running� _interval� threading�Event�_flag)�self� __class__s��� �r{���r����zThreadTask.__init__��s*������� ������ �����_�_�&�� r}���c������������������n�����|�j�������������������j������������������}d|��d|�j��������������������dt��������|��������d�d�S�)N�<z running=z at z#x�>)r�����__name__r�����id�r�����names��� r{����__repr__zThreadTask.__repr__��s6�������~�~�&�&���4�&� �$�-�-���R��X�b�M��C�Cr}���c������������������&�����|�j���������������������������|�S��N)�start�r����s��� r{���� __enter__zThreadTask.__enter__#��s������� � ���r}���c������������������$�����|�j���������������������������y�r����)�stop)r�����args�kwargss��� r{����__exit__zThreadTask.__exit__'��s������� � �r}���c�����������������������|�j�������������������rt��������d��������t��������j������������������j ������������������|���������|�j ������������������j ���������������������������y)zStart thread and keep it running until an explicit stop() request. Polls for shutdown every 'timeout' seconds. zalready startedN)r����r����r�����Threadr����r�����waitr����s��� r{���r����zThreadTask.start*��s9��������=�=��.�/�/������t�$�� � ���r}���c�����������������������d|�_���������|�j������������������j���������������������������|�j�������������������r-t��������j������������������|�j ��������������������������|�j�������������������r�,y�y�)NT)r����r�����set�time�sleepr����r����s��� r{����runzThreadTask.run3��s7�������� �� � �����m�m��J�J�t�~�~�&���m�mr}���c������������������`�����|�j�������������������st��������d��������d|�_���������|�j���������������������������y)z8Stop thread execution and and waits until it is stopped.zalready stoppedFN)r����r�����joinr����s��� r{���r����zThreadTask.stop9��s%�������}�}��.�/�/��� �� � �r}���)r����� __module__�__qualname__�__doc__r����r����r����r����r����r����r����� __classcell__)r����s���@r{���r<���r<�����s*�������@�'�D����'�r}���r<���c������������������B�������t��������j�����������������������������fd���������}|S�)Nc�������������������F������ ���|�i�|��S�#�t���������$�r�t�������������������w�xY�wr����)� Exceptionr8���)r����r�����funs��� �r{����wrapperz&_reap_children_on_err.<locals>.wrapperG��s/������� ���'��'�'���� ��O�� �s������ �� functools�wraps)r����r����s���` r{����_reap_children_on_errr����F��s%��������_�_�S��������Nr}���c����������������������|j������������������dt����������������|j������������������dt����������������|j������������������dt��������j����������������������������������|j������������������dt����������������t ��������rd}|j������������������d|��������|��t ��������t��������j����������������������������������} �t��������|��������d|��d �}t��������d |g}�t��������j������������������|�fi�|��}t��������j������������������|��������t��������|dd���������t��������|��������|S�t��������j������������������|�fi�|��}t��������j������������������|��������t��������|j��������������������������|S�#�t��������|��������w�xY�w) a��Create a python subprocess which does nothing for some secs and return it as a subprocess.Popen instance. If "cmd" is specified that is used instead of python. By default stdin and stdout are redirected to /dev/null. It also attempts to make sure the process is in a reasonably initialized state. The process is registered for cleanup on reap_children(). �stdinr�����cwdrm�������� creationflags��dirzimport time;open(r'z6', 'w').close();[time.sleep(0.1) for x in range(100)];rj���T��delete�empty)� setdefaultr���r�����getcwdr���r ���rL���rI���r���ru����Popen�_subprocesses_started�addrQ���rP����pid)�cmd�kwds�CREATE_NO_WINDOW�testfn�pyline�sprocs��� r{���r9���r9���R��s%������ �O�O�G�W�%��O�O�H�g�&��O�O�E�2�9�9�;�'��O�O�E�>�*���%������)9�:� �{��� � ��,�� ����� ���"9�9�� � ��t�V�,�C��$�$�S�1�D�1�E�!�%�%�e�,��&��T�:���� ��L��� � ��-��-���!�!�%�(��U�Y�Y���L��� ���s ����"AE�� Ec�������������������>����d}�t��������t��������j����������������������������������} �t��������j������������������dt��������j ������������������j ������������������|���������dt����������d��������}t��������rt��������|d��������\��}}�nt��������|�������\��}}�t��������j������������������|j�������������������������}t��������t��������|dd � ��������������}t��������j!������������������|��������t��������j������������������|�������}||ft#��������|��������|��t#��������|���������S�S�#�t#��������|��������|��t#��������|���������w�w�xY�w)a��Create a subprocess which creates another one as in: A (us) -> B (child) -> C (grandchild). Return a (child, grandchild) tuple. The 2 processes are fully initialized and will live for 60 secs and are registered for cleanup on reap_children(). Nr����zl import subprocess, os, sys, time s = "import os, time;" s += "f = open('z�', 'w');" s += "f.write(str(os.getpid()));" s += "f.close();" s += "[time.sleep(0.1) for x in range(100 * 6)];" p = subprocess.Popen([r'z.', '-c', s]) p.wait() r���)r����TFr����)rL���r����r�����textwrap�dedentr�����basenamer���r ���r6���r����r����r����rs���rQ���� _pids_startedr����rI���)�tfiler�����s�subp�child�grandchild_pid� grandchilds��� r{���r;���r;���|��s������ �E� �B�I�I�K� (�F���O�O��!�� �W�W�-�-�f�5�6��7%��&0�L��1 � �� �������3�K�D�%���(�K�D�%����t�x�x�(���]�6�$�e�L�M�����.�)��^�^�N�3� ��z�"��F����������� �F���������s����CD��Dc�������������������������t���������j������������������sJ��t����������������}�t��������j������������������d|���d��������}d}t��������|��������} �|j ������������������t����������������t��������|�������\��}}|j��������������������������\��}} �t��������j������������������|j��������������������������gg�g�t����������������t��������|j������������������d��������������}t��������j������������������|��������t��������j ������������������|��������t#���������fd���������|�f|j%���������������������������|j%���������������������������t'��������|���������|�t'��������|��������S�S�#�|j%���������������������������w�xY�w#�|j%���������������������������t'��������|���������|�t'��������|��������w�w�xY�w)z�Create a zombie process and return a (parent, zombie) process tuple. In order to kill the zombie parent must be terminate()d first, then zombie must be wait()ed on. a �� import os, sys, time, socket, contextlib child_pid = os.fork() if child_pid > 0: time.sleep(3000) else: # this is the zombie process with socket.socket(socket.AF_UNIX) as s: s.connect('za') pid = bytes(str(os.getpid()), 'ascii') s.sendall(pid) N����c�������������������F��������j��������������������������t��������j������������������k(��S�r����)�statusr����� STATUS_ZOMBIE)�zombies����r{����<lambda>zspawn_zombie.<locals>.<lambda>���s�������v�}�}��&�2F�2F�Fr}���)r����r���rL���r��r��rV���� settimeoutr���r6����accept�select�filenors����recvr��r����r����rO����closerI���) � unix_file�srcr���sock�parent�conn�_�zpidr��s ��� @r{���r:���r:������s7������ ��<�<��<���I� �/�/����&�;��' ��� �C�� �E��I�&�D������'��c� � ����+�+�-���a� ��M�M�4�;�;�=�/�2�r�>�B��t�y�y���'�D����d�#��^�^�D�)�F��F�G��F�#��J�J�L�� � ���I���������� � �J�J�L��� � ���I���������s%����6E��<B�D6��<E��6E�E��+E6c������������������`����|j������������������dd��������|j������������������dd��������t����������������} �t��������|d�������5�}|j������������������|���������ddd��������t ��������t ��������j������������������gfi�|��}t��������|j��������������������������||fS�#�1�sw�Y����>xY�w#�t��������$�r �t��������|����������w�xY�w)z�Run python 'src' code string in a separate interpreter. Returns a subprocess.Popen instance and the test file where the source code was written. r����Nr�����w)r����rL����open�writer9���r���r����rP���r����r����rI���)r��r�����srcfile�fr��s��� r{���r6���r6������s�������� �O�O�H�d�#��O�O�H�d�#��l�G�� �'�3� �1� �G�G�C�L�� ��z�1�6�6�2�;�d�;���T�X�X���g��� � � �� �����G�� ��s"����B��B�<B��B�B��B-c������������������4����t���������rdnd}|j������������������dt��������j��������������������������|j������������������dt��������j��������������������������|j������������������dd��������|j������������������d|��������t ��������|�t ���������������rt ��������j������������������|��������}�t��������j������������������|�fi�|��}t��������j������������������|��������|j������������������t����������������\��}}|j������������������dk7��rt��������||z�����������|rt��������|��������|j!������������������d �������r|d d�}|S�)zURun cmd in a subprocess and return its output. raises RuntimeError on error. r����r���r����r����rn���Tr������timeout� N���)r ���r����ru���r����� isinstance�str�shlexrt���r����r����r�����communicater���� returncode�RuntimeErrorr\����endswith)r����r�����flags�pr����r����s��� r{����shr4�����s��������!�I�a�E��O�O�H�j�o�o�.��O�O�H�j�o�o�.��O�O�(�$�/��O�O�O�U�+��#�s���k�k�#�������%��%�A����a� ��]�]�>�]�:�N�F�F��|�|�q���6�F�?�+�+� ��V�� ���t��������Mr}���c����������������������� � ��d��� d������ fd�}��� fd�� � fd�}d��}|�} �t��������|t���������������ru�|||�������t��������|t��������j������������������t��������j������������������f�������r�||��������t��������|t���������������r|n|j ������������������}t ��������j������������������|�������rJ�|���������S�t��������|t��������j������������������t��������j������������������f�������ru�� ||�������t��������|t��������j������������������t��������j������������������f�������r�||��������t��������|t���������������r|n|j ������������������}t ��������j������������������|�������rJ�|���������S�t��������|t��������j�������������������������ru�|||�������t��������|t��������j������������������t��������j������������������f�������r�||��������t��������|t���������������r|n|j ������������������}t ��������j������������������|�������rJ�|���������S�t��������d|����������#�t��������|t��������j������������������t��������j������������������f�������r�||��������t��������|t���������������r|n|j ������������������}t ��������j������������������|�������rJ�|���������w�xY�w)a���Terminate a process and wait() for it. Process can be a PID or an instance of psutil.Process(), subprocess.Popen() or psutil.Popen(). If it's a subprocess.Popen() or psutil.Popen() instance also closes its stdin / stdout / stderr fds. PID is wait()ed even if the process is already gone (kills zombies). Does nothing if the process does not exist. Return process exit status. c�����������������������|�j������������������|��������t��������rJt��������|�t��������j�������������������������r/ �t��������j������������������|�j�������������������������j������������������|�������S�y�y�#�t ��������j������������������$�r�Y�y�w�xY�wr����) r����r ���r+��ru���r����r����r����r����� NoSuchProcess)�procr(��s��� r{���r����zterminate.<locals>.wait��sd������� � �'���z�$� �(8�(8�9� ��~�~�d�h�h�/�4�4�W�=�=��:�7����'�'�� �� �s����-A#��#A9�8A9c������������������������t���������rt��������rt��������j������������������}t��������r2|t��������j������������������k7��r|�j������������������t��������j��������������������������|�j������������������|��������y�r����)r���r`����signal�SIGKILLr����send_signal�SIGCONT)r8���sigs��� r{����sendsigzterminate.<locals>.sendsig ��s@�������^��.�.�C���S�F�N�N�*����V�^�^�,�����r}���c������������������������ ���|������������|�|�������S�#�t���������$�r�Y��t��������$�r}t��������r|j������������������dk(��r ���d�}~ww�xY�w)N����)�ProcessLookupError�OSErrorr ����winerror)r8��r(���errr?��r>��r����s��� ���r{����term_subprocess_procz'terminate.<locals>.term_subprocess_proc��sR������� ��D�#����D�'�"�"�� �"�� ���� ��3�<�<�1�,���� �s���� �� A�A�?�Ac������������������\������ ���|������������|�|�������S�#�t���������j������������������$�r�Y��w�xY�wr����)r����r7��)r8��r(��r?��r>��r����s��� ���r{����term_psutil_procz#terminate.<locals>.term_psutil_proc"��s;������� ��D�#����D�'�"�"����#�#�� �� �s���� ��+�+c������������������������ �t��������j������������������|��������}��||�������S�#�t���������j������������������$�r�t��������rt ��������|�|�������cY�S�Y�y�w�xY�wr����)r����r����r7��r���r���)r����r(��r8��rH��s��� �r{����term_pidzterminate.<locals>.term_pid)��sQ������� 3��>�>�#�&�D��$�D�'�2�2����#�#�� .����W�-�-��� .�s����!��%A� Ac������������������������|�j�������������������r|�j�������������������j���������������������������|�j������������������r|�j������������������j���������������������������|�j������������������r|�j������������������j���������������������������y�y�r����)r����r��r����r����)r8��s��� r{����flush_popenzterminate.<locals>.flush_popen3��sL�������;�;��K�K�����;�;��K�K�����:�:��J�J�����r}���zwrong type ) r+��rs���ru���r����r����r����� pid_existsr����� TypeError)�proc_or_pidr>���wait_timeoutrF��rJ��rL��r3��r����r?��rH��r����s��� ` @@@r{���r7���r7������s��������� #�#�3��� �A� /��a����A�|�,���a�*�*�*�F�L�L�9�:���N��a��%�a�1�5�5���$�$�S�)�.�3�.�)�)����F�N�N�F�L�L�9� :�#�A�|�4���a�*�*�*�F�L�L�9�:���N��a��%�a�1�5�5���$�$�S�)�.�3�.�)�)����:�+�+� ,�'��<�8���a�*�*�*�F�L�L�9�:���N��a��%�a�1�5�5���$�$�S�)�.�3�.�)�)���k�!��/�0�0���a�*�*�*�F�L�L�9�:���N��a��%�a�1�5�5���$�$�S�)�.�3�.�)�)�s����G%��)2G%��"G%��G%��%A.Ic�����������������������t��������j��������������������������j������������������|���������}t��������r&t��������j ��������������������������}t��������|��������t��������r�&t��������r&t��������j ��������������������������}t��������|��������t��������r�&|rd|D�]��}t��������|d�����������t��������j������������������|t����������������\��}}|D�],��}t��������d|�d���������t��������|t��������j����������������������������.�yy)a��Terminate and wait() any subprocess started by this test suite and any children currently running, ensuring that no processes stick around to hog resources. If recursive is True it also tries to terminate and wait() all grandchildren started by this process. �� recursiveN)rP��r'��zcouldn't terminate process z; attempting kill())r>��)r����r�����childrenr�����popr7���r��� wait_procsr���r\���r:��r;��)rS��rT��r��r����r3��r���alives��� r{���r8���r8���M��s���������~�~��(�(�9�(�=�H�� �$�(�(�*���$��� � �����!���#���� ���A��a�d�+����$�$�X�~�F���5��A��.�q�e�3F�G�H��a�V�^�^�,��� �r}���c�������������������|����t���������st��������d��������d}�t��������j��������������������������d���}|D�]��}|j ��������������������������s|dk(��r|�|z ��}���n�|�st��������d|����������d}d}|�j ������������������d�������}t��������|d����������}t��������|�������dk\��rt��������|d����������}t��������|�������dk\��rt��������|d����������}|||fS�) z"Return a tuple such as (2, 6, 36).z not POSIX��rg���rf���zcan't parse r�������r����) r����NotImplementedErrorr�����uname�isdigitr����rt���rs����len)r��r\���c�minor�micro�nums�majors��� r{���rN���rN���r��s��������!�+�.�.� �A��H�H�J�q�M�E� ���9�9�;�!�s�(� ��F�A�� �� � ��<��y�1�2�2� �E� �E��7�7�3�<�D���Q��L�E� �4�y�A�~��D��G��� �4�y�A�~��D��G����5�%� � r}���c������������������������t���������st��������d��������t��������j��������������������������}�|�j������������������xs�d}|�d���|�d���|fS�)Nznot WINDOWSr���rZ��)r ���r[��rw����getwindowsversion�service_pack_major)�wv�sps��� r{���rM���rM������sC�������!�-�0�0� � � � �B� � � � #�!�B��q�E�2�a�5�"��r}���c��������������������4�����e�Zd�ZdZeddddfd�Zd��Zd��Zd��Zy)�retryzA retry decorator.Nr����c������������������h�����|r |rt��������d��������||�_��������||�_��������||�_��������||�_��������||�_��������y�)Nz/timeout and retries args are mutually exclusive)r����� exceptionr(���retries�interval�logfun)r����rl��r(��rm��rn��ro��s��� r{���r����zretry.__init__���s8��������w��N�O�O�"��������� �� ���r}���c��������������#����0��K����|�j�������������������rVt��������j��������������������������|�j�������������������z���}t��������j��������������������������|k��rd����t��������j��������������������������|k��r�y�y�|�j������������������rt��������|�j�������������������������D�]��}d������y� �d������wr����)r(��r����rm���range)r�����stop_atr��s��� r{����__iter__zretry.__iter__���sl����������<�<��i�i�k�D�L�L�0�G��)�)�+��'����)�)�+��'� �\�\��4�<�<�(����)������s����A B�#3Bc������������������\�����|�j�������������������� t��������j������������������|�j���������������������������y�y�r����)rn��r����r����r����s��� r{���r����zretry.sleep���s!�������=�=�$��J�J�t�}�}�%��%r}���c������������������T��������t��������j�����������������������������fd���������}��|_��������|S�)Nc��������������������������d�}�D�]��} ���|�i�|��c�S��|�#��j�������������������$�r9}|}�j��������������������j������������������|���������j���������������������������Y�d�}~�Td�}~ww�xY�wr����)rl��ro��r����)r����r�����excr��r����r����s��� ��r{���r����zretry.__call__.<locals>.wrapper���sk��������C������/��/�/�����I����~�~����C��{�{�.����C�(��J�J�L����s�����A�/A�A)r����r����� decorator)r����r����r����s���`` r{����__call__zretry.__call__���s-������� ���� � �� � � �!����r}���) r����r����r����r����r����r����rs��r����ry����r}���r{���rj��rj�����s*������������� � �&�r}���rj��r����)rl��ro��r(��rn��c�����������������������|�t��������j��������������������������vrt��������j������������������|���������t��������j������������������|���������y)z�Wait for pid to show up in the process list then return. Used in the test suite to give time the sub process to initialize. N)r�����pidsr7��r����)r����s��� r{���rP���rP������s/��������&�+�+�-���"�"�3�'�'� �N�N�3�r}���c�����������������������t��������|�d�������5�}|j��������������������������}ddd��������|ssJ��|rt��������|���������S�#�1�sw�Y����xY�w)z8Wait for a file to be written on disk with some content.�rbN)r"���readrI���)�fnamer����r����r%���datas��� r{���rQ���rQ������sC������� �e�T� �a��v�v�x��� ����t� ��E���K� � � �s ����;�Ac������������������������|���������}|sJ��|S�)z1Keep calling function until it evaluates to True.rz��)r�����rets��� r{���rO���rO������s��������%�C��J�3��Jr}���c������������������P����d��} �t��������j������������������|��������}t��������j������������������|j�������������������������r%t ��������j ������������������t��������j������������������|��������}n$t ��������j ������������������t���������j������������������|��������}t��������r�|���������y�||��������y#�t��������$�r�Y�yw�xY�w)z?Convenience function for removing temporary test files or dirs.c������������������6����t��������j���������������������������t��������z���}t��������j���������������������������|k��r ��|���������S��#�t��������$�r�Y�n%t��������$�r}|}t ��������d|�����������Y�d�}~nd�}~ww�xY�wt��������j ������������������d��������t��������j���������������������������|k��r�g�`)Nz ignoring g{�G�z�?)r����r����FileNotFoundErrorrC��r\���r����)r����rr��r��rE��s��� r{���� retry_funzsafe_rmpath.<locals>.retry_fun��s������� ��)�)�+��.���i�i�k�G�#� (��u���� �� �%�� ���� (����y���&�'�'�� (��� �J�J�t����i�i�k�G�#�s����=�� A*�A*�A%�%A*N)r�����stat�S_ISDIR�st_moder�����partialr�����rmtree�remover���r���)r����r����str����s��� r{���rI���rI�����sv�������" � �W�W�T�]���<�<�� � �#��#�#�F�M�M�4�8�C��#�#�B�I�I�t�4�C���E��c�N���� �� �s����B B��B�� B%�$B%c������������������N����� �t��������j������������������|���������y#�t��������$�r�Y�yw�xY�w)z.Convenience function for creating a directory.N)r�����mkdir�FileExistsErrorr����s��� r{���� safe_mkdirr���$��s$������ � ���� ���� �� �s������ $�$c��������������#��������K����t��������j��������������������������} �t��������j������������������|���������d���t��������j������������������|��������y#�t��������j������������������|��������w�xY�w�w)z@Context manager which temporarily changes the current directory.N)r����r����rH���)�dirname�curdirs��� r{���rH���rH���,��s?�����������Y�Y�[�F�� ����� � �����������s����A!�A��A!�A�A!c������������������R����t���������j������������������j������������������|��������rJ�|����������t��������j������������������t ��������|���������t ��������j������������������t��������|���������t��������rFt��������j������������������|��������}t��������j������������������|�|j������������������t��������j������������������z����������|�S�)z6Create a Python executable file in the given location.)r����r����r�����atexit�registerrI���r�����copyfiler���r���r����chmodr����S_IEXEC)r����r���s��� r{���rJ���rJ���7��si�������w�w�~�~�d�#�)�T�)�#� �O�O�K��&� �O�O�J��%�� �W�W�T�]�� ����r�z�z�D�L�L�0�1��Kr}���c������������������V����t���������j������������������j������������������|��������rJ�|����������t��������j������������������d�������st��������j������������������d��������|�t��������j������������������d�������}nt��������|t���������������sJ�|���������t��������j������������������t��������|���������t��������t��������d��������d�������5�}|j!������������������|��������ddd�������� �t#��������j$������������������dj&������������������d|�g��������t��������|j&��������������������������|�S�#�1�sw�Y����DxY�w#�t��������j&��������������������������w�xY�w) z5Create a compiled C executable in the given location.�gcczgcc is not installedNz� #include <unistd.h> int main() { pause(); return 1; } z.c��suffixr!��z-o)r����r����r����r����r�����pytest�skipr��r��r+��r,��r���r���rI���r"��rL���r#��ru���r����r����)r�����c_coder%��s��� r{���rK���rK���B��s��������w�w�~�~�d�#�)�T�)�#��<�<����k�k�0�1�1� �~�����"������&�#�&�.��.�&� �O�O�K��&� �j��%�s� +�q� ������ ,�����u�a�f�f�d�D�9�:��A�F�F���K� � ,� +�� � �A�F�F��s����0D�#D��D�D(c������������������������ �t��������j������������������t��������|�|��������}t��������j������������������j������������������|�������s;t��������j������������������j ������������������|�������}t��������j������������������t��������|��������|S��w)z�Return an absolute pathname of a file or dir that did not exist at the time this call is made. Also schedule it for safe deletion at interpreter exit. It's technically racy but probably not really due to the time variant. )�prefixr���r����) �tempfile�mktempr���r����r����r����r����r���r���rI���)r���r����r����r����s��� r{���rL���rL���\��sU�����������m�F��L���w�w�~�~�d�#��7�7�#�#�D�)�D��O�O�K��.��K��r}���c��������������������j�����e�Zd�ZdZed����������Zed d���������Zed d���������Zed d���������Z�G�d��d�������Z y)rG���z�A class that mimics some basic pytest APIs. This is meant for when unit tests are run in production, where pytest may not be installed. Still, the user can test psutil installation via: $ python3 -m psutil.tests c�������������������������t��������j��������������������������j������������������t���������������}t��������j������������������d��������j������������������|��������t ��������j������������������dt��������d���������|S�)z�Mimics pytest.main(). It has the same effect as running `python3 -m unittest -v` from the project root directory. rg���)� verbosityz<Fake pytest module was used. Test results may be inaccurate.rZ���� stacklevel) r=���� TestLoader�discover�HERE�TextTestRunnerr�����warningsr\����UserWarning)r�����kw�suites��� r{����mainzfake_pytest.mainw��sR������ ��#�#�%�.�.�t�4�����!�,�0�0��7�� � �J��� � ��r}���Nc������������������^�������G�d��d��������t���������j������������������d�fd� ��������}�||�|��������S�)zMimics `pytest.raises`.c�������������������� �����e�Zd�ZdZed����������Zy)�)fake_pytest.raises.<locals>.ExceptionInfoNc�����������������������|�j�������������������S�r����)�_excr����s��� r{����valuez/fake_pytest.raises.<locals>.ExceptionInfo.value���s�������y�y� r}���)r����r����r����r����propertyr���rz��r}���r{���� ExceptionInfor������s�������D� � !��� !r}���r���c��������������3���������K��������������} �|���t��������|��d���������#�|�$�rF}|r3t��������j������������������|t��������|��������������sd|��d|��d�}t��������|��������||_��������Y�d�}~y�d�}~ww�xY�w�w)Nz not raised�"z" does not match ")�AssertionError�re�searchr,��r���)rw���match�einforE���msgr���s��� �r{����contextz#fake_pytest.raises.<locals>.context���sz����������!�O�E� <����%��w�k�%:�;�;�� ��� !�����5�#�c�(�!;��e�W�$6�s�e�1�=�C�(��-�-� �� � �� !�s*����A,���A,�A)�<A$�A,�$A)�)A,)r���r����)� contextlib�contextmanager)rw��r���r���r���s��� @r{����raiseszfake_pytest.raises���s6������� !�� !�� � "� "� <�� #� <���s�%�(�(r}���c�����������������������|r$t��������j��������������������������j������������������|�|�������S�t��������j��������������������������j������������������|��������S�)zMimics `pytest.warns`.)r=����TestCase�assertWarnsRegex�assertWarns)�warningr���s��� r{����warnszfake_pytest.warns���s=���������$�$�&�7�7���G�G�� � �"�.�.�w�7�7r}���c������������������,�����t��������j������������������|���������)zMimics `unittest.SkipTest`.)r=����SkipTest��reasons��� r{���r���zfake_pytest.skip���s�����������'�'r}���c��������������������2�����e�Zd�Zedd���������Z�G�d��d�������Zy)�fake_pytest.markc������������������.�����t��������j������������������|�|�������S�)z'Mimics `@pytest.mark.skipif` decorator.)r=����skipIf)� conditionr���s��� r{����skipifzfake_pytest.mark.skipif���s��������?�?�9�f�5�5r}���c�������������������������e�Zd�ZdZdd�Zd��Zy)�fake_pytest.mark.xdist_groupz4Mimics `@pytest.mark.xdist_group` decorator (no-op).Nc������������������������y�r����rz��r����s��� r{���r����z%fake_pytest.mark.xdist_group.__init__���s������r}���c�����������������������|S�r����rz��)r�����cls_or_meths��� r{���ry��z%fake_pytest.mark.xdist_group.__call__���s������"�"r}���r����)r����r����r����r����r����ry��rz��r}���r{����xdist_groupr������s������F� � #r}���r���N�rY��)r����r����r�����staticmethodr���r���rz��r}���r{����markr������s������ � 6�� � 6� #�� #r}���r���r����r���) r����r����r����r����r���r���r���r���r���r���rz��r}���r{���rG���rG���o��sa���������������)���)�2��8���8���(���(�#��#r}���rG���c��������������������H�����e�Zd�ZdZdd�Zd��Zd��Zd��Zd��Zd��Z d ��Z d ��Zd��Zy) rB���z�Test class providing auto-cleanup wrappers on top of process test utilities. All test classes should derive from this one, even if we use pytest. Nc������������������L�����t��������||��������}|�j������������������t��������|��������|S�)N)r���r����)rL���� addCleanuprI���)r����r���r����r���s��� r{���rL���zPsutilTestCase.get_testfn���s!�������&�c�2������U�+��r}���c������������������H�����t��������|i�|��}|�j������������������t��������|��������|S�r����)r9���r���r7���)r����r����r����r���s��� r{���r9���zPsutilTestCase.spawn_testproc���s$��������-��-����� �5�)��r}���c������������������|�����t����������������\��}}|�j������������������t��������|��������|�j������������������t��������|��������||fS�r����)r;���r���r7���)r�����child1�child2s��� r{���r;���z"PsutilTestCase.spawn_children_pair���s5������,�.������� �6�*���� �6�*����r}���c������������������|�����t����������������\��}}|�j������������������t��������|��������|�j������������������t��������|��������||fS�r����)r:���r���r7���)r����r��r��s��� r{���r:���zPsutilTestCase.spawn_zombie���s4������%�������� �6�*���� �6�*����r}���c������������������z�����t��������|i�|��\��}}|�j������������������t��������|��������|�j������������������t��������|��������|S�r����)r6���r���rI���r7���)r����r����r����r���r$��s��� r{���r6���zPsutilTestCase.pyrun���s6��������-��-���w�����W�-���� �5�)��r}���c����������������������t��������|t��������j�������������������������sJ��|j������������������|j������������������k(��sJ��|j������������������|j ������������������k(��sJ��|j������������������r|j������������������sJ��t��������|t��������j�������������������������r8|j������������������|j������������������k(��sJ��|j�������������������|j������������������dk\��sJ��t��������|��������t��������|��������y��Nr���)r+��r�����Errorr����r�����_name� ZombieProcess�ppid�_ppidr,���repr)r����r8��rw��s��� r{����_check_proc_exczPsutilTestCase._check_proc_exc���s��������#�v�|�|�,�,�,��w�w�$�(�(�"�"�"��x�x�4�:�:�%�%�%��8�8��8�8�O�8��c�6�/�/�0��8�8�t�z�z�)�)�)��x�x�#��x�x�1�}�$�}��C���S� r}���c����������������������t��������j������������������t��������j�������������������������5�} �t��������j������������������|�������� �d�d�d���������j������������������j������������������|k(��sJ��|j������������������j�������������������J��t��������j������������������|�������rJ�|���������|t��������j��������������������������vsJ��|t��������j��������������������������D��cg�c]��}|j���������������������c}vsJ��y�#�t��������j ������������������$�r�t ��������d��������w�xY�w#�1�sw�Y�����xY�wc�c}w�)Nz&wasn't supposed to raise ZombieProcess) r���r���r����r7��r����r���r���r���r����r����rM��r|���process_iter)r����r�����cm�xs��� r{���� assertPidGonezPsutilTestCase.assertPidGone���s������� �]�]�6�/�/� 0�B� O����s�#��1� ��x�x�|�|�s�"�"�"��x�x�}�}�$�$�$��$�$�S�)�.�3�.�)��&�+�+�-�'�'�'��&�*=�*=�*?�@�*?�Q�1�5�5�*?�@�@�@�@�� ��'�'�� O�$�%M�N�N� O���1� 0���As"����C>�C�D �C;�;C>�>Dc�����������������������|�j������������������|j��������������������������t��������|�������}|j������������������|j������������������d��������D�]3��\��}}|�j������������������||��������5�� ��|��������}d|��d|��}t ��������|���������|j������������������d���������y�#�t��������j������������������$�r���t��������j������������������$�r}|�j������������������||��������Y�d�}~nd�}~ww�xY�w �d�d�d�����������#�1�sw�Y�����xY�w)NT��clear_cache�r8��r����zProcess.z!() didn't raise NSP and returned r���r'��)r���r����rC����iter�all�subTestr���r����r���r7��r���r����)r����r8���nsr����r����r���r���rw��s��� r{����assertProcessGonez PsutilTestCase.assertProcessGone���s����������4�8�8�$� �t� $��������T��:�I�C�����4�d��3�.��%�C��#�4�&��)��7�$����)��-�-��;�� � � �!� �����+�+�����+�+��4��(�(��s�3�3��4��3� �4�3�3�s6����C�B �&C� &C�3C �C� C�C�C% c����������������������t��������j������������������|j�������������������������}||k(��sJ��t��������st��������st��������|�������t��������|�������k(��sJ��|j ��������������������������t���������j������������������k(��sJ��|j��������������������������sJ��t��������j������������������|j�������������������������sJ��|j���������������������������|j������������������t��������j��������������������������v�sJ��|j������������������t��������j��������������������������D��cg�c]��}|j���������������������c}v�sJ��i�t���������_ ��������|j������������������t��������j��������������������������D��cg�c]��}|j���������������������c}v�sJ��t��������|�������}|j������������������|j ������������������d��������D�])��\��}}|�j#������������������||��������5�� ��|���������d�d�d����������+�t*���������rt-��������j.������������������t���������j$�������������������������5�}|j1���������������������������d�d�d���������|�j)������������������|j2��������������������������t-��������j.������������������t���������j$�������������������������5�}|j5���������������������������d�d�d���������|�j)������������������||j2��������������������������t-��������j.������������������t���������j$�������������������������5�}|j7���������������������������d�d�d���������|�j)������������������||j2��������������������������|j9���������������������������|j;���������������������������|j=���������������������������|j?���������������������������|j��������������������������sJ��t��������j������������������|j�������������������������sJ��|j������������������t��������j��������������������������v�sJ��|j������������������t��������j��������������������������D��cg�c]��}|j���������������������c}v�sJ��i�t���������_ ��������|j������������������t��������j��������������������������D��cg�c]��}|j���������������������c}v�sJ��y�c�c}w�c�c}w�#�t���������j$������������������t���������j&������������������f$�r}|�j)������������������||��������Y�d�}~��sd�}~ww�xY�w#�1�sw�Y������xY�w#�1�sw�Y�����ExY�w#�1�sw�Y������xY�w#�1�sw�Y������xY�wc�c}w�c�c}w�)NTr���r���) r����r����r����r ���r ����hashr��r��� is_runningrM���as_dictr|��r����_pmaprC���r���r���r���r����AccessDeniedr���r���r���r����cmdliner���r����r�����suspend�resumer7����kill) r����r8���cloner���r���r����r����rw��r���s ��� r{����assertProcessZombiez"PsutilTestCase.assertProcessZombie��s4��������t�x�x�(����u�}��}��6���:��e��,�,�,��{�{�}�� 4� 4�4�4�4���� � � �� � ����*�*�*������x�x�6�;�;�=�(�(�(��x�x�6�+>�+>�+@�A�+@�a�A�E�E�+@�A�A�A�A�����x�x�6�+>�+>�+@�A�+@�a�A�E�E�+@�A�A�A�A� �t� $��������T��:�I�C�����4�d��3�4��E��4�3��;������v�3�3�4�������5�� � ��r�x�x�0����v�3�3�4����� ��5�� � ��r�x�x�0����v�3�3�4��� � �"��5�� � ��r�x�x�0�������� ������ � ����� � � �� � ����*�*�*��x�x�6�;�;�=�(�(�(��x�x�6�+>�+>�+@�A�+@�a�A�E�E�+@�A�A�A�A�����x�x�6�+>�+>�+@�A�+@�a�A�E�E�+@�A�A�A�A��A�B��A����,�,�f�.A�.A�B��4��(�(��s�3�3��4���4�3���5�4���5�4���5�4���B��Asl����5O�:O�P�O�P%�)P2�P?�,Q�1Q�#P�8P� P�P�P�P" �%P/�2P<�?Q �rY��N) r����r����r����r����rL���r9���r;���r:���r6���r���r���r��r ��rz��r}���r{���rB���rB������s6������� � � � ��� A��&1Br}���rB���zunreliable on PYPYr���c��������������������������e�Zd�ZdZdZdZdZerdndZdZ �e j��������������������������Z�e �ej������������������d��������������Zed����������Zed ����������Zd ��Zd��Zd��Zd ��Zd��Zd��Zd��Z �dd�Zd��Zy)rA���a���Test framework class for detecting function memory leaks, typically functions implemented in C which forgot to free() memory from the heap. It does so by checking whether the process memory usage increased before and after calling the function many times. Note that this is hard (probably impossible) to do reliably, due to how the OS handles memory, the GC and so on (memory can even decrease!). In order to avoid false positives, in case of failure (mem > 0) we retry the test for up to 5 times, increasing call repetitions each time. If the memory keeps increasing then it's a failure. If available (Linux, OSX, Windows), USS memory is used for comparison, since it's supposed to be more precise, see: https://gmpy.dev/blog/2016/real-process-memory-and-environ-in-python If not, RSS memory is used. mallinfo() on Linux and _heapwalk() on Windows may give even more precision, but at the moment are not implemented. PyPy appears to be completely unstable for this framework, probably because of its JIT, so tests on PYPY are skipped. Usage: class TestLeaks(psutil.tests.TestMemoryLeak): def test_fun(self): self.execute(some_function) �����rh���r���r����T�PSUTIL_DEBUGc������������������.�����t��������j������������������d��������y�)NF)r����� _set_debug��clss��� r{���� setUpClasszTestMemoryLeak.setUpClassy��s���������%� r}���c������������������B�����t��������j������������������|�j��������������������������y�r����)r����r���_psutil_debug_origr��s��� r{���� tearDownClasszTestMemoryLeak.tearDownClass}��s���������#�0�0�1r}���c������������������d�����|�j�������������������j��������������������������}t��������|d|j�������������������������S�)N�uss)� _thisproc�memory_full_infor�����rss)r�����mems��� r{����_get_memzTestMemoryLeak._get_mem���s)��������n�n�-�-�/���s�E�3�7�7�+�+r}���c������������������v�����t���������r|�j������������������j��������������������������S�|�j������������������j��������������������������S�r����)r���r���num_fds�num_handlesr����s��� r{����_get_num_fdszTestMemoryLeak._get_num_fds���s+��������>�>�)�)�+�+��>�>�-�-�/�/r}���c������������������V�����|�j�������������������rt��������|dt��������j���������������������������y�y�)N�yellow)�color�file)�verboser���rw���r����)r����r���s��� r{����_logzTestMemoryLeak._log���s�������<�<���8�#�*�*�=��r}���c����������������������|�j��������������������������}|�j������������������|��������|�j��������������������������}||z ��}|dk��rd|�d�}|�j������������������|��������|dkD��r/t��������rdnd}|dkD��r|dz ��}|��d|��d |��}|�j������������������|��������y )z�Makes sure num_fds() (POSIX) or num_handles() (Windows) does not increase after calling a function. Used to discover forgotten close(2) and CloseHandle syscalls. r���znegative diff z8 (gc probably collected a resource from a previous test)�fd�handlerZ��r��z unclosed z after calling N)r$���call�failr���)r����r�����before�after�diffr����type_s��� r{���� _check_fdszTestMemoryLeak._check_fds���s������� ��"�"�$��� � �#���!�!�#���v�~���!�8� ����)2��2�� ���)�)�C�.� ��!�8�!�D�x�E��a�x������F�*�U�G�?�3�'�B�C��)�)�C�.� ��r}���c����������������������t��������j������������������d���������|�j��������������������������}t��������|�������D�]��}|�j ������������������|�������}~~��t��������j������������������d���������|�j��������������������������}t���������j ������������������g�k(��sJ��||z ��}|S�)z�Get 2 distinct memory samples, before and after having called fun repeatedly, and return the memory difference. rZ��)� generation)�gc�collectr ��rq��r.���garbage)r����r�����times�mem1r���r����mem2r2��s��� r{����_call_ntimeszTestMemoryLeak._call_ntimes���st������� � � �a� ��}�}����u��A��)�)�C�.�C��3���� � � �a� ��}�}����z�z�R�����d�{���r}���c����������� �����������g�}d}|}t��������d|dz����������D�]���}|�j������������������||�������} dj������������������|t��������| �������t��������| |z���������|�������} |j ������������������| ��������| |k��xs�| |k��}|r|dkD��r|�j������������������| ���������y�|dk(��r t �����������������|�j������������������| ��������||z ��}| }���|�j������������������dj������������������|���������������)Nr���rZ��z,Run #{}: extra-mem={}, per-call={}, calls={}z. ) rq��r=��r����r����appendr*���printr/��r����)r����r����r:��rm��� tolerance�messages�prev_mem�increase�idxr��r����successs��� r{���� _check_memzTestMemoryLeak._check_mem���s���������������G�a�K�(�C��#�#�C��/�C�@�G�G���C� ��C�%�K�(�� �C�� �O�O�C� ��Y�&�9�#��/�G����7��I�I�c�N���!�8��G�� � �#����!����'�)�(��i�i�� � �(�+�,�,r}���c������������������������|��������S�r����rz��)r����r����s��� r{���r.��zTestMemoryLeak.call���s �������u�r}���Nc����������������������|�|n|�j�������������������}|�|n|�j������������������}|�|n|�j������������������}|�|n|�j������������������} �|dk\��sJ�d���������|dk\��sJ�d���������|dk\��sJ�d���������|dk\��sJ�d��������� �|�j������������������||��������|�j������������������|��������|�j������������������||||���������y#�t��������$�r}t��������t ��������|���������������d}~ww�xY�w) zTest a callable.NrZ��ztimes must be >= 1r���zwarmup_times must be >= 0zretries must be >= 0ztolerance must be >= 0)r:��rm��rA��) r:���warmup_timesrm��rA��r���r����r,��r=��r4��rG��)r����r����r:��rJ��rm��rA��rE��s��� r{����executezTestMemoryLeak.execute���s���������*��� � ��(�4�L�$�:K�:K�� ��%�0�'�d�l�l��!*�!6�I�D�N�N� � '��A�:�3�3�3�:��1�$�A�&A�A�$��a�<�7�!7�7�<���>�;�#;�;�>�� ���#�|�,����������5�'�Y��O����� '��S��X�&�&�� '�s����0B,��, C�5C � Cc������������������>�������������fd�}���j�������������������|fi�|���y)znConvenience method to test a callable while making sure it raises an exception on every call. c�������������������*�������j�����������������������������y�r����)�assertRaises)rw��r����r����s������r{���r.��z*TestMemoryLeak.execute_w_exc.<locals>.call���s����������c�3�'r}���N)rK��)r����rw��r����r����r.��s���``` r{���� execute_w_exczTestMemoryLeak.execute_w_exc���s������� (�� ����T�$�V�$r}���)NNNN)r����r����r����r����r:��rJ��rA��r ���rm��r)��r����r����r���boolr�����getenvr���classmethodr��r��r ��r$��r*��r4��r=��rG��r.��rK��rO��rz��r}���r{���rA���rA���P��s��������>� �E��L��I��b�A�G��G����� �I��i�b�i�i��7�8���!���!���2���2�,�0�>�!�, �-�8��KO�P�,%r}���rA���c�������������������&����dd�l�}�dd�l}dd�l}dd�l}dd�l} �dd�l} �dd�l}|�j��������������������������}t��������j������������������r$t��������j������������������d�������rt��������d�������|d<���n�t��������j������������������rdt��������j ��������������������������d������|d<���n�t��������j"������������������rjddj%������������������t'��������t(��������t��������j*����������������������������������������z���|d<���t-��������t��������d�������rQ|dxx���d t��������j.��������������������������z���z ��cc<���n.t��������j0����������������������������dt��������j2�����������������������������|d<���d j%������������������t5��������t��������j6���������������������������������t��������j8��������������������������gz����������|d <���t��������j:������������������rt��������j<��������������������������d���|d<���d j%������������������t��������j>��������������������������t��������j@��������������������������t��������jB��������������������������g�������|d <���tE��������|dd�������|d<���|�|dxx���d|jF��������������������d�z ��cc<���t��������j:������������������rft��������j������������������d�������r.t��������ddg�������}t)��������|�������jI������������������d�������d���|d<���nd|d<���t��������jJ��������������������������d���} | r| |d<���tM��������jN��������������������������|d<���|jQ��������������������������} | d�����d | d������|d<���|j������������������jS������������������t��������jT���������������������������������jW������������������d�������|d<���|j������������������jY��������������������������jW������������������d�������|d<���|j[��������������������������|d<���t\��������j^������������������ja������������������d�������|d<���t]��������jb��������������������������|d <���td��������|d!<���t��������jf��������������������������|d"<���t]��������jh��������������������������|d#<���t��������jj��������������������������|d$<����d%jl������������������to��������d&��t��������jp��������������������������D������������������|d'<���t��������jr��������������������������}d(jm������������������tu��������|jv�������������������������ty��������|jz�������������������������ty��������|j|��������������������������������|d)<���t��������j~��������������������������}d(jm������������������tu��������|jv�������������������������ty��������|jz�������������������������ty��������|j|��������������������������������|d*<���t���������t��������j����������������������������������|d+<���t��������j���������������������������j���������������������������} | j�������������������d,d���������|j�������������������| �������|d-<���t���������d.tL��������j��������������������/��������|j���������������������������D�]3��\��}}t���������d0jm������������������|d1z���|�������tL��������j��������������������/���������5�t���������d.tL��������j��������������������/��������tL��������j�������������������j����������������������������tL��������j�������������������j����������������������������y�#�t��������$�r�d�}Y����w�xY�w#�t��������$�r�d�}Y����w�xY�w)2Nr����lsb_releasezlsb_release -d -s�OSzDarwin zWindows � � win32_editionz, �archrg����kernel�python�__version__z not installed�pipz (wheel=�)r���z --versionr)��rZ���glibczfs-encoding�langz%Y-%m-%d %H:%M:%Sz boot-timer�����user�~�homer�����pyexe�hostname�PID�cpusz{:.1f}%, {:.1f}%, {:.1f}%c��������������3����P���K����|�]��}|t��������j��������������������������z��d�z������ �y�w)�d���N)r����� cpu_count)�.0r���s��� r{���� <genexpr>z print_sysinfo.<locals>.<genexpr>@��s&���������I�5H��q�6�#�#�%�%��+�5H�s����$&�loadavgz{}%%, used={}, total={}�memory�swapr|��r����r8��zF======================================================================�r(��z {:<17} {}�:)K�collections�datetime�getpass�locale�pprintr\���ImportError�wheel�OrderedDictr����r���r����r����r4���OSXro���rp���r ���r����rr���r,��� win32_ver�hasattrrW���systemrz����list�architecture�machiner���r\���python_implementation�python_version�python_compilerr����r[��rt����libc_verrw����getfilesystemencoding� getlocale� fromtimestamp� boot_time�strftime�now�getuserr����r����� expanduserr����r����node�getpidri��r����rq���r�����virtual_memoryrs����percentr����used�total�swap_memoryr^��r|��r����r��rU���pformatr@��r�����itemsr�����flush)rq��rr��rs��rt��ru��r\��rw���info�outr��r_��r��rn���pinfo�k�vs��� r{���rE���rE������s�����������������"�"�$�D���|�|����]�3��+�,��T� � ����x�/�/�1�!�4�5�6��T� � ����#�(�(�3�s�H�4F�4F�4H�+I�"J�J��T� ��8�_�-���J�$��!7�!7�!9�9�9�J� ���)�*�!�H�,<�,<�,>�+?�@��T� ��9�9��X� "� "� $�%��)9�)9�);�(<�<��D��L���|�|�!���)�!�,��X����Y�Y��&�&�(����!�� � �"� ���D��N� ��#�}�o�>�D��K����U���%�"3�"3�!4�A�6�6����|�|��<�<����e�[�)�*�C��c�(�.�.��.�q�1�D��K�)�D��K������"����D��M���3�3�5�D�������D��1�g�Y�b��a�� �*�D��L� �)�)�7�7�������h�"�#�� �����$�$�(�(�*�3�3�4G�H�D��L��?�?�$�D��L��7�7�%�%�c�*�D��L��)�)�+�D��K��D��M��}�}��D����)�)�+�D��K���#�#�%�D��L�8�1�8�8� �I�V�5F�5F�5H�I� I��D��O��� � � !�C�.�5�5��C�K�K���C�H�H���C�I�I���D��N� �����D�,�3�3��D�L�L���D�I�I���D�J�J���D��L� ��v�{�{�}�%�D��L��N�N��$�$�&�E� �I�I�m�T�"��>�>�%�(�D��L� �(����$�� � ����1� �k� � ��S��!�,�3�:�:�>��� �(����$��J�J������J�J�����A���������������s"����W/��X��/W>�=W>�X�Xc������������������T�����t���������d����������} ��|��������|����dk(��S�#�t��������$�r�Y�yw�xY�w)Nc�������������������������i�}�t��������d�������}|j��������������������������dd��D�]H��}|j������������������d�������D��cg�c]��}|j������������������dd����������}}|d���t ��������|d����������}}||�|<����J�|�S�c�c}w�)Nztasklist.exe /NH /FO csvrZ���,r���rY��r���)r4��� splitlinesrt����replacers���)r���r����liner����bitsr����r����s��� r{���� get_procsz,is_win_secure_system_proc.<locals>.get_procsd��s|���������+�,���N�N�$�Q�R�(�D�04� � �3��@��1�A�I�I�c�2�&��D�@��Q���T�!�W��#�D��C��H��)��� ���As����A.z Secure SystemF)r����KeyError)r����r���s��� r{���rF���rF���b��s=��������� ����{�3��?�2�2�������s������ '�'c�������������������������t��������j��������������������������}�t��������|�d�������r|�j��������������������������S�t��������|�d�������r#t ��������j ������������������|�j ���������������������������������S�y)Nr����r����r���)r����r����r{��r�����random�choicer����)r3��s��� r{����_get_eligible_cpur���t��sG����������A��q�)���y�y�{�� ��N� #��}�}�Q�^�^�-�.�.�r}���c�������������������������e�Zd�ZdZddi�fddi�fgZddi�fddddifd di�fd di�fddi�fddi�fd di�fddi�fddi�fg Zddi�fddi�fddi�fddi�fddi�fddi�fddi�fddi�fddddifddi�fddi�fddi�fddi�fd di�fd!di�fd"di�fd#di�fgZer$ed$di�fgz ��Zed%di�fgz ��Zed&di�fgz ��Zed'di�fgz ��Zer ed(di�fgz ��Ze r ed)di�fgz ��Ze red*ej������������������fi�fgz ��Ze r ed+di�fgz ��Zer ed,di�fgz ��Zer ed-di�fgz ��Zer ed.di�fgz ��Zered/dd0d1ifgz ��Zg�Zer eddi�fgz ��Znedej&������������������fi�fgz ��Ze red*ej������������������d2fi�fgz ��Ze r,ered)ej*������������������d3fi�fgz ��Zned)ej,������������������fi�fgz ��Ze red+�e��������gfi�fgz ��Zd4ej2������������������fi�fd5di�fd6di�fd7di�fd8di�fgZer(ed4ej6������������������fi�fgz ��Zed4ej8������������������fi�fgz ��Zeez���ez���ez���Zd9��Zd?d:�Zd;��Z e!d<����������Z"e!d=����������Z#y>)@rC���a��A container that lists all Process class method names + some reasonable parameters to be called with. Utility methods (parent(), children(), ...) are excluded. >>> ns = process_namespace(psutil.Process()) >>> for fun, name in ns.iter(ns.getters): ... fun() �cpu_percentrz���memory_percentr��rT��rS��T�connectionsr���oneshotr���parentsr����r����)r���r��� cpu_times�create_timer����r����r���memory_infor�����net_connections�kindr����nice�num_ctx_switches�num_threads� open_filesr���r��r�����username�uids�gids�terminalr"��r����r����r����r����r����r����r#��r�����groupedF)r ��i���r���r<��r ��r ��r7���r��c�����������������������||�_���������y�r����)�_proc)r����r8��s��� r{���r����zprocess_namespace.__init__���s �������� r}���c��������������#��������K����t��������|�������}t��������j������������������|��������|D�]M��\��}}}|r|�j���������������������������t ��������|�j ������������������|�������}t ��������j������������������|g|��i�|��}||f����O�y�w�z_Given a list of tuples yields a set of (fun, fun_name) tuples in random order. N)r}��r����shuffler���r����r���r����r���)r�����lsr����fun_namer����r����r����s��� r{���r���zprocess_namespace.iter���sq�����������"�X�����r��$&� �H�d�D��� � �"��$�*�*�h�/�C��#�#�C�7�$�7�$�7�C���/�!��%'�s����A4A6c������������������f�����|�j�������������������j������������������|�j�������������������j������������������d���������y)z&Clear the cache of a Process instance.T)�_ignore_nspN)r����_initr����r����s��� r{���r���zprocess_namespace.clear_cache���s!������� � ��������T��:r}���c�����������������������|D�]>��\��}}}d|z���}t��������||�������r�|j������������������j�������������������d|�d�}t��������|���������y)z}Given a TestCase instance and a list of tuples checks that the class defines the required test method names. �test_z class should define a z methodN)r{��r����r�����AttributeError)r��� test_classr���r���r��� meth_namer���s��� r{����test_class_coveragez%process_namespace.test_class_coverage���s]������ �!�N�H�a���(�*�I��:�y�1�!�+�+�4�4�7��8�!�}�G�-����%�S�)�)��!r}���c������������������ ����|�j�������������������D��ch�c]��}|d����� �}}|�j������������������D��ch�c]��}|d����� �}}t��������t��������j�������������������������D��ch�c] ��}|d���dk7��s�|���}}||z��|z��}|rt��������d|����������y�c�c}w�c�c}w�c�c}w�)Nr���r��zuncovered Process class names: )r����ignoredr����r����r����r����)r��r����thisr����klass�leftouts��� r{����testzprocess_namespace.test���s�������!�g�g�&�g���!��g��&�!$���-��A�1�Q�4���-�����/�?�/�q�1�Q�4�3�;��/��?��'�>�U�*����>�w�k�J�K�K���� �'��-��?s����B�B� B�"BN)T)$r����r����r����r�����utilsr����gettersr���r'���r(���r+���r����� RLIMIT_NOFILEr$���r*���r&���r ���r)����setters�NORMAL_PRIORITY_CLASSr����IOPRIO_CLASS_NONE� IOPRIO_NORMALr���r:���SIGTERM�killers�CTRL_C_EVENT�CTRL_BREAK_EVENTr���r����r���r���rR��r���r���rz��r}���r{���rC���rC���}��s���������R�� $�'7��R�&@�A�E�� �B��� �R�+�t�,�-� ��B�� �r�2�� �B��� �2�r�� �B��� ��B�� ��r�� �G�� �B��� �b�"�� ��B�� ��B�� ��B�� �R��$� ��B�� ��R�� �B����0� ��R�� �R��$� ��B�� �r�2�� ��R�� �2�r�� �B��� �R���#�G�&� ��V�R��$�%�%���V�R��$�%�%���Z��R�(�)�)���Y��B�'�(�(����]�B��+�,�,����X�r�2�&�'�'����X�� 4� 4�6��;�<�<����^�R��,�-�-����Y��B�'�(�(����Y��B�'�(�(����]�B��+�,�,����]�B��E�(:�;�<�<���G���V�T�2�&�'�'���V�f�:�:�<�b�A�B�B����X�� 4� 4�l�C�R�H�I�I������F�$<�$<�a�#@�"�E�F�F�G���F�$8�$8�#:�B�?�@�@�G���^�'8�':�&;�%=�r�B�C�C��� ����)�2�.� �B��� �2�r�� �b�"�� ��R���G����]�V�%8�%8�$:�B�?�@�@���]�V�%<�%<�$>��C�D�D�� �'�/�G� #�g� -�C��"�;���*���*���L���Lr}���rC���c��������������������>����e�Zd�ZdZddi�fddddifddddifddi�fd dd difd dd difddddifd dddifd�ej ��������������������������fi�fddddifddi�fddi�fddddifd�ej��������������������������fi�fddi�fddi�fddi�fddi�fgZer"e r�e j��������������������������dk(��rneddd difgz ��Zer eddi�fgz ��Ze r eddi�fgz ��Zer eddi�fgz ��Zer ed di�fgz ��Zered!di�fgz ��Zed"d#i�fgz ��Zd$di�fd%�ej$��������������������������gfi�fd&di�fd'di�fgZeZed(����������Zej0������������������Zy))*rD���z�A container that lists all the module-level, system-related APIs. Utilities such as cpu_percent() are excluded. Usage: >>> ns = system_namespace >>> for fun, name in ns.iter(ns.getters): ... fun() r���rz��ri���logicalFT� cpu_statsr����percpu�disk_io_counters�perdisk�disk_partitionsr���� disk_usager���r����net_if_addrs�net_if_statsr�����pernicrM��r|��r����usersr����arm64r����r����r����r����r�����win_service_iter�win_service_get)�algr���rV��r����cpu_times_percentc��������������#�������K����t��������|��������}�t��������j������������������|���������|�D�]5��\��}}}t��������t��������|�������}t��������j������������������|g|��i�|��}||f����7�y�wr���)r}��r���r���r����r����r����r���)r���r���r����r����r����s��� r{���r���zsystem_namespace.iter=��s^��������� ��"�X�����r��$&� �H�d�D��&�(�+�C��#�#�C�7�$�7�$�7�C���/�!��%'�s����AAN)r����r����r����r����r����r����r���r���r%���r���ro���r���HAS_GETLOADAVGr/���r.���r,���r ���r����r����r���r���r���r���rC���r���rz��r}���r{���rD���rD�����s'������� �b�"�� �b�9�e�,�-� �b�9�d�+�,� �b�"�� �b�8�U�+�,� �b�8�T�*�+� �R�)�T�!2�3� �B��� �.� � �� � ��~�r�*� �B����0� ��R� � ��R� � �B��4� 0�1� � �� � ��~�r�*� ��R�� ��B�� �"�b�� �2�r�"�%�G�(���%�X�%�%�'�7�2����R�(�D�)9�:�;�;�G���\�2�r�*�+�+����+�R��4�5�5����^�R��,�-�-����&��B�/�0�0����'��R�0�1�1���&��"�5�6�6��� ��R� � �����)�*�,�b�1� ��B�� �b�"�%� �G���C�� "��� "��,�?�?�r}���rD���c������������������.�����d��}t��������t��������d|�|��������S�)zZDecorator which runs a test function and retries N times before actually failing. c������������������@�����t��������|��d�t��������j���������������������������y�)Nz , retryingro��)r@��rw���r����)rw��s��� r{���ro��z retry_on_failure.<locals>.logfunQ��s������ ���z�"����4r}���N)rl��r(��rm��ro��)rj��r���)rm��ro��s��� r{���r@���r@���L��s������ 5��� �$�����r}���c���������������������������fd�}|S�)z,Decorator to Ignore AccessDenied exceptions.c������������������F��������t��������j������������������������������fd���������}|S�)Nc�������������������x������ ���|�i�|��S�#�t���������j������������������$�r����s��t��������j������������������d��������w�xY�w)Nzraises AccessDenied)r����r��r���r���)r����r����r�����only_ifs��� ��r{���r����z9skip_on_access_denied.<locals>.decorator.<locals>.wrapper]��sI������� 9��D�+�F�+�+���&�&�� 9��&�"���k�k�"7�8�8� 9�s������.9r�����r����r����r���s���` �r{���rx��z(skip_on_access_denied.<locals>.decorator\��s%������� ���� � 9�� � 9���r}���rz���r���rx��s���` r{���r>���r>���Y��s����������r}���c���������������������������fd�}|S�)z3Decorator to Ignore NotImplementedError exceptions.c������������������F��������t��������j������������������������������fd���������}|S�)Nc������������������������� ���|�i�|��S�#�t���������$�r*����s���j�������������������d�}t��������j������������������|��������w�xY�w)Nz2 was skipped because it raised NotImplementedError)r[��r����r���r���)r����r����r���r����r���s��� ��r{���r����z;skip_on_not_implemented.<locals>.decorator.<locals>.wrapperp��s]������� '��D�+�F�+�+��&�� '��&�"���|�|�&��'+��+�����k�k�#�&�&� '�s������3>r����r���s���` �r{���rx��z*skip_on_not_implemented.<locals>.decoratoro��s%������� ���� � '�� � '���r}���rz��r���s���` r{���r?���r?���l��s��������"��r}���c�����������������������t��������j���������������������������5�}|j������������������|�df��������|j��������������������������d���cddd��������S�#�1�sw�Y���yxY�w)z6Return an unused TCP port. Subject to race conditions.r���rZ��N)�socket�bind�getsockname)�hostr��s��� r{���rT���rT������s8������ ����D�� � �4��)�����!�!�$�� ���s����&A�Ac����������������������|�|�t���������t��������hv�rd}t��������j������������������|�|�������} �t��������j������������������dvr/|j������������������t��������j������������������t��������j������������������d��������|j������������������|��������|t��������j������������������k(��r|j������������������d��������|S�#�t��������$�r�|j�����������������������������w�xY�w)zBinds a generic socket.�rY��r���>����nt�cygwinrZ��r����) r���r���r���r����r����� setsockopt� SOL_SOCKET�SO_REUSEADDRr���r����listenr����r��)�family�type�addrr��s��� r{���rU���rU������s��������|��7�H�"5�5����=�=���&�D� � �7�7�*�*��O�O�F�-�-�v�/B�/B�A�F�� � �$���6�%�%�%��K�K��N�������� � �� ��s����A7B"��"B=c������������������f����t���������j������������������sJ��t��������j������������������j ������������������|��������rJ�|����������t��������j ������������������t ��������j������������������|�������} �|j������������������|���������|t ��������j������������������k(��r|j������������������d��������|S�#�t��������$�r�|j�����������������������������w�xY�w)zBind a UNIX socket.r����)r����r���r����r����r����r���r����r���r���r��r����r��)r����r ��r��s��� r{���rV���rV������s��������<�<��<��w�w�~�~�d�#�)�T�)�#��=�=�����.�D��� � �$���6�%�%�%��K�K��N���K������� � �� ��s����5B��B0c�����������������������t��������j�������������������|�t���������������5�}|j������������������|��������|j������������������d��������|j ��������������������������}t��������j�������������������|�t���������������} �|j������������������|��������|j ��������������������������} �|j ��������������������������\��}}||k(��r ||fcddd��������S�|j����������������������������6#�t��������$�r�|j�����������������������������w�xY�w#�1�sw�Y���yxY�w)z^Build a pair of TCP sockets connected to each other. Return a (server, client) tuple. r����N) r���r���r���r��r����connectr��r��rC��)r��r ���llr_���caddr�as��� r{���rW���rW������s�������� ���v�{� +�r� ���� � � � �!���~�~����M�M�&�+�.�� � �I�I�d�O��M�M�O�E���)�)�+���4��5�=��q�6�� ,� +����� ������� � �G�G�I�� ��� ,� +�s$����A C�)=C�0C�C�C�C(c����������������������t���������j������������������sJ��dx}} �t��������|�t��������j��������������������������}|j������������������d��������t��������j������������������t��������j������������������t��������j�������������������������}|j������������������d��������|j������������������|���������||fS�#�t��������$�r&�|�|j���������������������������|�|j�����������������������������w�xY�w)z�Build a pair of UNIX sockets connected to each other through the same UNIX file name. Return a (server, client) tuple. N�r ��r���) r����r���rV���r���r����setblockingr����r ��r����r��)r�����server�clients��� r{���rX���rX������s������� ��<�<��<���F�V��!�$�V�-?�-?�@�����1�����v�~�~�v�/A�/A�B�����1�����t��� �F���� �������L�L�N����L�L�N� ��s����B�B��/Cc���������������#����<��K����g�}�dx}} �|�j������������������t��������t��������j������������������t��������j�������������������������t��������t��������j������������������t��������j �������������������������f��������t ����������������r_|�j������������������t��������t��������j������������������t��������j�������������������������t��������t��������j������������������t��������j �������������������������f��������t��������r^t��������rXt����������������}t����������������}t��������|�������\��}}t��������|t��������j ��������������������������}|||fD�]��}|�j������������������|����������|����|�D�]��}|j�����������������������������||fD�]��}|��t��������|����������y#�|�D�]��}|j�����������������������������||fD�]��}|��t��������|����������w�xY�w�w)z1Open as many socket families / types as possible.Nr��)�extendrU���r���r���r���� SOCK_DGRAMr���r���r���r0���rL���rX���rV���r?��r��rI���)�socks�fname1�fname2�s1�s2�s3r��r���s��� r{���rY���rY������sN��������� �E���F�V�#� ��������(:�(:�;������(9�(9�:� �� ���?��L�L��F�O�O�V�-?�-?�@��F�O�O�V�->�->�?��� ���-��\�F��\�F�$�V�,�F�B��!�&�v�/@�/@�A�B��"�b�\�����Q���"����A� �G�G�I����f�%�E�� ��E�"��&����A� �G�G�I����f�%�E�� ��E�"��&�s)����F�D0E)��: F�F�)!F�F�Fc������������������X����t��������|t��������j�������������������������sJ�|���������|t��������j������������������k(��rs|�j������������������d�������D��cg�c] ��}t ��������|����������}}t��������|�������dk(��sJ�|����������|D�]��}d|cxk��rdk��r�J�|�����������J�|�����������t��������j������������������|���������y|t��������j������������������k(��r-t��������|�t���������������sJ�|����������t��������j������������������|���������y|t��������j������������������k(��rt��������j ������������������d|���������J�|����������yt#��������d|����������c�c}w�)z[Check a net address validity. Supported families are IPv4, IPv6 and MAC addresses. rf���r����r�������z([a-fA-F0-9]{2}[:|\-]?){6}Nzunknown family )r+���enum�IntEnumr���r���rt���rs���r^��� ipaddress�IPv4Addressr���r,���IPv6Addressr�����AF_LINKr���r���r����)r ��r��r����octs�nums��� r{���rR���rR������s�������f�d�l�l�+�3�V�3�+� ����� $� � �3��0��1��A����0��4�y�A�~�#�t�#�~��C���?�s�?�(�D�(�?�(�D�(�?������d�#� �6�?�?� "��$��$�*�d�*�$����d�#� �6�>�>� !��x�x�5�t�<�H�N�$�N�H��?�6�*�5�6�6���1s����D'c������������������r�����d��}d��}d��}d��}d��}�||����������||����������||����������||����������||���������y)z*Check validity of a connection namedtuple.c������������������J����t��������|��������dk(��}t��������|��������dv�sJ�t��������|�����������������|�d���|�j������������������k(��sJ�|�j���������������������������|�d���|�j������������������k(��sJ�|�j���������������������������|�d���|�j������������������k(��sJ�|�j���������������������������|�d���|�j������������������k(��sJ�|�j���������������������������|�d���|�j ������������������k(��sJ�|�j ���������������������������|�d���|�j������������������k(��sJ�|�j���������������������������|r$|�d ���|�j������������������k(��sJ�|�j���������������������������y�y�) Nr����>���rA��r����r���rZ��rg���r����r����r����rA��)r^��r,��r��r ���laddr�raddrr��r����)r���has_pids��� r{����check_ntuplez-check_connection_ntuple.<locals>.check_ntuple��s������d�)�q�.���4�y�F�"�-�C��I�-�"��A�w�$�'�'�!�*�4�7�7�*�!��A�w�$�+�+�%�2�t�{�{�2�%��A�w�$�)�)�#�.�T�Y�Y�.�#��A�w�$�*�*�$�0�d�j�j�0�$��A�w�$�*�*�$�0�d�j�j�0�$��A�w�$�+�+�%�2�t�{�{�2�%����7�d�h�h�&�0����0�&��r}���c����������������������|�j�������������������t��������t��������t��������hv�sJ�|�j����������������������������t ��������|�j�������������������t ��������j�������������������������sJ�|����������|�j�������������������t��������k(��rUt��������j������������������|�j�������������������|�j�������������������������5�} �|j������������������|�j������������������d���df��������d�d�d���������y�|�j�������������������t��������k(��r/|�j������������������t��������j ������������������k(��sJ�|�j���������������������������y�y�#�t��������$�r(}|j������������������t��������j������������������k7��r��Y�d�}~�xd�}~ww�xY�w#�1�sw�Y���y�xY�wr���)r��r���r���r����r+��r!��r"��r���r ��r���r+��rC���errno� EADDRNOTAVAILr��r����� CONN_NONE)r��r��rE��s��� r{����check_familyz-check_connection_ntuple.<locals>.check_family ��s��������{�{�w��'�:�:�G�D�K�K�G�:��$�+�+�t�|�|�4�:�d�:�4��;�;�'�!� ����t�{�{�D�I�I�6�!���F�F�D�J�J�q�M�1�-�.��7�6���[�[�G� #��;�;�&�"2�"2�2�?�D�K�K�?�2��$�������y�y�E�$7�$7�7���8�����7�6�s0����D9� D� D6�D1�,D9�1D6�6D9�9Ec����������������������t��������t��������dt�����������������������}|�j������������������t��������j������������������t��������j ������������������|hv�sJ�|�j���������������������������t ��������|�j������������������t��������j�������������������������sJ�|����������|�j������������������t��������j ������������������k(��r/|�j������������������t��������j������������������k(��sJ�|�j���������������������������y�y�)N�SOCK_SEQPACKET)r����r����objectr ��r���r��r+��r!��r"��r��r����r2��)r��r5��s��� r{���� check_typez+check_connection_ntuple.<locals>.check_type1��s������� ��)9�6�8�D���y�y�������� �� �� ���9�9� �� � ��$�)�)�T�\�\�2�8�D�8�2��9�9��)�)�)��;�;�&�"2�"2�2�?�D�K�K�?�2��*r}���c����������������������|�j�������������������|�j������������������fD�]���}|�j������������������t��������t��������hv�r�t��������|t���������������sJ�t��������|����������������|s�>t��������|j������������������t���������������sJ�t��������|j����������������������������������d|j������������������cxk��rdk��sn�J�|j���������������������������t��������|j������������������|�j����������������������������|�j������������������t��������k(��s��t��������|t���������������r��J�t��������|�����������������y�)Nr���i����)r+��r,��r��r���r���r+��rq���r ���portrs���rR����ipr����r,��)r��r ��s��� r{����check_addrsz,check_connection_ntuple.<locals>.check_addrs=��s��������Z�Z����,�D��{�{�w��1�1�!�$��.�:��T� �:�.���!�$�)�)�S�1�B�4�� � �?�B�1��D�I�I�.��.�9�� � �9�.�!�$�'�'�4�;�;�7�����'�!�$��,�8�d�4�j�8�,��-r}���c������������������*����t��������|�j������������������t���������������sJ�|�j���������������������������t��������t���������������D��cg�c]$��}|j������������������d�������s�t ��������t��������|���������&�}}|�j������������������|v�sJ�|�j���������������������������|�j������������������t��������t��������hv�rB|�j������������������t��������k(��r/|�j������������������t��������j������������������k7��sJ�|�j���������������������������y�|�j������������������t��������j������������������k(��sJ�|�j���������������������������y�c�c}w�)N�CONN_) r+��r��r,��r����r����� startswithr����r��r���r���r ��r���r2��)r��r����validss��� r{����check_statusz-check_connection_ntuple.<locals>.check_statusJ��s��������$�+�+�s�+�8�T�[�[�8�+�(+�F�� �(3�1�q�|�|�G�7L�G�F�A���� �� ���{�{�f�$�1�d�k�k�1�$��;�;�7�H�-�-�$�)�)�{�2J��;�;�&�"2�"2�2�?�D�K�K�?�2��;�;�&�"2�"2�2�?�D�K�K�?�2�� s����D�DNrz��)r��r.��r3��r7��r;��r@��s��� r{����check_connection_ntuplerA����sH������ 1�@�" @�9� @���������t�������r}���c������������������������g�}|�D�]Y��}t���������r@|j������������������t��������j������������������k(��r#t��������rd|j ������������������v�rt ��������d|������������I|j������������������|���������[�|S�)ztOur process may start with some open UNIX sockets which are not initialized by us, invalidating unit tests. z/syslogz skipping )r���r��r���r����r���r,��r���r?��)�cons�newr��s��� r{���rS���rS���\��sX������� �C����T�[�[�F�N�N�2���d�j�j�0�� �$��(�)��� � �4������Jr}���c������������������,�����t��������j������������������|��������S�r����)� importlib�reload)�modules��� r{���rZ���rZ���o��s���������F�#�#r}���c������������������8����t���������j������������������j������������������t���������j������������������j������������������|���������������d���}t��������j ������������������j ������������������||��������}t��������j ������������������j������������������|�������}|j������������������j������������������|��������|S�r���) r����r�����splitextr��rF���util�spec_from_file_location�module_from_spec�loader�exec_module)r����r�����spec�mods��� r{���r[���r[���s��sk������ �7�7���B�G�G�,�,�T�2�3�A�6�D��>�>�1�1�$��=�D� �.�.� )� )�$� /�C��K�K���C� ��Jr}���c������������������<�����t��������j������������������|�t��������d���������y)zRaise a warning msg.rg���r���N)r���r\���r���)r���s��� r{���r\���r\������s�������M�M�#�{�q�1r}���c������������������������t��������|��������}|j������������������}t��������|�������dk7��s|d���t��������uryt ��������|dd�������}t��������|t���������������syt ��������d��|D����������������S�)z-Check if object is an instance of namedtuple.rZ��r���F�_fieldsNc��������������3����<���K����|�]��}t��������|t��������������������y��wr����)r+��r,��)rj���ns��� r{���rk��z is_namedtuple.<locals>.<genexpr>���s���������-�1�a�z�!�S�!�1�s����)r ��� __bases__r^��rq���r����r+��r���)r����t�br%��s��� r{���r^���r^������sY�������Q��A� ���A� �1�v��{�a��d�%�'����9�d�#�A��a�����-�1�-�-�-r}���c��������������#������K����t���������rdnd}d}t��������|�|z�����������}t��������j��������������������������j ��������������������������D��cg�c]Y��}t ��������j������������������j������������������|j�������������������������d���|k(��r(||j������������������j��������������������������v�r|j��������������������[�}}t��������j������������������|�������}t��������j������������������||�������� �t��������j������������������|��������|���t��������|��������yc�c}w�#�t��������|��������w�xY�w�w)z�Ctx manager which picks up a random shared CO lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized path. �pypyrZ��z.sor���rZ��N)r���rL���r����r����r����r����r����rJ���lowerr���r���r����r����ctypes�CDLLrI���)r���r�����ext�dstr����libsr��s��� r{���r]���r]������s������������f�(��������-����^�^�%�1�1�3� �3���w�w������'��*�c�1�c�Q�V�V�\�\�^�6K�� �F�F�3�� �� � ��m�m�D�!������S�!� ��K�K����I����� ��� ���s+����A�D�AC3� -D�C8��'D�8 D�Dc��������������#�������K����ddl�m}�ddl�m}�d}t��������|�|z�����������}t ��������j ��������������������������j ��������������������������D��cg�c]���}|j������������������j��������������������������j������������������|�������radt��������j������������������j������������������|j�������������������������j��������������������������v�r(d|j������������������j��������������������������vr|j����������������������}}t��������rt|srt ��������j ��������������������������j ��������������������������D��cg�c]G��}dt��������j������������������j������������������|j�������������������������j��������������������������v�r|j��������������������I�}}t��������j������������������|�������}t��������j ������������������||��������d } �t��������j"������������������|�������}|���|�Tt���������j$������������������j&������������������j(������������������} |j*������������������g| _���������| |j.�������������������������} | dk(��r�|���������t1��������|��������y c�c}w�c�c}w�#�|�Tt���������j$������������������j&������������������j(������������������} |j*������������������g| _���������| |j.�������������������������} | dk(��r�|���������t1��������|��������w�xY�w�w) z�Ctx manager which picks up a random shared DLL lib used by this process, copies it in another location and loads it in memory via ctypes. Return the new absolutized, normcased path. r���)�WinError)�wintypesz.dllr���rZ���wow64r[��N)r]��rc��rd��rL���r����r����r����r����r\��r1��r����r��r���r���r���r����r����WinDLL�windll�kernel32�FreeLibrary�HMODULE�argtypes�_handlerI���)r���rc��rd��r_��r`��r���ra��r���cfileri��r���s��� r{���r]���r]������s���������� $�#�������-����^�^�%�1�1�3� �3���v�v�|�|�~�&�&�s�+��B�G�G�,�,�Q�V�V�4�:�:�<�<��q�v�v�|�|�~�-� � �F�F�3�� �� ����� ���)�5�5�7��7�A��R�W�W�-�-�a�f�f�5�;�;�=�=�����7�� ��� ��m�m�D�!������S�!��� ��M�M�#�&�E��I��� �$�m�m�4�4�@�@��(0�(8�(8�'9��$�!�%�-�-�0���!�8�"�*�$�����? ����"�� �$�m�m�4�4�@�@��(0�(8�(8�'9��$�!�%�-�-�0���!�8�"�*�$����s:����AI*�BG:�.I*�AG?�/I*�?H��A,I*�A#I'�'I*c������������������������t��������d���������y�)NTrR��)r8���rz��r}���r{����cleanup_test_procsro�����s �������D�!r}���c������������������,�����t��������j������������������|��������S�r����)rw����exit)r>��r��s��� r{���r��r�����s���������#�r}���r����)F)TFr��)z 127.0.0.1)r��r���)�r����r���r���r]��r!��r0��r����r7��rF��r#��r����ro���r���r���r��r-��r����r:��r���r���ru���rw���r���r��r����r����r=���r���r���r���r���r���rv��r����r���r���r���r ���r ���r���r���r ����psutil._commonr���r���r���r���r����psutil._psposixr����__all__�builtin_module_namesr���r����r`���r ���r3���r5����maxsizer#���r��r4���r|���r1���r2���r���r���r"���r���r����r���r���r����decoder���r���r\���ASCII_FSr����r����r����r����__file__r����getr���r���r{��r����r$���r%���r&���r���r(���r)���r0����HAS_NET_IO_COUNTERSr*���r'���r+���r,���rP��r����r-���r����r.���r/����HAS_THREADS�getuid�SKIP_SYSCONSr����r���r���r"���devnullr���r���r��r����r>��r����r!���r6��r����r����r����r��r����r<���r����r9���r;���r:���r6���r4��r���r7���r8���rN���rM���rj��r7��rP���r���r���rQ���rO���rI���r���r���rH���rJ���rK���rL���rG���r���rB���r���r���rA���rE���rF���r���rC���rD���r@���r>���r?���rT���rU���rV���rW���rX���rY���rR���rA��rS���rZ���r[���r\���r^���r]���ro��)r���s���0r{����<module>r������s5���� ������� �������� ������ ���� �� �� ���� �� �� ������ ����������������������������������������&�� ��"��&��(�� �(�#��Z��S�-�-�-��!�R�Z�Z�/�O�>�R�Z�Z�3O�� � ��R�Z�Z�'��'�2�:�:�5���;�;���� �(� � � � � )��� ��� ��(� � �?�X�-�L� �?�g�-�L��L��L��� �#���'����� ��!�O�J��a��N������A��� ��7�7�f���y�r�y�y�{�m�1�-�M��y�r�y�y�{�m�1�-�M���%�,�,�V�5F�G���$�3�$�$�&�,�,�.�2G�G����7�7����G�G�L�L�������*�D�$�7�����j�j�n�n��"�'�'�,�,�x��;���� �w�w���������1�2����6�>�>�>�:����v�z�*���f�n�n�i�0�����.�� �V�^�^�X� .� ��&�.�.�-�8�� �.��Y����f�&7�8����6�>�>�9�5����v�~�~�}�=��� �V�^�^�X� .� ��f�&7�8����%�H�$�/E�v�/E�/E�/G�*H�K���6�>�2���"�6�+A�B����f�n�n�i�0�����2�)�"�)�)�+��"2�� )�X�)�]��� �N� �r�z�z�4� �������� � ����!$�F��� +�1�q�|�|�I�/F�G�F�A��������&�)�V�X� .�������� �(��!�!��(�` ���&���&�R��#���#�L&�R������&������0� &�~�~�N��Q/�h-�J!�0�6��6�r���"�"��� � �� ���� �.�1��� � �� ������� � �� �� �D �����������4�&J#��J#�Z� �>� �F�B�X�&�&��B�`������D�!5��6�b%�^��b%��7�b%�Ji�X�$ �FL��FL�RC@��C@�L�(�� ��&�:%���[�t���"�!'� 2� 2����.�.����#���#�<7�(H�V�&$��2� .�� ��������.����*���*�f����"���"�� ��F�M�M�&�.�.�">�?�� ��}=���� �F���H�����K���ts0����X<��+Y �� Y�$Y�<Y�Y� Y�Y