§
    ±Ûg«G  ã                   óˆ  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ eoe oe Zd„ Z G d„ de¦  «        Z  G d„ de¦  «        Z!dS )zeIterate over all process PIDs and for each one of them invoke and
test all psutil.Process() methods.
é    N)ÚAIX)ÚBSD)ÚFREEBSD)ÚLINUX)ÚMACOS)ÚNETBSD)ÚOPENBSD)ÚOSX)ÚPOSIX)ÚWINDOWS)Ú
CI_TESTING)ÚPYTEST_PARALLEL)ÚVALID_PROC_STATUSES)ÚPsutilTestCase)Úcheck_connection_ntuple)Úcreate_sockets)Úis_namedtuple)Úis_win_secure_system_proc)Úprocess_namespace)Úpytestc                 óp  ‡ ‡‡	‡
‡‡— t          ¦   «         Šˆ ˆfd„Šˆˆ	ˆ ˆ
ˆfd„}	 t          j        ‰ ¦  «        Šn,# t          j        $ r ‰                     ‰ ¦  «         i cY S w xY w	 ‰                     ddg¦  «        }|d         |d         cŠ	Š
d‰j        i}t          ‰¦  «        }|                     |j	        d¬¦  «        D ]=\  }}	  |¦   «         ||<   Œ# t          j
        $ r} ‰|‰‰	‰
¦  «         Y d }~Œ6d }~ww xY w |¦   «          |S # t          j        $ r ‰                     ‰¦  «         Y d S w xY w)Nc                 óö  •— ‰                      | j        ‰¦  «         | j        �‰                      | j        |¦  «         t          | t          j        ¦  «        rS‰                     |¦  «         | j        �6‰                     | j        d¦  «         ‰                      | j        |¦  «         n/t          | t          j	        ¦  «        r‰ 
                    |¦  «         t          | ¦  «         t          | ¦  «         d S ©Nr   )ÚassertEqualÚpidÚnameÚ
isinstanceÚpsutilÚZombieProcessÚassertProcessZombieÚppidÚassertGreaterEqualÚNoSuchProcessÚassertProcessGoneÚstrÚrepr)ÚexcÚprocr   r!   r   Útcases       €€úS/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_process_all.pyÚcheck_exceptionz"proc_info.<locals>.check_exception2   sà   ø€ Ø×Ò˜#œ' 3Ñ'Ô'Ð'ØŒ8ÐØ×Ò˜cœh¨Ñ-Ô-Ð-Ý�c�6Ô/Ñ0Ô0ð 	*Ø×%Ò% dÑ+Ô+Ð+ØŒxÐ#Ø×(Ò(¨¬°1Ñ5Ô5Ð5Ø×!Ò! #¤(¨DÑ1Ô1Ð1øÝ˜�VÔ1Ñ2Ô2ð 	*Ø×#Ò# DÑ)Ô)Ð)ÝˆC‰ŒˆÝˆS‰	Œ	ˆ	ˆ	ˆ	ó    c                  óš   •— ‰dk    rC	 ‰                      d¦  «         d S # t          j        $ r}  ‰| ‰‰‰¦  «         Y d } ~ d S d } ~ ww xY wd S r   )Úwaitr   ÚError)r'   r+   r   r   r!   r(   s    €€€€€r*   Údo_waitzproc_info.<locals>.do_wait@   st   ø€ Ø�!Š8ˆ8ð7Ø—	’	˜!‘”���øÝ”<ð 7ð 7ð 7Ø�  T¨4°Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6øøøøð7øøøð ˆ8s   ‰   A¯AÁAr!   r   r   F)Úclear_cache)r   r   ÚProcessr#   ÚassertPidGoneÚas_dictr   r   ÚiterÚgettersr/   r$   )r   r0   ÚdÚinfoÚnsÚfunÚfun_namer'   r+   r   r!   r(   r)   s   `       @@@@@r*   Ú	proc_infor<   /   sÆ  øøøøøø€ ÝÑÔ€Eðð ð ð ð ð ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ðÝŒ~˜cÑ"Ô"ˆˆøÝÔð ð ð Ø×Ò˜CÑ Ô Ð Øˆ	ˆ	ˆ	ðøøøðØ�LŠL˜& &Ð)Ñ*Ô*ˆð �v”Y  &¤	ˆ
ˆˆdØ�t”xÐ ˆÝ˜tÑ$Ô$ˆð  ŸWšW R¤Z¸U˜WÑCÔCð 	ð 	‰MˆC�ðØ!$ ¡¤��X‘�øÝ”<ð ð ð Ø�  T¨4°Ñ6Ô6Ð6Ø����øøøøðøøøð 	ˆ‰	Œ	ˆ	Øˆøõ Ôð &ð &ð &Ø×Ò Ñ%Ô%Ð%Ð%Ð%Ð%ð&øøøs9   ¥: º&A#Á"A#Á'D Ã	CÃC>Ã&C9Ã9C>Ä$D5Ä4D5c                   óð   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'S )(ÚTestFetchAllProcessesz·Test which iterates over all running processes and performs
    some sanity checks against Process API's returned values.
    Uses a process pool to get info about all processes.
    c                 óp   — t          j        d¦  «         t          rt          j        ¦   «         | _        d S d S ©NF)r   Ú
