§
    ±Ûg¾�  ã                   ó8  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm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 erIesG ej        ¦   «         5   ej        d¦  «         ddlZddl Z ddl!Z!ddl"Z"ddd¦  «         n# 1 swxY w Y   erddl#m$Z$ ej%        j&        Z&ej'         (                    e d¬¦  «        ej'         (                    ed¬¦  «         G d„ de¦  «        ¦   «         ¦   «         Z)d„ Z*e+fd„Z, G d„ de)¦  «        Z- G d„ de)¦  «        Z. G d„ de)¦  «        Z/ G d „ d!e)¦  «        Z0 G d"„ d#e)¦  «        Z1ej'         (                    e d¬¦  «         G d$„ d%e¦  «        ¦   «         Z2ej'         (                    e d¬¦  «         G d&„ d'e¦  «        ¦   «         Z3ej'         (                    e d¬¦  «         G d(„ d)e¦  «        ¦   «         Z4dS )*zWindows specific tests.é    N)Úmock)ÚWINDOWS)ÚGITHUB_ACTIONS)ÚHAS_BATTERY)ÚIS_64BIT)ÚPYPY)ÚTOLERANCE_DISK_USAGE)ÚTOLERANCE_SYS_MEM)ÚPsutilTestCase)Úpytest)Úretry_on_failure)Úsh)Úspawn_testproc)Ú	terminateÚignore)Úconvert_oserrorzWINDOWS only©Úreasonzpywin32 not available on PYPYc                   ó   — e Zd ZdS )ÚWindowsTestCaseN)Ú__name__Ú
__module__Ú__qualname__© ó    úO/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_windows.pyr   r   5   s   € € € € € ð 	€Dr   r   c                 ó|   — t          j        d¦  «        st          j        d¦  «        ‚d| › d�}t	          |¦  «        S )zšCurrently not used, but available just in case. Usage:

    >>> powershell(
        "Get-CIMInstance Win32_PageFileUsage | Select AllocatedBaseSize")
    zpowershell.exezpowershell.exe not availablezhpowershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive -NoProfile -WindowStyle Hidden -Command "ú")ÚshutilÚwhichr   Úskipr   )ÚcmdÚcmdlines     r   Ú
powershellr$   ;   sR   € õ Œ<Ð(Ñ)Ô)ð :ÝŒkÐ8Ñ9Ô9Ð9ð	=Ø58ð	=ð 	=ð 	=ð õ ˆg‰;Œ;Ðr   c                 óT  ‡— t          d| › d|› �¦  «                             ¦   «         }d                     |                     ¦   «         dd…         ¦  «                             ¦   «         }‰�<d|v r-t	          ˆfd„|                     ¦   «         D ¦   «         ¦  «        S  ‰|¦  «        S |S )z‡Currently not used, but available just in case. Usage:

    >>> wmic("Win32_OperatingSystem", "FreePhysicalMemory")
    2134124534
    z
wmic path z get Ú é   Nú,c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S ©Nr   )Ú.0ÚxÚ	converters     €r   ú	<genexpr>zwmic.<locals>.<genexpr>T   s+   øè è € Ð<Ð<¨!˜˜ 1™œÐ<Ð<Ð<Ð<Ð<Ð<r   )r   ÚstripÚjoinÚ
splitlinesÚtupleÚsplit)ÚpathÚwhatr-   ÚoutÚdatas     `  r   Úwmicr8   J   s¬   ø€ õ Ð+˜$Ð+Ð+ TÐ+Ð+Ñ
,Ô
,×
2Ò
2Ñ
4Ô
4€CØ�7Š7�3—>’>Ñ#Ô# A B BÔ'Ñ(Ô(×.Ò.Ñ0Ô0€DØÐØ�$ˆ;ˆ;ÝÐ<Ð<Ð<Ð<¨t¯zªz©|¬|Ð<Ñ<Ô<Ñ<Ô<Ð<à�9˜T‘?”?Ð"àˆr   c                   ó„   — e Zd Zej                             dej        vd¬¦  «        d„ ¦   «         Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
S )ÚTestCpuAPIsÚNUMBER_OF_PROCESSORSz-NUMBER_OF_PROCESSORS env var is not availabler   c                 óv   — t          t          j        d         ¦  «        }|t          j        ¦   «         k    sJ ‚d S )Nr;   )ÚintÚosÚenvironÚpsutilÚ	cpu_count)ÚselfÚnum_cpuss     r   Ú&test_cpu_count_vs_NUMBER_OF_PROCESSORSz2TestCpuAPIs.test_cpu_count_vs_NUMBER_OF_PROCESSORSa   s9   € õ •r”zÐ"8Ô9Ñ:Ô:ˆØ�6Ô+Ñ-Ô-Ò-Ð-Ð-Ð-Ð-Ð-r   c                 ón   — t          j        ¦   «         d         }t          j        ¦   «         }||k    sJ ‚d S )Né   )Úwin32apiÚGetSystemInfor@   rA   ©rB   Ú	sys_valueÚpsutil_values      r   Útest_cpu_count_vs_GetSystemInfoz+TestCpuAPIs.test_cpu_count_vs_GetSystemInfok   s<   € õ Ô*Ñ,Ô,¨QÔ/ˆ	ÝÔ'Ñ)Ô)ˆØ˜LÒ(Ð(Ð(Ð(Ð(Ð(r   c                 ó´   — t          j        ¦   «         }t          d„ |                     ¦   «         D ¦   «         ¦  «        }t	          j        ¦   «         |k    sJ ‚d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r*   )ÚNumberOfLogicalProcessors©r+   Úprocs     r   r.   z<TestCpuAPIs.test_cpu_count_logical_vs_wmi.<locals>.<genexpr>t   s6   è è € ð 
ð 
Ø/3ˆDÔ*ð
ð 
ð 
ð 
ð 
ð 
r   ©ÚwmiÚWMIÚsumÚWin32_Processorr@   rA   )rB   ÚwÚprocss      r   Útest_cpu_count_logical_vs_wmiz)TestCpuAPIs.test_cpu_count_logical_vs_wmir   sf   € ÝŒG‰IŒIˆÝð 
ð 
Ø78×7HÒ7HÑ7JÔ7Jð
ñ 
ô 
ñ 
ô 
ˆõ ÔÑ!Ô! UÒ*Ð*Ð*Ð*Ð*Ð*r   c                 ó¸   — t          j        ¦   «         }t          d„ |                     ¦   «         D ¦   «         ¦  «        }t	          j        d¬¦  «        |k    sJ ‚d S )Nc              3   ó$   K  — | ]}|j         V — Œd S r*   )ÚNumberOfCoresrP   s     r   r.   z:TestCpuAPIs.test_cpu_count_cores_vs_wmi.<locals>.<genexpr>{   s%   è è € ÐGÐG¨4�DÔ&ÐGÐGÐGÐGÐGÐGr   F)ÚlogicalrR   )rB   rW   Úcoress      r   Útest_cpu_count_cores_vs_wmiz'TestCpuAPIs.test_cpu_count_cores_vs_wmiy   sZ   € ÝŒG‰IŒIˆÝÐGÐG°1×3DÒ3DÑ3FÔ3FÐGÑGÔGÑGÔGˆÝÔ¨Ð.Ñ.Ô.°%Ò7Ð7Ð7Ð7Ð7Ð7r   c                 óx   — t          j        ¦   «         t          t          j        d¬¦  «        ¦  «        k    sJ ‚d S )NT)Úpercpu)r@   rA   ÚlenÚ	cpu_times©rB   s    r   Útest_cpu_count_vs_cpu_timesz'TestCpuAPIs.test_cpu_count_vs_cpu_times~   s8   € ÝÔÑ!Ô!¥S­Ô)9ÀÐ)FÑ)FÔ)FÑ%GÔ%GÒGÐGÐGÐGÐGÐGr   c                 óì   — t          j        ¦   «         }|                     ¦   «         d         }|j        t	          j        ¦   «         j        k    sJ ‚|j        t	          j        ¦   «         j        k    sJ ‚d S ©Nr   )	rS   rT   rV   ÚCurrentClockSpeedr@   Úcpu_freqÚcurrentÚMaxClockSpeedÚmax)rB   rW   rQ   s      r   Útest_cpu_freqzTestCpuAPIs.test_cpu_freq�   sg   € ÝŒG‰IŒIˆØ× Ò Ñ"Ô" 1Ô%ˆØÔ%­¬Ñ):Ô):Ô)BÒBÐBÐBÐBØÔ!¥V¤_Ñ%6Ô%6Ô%:Ò:Ð:Ð:Ð:Ð:Ð:r   N)r   r   r   r   ÚmarkÚskipifr>   r?   rD   rL   rY   r_   re   rm   r   r   r   r:   r:   `   s¢   € € € € € Ø„[×ÒØ b¤jÐ0Ø>ð ñ ô ð.ð .ñ	ô ð.ð)ð )ð )ð+ð +ð +ð8ð 8ð 8ð
Hð Hð Hð;ð ;ð ;ð ;ð ;r   r:   c                   ó¶   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Z e¦   «         d„ ¦   «         Z	 e¦   «         d„ ¦   «         Z
 e¦   «         d„ ¦   «         Zd	„ Zd
„ Zd„ Zd„ ZdS )ÚTestSystemAPIsc                 ó
  — t          d¦  «        }t          j        d¬¦  «                             ¦   «         }|D ]I}d|                     dd¦  «                             ¦   «         v rŒ-||vr|                      |›d�¦  «        ‚ŒJd S )Nzipconfig /allT)Úperniczpseudo-interfaceú ú-z+ nic wasn't found in 'ipconfig /all' output)r   r@   Únet_io_countersÚkeysÚreplaceÚlowerÚfail)rB   r6   ÚnicsÚnics       r   Útest_nic_nameszTestSystemAPIs.test_nic_names‰   sŸ   € Ý�Ñ!Ô!ˆÝÔ%¨TÐ2Ñ2Ô2×7Ò7Ñ9Ô9ˆØð 	ð 	ˆCØ! S§[¢[°°cÑ%:Ô%:×%@Ò%@Ñ%BÔ%BÐBÐBØØ˜#ˆ~ˆ~Ø—i’iØÐIÐIÐIñô ð ð ð	ð 	r   c                 ó¼   — t          j        ¦   «                              ¦   «         d         }t          |j        ¦  «        t          j        ¦   «         j        k    sJ ‚d S rg   )rS   rT   ÚWin32_ComputerSystemr=   ÚTotalPhysicalMemoryr@   Úvirtual_memoryÚtotal©rB   rW   s     r   Útest_total_phymemz TestSystemAPIs.test_total_phymem”   sL   € ÝŒG‰IŒI×*Ò*Ñ,Ô,¨QÔ/ˆÝ�1Ô(Ñ)Ô)­VÔ-BÑ-DÔ-DÔ-JÒJÐJÐJÐJÐJÐJr   c                 óæ   — t          j        ¦   «                              ¦   «         d         }t          t	          |j        ¦  «        t          j        ¦   «         j        z
  ¦  «        t          k     sJ ‚d S rg   )
rS   rT   ÚWin32_PerfRawData_PerfOS_MemoryÚabsr=   ÚAvailableBytesr@   r�   Úfreer
   rƒ   s     r   Útest_free_phymemzTestSystemAPIs.test_free_phymem˜   sf   € ÝŒG‰IŒI×5Ò5Ñ7Ô7¸Ô:ˆå•�AÔ$Ñ%Ô%­Ô(=Ñ(?Ô(?Ô(DÑDÑEÔEÝò ð  ð  ð  ð  ð  r   c                 ó¢  — t          j        ¦   «                              ¦   «         d         }t          |j        ¦  «        t          j        ¦   «         j        z
  t          j        ¦   «         j        k    sJ ‚t          j        ¦   «         j        dk    r<t          j        ¦   «         j	        dk    sJ ‚t          j        ¦   «         j
        dk    sJ ‚d S d S rg   )rS   rT   r†   r=   ÚCommitLimitr@   r�   r‚   Úswap_memoryr‰   Úusedrƒ   s     r   Útest_total_swapmemz!TestSystemAPIs.test_total_swapmemŸ   sÀ   € ÝŒG‰IŒI×5Ò5Ñ7Ô7¸Ô:ˆå�”ÑÔ¥Ô!6Ñ!8Ô!8Ô!>Ñ>ÝÔ!Ñ#Ô#Ô)ò*ð *ð *ð *õ ÔÑÔÔ%¨Ò*Ð*ÝÔ%Ñ'Ô'Ô,°Ò1Ð1Ð1Ð1ÝÔ%Ñ'Ô'Ô,°Ò1Ð1Ð1Ð1ð +Ð*à1Ð1r   c                 óÈ  — t          j        ¦   «         j        dk    rÃt          j        ¦   «                              d¬¦  «        d         }t          |j        ¦  «        dz  t          |j        ¦  «        z  }t          j        ¦   «         j	        dk    sJ ‚t          t          j        ¦   «         j	        |z
  ¦  «        dk     sJ ‚t          j        ¦   «         j	        dk    sJ ‚d S d S )Nr   Ú_Total)ÚNameéd   rF   )r@   r�   r‚   rS   rT   Ú#Win32_PerfRawData_PerfOS_PagingFiler=   ÚPercentUsageÚPercentUsage_BaseÚpercentr‡   )rB   rW   ÚpercentSwaps      r   Útest_percent_swapmemz#TestSystemAPIs.test_percent_swapmem©   sÔ   € ÝÔÑÔÔ%¨Ò)Ð)Ý”‘	”	×=Ò=À8Ð=ÑLÔLÈQÔOˆAå˜aœnÑ-Ô-°Ñ3µc¸!Ô:MÑ6NÔ6NÑNˆKõ Ô%Ñ'Ô'Ô/°1Ò4Ð4Ð4Ð4Ý•vÔ)Ñ+Ô+Ô3°kÑAÑBÔBÀQÒFÐFÐFÐFÝÔ%Ñ'Ô'Ô/°3Ò6Ð6Ð6Ð6ð *Ð)ð 7Ð6r   c                 ó¸   — t          j        ¦   «                              ¦   «         }d„ |D ¦   «         }t          t	          j        ¦   «         ¦  «        }||k    sJ ‚d S )Nc                 ó   — h | ]	}|j         ’Œ
S r   ©Ú	ProcessId©r+   r,   s     r   ú	<setcomp>z+TestSystemAPIs.test_pids.<locals>.<setcomp>Å   s   € Ð+Ð+Ð+ A�A”KÐ+Ð+Ð+r   )rS   rT   ÚWin32_ProcessÚsetr@   Úpids)rB   rW   Úwmi_pidsÚpsutil_pidss       r   Ú	test_pidszTestSystemAPIs.test_pidsÀ   sX   € õ ŒG‰IŒI×#Ò#Ñ%Ô%ˆØ+Ð+¨Ð+Ñ+Ô+ˆÝ�&œ+™-œ-Ñ(Ô(ˆØ˜;Ò&Ð&Ð&Ð&Ð&Ð&r   c                 óÀ  — t          j        d¬¦  «        }t          j        ¦   «                              ¦   «         }|D �]}|D �] }|j                             dd¦  «        |j        k    rÙ|j        s nêd|j	        v r nß|j         
                    d¦  «        r nÃ	 t          j        |j        ¦  «        }n# t          $ r Y  n›w xY w|j        t          |j        ¦  «        k    sJ ‚t          |j        ¦  «        }|j        |k    sJ ‚t%          |j        |z
  ¦  «        dk    r |                      d|j        › d	|› �¦  «        ‚ n�Œ|                      d
|›�¦  «        ‚�Œ!d S )NT©Úallú\r&   ÚcdromúA:i    zpsutil=z, wmi=zcan't find partition )r@   Údisk_partitionsrS   rT   ÚWin32_LogicalDiskÚdevicerx   ÚDeviceIDÚ
mountpointÚoptsÚ
startswithÚ
disk_usageÚFileNotFoundErrorr‚   r=   ÚSizeÚ	FreeSpacer‰   r‡   rz   )rB   Úps_partsÚ	wmi_partsÚps_partÚwmi_partÚusageÚwmi_frees          r   Ú
test_diskszTestSystemAPIs.test_disksÉ   s¡  € åÔ)¨dÐ3Ñ3Ô3ˆÝ”G‘I”I×/Ò/Ñ1Ô1ˆ	Øð 	Eñ 	EˆGØ%ð Eñ E�Ø”>×)Ò)¨$°Ñ3Ô3°xÔ7HÒHÐHØ"Ô-ð à˜Ø '¤,Ð.Ð.Ø˜ØÔ)×4Ò4°TÑ:Ô:ð Ø˜ðÝ &Ô 1°'Ô2DÑ EÔ E˜˜øÝ,ð ð ð à˜˜ðøøøð !œ;­#¨h¬mÑ*<Ô*<Ò<Ð<Ð<Ð<Ý" 8Ô#5Ñ6Ô6�HØ œ:¨Ò1Ð1Ð1Ð1å˜5œ:¨Ñ0Ñ1Ô1Ð4DÒDÐDØ"ŸišiÐ(N°%´*Ð(NÐ(NÀHÐ(NÐ(NÑOÔOÐOØ�Eñ' Ið* —i’iÐ C¸Ð CÐ CÑDÔDÐDùð/	Eð 	Es   ÂB4Â4
CÃCc                 ó~  — t          j        ¦   «         D ]¨}d|j        v rŒt          j        |j        ¦  «        }t          j        |j        ¦  «        }t          |d         |j        z
  ¦  «        t          k     sJ ‚t          |d         |j
        z
  ¦  «        t          k     sJ ‚|j        |j
        |j        z
  k    sJ ‚Œ©d S )Nrª   r   r'   )r@   r¬   r±   rG   ÚGetDiskFreeSpaceExr°   r³   r‡   r‰   r	   r‚   rŽ   )rB   ÚdiskrJ   rK   s       r   Útest_disk_usagezTestSystemAPIs.test_disk_usageæ   sÊ   € åÔ*Ñ,Ô,ð 		Oð 		OˆDØ˜$œ)Ð#Ð#ØÝ Ô3°D´OÑDÔDˆIÝ!Ô,¨T¬_Ñ=Ô=ˆLÝ�y ”| lÔ&7Ñ7Ñ8Ô8Õ;OÒOÐOÐOÐOå�I˜a”L <Ô#5Ñ5Ñ6Ô6Õ9MÒMÐMÐMÐMàÔ$¨Ô(:¸\Ô=NÑ(NÒNÐNÐNÐNÐNð		Oð 		Or   c                 ó´   — d„ t          j        ¦   «                              d¦  «        D ¦   «         }d„ t          j        d¬¦  «        D ¦   «         }||k    sJ ‚d S )Nc                 óF   — g | ]}|¯|                      d ¦  «        °|dz   ‘ŒS )r«   r©   )r²   rž   s     r   ú