_set_debugÚUSE_PROC_POOLÚmultiprocessingÚPoolÚpool©Úselfs    r*   ÚsetUpzTestFetchAllProcesses.setUpf   s;   € ÝÔ˜%Ñ Ô Ð õ ð 	/Ý'Ô,Ñ.Ô.ˆDŒIˆIˆIð	/ð 	/r,   c                 ó¤   — t          j        d¦  «         t          r4| j                             ¦   «          | j                             ¦   «          d S d S ©NT)r   rA   rB   rE   Ú	terminateÚjoinrF   s    r*   ÚtearDownzTestFetchAllProcesses.tearDownm   sQ   € ÝÔ˜$ÑÔÐÝð 	ØŒI×ÒÑ!Ô!Ð!ØŒI�NŠNÑÔÐÐÐð	ð 	r,   c                 ó¸   ‡— ddl mŠ t          r,| j                             ‰t          j        ¦   «         ¦  «        S ˆfd„t          j        ¦   «         D ¦   «         }|S )Nr   )r<   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS © rP   )Ú.0r   r<   s     €r*   ú
<listcomp>z8TestFetchAllProcesses.iter_proc_info.<locals>.<listcomp>{   s!   ø€ Ð:Ð:Ð: S�)�)˜C‘.”.Ð:Ð:Ð:r,   )Úpsutil.tests.test_process_allr<   rB   rE   Úimap_unorderedr   Úpids)rG   Úlsr<   s     @r*   Úiter_proc_infoz$TestFetchAllProcesses.iter_proc_infos   sa   ø€ ð 	<Ð;Ð;Ð;Ð;Ð;åð 	Ø”9×+Ò+¨Iµv´{±}´}ÑEÔEÐEà:Ð:Ð:Ð:­F¬K©M¬MÐ:Ñ:Ô:ˆBØˆIr,   c                 ót  — g }|                       ¦   «         D ]ö}|                     ¦   «         D ]ß\  }}t          | |¦  «        }	  |||¦  «         |ddg d di fvr|s
J |¦   «         ‚Œ9# t          $ rš d}|d                     ||d         t          |¦  «        |¦  «        z  }|dz  }|dt          j        ¦   «         › �z  }d                     d	„ | 	                    ¦   «         D ¦   «         ¦  «        dz   }| 
                    |¦  «         Y ŒÜw xY wŒ÷|r(|                      d                     |¦  «        ¦  «        ‚d S )