<listcomp>z7TestSystemAPIs.test_disk_partitions.<locals>.<listcomp>ô   sH   € ð 
ð 
ð 
àØð
ð Ÿš dÑ+Ô+ð
Ø�‰Hð
ð 
ð 
r   z\ c                 óP   — g | ]#}|j                              d ¦  «        °|j         ‘Œ$S )r«   )r°   r²   rž   s     r   rÄ   z7TestSystemAPIs.test_disk_partitions.<locals>.<listcomp>ù   s@   € ð 
ð 
ð 
àØ”<×*Ò*¨4Ñ0Ô0ð
ØŒLð
ð 
ð 
r   Tr§   )rG   ÚGetLogicalDriveStringsr3   r@   r¬   rI   s      r   Útest_disk_partitionsz#TestSystemAPIs.test_disk_partitionsó   s|   € ð
ð 
åÔ4Ñ6Ô6×<Ò<¸XÑFÔFð
ñ 
ô 
ˆ	ð

ð 
åÔ+°Ð5Ñ5Ô5ð
ñ 
ô 
ˆð
 ˜LÒ(Ð(Ð(Ð(Ð(Ð(r   c                 óT  — t          t                               ¦   «         ¦  «        }t          j        ¦   «                              ¦   «         }t          ¦   «         }|D ]6}|                     |j        ¦  «         |                     |j        ¦  «         Œ7||z  sJ d|› d|› �¦   «         ‚d S )Nzno common entries in z, )	r¡   ÚcextÚnet_if_statsrS   rT   ÚWin32_NetworkAdapterÚaddr’   ÚNetConnectionID)rB   Úps_namesÚwmi_adaptersÚ	wmi_namesÚwmi_adapters        r   Útest_net_if_statsz TestSystemAPIs.test_net_if_stats   sµ   € Ý•t×(Ò(Ñ*Ô*Ñ+Ô+ˆÝ”w‘y”y×5Ò5Ñ7Ô7ˆÝ‘E”Eˆ	Ø'ð 	7ð 	7ˆKØ�MŠM˜+Ô*Ñ+Ô+Ð+Ø�MŠM˜+Ô5Ñ6Ô6Ð6Ð6à�yÑ ð	;ð 	;à: 8Ð:Ð:¨yÐ:Ð:ñ	;ô 	;ð 	;ð 	;ð 	;r   c                 ó”  — t          j        ¦   «                              ¦   «         }|d         j                             d¦  «        d         }t
          j                             |d¦  «        }t
          j                             t          j	        ¦   «         ¦  «        }t          ||z
                       ¦   «         ¦  «        }|dk    sJ ‚d S )Nr   ú.ú%Y%m%d%H%M%SrF   )rS   rT   ÚWin32_OperatingSystemÚLastBootUpTimer3   ÚdatetimeÚstrptimeÚfromtimestampr@   Ú	boot_timer‡   Útotal_seconds)rB   Úwmi_osÚwmi_btime_strÚwmi_btime_dtÚ	psutil_dtÚdiffs         r   Útest_boot_timezTestSystemAPIs.test_boot_time  s¥   € Ý”‘”×0Ò0Ñ2Ô2ˆØ˜qœ	Ô0×6Ò6°sÑ;Ô;¸AÔ>ˆÝÔ(×1Ò1Ø˜>ñ
ô 
ˆõ Ô%×3Ò3µFÔ4DÑ4FÔ4FÑGÔGˆ	Ý�L 9Ñ,×;Ò;Ñ=Ô=Ñ>Ô>ˆØ�qŠyˆyˆyˆyˆyˆyr   c                 óH  — t          j        dd¬¦  «        5  t          j        ¦   «         dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        dd¬¦  «        5  t          j        ¦   «         dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        dd¬¦  «        5  t          j        ¦   «         dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        dd¬¦  «        5  t          j        ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz psutil._pswindows.cext.boot_timerF   ©Úreturn_valueé   é   iM  )r   Úpatchr@   rÛ   rd   s    r   Útest_boot_time_fluctuationz)TestSystemAPIs.test_boot_time_fluctuation  s1  € åŒZÐ:ÈÐKÑKÔKð 	+ð 	+ÝÔ#Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åŒZÐ:ÈÐKÑKÔKð 	+ð 	+ÝÔ#Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åŒZÐ:ÈÐKÑKÔKð 	+ð 	+ÝÔ#Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+åŒZÐ:ÈÐMÑMÔMð 	-ð 	-ÝÔ#Ñ%Ô%¨Ò,Ð,Ð,Ð,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-sE   —>¾AÁAÁBÂB
ÂB
Â'CÃCÃCÃ/DÄDÄDN)r   r   r   r}   r„   rŠ   r�   r™   r   r¥   r½   rÁ   rÇ   rÒ   râ   ré   r   r   r   rq   rq   ˆ   s  € € € € € ð	ð 	ð 	ðKð Kð Kð
ð 
ð 
ð2ð 2ð 2ð	7ð 	7ð 	7ð. ÐÑÔð'ð 'ñ Ôð'ð ÐÑÔðEð Eñ ÔðEð8 ÐÑÔð
Oð 
Oñ Ôð
Oð)ð )ð )ð	;ð 	;ð 	;ðð ð ð	-ð 	-ð 	-ð 	-ð 	-r   rq   c                   óÄ   — e Zd Zd„ Zej                             e d¬¦  «        d„ ¦   «         Zej                             e d¬¦  «        d„ ¦   «         Z	d„ Z
d„ Zd„ Zd	„ Zd
S )ÚTestSensorsBatteryc                 ó�   — t          j        ¦   «         d         rt          j        ¦   «         €J ‚d S t          j        ¦   «         �J ‚d S )NÚSystemBatteriesPresent)rG   ÚGetPwrCapabilitiesr@   Úsensors_batteryrd   s    r   Útest_has_batteryz#TestSensorsBattery.test_has_battery'  sO   € ÝÔ&Ñ(Ô(Ð)AÔBð 	4ÝÔ)Ñ+Ô+Ð7Ð7Ð7Ð7Ð7åÔ)Ñ+Ô+Ð3Ð3Ð3Ð3Ð3r   z
no batteryr   c                 óÌ   — t          j        ¦   «         }|                     d¦  «        d         }t          j        ¦   «         }t          |j        |j        z
  ¦  «        dk     sJ ‚d S )Núselect * from Win32_Batteryr   r'   )rS   rT   Úqueryr@   rï   r‡   r—   ÚEstimatedChargeRemaining©rB   rW   Úbattery_wmiÚbattery_psutils       r   Útest_percentzTestSensorsBattery.test_percent-  si   € åŒG‰IŒIˆØ—g’gÐ;Ñ<Ô<¸QÔ?ˆÝÔ/Ñ1Ô1ˆå�Ô&¨Ô)MÑMÑNÔNØòð ð ð ð ð r   c                 ó´   — t          j        ¦   «         }|                     d¦  «        d         }t          j        ¦   «         }|j        |j        dk    k    sJ ‚d S )Nrò   r   é   )rS   rT   ró   r@   rï   Úpower_pluggedÚBatteryStatusrõ   s       r   Útest_power_pluggedz%TestSensorsBattery.test_power_plugged7  sV   € åŒG‰IŒIˆØ—g’gÐ;Ñ<Ô<¸QÔ?ˆÝÔ/Ñ1Ô1ˆð Ô+°Ô0IÈQÒ0NÒOÐOÐOÐOÐOÐOr   c                 ó¢   — t          j        dd¬¦  «        5 }t          j        ¦   «         �J ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú&psutil._pswindows.cext.sensors_battery)r   é€   r   r   rä   )r   rè   r@   rï   Úcalled©rB   Úms     r   Útest_emulate_no_batteryz*TestSensorsBattery.test_emulate_no_battery@  s¥   € ÝŒZØ4Ø'ð
ñ 
ô 
ð 	ð ÝÔ)Ñ+Ô+Ð3Ð3Ð3Ø”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   —AÁAÁAc                 óÈ   — t          j        dd¬¦  «        5 }t          j        ¦   «         j        t          j        k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrÿ   )r'   r   r   r   rä   ©r   rè   r@   rï   ÚsecsleftÚPOWER_TIME_UNLIMITEDr  r  s     r   Útest_emulate_power_connectedz/TestSensorsBattery.test_emulate_power_connectedH  ó¸   € ÝŒZØ4À<ð
ñ 
ô 
ð 	àåÔ&Ñ(Ô(Ô1ÝÔ.ò/ð /ð /ð /ð ”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   —2AÁAÁAc                 óÈ   — t          j        dd¬¦  «        5 }t          j        ¦   «         j        t          j        k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrÿ   )r   é   r   r   rä   r  r  s     r   Útest_emulate_power_chargingz.TestSensorsBattery.test_emulate_power_chargingR  r
  r  c                 óÈ   — t          j        dd¬¦  «        5 }t          j        ¦   «         j        t          j        k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nrÿ   )r   r   r   éÿÿÿÿrä   )r   rè   r@   rï   r  ÚPOWER_TIME_UNKNOWNr  r  s     r   Útest_emulate_secs_left_unknownz1TestSensorsBattery.test_emulate_secs_left_unknown\  s°   € ÝŒZØ4Ø&ð