Nr   ç        Ú zH
======================================================================
z+FAIL: name=test_{}, pid={}, ret={}
info={}
r   zF----------------------------------------------------------------------ú
c              3   ó    K  — | ]	}d |z   V — Œ
dS )z    NrP   )rQ   Úis     r*   ú	<genexpr>z1TestFetchAllProcesses.test_all.<locals>.<genexpr>‘   s&   è è € Ð!HÐ!H°A 7¨a¡-Ð!HÐ!HÐ!HÐ!HÐ!HÐ!Hr,   )rW   ÚitemsÚgetattrÚ	ExceptionÚformatr&   Ú	tracebackÚ
format_excrL   Ú
splitlinesÚappendÚfail)rG   Úfailuresr8   r   ÚvalueÚmethÚss          r*   Útest_allzTestFetchAllProcesses.test_all~   sŠ  € ØˆØ×'Ò'Ñ)Ô)ð 	,ð 	,ˆDØ#Ÿzšz™|œ|ð ,ð ,‘��eÝ˜t TÑ*Ô*�ð,Ø�D˜ Ñ%Ô%Ð%ð   Q¨¨R°°r¸2Ð$>Ð>Ð>Ø$Ð+Ð+ eÑ+Ô+Ð+øøõ! !ð 'ð 'ð 'Ø.�AØØG×NÒNØ Ø  œKÝ  ™KœKØ ñ	ô ñ�Að ˜‘M�AØÐ6�iÔ2Ñ4Ô4Ð6Ð6Ñ6�AØŸ	š	Ð!HÐ!H¸¿º¹¼Ð!HÑ!HÔ!HÑHÔHÈ4ÑO�AØ—O’O AÑ&Ô&Ð&Ð&Ð&ð'øøøð	,ð* ð 	/Ø—)’)˜BŸGšG HÑ-Ô-Ñ.Ô.Ð.ð	/ð 	/s   ÁA&Á&B!D
Ä	D
c                 ól   — t          |t          ¦  «        sJ ‚|D ]}t          |t          ¦  «        sJ ‚Œd S ©N)r   Úlistr%   )rG   Úretr8   Úparts       r*   ÚcmdlinezTestFetchAllProcesses.cmdline™   sJ   € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Øð 	)ð 	)ˆDÝ˜d¥CÑ(Ô(Ð(Ð(Ð(Ð(ð	)ð 	)r,   c                 óh  — t          |t          ¦  «        sJ ‚|                     ¦   «         |k    sJ ‚|röt          r|                     d¦  «        sd S t
          j                             |¦  «        s
J |¦   «         ‚t          rªt
          j         	                    |¦  «        r�t          t
          d¦  «        rzt          t
          d¦  «        rg	 t          j        |t
          j        ¦  «        sJ ‚d S # t          $ r. t
          j                             |¦  «        rt          s‚ Y d S Y d S w xY wd S d S d S d S d S )Nz.exeÚaccessÚX_OK)r   r%   Ústripr   ÚendswithÚosÚpathÚisabsr   ÚisfileÚhasattrrt   ru   ÚAssertionErrorÚexistsr   ©rG   rp   r8   s      r*   ÚexezTestFetchAllProcesses.exež   sm  € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ø�yŠy‰{Œ{˜cÒ!Ð!Ð!Ð!Øð 	"Ýð ˜sŸ|š|¨FÑ3Ô3ð Ø�Ý”7—=’= Ñ%Ô%Ð*Ð* sÑ*Ô*Ð*õ ð "�œŸš¨Ñ,Ô,ð "Ý�2˜xÑ(Ô(ð "­WµR¸Ñ-@Ô-@ð "ð"Ý!œy¨­b¬gÑ6Ô6Ð6Ð6Ð6Ð6Ð6øÝ)ð "ð "ð "Ýœ7Ÿ>š>¨#Ñ.Ô.ð "µzð "Ø!ð"ð "ð "ð "ð "ð "ð"øøøð	"ð 	"ð"ð "ð "ð "ð"ð "ð "ð "s   Ã!C/ Ã/1D'Ä&D'c                 óD   — t          |t          ¦  «        sJ ‚|dk    sJ ‚d S r   ©r   Úintr   s      r*   r   zTestFetchAllProcesses.pid±   ó)   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ø�aŠxˆxˆxˆxˆxˆxr,   c                 ób   — t          |t          ¦  «        sJ ‚|dk    sJ ‚t          |¦  «         d S r   )r   rƒ   r<   r   s      r*   r!   zTestFetchAllProcesses.ppidµ   s4   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ø�aŠxˆxˆxˆxÝ�#‰Œˆˆˆr,   c                 ó¸   — t          |t          ¦  «        sJ ‚t          r|st          |d         ¦  «        rd S t          s|sJ t          |¦  «        ¦   «         ‚d S d S )Nr   )r   r%   r   r   r   r&   r   s      r*   r   zTestFetchAllProcesses.nameº   sr   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ýð 	˜3ð 	Õ#<¸TÀ%¼[Ñ#IÔ#Ið 	àˆFåð 	"ØÐ!Ð!�˜S™	œ	Ñ!Ô!Ð!ð	"ð 	"Ø!Ð!r,   c                 óô   — t          |t          ¦  «        sJ ‚	 |dk    sJ ‚n/# t          $ r" t          r|d         t          j        k    rn‚ Y nw xY wt          j        dt          j        |¦  «        ¦  «         d S )Nr   Ústatusz%Y %m %d %H:%M:%S)	r   Úfloatr}   r	   r   ÚSTATUS_ZOMBIEÚtimeÚstrftimeÚ	localtimer   s      r*   Úcreate_timez!TestFetchAllProcesses.create_timeÃ   s’   € Ý˜#�uÑ%Ô%Ð%Ð%Ð%ð	Ø˜!’8�8�8�8�8øÝð 	ð 	ð 	åð ˜4 œ>­VÔ-AÒAÐAØàð �ð	øøøõ 	ŒÐ)­4¬>¸#Ñ+>Ô+>Ñ?Ô?Ð?Ð?Ð?s   ™" ¢)AÁAc                 óp   — t          |¦  «        sJ ‚|D ]!}t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ"d S r   ©r   r   rƒ   )rG   rp   r8   Úuids       r*   ÚuidszTestFetchAllProcesses.uidsÓ   sT   € Ý˜SÑ!Ô!Ð!Ð!Ð!Øð 	ð 	ˆCÝ˜c¥3Ñ'Ô'Ð'Ð'Ð'Ø˜!’8�8�8�8�8ð	ð 	r,   c                 óŒ   — t          |¦  «        sJ ‚|D ]/}t          |t          ¦  «        sJ ‚t          st          s|dk    sJ ‚Œ0d S r   )r   r   rƒ   r   r   )rG   rp   r8   Úgids       r*   ÚgidszTestFetchAllProcesses.gidsÙ   sd   € Ý˜SÑ!Ô!Ð!Ð!Ð!ð ð 	 ð 	 ˆCÝ˜c¥3Ñ'Ô'Ð'Ð'Ð'Ýð  ¥ð  Ø˜a’x�x�x�xøð	 ð 	 r,   c                 ó”   — t          |t          ¦  «        sJ ‚|                     ¦   «         |k    sJ ‚|                     ¦   «         sJ ‚d S rn   )r   r%   rv   r   s      r*   ÚusernamezTestFetchAllProcesses.usernameâ   sK   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ø�yŠy‰{Œ{˜cÒ!Ð!Ð!Ð!Ø�yŠy‰{Œ{ÐÐÐÐÐr,   c                 ór   — t          |t          ¦  «        sJ ‚|s
J |¦   «         ‚|dk    sJ ‚|t          v sJ ‚d S )Nú?)r   r%   r   r   s      r*   rˆ   zTestFetchAllProcesses.statusç   sL   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Øˆˆ�C‰ŒˆØ�cŠzˆzˆzˆzØÕ)Ð)Ð)Ð)Ð)Ð)Ð)r,   c                 ó|   — t          |¦  «        sJ ‚|D ]'}t          |t          ¦  «        sJ ‚|dk    r|dk    sJ ‚Œ(d S )Néÿÿÿÿr   r�   )rG   rp   r8   Úfields       r*   Úio_countersz!TestFetchAllProcesses.io_countersí   s\   € Ý˜SÑ!Ô!Ð!Ð!Ð!Øð 	"ð 	"ˆEÝ˜e¥SÑ)Ô)Ð)Ð)Ð)Ø˜Š{ˆ{Ø ’z�z�z�zøð	"ð 	"r,   c                 ób  — t           rTt          |j        t          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚d S t
          j        t
          j        t
          j        t
          j	        g}t          |t          ¦  «        sJ ‚|dk    sJ ‚||v sJ ‚d S r   )