ñ 
ô 
ð 	ð åÔ&Ñ(Ô(Ô1µVÔ5NÒNÐNÐNÐNà”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r  N)r   r   r   rð   r   rn   ro   r   rø   rý   r  r	  r  r  r   r   r   rë   rë   &  sÈ   € € € € € ð4ð 4ð 4ð „[×Ò˜K˜°ÐÑ=Ô=ð
ð 
ñ >Ô=ð
ð „[×Ò˜K˜°ÐÑ=Ô=ðPð Pñ >Ô=ðPðð ð ðð ð ðð ð ðð ð ð ð r   rë   c                   ó”   — e Zd Zed„ ¦   «         Ze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 )ÚTestProcessc                 ó6   — t          ¦   «         j        | _        d S r*   ©r   Úpid©Úclss    r   Ú
setUpClasszTestProcess.setUpClassm  ó   € å Ñ"Ô"Ô&ˆŒˆˆr   c                 ó.   — t          | j        ¦  «         d S r*   ©r   r  r  s    r   ÚtearDownClasszTestProcess.tearDownClassq  ó   € å�#”'ÑÔÐÐÐr   c                 óÄ   — t          j        d¦  «        }t          j        t           j        ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S rg   )r@   ÚProcessr   ÚraisesÚAccessDeniedÚkill©rB   Úps     r   Útest_issue_24zTestProcess.test_issue_24u  s•   € ÝŒN˜1ÑÔˆÝŒ]�6Ô.Ñ/Ô/ð 	ð 	Ø�FŠF‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ³AÁAÁAc                 ó�  — t          j        d¦  «        }|                     ¦   «         dk    sJ ‚t          |¦  «         |                     ¦   «          |                     ¦   «         dk    sJ ‚	 |                     ¦   «         d d…         \  }}|dk    sJ ‚d S # t           j        $ r  t          j	        ¦   «         d         dvr‚ Y d S w xY w)Nræ   ÚSystemg        rú   r   r'   >   úwin-7Úwin7Úvista)
r@   r!  ÚnameÚstrÚusernameÚcreate_timeÚmemory_infor#  ÚplatformÚuname)rB   r&  ÚrssÚ_vmss       r   Útest_special_pidzTestProcess.test_special_pidz  s×   € ÝŒN˜1ÑÔˆØ�vŠv‰xŒx˜8Ò#Ð#Ð#Ð#õ 	ˆA‰ŒˆØ	�
Š
‰ŒˆØ�}Š}‰Œ #Ò%Ð%Ð%Ð%ð	ØŸš™œ¨¨¨Ô+‰IˆC�ð ˜’7�7�7�7�7�7øõ Ô"ð 	ð 	ð 	åŒ~ÑÔ Ô"Ð*DÐDÐDØð EÐDÐDð	øøøs   Á-B Â+CÃCc                 óÚ   — t          j        | j        ¦  «        }t          j        t
          ¦  «        5  |                     t          j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r*   )	r@   r!  r  r   r"  Ú
ValueErrorÚsend_signalÚsignalÚSIGINTr%  s     r   Útest_send_signalzTestProcess.test_send_signal‹  s›   € ÝŒN˜4œ8Ñ$Ô$ˆÝŒ]�:Ñ&Ô&ð 	)ð 	)Ø�MŠM�&œ-Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)s   ³ A Á A$Á'A$c                 óˆ  — t          j        t          j        ¦   «         ¦  «        }|                     ¦   «         }t          j        t          j        t          j	        t          j        ¦   «         ¦  «        }|                     ¦   «         }||dz   k    sJ ‚t          j
        |¦  «         |                     ¦   «         |k    sJ ‚d S )Nr'   )r@   r!  r>   ÚgetpidÚnum_handlesrG   ÚOpenProcessÚwin32conÚPROCESS_QUERY_INFORMATIONÚFALSEÚCloseHandle)rB   r&  ÚbeforeÚhandleÚafters        r   Útest_num_handles_incrementz&TestProcess.test_num_handles_increment�  sœ   € ÝŒN�2œ9™;œ;Ñ'Ô'ˆØ—’‘”ˆÝÔ%ÝÔ.µ´ÅÄ	ÁÄñ
ô 
ˆð —’‘”ˆØ˜ ™
Ò"Ð"Ð"Ð"ÝÔ˜VÑ$Ô$Ð$Ø�}Š}‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r   c                 ó~  — t          j        |                      ¦   «         j        ¦  «        }|                     t
          j        ¦  «         |                     t
          j        ¦  «         |                     ¦   «          | 	                    ¦   «          t          j        t           j        ¦  «        5  |                     t
          j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t           j        ¦  «        5  |                     t
          j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r*   )r@   r!  r   r  r9  r:  ÚCTRL_C_EVENTÚCTRL_BREAK_EVENTr$  Úwaitr   r"  ÚNoSuchProcessr%  s     r   Útest_ctrl_signalszTestProcess.test_ctrl_signals›  sm  € ÝŒN˜4×.Ò.Ñ0Ô0Ô4Ñ5Ô5ˆØ	�Š•fÔ)Ñ*Ô*Ð*Ø	�Š•fÔ-Ñ.Ô.Ð.Ø	�Š‰ŒˆØ	�Š‰ŒˆÝŒ]�6Ô/Ñ0Ô0ð 	/ð 	/Ø�MŠM�&Ô-Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/åŒ]�6Ô/Ñ0Ô0ð 	3ð 	3Ø�MŠM�&Ô1Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s$   Â0 CÃC Ã#C Ä D2Ä2D6Ä9D6c                 óê   — t          j        t          j        ¦  «        }|                     d¦  «        rt          j        d¦  «        ‚t          j        ¦   «          	                    ¦   «         |k    sJ ‚d S )Nú$zrunning as service account)
rG   ÚGetUserNameExrA  ÚNameSamCompatibleÚendswithr   r!   r@   r!  r/  )rB   r-  s     r   Útest_usernamezTestProcess.test_username¦  sg   € ÝÔ%¥hÔ&@ÑAÔAˆØ�=Š=˜ÑÔð 	<õ ”+Ð:Ñ;Ô;Ð;ÝŒ~ÑÔ×(Ò(Ñ*Ô*¨dÒ2Ð2Ð2Ð2Ð2Ð2r   c                 ó^  — t          j        ddt          j        ¦   «         ¦  «                             ¦   «         }d                     t          j        ¦   «                              ¦   «         ¦  «        }|d         dcxk    r|d         k    rn n| 	                    ddd¦  «        }||k    sJ ‚d S )Nz[ ]+rt   r   r   r&   rú   )
ÚreÚsubrG   ÚGetCommandLiner/   r0   r@   r!  r#   rx   rI   s      r   Útest_cmdlinezTestProcess.test_cmdline¯  s©   € Ý”F˜7 C­Ô)@Ñ)BÔ)BÑCÔC×IÒIÑKÔKˆ	Ø—x’x¥¤Ñ 0Ô 0× 8Ò 8Ñ :Ô :Ñ;Ô;ˆØ�QŒ<˜3Ð1Ð1Ò1Ð1 ,¨q¤/Ò1Ð1Ð1Ð1Ð1ð
 "×)Ò)¨#¨r°1Ñ5Ô5ˆIØ˜LÒ(Ð(Ð(Ð(Ð(Ð(r   c                 ó>  — t          j        t          j        t          j        t          j        ¦   «         ¦  «        }|                      t           j        |¦  «         t          j
        |¦  «        }t          j        ¦   «                              ¦   «         }||k    sJ ‚d S r*   )rG   r@  rA  rB  rC  r>   r>  Ú
addCleanuprD  Úwin32processÚGetPriorityClassr@   r!  Únice©rB   rF  rJ   rK   s       r   Ú	test_nicezTestProcess.test_niceÉ  s   € ÝÔ%ÝÔ.µ´ÅÄ	ÁÄñ
ô 
ˆð 	�Š�Ô,¨fÑ5Ô5Ð5Ý Ô1°&Ñ9Ô9ˆ	Ý”~Ñ'Ô'×,Ò,Ñ.Ô.ˆØ˜yÒ(Ð(Ð(Ð(Ð(Ð(r   c                 óš  — t          j        t          j        t          j        | j        ¦  «        }|                      t           j        |¦  «         t          j	        |¦  «        }t          j        | j        ¦  «                             ¦   «         }|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|d         |j        k    sJ ‚|j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )	NÚPeakWorkingSetSizeÚWorkingSetSizeÚQuotaPeakPagedPoolUsageÚQuotaPagedPoolUsageÚQuotaPeakNonPagedPoolUsageÚQuotaNonPagedPoolUsageÚPagefileUsageÚPeakPagefileUsage)rG   r@  rA  rB  rC  r  r[  rD  r\  ÚGetProcessMemoryInfor@   r!  r1  Ú	peak_wsetÚwsetÚpeak_paged_poolÚ
paged_poolÚpeak_nonpaged_poolÚnonpaged_poolÚpagefileÚpeak_pagefiler4  Úvmsr_  s       r   Útest_memory_infozTestProcess.test_memory_infoÒ  s�  € ÝÔ%ÝÔ.µ´ÀÄñ
ô 
ˆð 	�Š�Ô,¨fÑ5Ô5Ð5Ý Ô5°fÑ=Ô=ˆ	Ý”~ d¤hÑ/Ô/×;Ò;Ñ=Ô=ˆØÐ-Ô.°,Ô2HÒHÐHÐHÐHØÐ)Ô*¨lÔ.?Ò?Ð?Ð?Ð?àÐ/Ô0ØÔ+ò,ð ,ð ,ð ,ð Ð.Ô/°<Ô3JÒJÐJÐJÐJàÐ2Ô3ØÔ.ò/ð /ð /ð /ð Ð.Ô/°<Ô3MÒMÐMÐMÐMà˜Ô)¨\Ô-BÒBÐBÐBÐBØÐ,Ô-°Ô1KÒKÐKÐKÐKàÔ <Ô#4Ò4Ð4Ð4Ð4ØÔ <Ô#8Ò8Ð8Ð8Ð8Ð8Ð8r   c                 ó^  — t          j        t          j        t          j        | j        ¦  «        }|                      t           j        |¦  «         t          j	        | j        ¦  «        }| 
                    ¦   «          |                     ¦   «         }t          j        |¦  «        }||k    sJ ‚d S r*   )rG   r@  rA  rB  rC  r  r[  rD  r@   r!  r   rL  r\  ÚGetExitCodeProcess)rB   rF  r&  rK   rJ   s        r   Ú	test_waitzTestProcess.test_waití  s�   € ÝÔ%ÝÔ.µ´ÀÄñ