r   r   Úioclassrƒ   ri   r   ÚIOPRIO_VERYLOWÚ
IOPRIO_LOWÚIOPRIO_NORMALÚIOPRIO_HIGH)rG   rp   r8   Úchoicess       r*   ÚionicezTestFetchAllProcesses.ioniceô   s·   € Ýð 	"Ý˜cœk­3Ñ/Ô/Ð/Ð/Ð/Ý˜cœi­Ñ-Ô-Ð-Ð-Ð-Ø”; !Ò#Ð#Ð#Ð#Ø”9 ’>�>�>�>�>�>õ Ô%ÝÔ!ÝÔ$ÝÔ"ð	ˆGõ ˜c¥3Ñ'Ô'Ð'Ð'Ð'Ø˜!’8�8�8�8Ø˜'�>�>�>�>�>�>r,   c                 óŒ   — t          |t          ¦  «        sJ ‚t          r|dk    rt          |d         ¦  «        rd S |dk    sJ ‚d S )Nr   r   é   )r   rƒ   r   r   r   s      r*   Únum_threadsz!TestFetchAllProcesses.num_threads  sO   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ýð 	�s˜a’x�xÕ$=¸dÀ5¼kÑ$JÔ$J�xàˆFØ�aŠxˆxˆxˆxˆxˆxr,   c                 óô   — t          |t          ¦  «        sJ ‚|D ]]}t          |¦  «        sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚|j        dk    sJ ‚|D ] }t          |t          t          f¦  «        sJ ‚Œ!Œ^d S r   )r   ro   r   ÚidÚ	user_timeÚsystem_timerƒ   r‰   )rG   rp   r8   Útrœ   s        r*   ÚthreadszTestFetchAllProcesses.threads  s«   € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Øð 	7ð 	7ˆAÝ  Ñ#Ô#Ð#Ð#Ð#Ø”4˜1’9�9�9�9Ø”; !Ò#Ð#Ð#Ð#Ø”= AÒ%Ð%Ð%Ð%Øð 7ð 7�Ý! %­#­u¨Ñ6Ô6Ð6Ð6Ð6Ð6ð7ð	7ð 	7r,   c                 óp   — t          |¦  «        sJ ‚|D ]!}t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ"d S r   )r   r   r‰   )rG   rp   r8   Úns       r*   Ú	cpu_timeszTestFetchAllProcesses.cpu_times  sT   € Ý˜SÑ!Ô!Ð!Ð!Ð!Øð 	ð 	ˆAÝ˜a¥Ñ'Ô'Ð'Ð'Ð'Ø˜’6�6�6�6�6ð	ð 	r,   c                 óf   — t          |t          ¦  «        sJ ‚d|cxk    rdk    sn J |¦   «         ‚d S )NrY   g      Y@©r   r‰   r   s      r*   Úcpu_percentz!TestFetchAllProcesses.cpu_percent  sK   € Ý˜#�uÑ%Ô%Ð%Ð%Ð%Ø�cÐ"Ð"Ò"Ð"˜UÒ"Ð"Ð"Ð"Ð" CÑ"Ô"Ð"Ð"Ð"r,   c                 ó  — t          |t          ¦  «        sJ ‚t          r|dk    rd S |dk    sJ ‚t          j        ¦   «         dk    r|dk    sJ ‚|t          t          t          j        ¦   «         ¦  «        ¦  «        v sJ ‚d S )Nr›   r   r§   )r   rƒ   r   r   Ú	cpu_countro   Úranger   s      r*   Úcpu_numzTestFetchAllProcesses.cpu_num!  s‹   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ýð 	�s˜b’y�yØˆFØ�aŠxˆxˆxˆxÝÔÑÔ Ò"Ð"Ø˜!’8�8�8�8Ø•d�5¥Ô!1Ñ!3Ô!3Ñ4Ô4Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5r,   c                 ó  — t          |¦  «        sJ ‚|D ]!}t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ"t          rH|j        |j        k    sJ ‚|j        |j        k    sJ ‚|j        |j	        k    sJ ‚|j
        |j        k    sJ ‚d S d S r   )r   r   rƒ   r   Ú	peak_wsetÚwsetÚpeak_paged_poolÚ