ô 
ˆð 	�Š�Ô,¨fÑ5Ô5Ð5ÝŒN˜4œ8Ñ$Ô$ˆØ	�Š‰ŒˆØ—v’v‘x”xˆÝ Ô3°FÑ;Ô;ˆ	Ø˜yÒ(Ð(Ð(Ð(Ð(Ð(r   c                 óV  — d„ }t          j        t          j        t          j        | j        ¦  «        }|                      t           j        |¦  «          |t          j	        |¦  «        d         ¦  «        }t          j        | j        ¦  «                             ¦   «         }||k    sJ ‚d S )Nc                 ó:   ‡ — ˆ fd„t          d¦  «        D ¦   «         S )Nc                 ó$   •— g | ]}d |z  ‰z  ¯
|‘ŒS )r'   r   )r+   Úir,   s     €r   rÄ   zGTestProcess.test_cpu_affinity.<locals>.from_bitmask.<locals>.<listcomp>ú  s&   ø€ Ð9Ð9Ð9˜!¨Q°!©V°q©LÐ9�AÐ9Ð9Ð9r   é@   )Úrange)r,   s   `r   Úfrom_bitmaskz3TestProcess.test_cpu_affinity.<locals>.from_bitmaskù  s#   ø€ Ø9Ð9Ð9Ð9�u R™yœyÐ9Ñ9Ô9Ð9r   r   )rG   r@  rA  rB  rC  r  r[  rD  r\  ÚGetProcessAffinityMaskr@   r!  Úcpu_affinity)rB   r~  rF  rJ   rK   s        r   Útest_cpu_affinityzTestProcess.test_cpu_affinityø  s¦   € ð	:ð 	:ð 	:õ Ô%ÝÔ.µ´ÀÄñ
ô 
ˆð 	�Š�Ô,¨fÑ5Ô5Ð5Ø �LÝÔ/°Ñ7Ô7¸Ô:ñ
ô 
ˆ	õ ”~ d¤hÑ/Ô/×<Ò<Ñ>Ô>ˆØ˜yÒ(Ð(Ð(Ð(Ð(Ð(r   c                 ó  — t          j        t          j        t          j        t          j        ¦   «         ¦  «        }|                      t           j        |¦  «         t          j
        |¦  «        }t          j        ¦   «                              ¦   «         }|j        |d         k    sJ ‚|j        |d         k    sJ ‚|j        |d         k    sJ ‚|j        |d         k    sJ ‚|j        |d         k    sJ ‚|j        |d         k    sJ ‚d S )NÚReadOperationCountÚWriteOperationCountÚReadTransferCountÚWriteTransferCountÚOtherOperationCountÚOtherTransferCount)rG   r@  rA  rB  rC  r>   r>  r[  rD  r\  ÚGetProcessIoCountersr@   r!  Úio_countersÚ
read_countÚwrite_countÚ
read_bytesÚwrite_bytesÚother_countÚother_bytesr_  s       r   Útest_io_counterszTestProcess.test_io_counters  s
  € ÝÔ%ÝÔ.µ´ÅÄ	ÁÄñ
ô 
ˆð 	�Š�Ô,¨fÑ5Ô5Ð5Ý Ô5°fÑ=Ô=ˆ	Ý”~Ñ'Ô'×3Ò3Ñ5Ô5ˆØÔ&¨)Ð4HÔ*IÒIÐIÐIÐIØÔ'¨9Ð5JÔ+KÒKÐKÐKÐKØÔ&¨)Ð4GÔ*HÒHÐHÐHÐHØÔ'¨9Ð5IÔ+JÒJÐJÐJÐJØÔ'¨9Ð5JÔ+KÒKÐKÐKÐKØÔ'¨9Ð5IÔ+JÒJÐJÐJÐJÐJÐJr   c                 ó¼  — dd l }dd l}d}|j        j                             |d| j        ¦  «        }|                      |j        j        j        |¦  «         |j         	                    ¦   «         }|j        j         
                    ||                     |¦  «        ¦  «         |j        }t          j        | j        ¦  «                             ¦   «         }||k    sJ ‚d S )Nr   é   )ÚctypesÚctypes.wintypesÚwindllÚkernel32r@  r  r[  rD  ÚwintypesÚDWORDÚGetProcessHandleCountÚbyrefÚvaluer@   r!  r?  )rB   r”  rB  rF  ÚhndcntrJ   rK   s          r   Útest_num_handleszTestProcess.test_num_handles  sÜ   € ØˆˆˆØÐÐÐà$)Ð!Ø”Ô'×3Ò3Ø% q¨$¬(ñ
ô 
ˆð 	�Š˜œÔ.Ô:¸FÑCÔCÐCà”×&Ò&Ñ(Ô(ˆØŒÔ×4Ò4Ø�F—L’L Ñ(Ô(ñ	
ô 	
ð 	
ð ”Lˆ	Ý”~ d¤hÑ/Ô/×;Ò;Ñ=Ô=ˆØ˜yÒ(Ð(Ð(Ð(Ð(Ð(r   c                 ó¸  — t          ¦   «         }d|_        t          j        d|¬¦  «        5  t          j        d¦  «        5 }t	          j        ¦   «         }t          j        t          j        ¦  «        5  | 	                    ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |j
        dk    sJ ‚d S )Ni+  z psutil._psplatform.cext.proc_cwd©Úside_effectz
time.sleeprF   )ÚOSErrorÚwinerrorr   rè   r@   r!  r   r"  r#  ÚcwdÚ
call_count)rB   Úexcr  r&  s       r   Útest_error_partial_copyz#TestProcess.test_error_partial_copy&  s|  € å‰iŒiˆØˆŒÝŒZÐ:ÈÐLÑLÔLð 	ð 	Ý”˜LÑ)Ô)ð ¨QÝ”NÑ$Ô$�Ý”]¥6Ô#6Ñ7Ô7ð ð Ø—E’E‘G”G�Gðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 Œ|˜qÒ Ð Ð Ð Ð Ð sY   ¬CÁ2B+Á3BÂB+ÂBÂB+ÂBÂB+ÂCÂ+B/	Â/CÂ2B/	Â3CÃCÃ	Cc                 ó  — t          j        ¦   «         d         dz   }t           j                             |¦  «        }t	          j        t           j        ¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr  iŸ† )r@   r¢   Ú_psplatformr!  r   r"  rM  Úexe)rB   r  rQ   s      r   Útest_exezTestProcess.test_exe1  s³   € õ Œk‰mŒm˜BÔ %Ñ'ˆÝÔ!×)Ò)¨#Ñ.Ô.ˆÝŒ]�6Ô/Ñ0Ô0ð 	ð 	Ø�HŠH‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA<Á<B ÂB N)r   r   r   Úclassmethodr  r  r'  r6  r<  rH  rN  rT  rY  r`  rt  rw  r�  r‘  rž  r§  r«  r   r   r   r  r  l  s,  € € € € € Øð'ð 'ñ „[ð'ð ðð ñ „[ððð ð ð
ð ð ð")ð )ð )ð
	)ð 	)ð 	)ð	3ð 	3ð 	3ð3ð 3ð 3ð	)ð 	)ð 	)ð4)ð )ð )ð9ð 9ð 9ð6	)ð 	)ð 	)ð)ð )ð )ðKð Kð Kð)ð )ð )ð$	!ð 	!ð 	!ðð ð ð ð r   r  c                   óì   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zej	         
                    ed¬¦  «        d„ ¦   «         Zd„ Zd	„ Z e¦   «         d