paged_poolÚpeak_nonpaged_poolÚnonpaged_poolÚpeak_pagefileÚpagefile©rG   rp   r8   ri   s       r*   Úmemory_infoz!TestFetchAllProcesses.memory_info*  s¼   € Ý˜SÑ!Ô!Ð!Ð!Ð!Øð 	ð 	ˆEÝ˜e¥SÑ)Ô)Ð)Ð)Ð)Ø˜A’:�:�:�:�:Ýð 	5Ø”= C¤HÒ,Ð,Ð,Ð,ØÔ&¨#¬.Ò8Ð8Ð8Ð8ØÔ)¨SÔ->Ò>Ð>Ð>Ð>ØÔ$¨¬Ò4Ð4Ð4Ð4ð		5ð 	5ð 5Ð4r,   c                 óF  — t          |¦  «        sJ ‚t          j        ¦   «         j        }|j        D ]T}t          ||¦  «        }t          |t          ¦  «        sJ ‚|dk    sJ ‚t          st          r|dv rŒD||k    s
J |¦   «         ‚ŒUt          r|j
        |j        k    sJ ‚d S d S )Nr   >   ÚvmsÚdata)r   r   Úvirtual_memoryÚtotalÚ_fieldsr`   r   rƒ   r   r
   ÚpssÚuss)rG   rp   r8   rÈ   r   ri   s         r*   Úmemory_full_infoz&TestFetchAllProcesses.memory_full_info5  sÊ   € Ý˜SÑ!Ô!Ð!Ð!Ð!ÝÔ%Ñ'Ô'Ô-ˆØ”Kð 	(ð 	(ˆDÝ˜C Ñ&Ô&ˆEÝ˜e¥SÑ)Ô)Ð)Ð)Ð)Ø˜A’:�:�:�:Ýð �ð  ¨Ð!8Ð!8ð Ø˜E’>�>�> 4‘>”>�>�>åð 	&Ø”7˜cœgÒ%Ð%Ð%Ð%ð	&ð 	&Ø%Ð%r,   c                 ó>  — t          |t          ¦  «        sJ ‚|D �]�}t          |j        t          ¦  «        sJ ‚t          |j        t
          ¦  «        sJ ‚|j                             ¦   «         |j        k    sJ ‚t          r|j        dk    sJ ‚n‘t          rzt          |j	        t          ¦  «        sJ ‚t          |j
        t
          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚|j	        dk    sJ ‚|j
        dv sJ ‚|j        dk    sJ ‚nt          r	|j        s�Œt          j                             |j        ¦  «        s
J |¦   «         ‚	 t          j        |j        ¦  «        }t          j        |j        ¦  «        s
J |¦   «         ‚�Œr# t$          $ r Y �Œw xY wd S )Nr›   r   >   úa+úr+ÚaÚrÚw)r   ro   Úfdrƒ   ry   r%   rv   r   r   ÚpositionÚmodeÚflagsr   rx   rz   ÚstatÚS_ISREGÚst_modeÚFileNotFoundError)rG   rp   r8   ÚfÚsts        r*   Ú
open_filesz TestFetchAllProcesses.open_filesE  s®  € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Øð 	3ñ 	3ˆAÝ˜aœd¥CÑ(Ô(Ð(Ð(Ð(Ý˜aœf¥cÑ*Ô*Ð*Ð*Ð*Ø”6—<’<‘>”> Q¤VÒ+Ð+Ð+Ð+Ýð Ø”t˜r’z�z�z�z�zÝð 	Ý! !¤*­cÑ2Ô2Ð2Ð2Ð2Ý! !¤&­#Ñ.Ô.Ð.Ð.Ð.Ý! !¤'­3Ñ/Ô/Ð/Ð/Ð/Ø”z Q’���Ø”vÐ!<Ð<Ð<Ð<Ð<Ø”w ’{�{�{�{�{Ýð ˜QœVð áÝ”7—=’= ¤Ñ(Ô(Ð+Ð+¨!Ñ+Ô+Ð+ð3Ý”W˜QœV‘_”_�õ ”| B¤JÑ/Ô/Ð2Ð2°Ñ2Ô2Ð2Ñ2øõ %ð ð ð Ø‘ðøøøð'	3ð 	3s   ÅFÆ
FÆFc                 óD   — t          |t          ¦  «        sJ ‚|dk    sJ ‚d S r   r‚   r   s      r*   Únum_fdszTestFetchAllProcesses.num_fds_  r„   r,   c                 óþ   — t          ¦   «         5  t          |¦  «        t          t          |¦  «        ¦  «        k    sJ ‚|D ]"}t          |¦  «        sJ ‚t	          |¦  «         Œ#	 d d d ¦  «         d S # 1 swxY w Y   d S rn   )r   ÚlenÚsetr   r   )rG   rp   r8   Úconns       r*   Únet_connectionsz%TestFetchAllProcesses.net_connectionsc  sÎ   € ÝÑÔð 	.ð 	.Ý�s‘8”8�s¥3 s¡8¤8™}œ}Ò,Ð,Ð,Ð,Øð .ð .�Ý$ TÑ*Ô*Ð*Ð*Ð*Ý'¨Ñ-Ô-Ð-Ð-ð.ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   �AA2Á2A6Á9A6c                 óØ  — t          |t          ¦  «        sJ ‚|                     ¦   «         |k    sJ ‚|r¶t          j                             |¦  «        s
J |¦   «         ‚	 t          j        |¦  «        }t          j        |j        ¦  «        sJ ‚d S # t          $ rN}t          r t          j                             |¦  «        rn|j        t          j        k    r‚ Y d }~d S Y d }~d S d }~ww xY wd S rn   )r   r%   rv   rx   ry   rz   r×   ÚS_ISDIRrÙ   ÚOSErrorr   r   Ú_psplatformÚis_permission_errÚerrnoÚENOENT)rG   rp   r8   rÜ   Úerrs        r*   ÚcwdzTestFetchAllProcesses.cwdj  s  € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ø�yŠy‰{Œ{˜cÒ!Ð!Ð!Ð!Øð 	0Ý”7—=’= Ñ%Ô%Ð*Ð* sÑ*Ô*Ð*ð	0Ý”W˜S‘\”\�õ ”| B¤JÑ/Ô/Ð/Ð/Ð/Ð/Ð/øõ ð ð ð Ýð �vÔ1×CÒCÀCÑHÔHð Øà”Y¥%¤,Ò.Ð.Øð /Ð.Ð.Ð.Ð.Ð.ð �D�D�D�D�Døøøøðøøøð		0ð 	0s   ÁB Â
C'Â=C"Ã"C'c                 óf   — t          |t          ¦  «        sJ ‚d|cxk    rdk    sn J |¦   «         ‚d S )Nr   éd   r³   r   s      r*   Úmemory_percentz$TestFetchAllProcesses.memory_percentz  s=   € Ý˜#�uÑ%Ô%Ð%Ð%Ð%Ø�CˆˆŠˆ˜3Šˆˆˆˆ ‰Œˆˆˆr,   c                 ó4   — t          |t          ¦  «        sJ ‚d S rn   )r   Úboolr   s      r*   Ú
is_runningz TestFetchAllProcesses.is_running~  s   € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Ð$Ð$r,   c                 óâ   — t          |t          ¦  «        sJ ‚|g k    sJ ‚t          t          t          j        ¦   «         ¦  «        ¦  «        }|D ]}t          |t
          ¦  «        sJ ‚||v sJ ‚Œ d S rn   )r   ro   r·   r   r¶   rƒ   )rG   rp   r8   Úcpusr°   s        r*   Úcpu_affinityz"TestFetchAllProcesses.cpu_affinity�  s�   € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Ø�bŠyˆyˆyˆyÝ•E�&Ô*Ñ,Ô,Ñ-Ô-Ñ.Ô.ˆØð 	ð 	ˆAÝ˜a¥Ñ%Ô%Ð%Ð%Ð%Ø˜�9�9�9�9�9ð	ð 	r,   c                 óþ   — t          |t          t          d ¦  «        f¦  «        sJ ‚|�Rt          j                             |¦  «        s
J |¦   «         ‚t          j                             |¦  «        sJ |¦   «         ‚d S d S rn   )r   r%   Útyperx   ry   rz   r~   r   s      r*   ÚterminalzTestFetchAllProcesses.terminal‰  sy   € Ý˜#¥¥T¨$¡Z¤ZÐ0Ñ1Ô1Ð1Ð1Ð1Øˆ?Ý”7—=’= Ñ%Ô%Ð*Ð* sÑ*Ô*Ð*Ý”7—>’> #Ñ&Ô&Ð+Ð+¨Ñ+Ô+Ð+ð ˆ?à+Ð+r,   c                 óx  — |D �]5}t          |j        t          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚|j        D ]Ö}t          ||¦  «        }|dk    rX|                     d¦  «        rŒ.t          r|dk    rŒ<t          j         
                    |j        ¦  «        sJ |j        ¦   «         ‚Œp|dk    r|sJ t          |¦  «        ¦   «         ‚Œ�|dk    r!t          s|sJ t          |¦  «        ¦   «         ‚Œ·t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ×�Œ7d S )Nry   )ú[zanon_inode:ÚpvclockÚaddrÚpermsr   )r   rý   r%   rþ   ry   rÉ   r`   Ú
startswithr   rx   rz   r&   r   rƒ   )rG   rp   r8   ÚntÚfnameri   s         r*   Úmemory_mapsz!TestFetchAllProcesses.memory_maps�  sd  € Øð 	&ñ 	&ˆBÝ˜bœg¥sÑ+Ô+Ð+Ð+Ð+Ý˜bœh­Ñ,Ô,Ð,Ð,Ð,Ý˜bœg¥sÑ+Ô+Ð+Ð+Ð+Øœð &ð &�Ý  EÑ*Ô*�Ø˜F’?�?Ø×'Ò'Ð(<Ñ=Ô=ð !Ø Ýð !˜u¨	Ò1Ð1Ø Ýœ7Ÿ=š=¨¬Ñ1Ô1Ð:Ð:°2´7Ñ:Ô:Ð:Ð:ð ˜f’_�_Ø Ð-Ð-¥$ u¡+¤+Ñ-Ô-Ð-Ð-Ø˜gÒ%Ð%Ý"ð 2Ø$Ð1Ð1¥d¨5¡k¤kÑ1Ô1Ð1øå% e­SÑ1Ô1Ð1Ð1Ð1Ø  Aš:˜:˜:˜:˜:ñ%&ð		&ð 	&r,   c                 óD   — t          |t          ¦  «        sJ ‚|dk    sJ ‚d S r   r‚   r   s      r*   Únum_handlesz!TestFetchAllProcesses.num_handles¨  r„   r,   c                 óø   — t          |t          ¦  «        sJ ‚t          rd|cxk    rdk    sn J |¦   «         ‚d S d„ t          t          ¦  «        D ¦   «         }||v sJ ‚t          |t
          j        ¦  «        sJ ‚d S )Niìÿÿÿé   c                 ób   — g | ],}|                      d ¦  «        ¯t          t          |¦  «        ‘Œ-S )Ú_PRIORITY_CLASS)rw   r`   r   )rQ   Úxs     r*   rR   z.TestFetchAllProcesses.nice.<locals>.<listcomp>±  sE   € ð ð ð àØ—:’:Ð/Ñ0Ô0ðÝ� Ñ"Ô"ðð ð r,   )r   rƒ   r   Údirr   ÚenumÚIntEnum)rG   rp   r8   Ú
prioritiess       r*   ÚnicezTestFetchAllProcesses.nice¬  s¨   € Ý˜#�sÑ#Ô#Ð#Ð#Ð#Ýð 		1Ø˜#Ð#Ð#Ò#Ð# Ò#Ð#Ð#Ð#Ð# SÑ#Ô#Ð#Ð#Ð#ðð å�V™œðñ ô ˆJð
 ˜*Ð$Ð$Ð$Ð$Ý˜c¥4¤<Ñ0Ô0Ð0Ð0Ð0Ð0Ð0r,   c                 óp   — t          |¦  «        sJ ‚|D ]!}t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ"d S r   r�   rÂ   s       r*   Únum_ctx_switchesz&TestFetchAllProcesses.num_ctx_switches¹  sT   € Ý˜SÑ!Ô!Ð!Ð!Ð!Øð 	ð 	ˆEÝ˜e¥SÑ)Ô)Ð)Ð)Ð)Ø˜A’:�:�:�:�:ð	ð 	r,   c                 ó–   — t          |t          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚|d         dk    sJ ‚|d         dk    sJ ‚d S )Né   r   r›   r§   )r   Útuplerá   r   s      r*   ÚrlimitzTestFetchAllProcesses.rlimit¿  sQ   € Ý˜#�uÑ%Ô%Ð%Ð%Ð%Ý�3‰xŒx˜1Š}ˆ}ˆ}ˆ}Ø�1Œv˜Š|ˆ|ˆ|ˆ|Ø�1Œv˜Š|ˆ|ˆ|ˆ|ˆ|ˆ|r,   c                 óÄ   — t          |t          ¦  «        sJ ‚|                     ¦   «         D ]3\  }}t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚Œ4d S rn   )r   Údictr_   r%   )rG   rp   r8   ÚkÚvs        r*   ÚenvironzTestFetchAllProcesses.environÅ  sl   € Ý˜#�tÑ$Ô$Ð$Ð$Ð$Ø—I’I‘K”Kð 	&ð 	&‰DˆAˆqÝ˜a¥Ñ%Ô%Ð%Ð%Ð%Ý˜a¥Ñ%Ô%Ð%Ð%Ð%Ð%ð	&ð 	&r,   N))Ú__name__Ú
__module__Ú__qualname__Ú__doc__rH   rM   rW   rl   rr   r€   r   r!   r   rŽ   r’   r•   r—   rˆ   r�   r¥   r¨   r®   r±   r´   r¸   rÃ   rÌ   rÝ   rß   rä   rí   rð   ró   rö   rù   r  r  r  r  r  r  rP   r,   r*   r>   r>   `   sL  € € € € € ðð ð
/ð /ð /ðð ð ð	ð 	ð 	ð/ð /ð /ð6)ð )ð )ð
"ð "ð "ð&ð ð ðð ð ð
"ð "ð "ð@ð @ð @ð ð ð ð ð  ð  ðð ð ð
*ð *ð *ð"ð "ð "ð"ð "ð "ð"ð ð ð7ð 7ð 7ðð ð ð(ð (ð (ð6ð 6ð 6ð	5ð 	5ð 	5ð&ð &ð &ð 3ð 3ð 3ð4ð ð ð.ð .ð .ð0ð 0ð 0ð $ð $ð $ð%ð %ð %ðð ð ð,ð ,ð ,ð&ð &ð &ð2ð ð ð1ð 1ð 1ðð ð ðð ð ð&ð &ð &ð &ð &r,   r>   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )ÚTestPidsRangea@  Given pid_exists() return value for a range of PIDs which may or
    may not exist, make sure that psutil.Process() and psutil.pids()
    agree with pid_exists(). This guarantees that the 3 APIs are all
    consistent with each other. See:
    https://github.com/giampaolo/psutil/issues/2359

    XXX - Note about Windows: it turns out there are some "hidden" PIDs
    which are not returned by psutil.pids() and are also not revealed
    by taskmgr.exe and ProcessHacker, still they can be instantiated by
    psutil.Process() and queried. One of such PIDs is "conhost.exe".
    Running as_dict() for it reveals that some Process() APIs
    erroneously raise NoSuchProcess, so we know we have problem there.
    Let's ignore this for now, since it's quite a corner case (who even
    imagined hidden PIDs existed on Windows?).
    c                 ó.   — t          j        d¦  «         d S r@   ©r   rA   rF   s    r*   rH   zTestPidsRange.setUpÝ  s   € ÝÔ˜%Ñ Ô Ð Ð Ð r,   c                 ó.   — t          j        d¦  «         d S rJ   r!  rF   s    r*   rM   zTestPidsRange.tearDownà  s   € ÝÔ˜$ÑÔÐÐÐr,   c                 óÐ   — d„ }d„ }t          dd¦  «        D ]N}t          r ||¦  «        rŒ|                      |¬¦  «        5   ||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒOd S )Nc                 ó6  — 	 t          d| › d�d¦  «        }|5  |D ]R}|                     d¦  «        r;t          |                     ¦   «         d         ¦  «        }|| k    c cd d d ¦  «         S ŒSt	          d¦  «        ‚# 1 swxY w Y   d S # t
          $ r Y dS w xY w)Nz/proc/z/statusÚrbs   Tgid:r§   z'Tgid' line not foundF)Úopenrÿ   rƒ   ÚsplitÚ