„ ¦   «         Z e¦   «         d„ ¦   «         Zd„ ZdS )ÚTestProcessWMIz%Compare Process API results with WMI.c                 ó6   — t          ¦   «         j        | _        d S r*   r  r  s    r   r  zTestProcessWMI.setUpClass=  r  r   c                 ó.   — t          | j        ¦  «         d S r*   r  r  s    r   r  zTestProcessWMI.tearDownClassA  r  r   c                 óÚ   — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }|                     ¦   «         |j        k    sJ ‚d S ©Nrœ   r   )rS   rT   r    r  r@   r!  r-  ÚCaption©rB   rW   r&  s      r   Ú	test_namezTestProcessWMI.test_nameE  sW   € ÝŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆØ�vŠv‰xŒx˜1œ9Ò$Ð$Ð$Ð$Ð$Ð$r   z!unreliable path on GITHUB_ACTIONSr   c                 ó"  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }|                     ¦   «                              ¦   «         |j                             ¦   «         k    sJ ‚d S r²  )	rS   rT   r    r  r@   r!  rª  ry   ÚExecutablePathr´  s      r   r«  zTestProcessWMI.test_exeK  sp   € õ ŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆð �uŠu‰wŒw�}Š}‰Œ !Ô"2×"8Ò"8Ñ":Ô":Ò:Ð:Ð:Ð:Ð:Ð:r   c                 ó(  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }d                     |                     ¦   «         ¦  «        |j         	                    dd¦  «        k    sJ ‚d S )Nrœ   r   rt   r   r&   )
rS   rT   r    r  r@   r!  r0   r#   ÚCommandLinerx   r´  s      r   rY  zTestProcessWMI.test_cmdlineU  ss   € ÝŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆØ�xŠx˜Ÿ	š	™œÑ$Ô$¨¬×(=Ò(=¸cÀ2Ñ(FÔ(FÒFÐFÐFÐFÐFÐFr   c                 ó  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }|                     ¦   «         \  }}}|› d|› �}|                     ¦   «         |k    sJ ‚d S )Nrœ   r   r©   )rS   rT   r    r  r@   r!  ÚGetOwnerr/  )rB   rW   r&  ÚdomainÚ_r/  s         r   rT  zTestProcessWMI.test_usernameZ  s|   € ÝŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆØŸjšj™lœlÑˆ��8ØÐ*Ð* Ð*Ð*ˆØ�zŠz‰|Œ|˜xÒ'Ð'Ð'Ð'Ð'Ð'r   c                 ó  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }|                     ¦   «         j        }|t          |j	        ¦  «        k    sJ ‚d S r²  )
rS   rT   r    r  r@   r!  r1  r4  r=   rc  )rB   rW   r&  r4  s       r   Útest_memory_rsszTestProcessWMI.test_memory_rssa  sh   € åŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆØ�mŠm‰oŒoÔ!ˆØ•c˜!Ô*Ñ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   c                 ó>  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }|                     ¦   «         j        }t          |j	        ¦  «        }|||dz  hvr|  
                    d|› d|› �¦  «        ‚d S )Nrœ   r   r“  zwmi=z	, psutil=)rS   rT   r    r  r@   r!  r1  rs  r=   ÚPageFileUsagerz   )rB   rW   r&  rs  Ú	wmi_usages        r   Útest_memory_vmszTestProcessWMI.test_memory_vmsh  s—   € åŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆØ�mŠm‰oŒoÔ!ˆõ
 ˜œÑ(Ô(ˆ	Ø�y )¨dÑ"2Ð3Ð3Ð3Ø—)’)Ð< 9Ð<Ð<°sÐ<Ð<Ñ=Ô=Ð=ð 4Ð3r   c                 óx  — t          j        ¦   «                              | j        ¬¦  «        d         }t	          j        | j        ¦  «        }t          |j                             d¦  «        d         ¦  «        }t          j
        dt          j        |                     ¦   «         ¦  «        ¦  «        }||k    sJ ‚d S )Nrœ   r   rÔ   rÕ   )rS   rT   r    r  r@   r!  r.  ÚCreationDater3   ÚtimeÚstrftimeÚ	localtimer0  )rB   rW   r&  Úwmic_createÚpsutil_creates        r   Útest_create_timezTestProcessWMI.test_create_timeu  s™   € ÝŒG‰IŒI×#Ò#¨d¬hÐ#Ñ7Ô7¸Ô:ˆÝŒN˜4œ8Ñ$Ô$ˆÝ˜!œ.×.Ò.¨sÑ3Ô3°AÔ6Ñ7Ô7ˆÝœØ�DœN¨1¯=ª=©?¬?Ñ;Ô;ñ
ô 
ˆð ˜mÒ+Ð+Ð+Ð+Ð+Ð+r   N)r   r   r   Ú__doc__r¬  r  r  rµ  r   rn   ro   r   r«  rY  rT  r   r¿  rÃ  rË  r   r   r   r®  r®  :  s  € € € € € Ø/Ð/àð'ð 'ñ „[ð'ð ðð ñ „[ðð%ð %ð %ð „[×ÒØÐBð ñ ô ð;ð ;ñô ð;ðGð Gð Gð
(ð (ð (ð ÐÑÔð,ð ,ñ Ôð,ð ÐÑÔð
>ð 
>ñ Ôð
>ð,ð ,ð ,ð ,ð ,r   r®  c                   ób   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
S )ÚTestDualProcessImplementationaw  Certain APIs on Windows have 2 internal implementations, one
    based on documented Windows APIs, another one based
    NtQuerySystemInformation() which gets called as fallback in
    case the first fails because of limited permission error.
    Here we test that the two methods return the exact same value,
    see:
    https://github.com/giampaolo/psutil/issues/304.
    c                 ó6   — t          ¦   «         j        | _        d S r*   r  r  s    r   r  z(TestDualProcessImplementation.setUpClass�  r  r   c                 ó.   — t          | j        ¦  «         d S r*   r  r  s    r   r  z+TestDualProcessImplementation.tearDownClass‘  r  r   c                 ó0  — t          j        | j        ¦  «                             ¦   «         }t	          j        dt          ¬¦  «        5 }t          j        | j        ¦  «                             ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚t          t          |¦  «        ¦  «        D ]B}||         dk    sJ ‚||         dk    sJ ‚t          ||         ||         z
  ¦  «        dk     sJ ‚ŒC|j
        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz(psutil._psplatform.cext.proc_memory_infor   r   i   )r@   r!  r  r1  r   rè   ÚPermissionErrorrb   r}  r‡   r  )rB   Úmem_1ÚfunÚmem_2r{  s        r   rt  z.TestDualProcessImplementation.test_memory_info•  sS  € Ý”˜tœxÑ(Ô(×4Ò4Ñ6Ô6ˆÝŒZØ6Ý'ð
ñ 
ô 
ð 
	ð Ý”N 4¤8Ñ,Ô,×8Ò8Ñ:Ô:ˆEÝ�u‘:”:¥ U¡¤Ò+Ð+Ð+Ð+Ý�3˜u™:œ:Ñ&Ô&ð 6ð 6�Ø˜Q”x 1’}�}�}�}Ø˜Q”x 1’}�}�}�}Ý˜5 œ8 e¨A¤hÑ.Ñ/Ô/°#Ò5Ð5Ð5Ð5Ð5Ø”:ÐÐÐÐð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s   ÁB6DÄDÄDc                 ó:  — t          j        | j        ¦  «                             ¦   «         }t	          j        dt          ¬¦  «        5 }t          j        | j        ¦  «                             ¦   «         |k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nú"psutil._psplatform.cext.proc_timesr   )r@   r!  r  r0  r   rè   rÒ  r  )rB   ÚctimerÔ  s      r   rË  z.TestDualProcessImplementation.test_create_time£  sÚ   € Ý”˜tœxÑ(Ô(×4Ò4Ñ6Ô6ˆÝŒZØ0Ý'ð
ñ 
ô 
ð 	ð Ý”> $¤(Ñ+Ô+×7Ò7Ñ9Ô9¸UÒBÐBÐBÐBØ”:ÐÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   Á;BÂBÂBc                 ó¶  — t          j        | j        ¦  «                             ¦   «         }t	          j        dt          ¬¦  «        5 }t          j        | j        ¦  «                             ¦   «         }|j        sJ ‚t          |j	        |j	        z
  ¦  «        dk     sJ ‚t          |j
        |j
        z
  ¦  «        dk     sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr×  r   g{®Gáz„?)r@   r!  r  rc   r   rè   rÒ  r  r‡   ÚuserÚsystem)rB   Úcpu_times_1rÔ  Úcpu_times_2s       r   Útest_cpu_timesz,TestDualProcessImplementation.test_cpu_times¬  s)  € Ý”n T¤XÑ.Ô.×8Ò8Ñ:Ô:ˆÝŒZØ0Ý'ð
ñ 
ô 
ð 	Gð Ý œ.¨¬Ñ2Ô2×<Ò<Ñ>Ô>ˆKØ”:ÐÐÐÝ�{Ô'¨+Ô*:Ñ:Ñ;Ô;¸dÒBÐBÐBÐBÝ�{Ô)¨KÔ,>Ñ>Ñ?Ô?À$ÒFÐFÐFÐFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs   ÁA9CÃCÃCc                 ó´  — t          j        | j        ¦  «                             ¦   «         }t	          j        dt          ¬¦  «        5 }t          j        | j        ¦  «                             ¦   «         }t          t          |¦  «        ¦  «        D ]&}t          ||         ||         z
  ¦  «        dk     sJ ‚Œ'|j
        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz(psutil._psplatform.cext.proc_io_countersr   rF   )r@   r!  r  rŠ  r   rè   rÒ  r}  rb   r‡   r  )rB   Úio_counters_1rÔ  Úio_counters_2r{  s        r   r‘  z.TestDualProcessImplementation.test_io_counters·  s  € Ýœ t¤xÑ0Ô0×<Ò<Ñ>Ô>ˆÝŒZØ6Ý'ð
ñ 
ô 
ð 	ð Ý"œN¨4¬8Ñ4Ô4×@Ò@ÑBÔBˆMÝ�3˜}Ñ-Ô-Ñ.Ô.ð Dð D�Ý˜=¨Ô+¨m¸AÔ.>Ñ>Ñ?Ô?À!ÒCÐCÐCÐCÐCØ”:ÐÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÁA8CÃCÃCc                 ó:  — t          j        | j        ¦  «                             ¦   «         }t	          j        dt          ¬¦  «        5 }t          j        | j        ¦  «                             ¦   «         |k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz(psutil._psplatform.cext.proc_num_handlesr   )r@   r!  r  r?  r   rè   rÒ  r  )rB   r?  rÔ  s      r   rž  z.TestDualProcessImplementation.test_num_handlesÂ  sÚ   € Ý”n T¤XÑ.Ô.×:Ò:Ñ<Ô<ˆÝŒZØ6Ý'ð
ñ 
ô 
ð 	ð Ý”> $¤(Ñ+Ô+×7Ò7Ñ9Ô9¸[ÒHÐHÐHÐHØ”:ÐÐÐÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	rÙ  c                 óN  — t          j        ¦   «         D ]�}	 t                               |d¬¦  «        }t                               |d¬¦  «        }||k    sJ ‚ŒD# t          $ r@}t          |¦  «        }t          |t           j        t           j        f¦  «        s‚ Y d }~Œ‰d }~ww xY wd S )NT)Úuse_pebF)	r@   r¢   rÉ   Úproc_cmdliner¢  r   Ú
isinstancer#  rM  )rB   r  ÚaÚbÚerrs        r   rY  z*TestDualProcessImplementation.test_cmdlineË  sÕ   € Ý”;‘=”=ð 	ð 	ˆCð
Ý×%Ò% c°4Ð%Ñ8Ô8�Ý×%Ò% c°5Ð%Ñ9Ô9�ð ˜A’v�v�v�v�vøõ ð ð ð Ý% cÑ*Ô*�Ý!Ø�&Ô-­vÔ/CÐDñô ð ð ðð ð ð ð øøøøðøøøð		ð 	s   —8AÁ
B"Á"6BÂB"N)r   r   r   rÌ  r¬  r  r  rt  rË  rß  r‘  rž  rY  r   r   r   rÎ  rÎ  ‚  s±   € € € € € ðð ð ð'ð 'ñ „[ð'ð ðð ñ „[ððð ð ðð ð ð	Gð 	Gð 	Gð	ð 	ð 	ðð ð ðð ð ð ð r   rÎ  c                   ón   ‡ — e Zd ZdZed„ ¦   «         ZddgZˆ fd„Zˆ fd„Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zˆ xZS )ÚRemoteProcessTestCasez×Certain functions require calling ReadProcessMemory.
    This trivially works when called on the current process.
    Check that this works on other processes, especially when they
    have a different bitness.
    c                  ó$  — d} t          j         d¦  «        D ]x}t          j        |d| gt          j        t          j        ¬¦  «        }|                     ¦   «         \  }}|                     ¦   «          |t          t           ¦  «        k    r|c S Œyd S )Nz6import sys; sys.stdout.write(str(sys.maxsize > 2**32))zC:\Python*\python.exeú-c)ÚargsÚstdoutÚstderr)	ÚglobÚ
subprocessÚPopenÚPIPEÚSTDOUTÚcommunicaterL  r.  r   )ÚcodeÚfilenamerQ   Úoutputr½  s        r   Úfind_other_interpreterz,RemoteProcessTestCase.find_other_interpreterâ  s£   € ð Hˆõ œ	Ð":Ñ;Ô;ð 		 ð 		 ˆHÝÔ#Ø  dÐ+Ý!”Ý!Ô(ðñ ô ˆDð
 ×(Ò(Ñ*Ô*‰IˆF�AØ�IŠI‰KŒKˆKØ�¥˜\Ñ*Ô*Ò*Ð*Ø���ð +ð		 ð 		 r   rî  zimport sys; sys.stdin.read()c                 ób  •— t          ¦   «                              ¦   «          |                      ¦   «         }|€t          j        d¦  «        ‚t
          rt          j        | _        || _	        n|| _        t          j        | _	        t          j                             ¦   «         }t          t          j        ¦   «         ¦  «        |d<   |                      | j	        g| j        z   |t"          j        ¬¦  «        | _        |                      | j        g| j        z   |t"          j        ¬¦  «        | _        d S )Nz0could not find interpreter with opposite bitnessÚTHINK_OF_A_NUMBER)ÚenvÚstdin)ÚsuperÚsetUprû  r   r!   r   ÚsysÚ
executableÚpython64Úpython32r>   r?   Úcopyr.  r>  r   Ú	test_argsró  rõ  Úproc32Úproc64)rB   Úother_pythonrþ  Ú	__class__s      €r   r  zRemoteProcessTestCase.setUpö  sþ   ø€ Ý‰Œ�Š‰Œˆà×2Ò2Ñ4Ô4ˆØÐÝ”+ØBñô ð õ ð 	+ÝœNˆDŒMØ(ˆDŒMˆMà(ˆDŒMÝœNˆDŒMåŒj�oŠoÑÔˆÝ#&¥r¤y¡{¤{Ñ#3Ô#3ˆÐÑ Ø×)Ò)ØŒ]ˆO˜dœnÑ,°#½Z¼_ð *ñ 
ô 
ˆŒð ×)Ò)ØŒ]ˆO˜dœnÑ,°#½Z¼_ð *ñ 
ô 
ˆŒˆˆr   c                 ó¬   •— t          ¦   «                              ¦   «          | j                             ¦   «          | j                             ¦   «          d S r*   )r   ÚtearDownr  r÷  r	  )rB   r  s    €r   r  zRemoteProcessTestCase.tearDown  sG   ø€ Ý‰Œ×ÒÑÔÐØŒ×ÒÑ!Ô!Ð!ØŒ×ÒÑ!Ô!Ð!Ð!Ð!r   c                 óÞ   — t          j        | j        j        ¦  «        }t	          |                     ¦   «         ¦  «        dk    sJ ‚|                     ¦   «         dd …         | j        k    sJ ‚d S ©Né   r'   )r@   r!  r  r  rb   r#   r  r%  s     r   Útest_cmdline_32z%RemoteProcessTestCase.test_cmdline_32  ó_   € ÝŒN˜4œ;œ?Ñ+Ô+ˆÝ�1—9’9‘;”;ÑÔ 1Ò$Ð$Ð$Ð$Ø�yŠy‰{Œ{˜1˜2˜2Œ $¤.Ò0Ð0Ð0Ð0Ð0Ð0r   c                 óÞ   — t          j        | j        j        ¦  «        }t	          |                     ¦   «         ¦  «        dk    sJ ‚|                     ¦   «         dd …         | j        k    sJ ‚d S r  )r@   r!  r	  r  rb   r#   r  r%  s     r   Útest_cmdline_64z%RemoteProcessTestCase.test_cmdline_64  r  r   c                 ó˜   — t          j        | j        j        ¦  «        }|                     ¦   «         t          j        ¦   «         k    sJ ‚d S r*   )r@   r!  r  r  r¤  r>   Úgetcwdr%  s     r   Útest_cwd_32z!RemoteProcessTestCase.test_cwd_32  ó:   € ÝŒN˜4œ;œ?Ñ+Ô+ˆØ�uŠu‰wŒw�"œ)™+œ+Ò%Ð%Ð%Ð%Ð%Ð%r   c                 ó˜   — t          j        | j        j        ¦  «        }|                     ¦   «         t          j        ¦   «         k    sJ ‚d S r*   )r@   r!  r	  r  r¤  r>   r  r%  s     r   Útest_cwd_64z!RemoteProcessTestCase.test_cwd_64!  r  r   c                 óÎ   — t          j        | j        j        ¦  «        }|                     ¦   «         }d|v sJ ‚|d         t          t          j        ¦   «         ¦  «        k    sJ ‚d S )Nrý  )r@   r!  r  r  r?   r.  r>   r>  )rB   r&  Úes      r   Útest_environ_32z%RemoteProcessTestCase.test_environ_32%  s^   € ÝŒN˜4œ;œ?Ñ+Ô+ˆØ�IŠI‰KŒKˆØ" aÐ'Ð'Ð'Ð'ØÐ$Ô%­­R¬Y©[¬[Ñ)9Ô)9Ò9Ð9Ð9Ð9Ð9Ð9r   c                 ó˜   — t          j        | j        j        ¦  «        }	 |                     ¦   «          d S # t           j        $ r Y d S w xY wr*   )r@   r!  r	  r  r?   r#  r%  s     r   Útest_environ_64z%RemoteProcessTestCase.test_environ_64+  sP   € ÝŒN˜4œ;œ?Ñ+Ô+ˆð	Ø�IŠI‰KŒKˆKˆKˆKøÝÔ"ð 	ð 	ð 	ØˆDˆDð	øøøs    6 ¶A	ÁA	)r   r   r   rÌ  Ústaticmethodrû  r  r  r  r  r  r  r  r  r  Ú__classcell__)r  s   @r   rì  rì  Ú  sÝ   ø€ € € € € ðð ð ð ð  ñ „\ð ð" Ð5Ð6€Ið
ð 
ð 
ð 
ð 
ð0"ð "ð "ð "ð "ð
1ð 1ð 1ð
1ð 1ð 1ð
&ð &ð &ð&ð &ð &ð:ð :ð :ðð ð ð ð ð ð r   rì  c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestServicesc                 ó¬  — h d£}h d£}h d£}t          j        ¦   «         D �]²}|                     ¦   «         }t          |d         t          ¦  «        sJ ‚|d                              ¦   «         sJ ‚t          |d         t          ¦  «        sJ ‚t          |d         t          ¦  «        sJ ‚|d         |v sJ ‚|d         �t          j        |d         ¦  «         t          |d	         t          ¦  «        sJ ‚t          |d         t          ¦  «        sJ ‚t          |d
         t          ¦  «        sJ ‚|d
         |v sJ ‚|d         |v sJ ‚t          |d         t          ¦  «        sJ ‚|                     ¦   «         }|�*t          j        |¦  «        }|                     ¦   «         sJ ‚t          j	        | 
                    ¦   «         ¦  «        }||k    sJ ‚�Œ´d S )N>   ÚstopÚpauseÚstartÚpausedÚrunningÚstoppedÚcontinue>   ÚmanualÚdisabledÚ	automatic>   r(  r)  r*  Ústop_pendingÚpause_pendingÚstart_pendingÚcontinue_pendingr-  Údisplay_namer/  Ústatusr  ÚbinpathÚ