ValueErrorrÚ   )r   rÛ   ÚlineÚtgids       r*   Úis_linux_tidz+TestPidsRange.test_it.<locals>.is_linux_tidä  s  € ð>ÝÐ. #Ð.Ð.Ð.°Ñ5Ô5�ð ð >ð >Ø !ð /ð /˜ØŸ?š?¨8Ñ4Ô4ð /Ý#& t§z¢z¡|¤|°A¤Ñ#7Ô#7˜Dð $(¨3¢;Ð.Ð.ð>ð >ð >ð >ñ >ô >ð >ð >ð/õ
 %Ð%<Ñ=Ô=Ð=ð>ð >ð >ð >øøøð >ð >ð >ð >ð >ð >øõ %ð ð ð Ø�u�uðøøøs)   ‚B
 ˜AA=Á-A=Á=BÂBÂ

BÂBc                 óÐ  — d}	 t          j        | ¦  «        }	 |r3t          j        | ¦  «         t          s| t          j        ¦   «         v sJ ‚not
          sJt          j        t           j        ¦  «        5  t          j        | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          s| t          j        ¦   «         vsJ ‚d S # t           j	        t          f$ r |dz  }|dk    r‚ Y nw xY wŒä)Né   Tr§   r   )r   Ú
pid_existsr2   r   rU   r	   r   Úraisesr#   r/   r}   )r   r	  r~   s      r*   Úcheckz$TestPidsRange.test_it.<locals>.checkó  sH  € ð
 ˆAðÝÔ*¨3Ñ/Ô/�ðØð <Ýœ sÑ+Ô+Ð+Ý&ð 8Ø#&­&¬+©-¬-Ð#7Ð#7Ð#7Ð#7øõ
  'ð 4Ý!'¤­vÔ/CÑ!DÔ!Dð 4ð 4Ý &¤¨sÑ 3Ô 3Ð 3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4å&ð <Ø#&­f¬k©m¬mÐ#;Ð#;Ð#;Ð#;ð �Føõ œ¥nÐ5ð ð ð Ø˜‘F�AØ˜A’v�vØð �vðøøøð!s6   ™AB? Á3BÂB? ÂBÂB? ÂBÂ!B? Â?"C$Ã#C$r§   i¸  )r   )r·   r   ÚsubTest)rG   r+  r0  r   s       r*   Útest_itzTestPidsRange.test_itã  sØ   € ð	>ð 	>ð 	>ð	ð 	ð 	õ: ˜˜D‘>”>ð 	ð 	ˆCÝð ˜˜ cÑ*Ô*ð ð Ø—’ #�Ñ&Ô&ð ð Ø��c‘
”
�
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	s   ÁAÁA	Á!A	N)r  r  r  r  rH   rM   r2  rP   r,   r*   r  r  Ì  sK   € € € € € ðð ð !ð !ð !ð ð  ð  ð4ð 4ð 4ð 4ð 4r,   r  )"r  r  rê   rC   rx   r×   r‹   rc   r   r   r   r   r   r   r   r	   r
   r   r   Úpsutil.testsr   r   r   r   r   r   r   r   r   r   rB   r<   r>   r  rP   r,   r*   ú<module>r4     s^  ððð ð €€€Ø €€€Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø (Ð (Ð (Ð (Ð (Ð (Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð ð
 Ð@˜j˜.Ð@°Ð-@€ð.ð .ð .ðbi&ð i&ð i&ð i&ð i&˜Nñ i&ô i&ð i&ðXKð Kð Kð Kð K�Nñ Kô Kð Kð Kð Kr,   