start_typeÚdescription)r@   Úwin_service_iterÚas_dictrç  r.  r/   r!  r  Ú
is_runningÚwin_service_getr-  )rB   Úvalid_statusesÚvalid_start_typesÚservr7   r  r&  Úss           r   Útest_win_service_iterz"TestServices.test_win_service_iter:  sö  € ð
ð 
ð 
ˆð @Ð?Ð?Ðð
ð 
ð 
ˆõ Ô+Ñ-Ô-ð 	ñ 	ˆDØ—<’<‘>”>ˆDÝ˜d 6œl­CÑ0Ô0Ð0Ð0Ð0Ø˜”<×%Ò%Ñ'Ô'Ð'Ð'Ð'Ý˜d >Ô2µCÑ8Ô8Ð8Ð8Ð8Ý˜d :Ô.µÑ4Ô4Ð4Ð4Ð4Ø˜”> ^Ð3Ð3Ð3Ð3Ø�EŒ{Ð&Ý”˜t Eœ{Ñ+Ô+Ð+Ý˜d 9œo­sÑ3Ô3Ð3Ð3Ð3Ý˜d :Ô.µÑ4Ô4Ð4Ð4Ð4Ý˜d <Ô0µ#Ñ6Ô6Ð6Ð6Ð6Ø˜Ô%Ð):Ð:Ð:Ð:Ð:Ø˜”> ^Ð3Ð3Ð3Ð3Ý˜d =Ô1µ3Ñ7Ô7Ð7Ð7Ð7Ø—(’(‘*”*ˆCØˆÝ”N 3Ñ'Ô'�Ø—|’|‘~”~Ð%Ð%Ð%åÔ& t§y¢y¡{¤{Ñ3Ô3ˆAà˜1’9�9�9�9‘9ð-	ð 	r   c                 óö  — t           j        j        j        }t           j        j        j        }t          t          j        ¦   «         ¦  «                             ¦   «         }t          j	        t           j
        ¦  «        5 }t          j        |dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   |j        j        |dz   k    sJ ‚t          j        |¦  «        }t          ddd¦  «        }||_        t          j        d|¬¦  «        5  t          j	        t           j
        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          j        d|¬¦  «        5  t          j	        t           j
        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          ddd¦  «        }||_        t          j        d|¬¦  «        5  t          j	        t           j        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          j        d|¬¦  «        5  t          j	        t           j        ¦  «        5  |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         t)          |¦  «        v sJ ‚|                     ¦   «         t)          |¦  «        v sJ ‚|                     ¦   «         t-          |¦  «        v sJ ‚|                     ¦   «         t-          |¦  «        v sJ ‚d S )Nz???r   Úmsgz/psutil._psplatform.cext.winservice_query_statusr   z/psutil._psplatform.cext.winservice_query_config)r@   r©  rÉ   ÚERROR_SERVICE_DOES_NOT_EXISTÚERROR_ACCESS_DENIEDÚnextr8  r-  r   r"  rM  r;  rœ  r¢  r£  r   rè   r4  r/  r#  r.  r3  Úrepr)rB   rC  rD  r-  ÚcmÚservicer¦  s          r   Útest_win_service_getz!TestServices.test_win_service_getf  s]  € åÔÔ#Ô@ð 	%õ %Ô0Ô5ÔIÐå•FÔ+Ñ-Ô-Ñ.Ô.×3Ò3Ñ5Ô5ˆÝŒ]�6Ô/Ñ0Ô0ð 	1°BÝÔ" 4¨%¡<Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1àŒxŒ}  u¡Ò,Ð,Ð,Ð,õ Ô(¨Ñ.Ô.ˆÝ�a˜ Ñ"Ô"ˆØ3ˆŒÝŒZØ=È3ð
ñ 
ô 
ð 	!ð 	!õ ”�vÔ3Ñ4Ô4ð !ð !Ø—’Ñ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!õ
 ŒZØ=È3ð
ñ 
ô 
ð 	#ð 	#õ ”�vÔ3Ñ4Ô4ð #ð #Ø× Ò Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ �a˜ Ñ"Ô"ˆØ*ˆŒÝŒZØ=È3ð
ñ 
ô 
ð 	!ð 	!õ ”�vÔ2Ñ3Ô3ð !ð !Ø—’Ñ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!õ
 ŒZØ=È3ð
ñ 
ô 
ð 	#ð 	#õ ”�vÔ2Ñ3Ô3ð #ð #Ø× Ò Ñ"Ô"Ð"ð#ð #ð #ñ #ô #ð #ð #ð #ð #ð #ð #øøøð #ð #ð #ð #ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð �|Š|‰~Œ~¥ W¡¤Ð-Ð-Ð-Ð-Ø×#Ò#Ñ%Ô%­¨W©¬Ð5Ð5Ð5Ð5Ø�|Š|‰~Œ~¥ g¡¤Ð.Ð.Ð.Ð.Ø×#Ò#Ñ%Ô%­¨g©¬Ð6Ð6Ð6Ð6Ð6Ð6sê   Á=B!Â!B%Â(B%ÄEÄ"EÄ7EÅE	ÅEÅ
E	ÅEÅEÅ!EÅ;GÆF;Æ/GÆ;F?	Æ?GÇF?	ÇGÇGÇGÈI"È*IÈ?I"ÉI	ÉI"ÉI	ÉI"É"I&É)I&ÊKÊ"KÊ7KËK	ËKË
K	ËKËKË!KN)r   r   r   r@  rI  r   r   r   r#  r#  8  s3   € € € € € ð*ð *ð *ðX,7ð ,7ð ,7ð ,7ð ,7r   r#  )5rÌ  rØ   rò  r>   r2  rV  r   r:  ró  r  rÆ  ÚwarningsÚunittestr   r@   r   Úpsutil.testsr   r   r   r   r	   r
   r   r   r   r   r   r   Úcatch_warningsÚsimplefilterrG   rA  r\  rS   Úpsutil._pswindowsr   r©  rÉ   rn   ro   r   r$   r=   r8   r:   rq   rë   r  r®  rÎ  rì  r#  r   r   r   ú<module>rP     sé  ðð Ð à €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ø *Ð *Ð *Ð *Ð *Ð *Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø "Ð "Ð "Ð "Ð "Ð "ð ð �4ð Ø	 ˆÔ	 Ñ	"Ô	"ð ð ØˆÔ˜hÑ'Ô'Ð'ØˆˆˆØˆˆˆØÐÐÐØˆ
ˆ
ˆ
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð 2Ø1Ð1Ð1Ð1Ð1Ð1ð ÔÔ€ð „×Ò˜�K¨ÐÑ7Ô7Ø„×Ò�DÐ!@ÐÑAÔAð	ð 	ð 	ð 	ð 	�nñ 	ô 	ñ BÔAñ 8Ô7ð	ðð ð ð  #ð ð ð ð ð,%;ð %;ð %;ð %;ð %;�/ñ %;ô %;ð %;ðPV-ð V-ð V-ð V-ð V-�_ñ V-ô V-ð V-ð|>ð >ð >ð >ð >˜ñ >ô >ð >ðLKð Kð Kð Kð K�/ñ Kô Kð Kð\B,ð B,ð B,ð B,ð B,�_ñ B,ô B,ð B,ðP „×Ò˜�K¨ÐÑ7Ô7ðTð Tð Tð Tð T Nñ Tô Tñ 8Ô7ðTðn „×Ò˜�K¨ÐÑ7Ô7ðUð Uð Uð Uð U˜Nñ Uô Uñ 8Ô7ðUðz „×Ò˜�K¨ÐÑ7Ô7ðY7ð Y7ð Y7ð Y7ð Y7�>ñ Y7ô Y7ñ 8Ô7ðY7ð Y7ð Y7s   Â!CÃCÃC