§
    ±Û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	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 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/  G d#„ d$e,¦  «        Z0 G d%„ d&e,¦  «        Z1 G d'„ d(e,¦  «        Z2 G d)„ d*e,¦  «        Z3 G d+„ d,e,¦  «        Z4 G d-„ d.e,¦  «        Z5 G d/„ d0e,¦  «        Z6 G d1„ d2e,¦  «        Z7dS )3zTests for system APIS.é    N)Úmock)ÚAIX)ÚBSD)ÚFREEBSD)ÚLINUX)ÚMACOS)ÚNETBSD)ÚOPENBSD)ÚPOSIX)ÚSUNOS)ÚWINDOWS)Úbroadcast_addr)ÚAARCH64)ÚASCII_FS)Ú
CI_TESTING)ÚGITHUB_ACTIONS)ÚGLOBAL_TIMEOUT)ÚHAS_BATTERY)ÚHAS_CPU_FREQ)ÚHAS_GETLOADAVG)ÚHAS_NET_IO_COUNTERS)ÚHAS_SENSORS_BATTERY)ÚHAS_SENSORS_FANS)ÚHAS_SENSORS_TEMPERATURES)ÚIS_64BIT)ÚMACOS_12PLUS)ÚPYPY)ÚUNICODE_SUFFIX)ÚPsutilTestCase)Úcheck_net_address)Úpytest)Úretry_on_failurec                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestProcessIterc                 ó¬  — t          j        ¦   «         d„ t          j        ¦   «         D ¦   «         v sJ ‚|                      ¦   «         }|j        d„ t          j        ¦   «         D ¦   «         v sJ ‚t          j        |j        ¦  «        }|                     ¦   «          |                     ¦   «          |j        d„ t          j        ¦   «         D ¦   «         vsJ ‚d S )Nc                 ó   — g | ]	}|j         ‘Œ
S © ©Úpid©Ú.0Úxs     úN/granary/edev/quantum/lib/python3.11/site-packages/psutil/tests/test_system.pyú
<listcomp>z5TestProcessIter.test_pid_presence.<locals>.<listcomp>?   s   € ÐDÐDÐD¨˜qœuÐDÐDÐDó    c                 ó   — g | ]	}|j         ‘Œ
S r'   r(   r*   s     r-   r.   z5TestProcessIter.test_pid_presence.<locals>.<listcomp>A   s   € ÐBÐBÐB q˜QœUÐBÐBÐBr/   c                 ó   — g | ]	}|j         ‘Œ
S r'   r(   r*   s     r-   r.   z5TestProcessIter.test_pid_presence.<locals>.<listcomp>E   s   € Ð FÐ FÐ F¨1 ¤Ð FÐ FÐ Fr/   )	ÚosÚgetpidÚpsutilÚprocess_iterÚspawn_testprocr)   ÚProcessÚkillÚwait©ÚselfÚsprocÚps      r-   Útest_pid_presencez!TestProcessIter.test_pid_presence>   sÉ   € ÝŒy‰{Œ{ÐDÐD­fÔ.AÑ.CÔ.CÐDÑDÔDÐDÐDÐDÐDØ×#Ò#Ñ%Ô%ˆØŒyÐBÐB­FÔ,?Ñ,AÔ,AÐBÑBÔBÐBÐBÐBÐBÝŒN˜5œ9Ñ%Ô%ˆØ	�Š‰ŒˆØ	�Š‰ŒˆØŒyÐ FÐ FµÔ0CÑ0EÔ0EÐ FÑ FÔ FÐFÐFÐFÐFÐFÐFr/   c                 ó°   — t          t          j        ¦   «         ¦  «        }t          |d„ ¬¦  «        t          t	          |¦  «        d„ ¬¦  «        k    sJ ‚d S )Nc                 ó   — | j         S ©Nr(   ©r,   s    r-   ú<lambda>z4TestProcessIter.test_no_duplicates.<locals>.<lambda>I   s   € ¨¬€ r/   )Úkeyc                 ó   — | j         S rA   r(   rB   s    r-   rC   z4TestProcessIter.test_no_duplicates.<locals>.<lambda>J   s   €  1¤5€ r/   )Úlistr4   r5   ÚsortedÚset)r;   Úlss     r-   Útest_no_duplicatesz"TestProcessIter.test_no_duplicatesG   sf   € Ý•&Ô%Ñ'Ô'Ñ(Ô(ˆÝ�b˜o˜oÐ.Ñ.Ô.µ&Ý�‰GŒG˜˜ð3
ñ 3
ô 3
ò 
ð 
ð 
ð 
ð 
ð 
r/   c                 ó”  — t          t          j        ¦   «         ¦  «         t          d¦  «        D ]—}t	          j        dt          j        t          j        ¦   «         ¦  «        ¬¦  «        5  t          t          j        dg¬¦  «        ¦  «        rJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j         	                    ¦   «          Œ˜d S ©Né   zpsutil.Process.as_dict©Úside_effectÚ	cpu_times©Úattrs)
rF   r4   r5   Úranger   ÚpatchÚNoSuchProcessr2   r3   Úcache_clear©r;   r,   s     r-   Útest_emulate_nspz TestProcessIter.test_emulate_nspM   s  € Ý�VÔ Ñ"Ô"Ñ#Ô#Ð#Ý�q‘”ð 	.ð 	.ˆAÝ”Ø(Ý"Ô0µ´±´Ñ=Ô=ðñ ô ð Jð Jõ  ¥Ô 3¸;¸-Ð HÑ HÔ HÑIÔIÐIÐIÐIÐIð	Jð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jõ
 Ô×+Ò+Ñ-Ô-Ð-Ð-ð	.ð 	.s   Á+&BÂB"	Â%B"	c                 óú  — t          t          j        ¦   «         ¦  «         t          d¦  «        D ]Ê}t	          j        dt          j        t          j        ¦   «         ¦  «        ¬¦  «        5  t          j
        t          j        ¦  «        5  t          t          j        dg¬¦  «        ¦  «         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 S rL   )rF   r4   r5   rS   r   rT   ÚAccessDeniedr2   r3   r!   ÚraisesrV   rW   s     r-   Útest_emulate_access_deniedz*TestProcessIter.test_emulate_access_deniedW   s  € Ý�VÔ Ñ"Ô"Ñ#Ô#Ð#Ý�q‘”ð 	.ð 	.ˆAÝ”Ø(Ý"Ô/µ´	±´Ñ<Ô<ðñ ô ð Cð Cõ ”]¥6Ô#6Ñ7Ô7ð Cð CÝ�Ô,°K°=ÐAÑAÔAÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð	Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cõ Ô×+Ò+Ñ-Ô-Ð-Ð-ð	.ð 	.s6   Á+CÂ
$B:Â.CÂ:B>Â>CÃB>ÃCÃC	ÃC	c                 ó  — t          j        dg¬¦  «        D ]/}t          |j                             ¦   «         ¦  «        dgk    sJ ‚Œ0t          j        dg¬¦  «        D ]/}t          |j                             ¦   «         ¦  «        dgk    sJ ‚Œ0t          j        t          ¦  «        5  t          t          j        dg¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        dt          j
        dd¦  «        ¬¦  «        5 }t          j        ddg¬¦  «        D ]$}|j        d         �J ‚|j        d         dk    sJ ‚Œ%|j        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j	        dt          j
        dd¦  «        ¬¦  «        5 }t          ¦   «         }t          j        ddg|¬	¦  «        D ]&}|j        d         |u sJ ‚|j        d         dk    sJ ‚Œ'|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )
Nr)   rQ   Úfooz$psutil._psplatform.Process.cpu_timesr   Ú rN   rP   )rR   Úad_value)r4   r5   rF   ÚinfoÚkeysr!   r[   Ú
ValueErrorr   rT   rZ   ÚcalledÚobject)r;   r=   ÚmÚflags       r-   Ú
test_attrszTestProcessIter.test_attrsb   só  € ÝÔ$¨E¨7Ð3Ñ3Ô3ð 	2ð 	2ˆAÝ˜œŸš™œÑ&Ô&¨5¨'Ò1Ð1Ð1Ð1Ð1åÔ$¨E¨7Ð3Ñ3Ô3ð 	2ð 	2ˆAÝ˜œŸš™œÑ&Ô&¨5¨'Ò1Ð1Ð1Ð1Ð1ÝŒ]�:Ñ&Ô&ð 	5ð 	5Ý•Ô$¨E¨7Ð3Ñ3Ô3Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5åŒZØ2ÝÔ+¨A¨rÑ2Ô2ð
ñ 
ô 
ð 	ð ÝÔ(°°{Ð/CÐDÑDÔDð *ð *�Ø”v˜kÔ*Ð2Ð2Ð2Ø”v˜e”}¨Ò)Ð)Ð)Ð)Ð)Ø”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒZØ2ÝÔ+¨A¨rÑ2Ô2ð
ñ 
ô 
ð 
	ð Ý‘8”8ˆDÝÔ(Ø˜kÐ*°Tðñ ô ð *ð *�ð ”v˜kÔ*¨dÐ2Ð2Ð2Ð2Ø”v˜e”}¨Ò)Ð)Ð)Ð)Ð)Ø”8ˆOˆOˆOˆOð
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s8   Â&$CÃCÃCÄ
AEÅE!Å$E!ÆAG6Ç6G:Ç=G:c                 óº   — t          t          j        ¦   «         ¦  «         t          j        sJ ‚t          j                             ¦   «          t          j        rJ ‚d S rA   )rF   r4   r5   Ú_pmaprV   ©r;   s    r-   Útest_cache_clearz TestProcessIter.test_cache_clear~   sP   € Ý�VÔ Ñ"Ô"Ñ#Ô#Ð#ÝŒ|ÐÐÐÝÔ×'Ò'Ñ)Ô)Ð)Ý”<ÐÐÐÐÐr/   N)	Ú__name__Ú
__module__Ú__qualname__r>   rJ   rX   r\   rh   rl   r'   r/   r-   r$   r$   =   sq   € € € € € ðGð Gð Gð
ð 
ð 
ð.ð .ð .ð	.ð 	.ð 	.ðð ð ð8 ð  ð  ð  ð  r/   r$   c                   ó¶   — e Zd Zej                             eoed¬¦  «        d„ ¦   «         Zej                             eoed¬¦  «        d„ ¦   «         Z	d„ Z
d„ ZdS )ÚTestProcessAPIsz-spawn_testproc() unreliable on PYPY + WINDOWS©Úreasonc                 óh  ‡— ˆfd„}g Š|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }d„ |||fD ¦   «         }t          j        t          ¦  «        5  t	          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t	          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ¦   «         }t	          j        |d|¬¦  «        \  }}t          j        ¦   «         |z
  d	k     sJ ‚|rJ ‚t          |¦  «        d
k    sJ ‚‰rJ ‚|D ]}	t          |	d¦  «        rJ ‚Œt          d¦  «        d„ ¦   «         }
|                     ¦   «           |
||¦  «        \  }}|j        d„ |D ¦   «         v sJ ‚t          r+|                     ¦   «         j        t           j         k    sJ ‚n|                     ¦   «         j        dk    sJ ‚‰|j        gk    sJ ‚|D ]}	t          |	d¦  «        rJ ‚Œt          d¦  «        d„ ¦   «         }|                     ¦   «          |                     ¦   «           |||¦  «        \  }}t%          ‰¦  «        |j        |j        |j        hk    sJ ‚|D ]}	t          |	d¦  «        sJ ‚Œd S )Nc                 ó<   •— ‰                      | j        ¦  «         d S rA   )Úappendr)   )r=   Úpidss    €r-   Úcallbackz1TestProcessAPIs.test_wait_procs.<locals>.callback‹   s   ø€ Ø�KŠK˜œÑÔÐÐÐr/   c                 ó@   — g | ]}t          j        |j        ¦  «        ‘ŒS r'   ©r4   r7   r)   r*   s     r-   r.   z3TestProcessAPIs.test_wait_procs.<locals>.<listcomp>’   ó$   € ÐIÐIÐI¨1•” ¤Ñ&Ô&ÐIÐIÐIr/   éÿÿÿÿ)Útimeouté   )rx   g{®Gáz„?©r}   rx   g      à?é   Ú
returncodeé   c                 ó’   — t          j        | d|¬¦  «        \  }}t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚||fS )Nç¸…ëQ¸ž?r   r~   rM   ©r4   Ú
wait_procsÚlen©Úprocsrx   ÚgoneÚalives       r-   Útest_1z/TestProcessAPIs.test_wait_procs.<locals>.test_1¡   óV   € å Ô+Ø˜t¨hðñ ô ‰KˆD�%õ �t‘9”9 ’>�>�>�>Ý�u‘:”: ’?�?�?�?Ø˜�;Ðr/   c                 ó   — g | ]	}|j         ‘Œ
S r'   r(   r*   s     r-   r.   z3TestProcessAPIs.test_wait_procs.<locals>.<listcomp>¬   s   € Ð2Ð2Ð2¨˜aœeÐ2Ð2Ð2r/   c                 ó’   — t          j        | d|¬¦  «        \  }}t          |¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚||fS )Nr„   r   r€   r   r…   rˆ   s       r-   Útest_2z/TestProcessAPIs.test_wait_procs.<locals>.test_2µ   r�   r/   )r6   r!   r[   rc   r4   r†   Ú	TypeErrorÚtimer‡   Úhasattrr"   Ú	terminater)   r   Úpopr�   ÚsignalÚSIGTERMrH   )r;   rx   Úsproc1Úsproc2Úsproc3r‰   ÚtrŠ   r‹   r=   rŒ   r�   rw   s               @r-   Útest_wait_procszTestProcessAPIs.test_wait_procs†   s˜  ø€ ð
	ð 	ð 	ð 	ð 	ð ˆØ×$Ò$Ñ&Ô&ˆØ×$Ò$Ñ&Ô&ˆØ×$Ò$Ñ&Ô&ˆØIÐI°¸ÀÐ0HÐIÑIÔIˆÝŒ]�:Ñ&Ô&ð 	1ð 	1ÝÔ˜e¨RÐ0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1åŒ]�9Ñ%Ô%ð 	1ð 	1ÝÔ˜e¨aÐ0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1åŒI‰KŒKˆÝÔ'¨°tÀhÐOÑOÔO‰ˆˆeåŒy‰{Œ{˜Q‰ Ò$Ð$Ð$Ð$ØˆˆˆÝ�5‰zŒz˜QŠˆˆˆØˆˆˆØð 	0ð 	0ˆAÝ˜q ,Ñ/Ô/Ð/Ð/Ð/Ð/å	˜"Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×ÒÑÔÐØ�f˜U HÑ-Ô-‰ˆˆeØŒzÐ2Ð2¨TÐ2Ñ2Ô2Ð2Ð2Ð2Ð2Ýð 	.Ø—8’8‘:”:Ô(­V¬^¨OÒ;Ð;Ð;Ð;Ð;à—8’8‘:”:Ô(¨AÒ-Ð-Ð-Ð-Ø˜œ
�|Ò#Ð#Ð#Ð#Øð 	0ð 	0ˆAÝ˜q ,Ñ/Ô/Ð/Ð/Ð/Ð/å	˜"Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð 	×ÒÑÔÐØ×ÒÑÔÐØ�f˜U HÑ-Ô-‰ˆˆeÝ�4‰yŒy˜VœZ¨¬°V´ZÐ@Ò@Ð@Ð@Ð@Øð 	,ð 	,ˆAÝ˜1˜lÑ+Ô+Ð+Ð+Ð+Ð+ð	,ð 	,s$   Á-BÂBÂBÂ4CÃCÃCc                 óö   — |                       ¦   «         }|                       ¦   «         }|                       ¦   «         }d„ |||fD ¦   «         }|D ]}|                     ¦   «          Œt          j        |¦  «         d S )Nc                 ó@   — g | ]}t          j        |j        ¦  «        ‘ŒS r'   rz   r*   s     r-   r.   z>TestProcessAPIs.test_wait_procs_no_timeout.<locals>.<listcomp>Í   r{   r/   )r6   r”   r4   r†   )r;   r˜   r™   rš   r‰   r=   s         r-   Útest_wait_procs_no_timeoutz*TestProcessAPIs.test_wait_procs_no_timeoutÅ   s†   € ð
 ×$Ò$Ñ&Ô&ˆØ×$Ò$Ñ&Ô&ˆØ×$Ò$Ñ&Ô&ˆØIÐI°¸ÀÐ0HÐIÑIÔIˆØð 	ð 	ˆAØ�KŠK‰MŒMˆMˆMÝÔ˜%Ñ Ô Ð Ð Ð r/   c                 ó¢  — |                       ¦   «         }t          j        |j        ¦  «        sJ ‚t          j        |j        ¦  «        }|                     ¦   «          |                     ¦   «          t          j        |j        ¦  «        rJ ‚t          j        d¦  «        rJ ‚t          j        d¦  «        dt          j        ¦   «         v k    sJ ‚d S )Nr|   r   )r6   r4   Ú
pid_existsr)   r7   r8   r9   rw   r:   s      r-   Útest_pid_existszTestProcessAPIs.test_pid_existsÒ   s´   € Ø×#Ò#Ñ%Ô%ˆÝÔ  ¤Ñ+Ô+Ð+Ð+Ð+ÝŒN˜5œ9Ñ%Ô%ˆØ	�Š‰ŒˆØ	�Š‰ŒˆÝÔ$ U¤YÑ/Ô/Ð/Ð/Ð/ÝÔ$ RÑ(Ô(Ð(Ð(Ð(ÝÔ  Ñ#Ô#¨­V¬[©]¬]Ð(:Ò;Ð;Ð;Ð;Ð;Ð;r/   c                 óp  — t          j        ¦   «         }|D ]T}	 t          j        |¦  «        sJ ‚Œ# t          $ r. t	          j        d¦  «         |t          j        ¦   «         vsJ ‚Y ŒQw xY wt          t          |¦  «        dz   t          |¦  «        dz   ¦  «        }|D ]}t          j        |¦  «        rJ ‚Œd S )Ngš™™™™™¹?i˜:  i€>  )r4   rw   r¡   ÚAssertionErrorr’   ÚsleeprS   Úmax)r;   rw   r)   s      r-   Útest_pid_exists_2z!TestProcessAPIs.test_pid_exists_2Ü   sÜ   € ÝŒ{‰}Œ}ˆØð 	0ð 	0ˆCð0ÝÔ(¨Ñ-Ô-Ð-Ð-Ð-Ð-øÝ!ð 0ð 0ð 0õ ”
˜3‘”�Ø¥&¤+¡-¤-Ð/Ð/Ð/Ð/Ð/Ð/ð	0øøøõ
 •S˜‘Y”Y Ñ&­¨D©	¬	°EÑ(9Ñ:Ô:ˆØð 	.ð 	.ˆCÝÔ(¨Ñ-Ô-Ð-Ð-Ð-Ð-ð	.ð 	.s   ™0°5A(Á'A(N)rm   rn   ro   r!   ÚmarkÚskipifr   r   rœ   rŸ   r¢   r§   r'   r/   r-   rq   rq   …   s±   € € € € € Ø„[×ÒØÐ�Ø>ð ñ ô ð9,ð 9,ñ	ô ð9,ðv „[×ÒØÐ�Ø>ð ñ ô ð!ð !ñ	ô ð!ð<ð <ð <ð.ð .ð .ð .ð .r/   rq   c                   ó„   — e Zd Zd„ Zej                             eo ej	        ¦   «          d¬¦  «        d„ ¦   «         Z
d„ ZdS )ÚTestMiscAPIsc                 óœ   — t          j        ¦   «         }t          |t          ¦  «        sJ ‚|dk    sJ ‚|t	          j        ¦   «         k     sJ ‚d S ©Nr   )r4   Ú	boot_timeÚ
isinstanceÚfloatr’   )r;   Úbts     r-   Útest_boot_timezTestMiscAPIs.test_boot_timeì   sP   € ÝÔÑÔˆÝ˜"�eÑ$Ô$Ð$Ð$Ð$Ø�AŠvˆvˆvˆvØ•D”I‘K”KÒÐÐÐÐÐr/   úunreliable on CIrr   c           	      ó‚  — t          j        ¦   «         }|sJ ‚|D �]#}|                      |¬¦  «        5  |j        sJ ‚t	          |j        t
          ¦  «        sJ ‚t	          |j        t
          t          d ¦  «        f¦  «        sJ ‚|j        �+t	          |j        t
          t          d ¦  «        f¦  «        sJ ‚|j         |j         |j	        dk    sJ ‚t          j
                             |j	        ¦  «         t          st          r
|j        �J ‚nt          j        |j        ¦  «         d d d ¦  «         n# 1 swxY w Y   �Œ%d S )N)Úuserç        )r4   ÚusersÚsubTestÚnamer¯   ÚstrÚterminalÚtypeÚhostÚstartedÚdatetimeÚfromtimestampr   r
   r)   r7   )r;   r·   rµ   s      r-   Ú
test_userszTestMiscAPIs.test_usersò   s{  € õ ”‘”ˆØˆˆˆØð 	-ñ 	-ˆDØ—’ 4�Ñ(Ô(ð -ð -Ø”yÐ Ð Ð Ý! $¤)­SÑ1Ô1Ð1Ð1Ð1Ý! $¤-µ#µt¸D±z´zÐ1BÑCÔCÐCÐCÐCØ”9Ð(Ý% d¤iµ#µt¸D±z´zÐ1BÑCÔCÐCÐCÐCØ”�Ø”	�	Ø”| cÒ)Ð)Ð)Ð)ÝÔ!×/Ò/°´Ñ=Ô=Ð=Ýð -�gð -Øœ8Ð+Ð+Ð+Ð+å”N 4¤8Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ùð	-ð 	-s   ³C3D2Ä2D6	Ä9D6	c                 ó  — g d¢}|D ]4}t          t          t          |¦  «        t          ¦  «        s
J |¦   «         ‚Œ5t          j        dk    �rÝt          j        sJ ‚t          j        rJ ‚|                     d¦  «         dt          j
                             ¦   «         v r%t          j        sJ ‚|                     d¦  «         �n˜dt          j
                             ¦   «         v rŸt          j        sJ ‚t          j        t          j        t          j        g                     d¦  «        dk    sJ ‚|                     d	¦  «         |                     d
¦  «         |                     d¦  «         |                     d¦  «         nÙdt          j
                             ¦   «         v s dt          j
                             ¦   «         v r$t          j        sJ ‚|                     d¦  «         nudt          j
                             ¦   «         v r#t          j        sJ ‚|                     d¦  «         n1t          j        sJ ‚t          j        rJ ‚|                     d¦  «         |D ]!}t          t          |¦  «        r
J |¦   «         ‚Œ"d S )N)	r   r   r   r   r   r
   r	   r   r   Úposixr   Úlinuxr   ÚbsdTr~   r   r   r
   r	   ÚsunosÚsolarisr   Údarwinr   r   )r¯   Úgetattrr4   Úboolr2   r¹   r   r   ÚremoveÚsysÚplatformÚlowerr   r   r   r
   r	   Úcountr   r   )r;   Únamesr¹   s      r-   Útest_os_constantszTestMiscAPIs.test_os_constants  so  € ð

ð 

ð 

ˆð ð 	Að 	AˆDÝ�g¥f¨dÑ3Ô3µTÑ:Ô:Ð@Ð@¸DÑ@Ô@Ð@Ð@åŒ7�gÒÑÝ”<ÐÐÐÝ”~Ð%Ð%Ð%Ø�LŠL˜Ñ!Ô!Ð!Ø�#œ,×,Ò,Ñ.Ô.Ð.Ð.Ý”|Ð#Ð#Ð#Ø—’˜WÑ%Ô%Ð%Ñ%Ø�#œ,×,Ò,Ñ.Ô.Ð.Ð.Ý”zÐ!Ð!Ð!Ýœ­¬½¼ÐF×LÒLØñô àòð ð ð ð —’˜UÑ#Ô#Ð#Ø—’˜YÑ'Ô'Ð'Ø—’˜YÑ'Ô'Ð'Ø—’˜XÑ&Ô&Ð&Ð&à�3œ<×-Ò-Ñ/Ô/Ð/Ð/Ø¥¤× 2Ò 2Ñ 4Ô 4Ð4Ð4å”|Ð#Ð#Ð#Ø—’˜WÑ%Ô%Ð%Ð%Ø�Sœ\×/Ò/Ñ1Ô1Ð1Ð1Ý”|Ð#Ð#Ð#Ø—’˜WÑ%Ô%Ð%øå”>Ð!Ð!Ð!Ý”|Ð#Ð#Ð#Ø�LŠL˜Ñ#Ô#Ð#ð ð 	3ð 	3ˆDÝ�v tÑ,Ô,Ð2Ð2¨dÑ2Ô2Ð2Ð2ð	3ð 	3r/   N)rm   rn   ro   r²   r!   r¨   r©   r   r4   r·   rÁ   rÑ   r'   r/   r-   r«   r«   ë   s}   € € € € € ð ð  ð  ð „[×ÒØÐ)˜<˜6œ<™>œ>Ð)Ð2Dð ñ ô ð-ð -ñô ð-ð&/3ð /3ð /3ð /3ð /3r/   r«   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚTestMemoryAPIsc                 ó.  — t          j        ¦   «         }|j        dk    s
J |¦   «         ‚|j        dk    s
J |¦   «         ‚d|j        cxk    rdk    sn J |¦   «         ‚|j        dk    s
J |¦   «         ‚|j        dk    s
J |¦   «         ‚|j        D ]‡}t          ||¦  «        }|dk    rt          |t          ¦  «        sJ ‚|dk    rR|dk    s|                      |›d|› d�¦  «        ‚||j        k    r&|                      |›d|j        › d|› d	|› d�¦  «        ‚Œˆd S )
Nr   éd   ÚpercentÚtotalz < 0 (ú)z > total (total=z, ú=)r4   Úvirtual_memoryr×   Ú	availablerÖ   ÚusedÚfreeÚ_fieldsrÉ   r¯   ÚintÚfail)r;   Úmemr¹   Úvalues       r-   Útest_virtual_memoryz"TestMemoryAPIs.test_virtual_memory;  sc  € ÝÔ#Ñ%Ô%ˆØŒy˜1Š}ˆ}ˆ}˜c‰}Œ}ˆ}ØŒ}˜qÒ Ð Ð  #Ñ Ô Ð Ø�C”KÐ&Ð&Ò&Ð& 3Ò&Ð&Ð&Ð&Ð&¨Ñ&Ô&Ð&ØŒx˜!Š|ˆ|ˆ|˜S‰|Œ|ˆ|ØŒx˜1Š}ˆ}ˆ}˜c‰}Œ}ˆ}Ø”Kð 
	ð 
	ˆDÝ˜C Ñ&Ô&ˆEØ�yÒ Ð Ý! %­Ñ-Ô-Ð-Ð-Ð-Ø�wŠˆØ ’z�zØŸ)š) tÐ$=Ð$=°UÐ$=Ð$=Ð$=Ñ>Ô>Ð>Ø˜3œ9Ò$Ð$ØŸ)š)ØÐOÐO°3´9ÐOÐOÀÐOÐOÀuÐOÐOÐOñô ð øð
	ð 
	r/   c                 ó–  — t          j        ¦   «         }|j        dk    sJ ‚|j        dk    s
J |¦   «         ‚|j        dk    s
J |¦   «         ‚|j        dk    r|j        dk    s
J |¦   «         ‚n|j        dk    s
J |¦   «         ‚d|j        cxk    rdk    sn J |¦   «         ‚|j        dk    s
J |¦   «         ‚|j        dk    s
J |¦   «         ‚d S )N)r×   rÜ   rÝ   rÖ   ÚsinÚsoutr   rÕ   )	r4   Úswap_memoryrÞ   r×   rÜ   rÝ   rÖ   rå   ræ   )r;   rá   s     r-   Útest_swap_memoryzTestMemoryAPIs.test_swap_memoryN  sî   € ÝÔ Ñ"Ô"ˆØŒ{ð 
ò 
ð 
ð 
ð 
ð Œy˜AŠ~ˆ~ˆ~˜s‰~Œ~ˆ~ØŒx˜1Š}ˆ}ˆ}˜c‰}Œ}ˆ}ØŒ9�qŠ=ˆ=à”8˜a’<�<�< ‘<”<�<�<à”8˜q’=�=�= #‘=”=�=Ø�C”KÐ&Ð&Ò&Ð& 3Ò&Ð&Ð&Ð&Ð&¨Ñ&Ô&Ð&ØŒw˜!Š|ˆ|ˆ|˜S‰|Œ|ˆ|ØŒx˜1Š}ˆ}ˆ}˜c‰}Œ}ˆ}ˆ}ˆ}r/   N)rm   rn   ro   rã   rè   r'   r/   r-   rÓ   rÓ   :  s2   € € € € € ðð ð ð&"ð "ð "ð "ð "r/   rÓ   c                   óÔ  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
j                             eoed¬	¦  «         ed
¦  «        d„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Ze
j                             eo ej        ¦   «         dk    d¬	¦  «        e
j                             e d¬	¦  «        d„ ¦   «         ¦   «         Ze
j                             e d¬	¦  «        d„ ¦   «         ZdS )ÚTestCpuAPIsc                 ó|  — t          j        ¦   «         }|€J ‚|t          t          j        d¬¦  «        ¦  «        k    sJ ‚|dk    sJ ‚t          j                             d¦  «        rSt          d¦  «        5 }|                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   d|vrt          j
        d¦  «        ‚d S d S )NT©Úpercpur~   z/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r4   Ú	cpu_countr‡   rP   r2   ÚpathÚexistsÚopenÚreadr!   Úskip)r;   ÚlogicalÚfdÚcpuinfo_datas       r-   Útest_cpu_count_logicalz"TestCpuAPIs.test_cpu_count_logicalf  s  € ÝÔ"Ñ$Ô$ˆØÐ"Ð"Ð"Ø�#�fÔ.°dÐ;Ñ;Ô;Ñ<Ô<Ò<Ð<Ð<Ð<Ø˜!Š|ˆ|ˆ|ˆ|åŒ7�>Š>˜/Ñ*Ô*ð 	IÝ�oÑ&Ô&ð )¨"Ø!Ÿwšw™yœy�ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )à LÐ0Ð0Ý”kÐ"GÑHÔHÐHð		Ið 	Ið 1Ð0s   Á6BÂBÂBc                 óú   — t          j        ¦   «         }t          j        d¬¦  «        }|€t          j        d¦  «        ‚t          r%t          j        ¦   «         d d…         dk    r|�J ‚d S |dk    sJ ‚||k    sJ ‚d S )NF©rô   zcpu_count_cores() is NonerM   )é   r~   r~   )r4   rî   r!   ró   r   rÌ   Úgetwindowsversion)r;   rô   Úcoress      r-   Útest_cpu_count_coresz TestCpuAPIs.test_cpu_count_coresr  sŽ   € ÝÔ"Ñ$Ô$ˆÝÔ ¨Ð/Ñ/Ô/ˆØˆ=Ý”+Ð9Ñ:Ô:Ð:Ýð 	$•sÔ,Ñ.Ô.¨r°¨rÔ2°fÒ<Ð<Ø�=�=�=�=�=à˜A’:�:�:�:Ø˜eÒ#Ð#Ð#Ð#Ð#Ð#r/   c                 óH  — dD ]ž}t          j        d|¬¦  «        5 }t          j        ¦   «         �J ‚|j        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          j        d|¬¦  «        5 }t          j        d¬¦  «        �J ‚|j        sJ ‚	 d d d ¦  «         n# 1 swxY w Y   ŒŸd S )N)r|   r   Nz$psutil._psplatform.cpu_count_logical©Úreturn_valuez"psutil._psplatform.cpu_count_coresFrù   )r   rT   r4   rî   rd   )r;   Úvalrf   s      r-   Útest_cpu_count_nonezTestCpuAPIs.test_cpu_count_none}  sE  € à ð 
	 ð 
	 ˆCÝ”Ø6ÀSðñ ô ð  àÝÔ'Ñ)Ô)Ð1Ð1Ð1Ø”x����ð	 ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  õ
 ”Ø4À3ðñ ô ð  àÝÔ'°Ð6Ñ6Ô6Ð>Ð>Ð>Ø”x����ð	 ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  øð
	 ð 
	 s#   ›AÁA	ÁA	Á(!BÂB	ÂB	c                 ó$  — d}t          j        ¦   «         }t          |¦  «         |D ]&}t          |t          ¦  «        sJ ‚|dk    sJ ‚||z  }Œ't          t          |t          |¦  «        z
  ¦  «        d¦  «        dk    sJ ‚t          |¦  «         d S )Nr   r¶   rú   )r4   rP   Úsumr¯   r°   ÚroundÚabsrº   )r;   r×   ÚtimesÚcp_times       r-   Útest_cpu_timeszTestCpuAPIs.test_cpu_times‹  s›   € àˆÝÔ Ñ"Ô"ˆÝˆE‰
Œ
ˆ
Øð 	ð 	ˆGÝ˜g¥uÑ-Ô-Ð-Ð-Ð-Ø˜c’>�>�>�>Ø�WÑˆEˆEÝ•S˜¥ U¡¤Ñ+Ñ,Ô,¨aÑ0Ô0°AÒ5Ð5Ð5Ð5ÝˆE‰
Œ
ˆ
ˆ
ˆ
r/   c                 óN  — t          t          j        ¦   «         ¦  «        }t          j        ¦   «         t          z   }t          j        ¦   «         |k     r?t          t          j        ¦   «         ¦  «        }||k    rd S t          j        ¦   «         |k     °?|                      d¦  «        ‚)Nztime remained the same)r  r4   rP   r’   r   rà   )r;   Út1Ústop_atÚt2s       r-   Útest_cpu_times_time_increasesz)TestCpuAPIs.test_cpu_times_time_increases©  s…   € å•Ô!Ñ#Ô#Ñ$Ô$ˆÝ”)‘+”+¥Ñ.ˆÝŒi‰kŒk˜GÒ#Ð#Ý•VÔ%Ñ'Ô'Ñ(Ô(ˆBØ�BŠwˆwØ�õ Œi‰kŒk˜GÒ#Ð#ð �iŠiÐ0Ñ1Ô1Ð1r/   c           	      óÊ  — t          j        d¬¦  «        D ]~}d}t          |¦  «         |D ]&}t          |t          ¦  «        sJ ‚|dk    sJ ‚||z  }Œ't          t          |t          |¦  «        z
  ¦  «        d¦  «        dk    sJ ‚t          |¦  «         Œt          t          j        d¬¦  «        d         ¦  «        t          t          j        d¬¦  «        ¦  «        k    sJ ‚d S )NTrì   r   r¶   rú   F)	r4   rP   r  r¯   r°   r  r  rº   r‡   )r;   r  r×   r  s       r-   Útest_per_cpu_timeszTestCpuAPIs.test_per_cpu_times³  s  € åÔ%¨TÐ2Ñ2Ô2ð 	ð 	ˆEØˆEÝ�‰JŒJˆJØ ð !ð !�Ý! '­5Ñ1Ô1Ð1Ð1Ð1Ø #’~�~�~�~Ø˜Ñ ��Ý�˜U¥S¨¡Z¤ZÑ/Ñ0Ô0°!Ñ4Ô4¸Ò9Ð9Ð9Ð9Ý�‰JŒJˆJˆJÝ•6Ô#¨4Ð0Ñ0Ô0°Ô3Ñ4Ô4½ÝÔ EÐ*Ñ*Ô*ñ9
ô 9
ò 
ð 
ð 
ð 
ð 
ð 
r/   c                 ó€  — t          j        d¬¦  «        }t          j        ¦   «         t          z   }	 t          j        ¦   «         |k    r|                      d¦  «        S t          j        d¬¦  «        }t          ||¦  «        D ];\  }}t          j        |¦  «        t          j        |¦  «        }}||z
  }|dk    r d S Œ<ŒŽ)NTrì   r}   gš™™™™™©?)r4   rP   r’   r   rà   ÚzipÚ_cpu_busy_time)r;   Útot1Ú	giveup_atÚtot2r  r  Ú
differences          r-   Útest_per_cpu_times_2z TestCpuAPIs.test_per_cpu_times_2Õ  sÁ   € õ Ô tÐ,Ñ,Ô,ˆÝ”I‘K”K¥.Ñ0ˆ	ð	 ÝŒy‰{Œ{˜iÒ'Ð'Ø—y’y Ñ+Ô+Ð+ÝÔ#¨4Ð0Ñ0Ô0ˆDÝ˜d D™/œ/ð  ð  ‘��BÝÔ.¨rÑ2Ô2µFÔ4IÈ"Ñ4MÔ4M�B�Ø "™W�
Ø Ò%Ð%Ø˜4˜4ð &ð	 r/   zunreliable on OPENBSD + CIrr   r‚   c           	      ó€  — t          j        ¦   «         }t          j        d¬¦  «        }|                     d„ t          |Ž D ¦   «         ¦  «        }|j        D ]g}|                      |||¬¦  «        5  t          t          ||¦  «        t          ||¦  «        z
  ¦  «        dk     sJ ‚	 d d d ¦  «         n# 1 swxY w Y   Œhd S )NTrì   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r'   )r  )r+   Únums     r-   r.   z9TestCpuAPIs.test_cpu_times_comparison.<locals>.<listcomp>î  s   € Ð#FÐ#FÐ#F°¥C¨¡H¤HÐ#FÐ#FÐ#Fr/   )ÚfieldÚbaseÚper_cpurM   )r4   rP   Ú_maker  rÞ   r¸   r  rÉ   )r;   r  r  Úsummed_valuesr  s        r-   Útest_cpu_times_comparisonz%TestCpuAPIs.test_cpu_times_comparisonä  s  € õ ÔÑ!Ô!ˆÝÔ"¨$Ð/Ñ/Ô/ˆØŸ
š
Ð#FÐ#F½¸W¸Ð#FÑ#FÔ#FÑGÔGˆØ”\ð 	ð 	ˆEØ—’ E°¸g�ÑFÔFð ð å�  eÑ,Ô,­w°}ÀeÑ/LÔ/LÑLÑMÔMØòð ð ð ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð	ð 	s   Á05B2Â2B6	Â9B6	c           
      ó2  — 	 t          |t          ¦  «        sJ ‚|dk    sJ ‚|dt          j        ¦   «         z  k    sJ ‚d S # t          $ rM}t	          d                     |t          j        |¦  «        t          j        |¦  «        ¦  «        ¦  «        ‚d }~ww xY w)Nr¶   g      Y@z
{}
last={}
new={})r¯   r°   r4   rî   r¤   ÚformatÚpprintÚpformat)r;   rÖ   Úlast_retÚnew_retÚerrs        r-   Ú_test_cpu_percentzTestCpuAPIs._test_cpu_percentö  s®   € ð		Ý˜g¥uÑ-Ô-Ð-Ð-Ð-Ø˜c’>�>�>�>Ø˜e¥fÔ&6Ñ&8Ô&8Ñ8Ò8Ð8Ð8Ð8Ð8Ð8øÝð 	ð 	ð 	Ý Ø'×.Ò.Ø�œ¨Ñ1Ô1µ6´>À'Ñ3JÔ3Jñô ñô ð øøøøð	øøøs   ‚;? ¿
BÁ	ABÂBc                 ó>  — t          j        d¬¦  «        }t          d¦  «        D ]0}t          j        d ¬¦  «        }|                      |||¦  «         |}Œ1t	          j        t          ¦  «        5  t          j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nçü©ñÒMbP?)ÚintervalrÕ   r|   )r4   Úcpu_percentrS   r)  r!   r[   rc   )r;   ÚlastÚ_Únews       r-   Útest_cpu_percentzTestCpuAPIs.test_cpu_percent  sä   € ÝÔ!¨5Ð1Ñ1Ô1ˆÝ�s‘”ð 	ð 	ˆAÝÔ$¨dÐ3Ñ3Ô3ˆCØ×"Ò" 3¨¨cÑ2Ô2Ð2ØˆDˆDÝŒ]�:Ñ&Ô&ð 	,ð 	,ÝÔ¨Ð+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   Á/BÂBÂBc                 óš  — t          j        dd¬¦  «        }t          |¦  «        t          j        ¦   «         k    sJ ‚t	          d¦  «        D ]6}t          j        d d¬¦  «        }|D ]}|                      |||¦  «         Œ|}Œ7t          j        t          ¦  «        5  t          j        dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr,  T©r-  rí   rÕ   r|   )	r4   r.  r‡   rî   rS   r)  r!   r[   rc   ©r;   r/  r0  r1  rÖ   s        r-   Útest_per_cpu_percentz TestCpuAPIs.test_per_cpu_percent  s  € ÝÔ!¨5¸Ð>Ñ>Ô>ˆÝ�4‰yŒy�FÔ,Ñ.Ô.Ò.Ð.Ð.Ð.Ý�s‘”ð 	ð 	ˆAÝÔ$¨d¸4Ð@Ñ@Ô@ˆCØð ;ð ;�Ø×&Ò& w°°cÑ:Ô:Ð:Ð:ØˆDˆDÝŒ]�:Ñ&Ô&ð 	9ð 	9ÝÔ¨°4Ð8Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s   ÂC Ã CÃCc                 ó�  — t          j        d¬¦  «        }t          d¦  «        D ]Y}t          j        d ¬¦  «        }|D ]}|                      |||¦  «         Œ|                      t	          |¦  «        ||¦  «         |}ŒZt          j        t          ¦  «        5  t          j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r+  )r4   Úcpu_times_percentrS   r)  r  r!   r[   rc   r5  s        r-   Útest_cpu_times_percentz"TestCpuAPIs.test_cpu_times_percent  s  € ÝÔ'°Ð7Ñ7Ô7ˆÝ�s‘”ð 	ð 	ˆAÝÔ*°DÐ9Ñ9Ô9ˆCØð ;ð ;�Ø×&Ò& w°°cÑ:Ô:Ð:Ð:Ø×"Ò"¥3 s¡8¤8¨T°3Ñ7Ô7Ð7ØˆDˆDÝŒ]�:Ñ&Ô&ð 	2ð 	2ÝÔ$¨bÐ1Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð 	2ð 	2s   ÂB;Â;B?ÃB?c                 ó\  — t          j        dd¬¦  «        }t          |¦  «        t          j        ¦   «         k    sJ ‚t	          d¦  «        D ]_}t          j        d d¬¦  «        }|D ]B}|D ]}|                      |||¦  «         Œ|                      t          |¦  «        ||¦  «         ŒC|}Œ`d S )Nr,  Tr4  rÕ   )r4   r8  r‡   rî   rS   r)  r  )r;   r/  r0  r1  ÚcpurÖ   s         r-   Útest_per_cpu_times_percentz&TestCpuAPIs.test_per_cpu_times_percent!  sÌ   € ÝÔ'°¸tÐDÑDÔDˆÝ�4‰yŒy�FÔ,Ñ.Ô.Ò.Ð.Ð.Ð.Ý�s‘”ð 	ð 	ˆAÝÔ*°DÀÐFÑFÔFˆCØð <ð <�Ø"ð ?ð ?�GØ×*Ò*¨7°D¸#Ñ>Ô>Ð>Ð>Ø×&Ò&¥s¨3¡x¤x°°sÑ;Ô;Ð;Ð;ØˆDˆDð	ð 	r/   c                 ó6  — t          j        d¬¦  «         d„ t          j        d¬¦  «        D ¦   «         }t          j        d|¬¦  «        5  t          j        d¬¦  «        D ]}|D ]}|                      |d d ¦  «         ŒŒ	 d d d ¦  «         d S # 1 swxY w Y   d S )NTrì   c           
      óŠ   — g | ]@}|                      d „ t          t          |j        ¦  «        ¦  «        D ¦   «         ¦  «        ‘ŒAS )c                 ó   — g | ]}d ‘ŒS )r   r'   r*   s     r-   r.   zNTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>.<listcomp>0  s   € Ð6Ð6Ð6˜1�QÐ6Ð6Ð6r/   )r  rS   r‡   rÞ   r*   s     r-   r.   zCTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>/  sS   € ð 
ð 
ð 
àð �GŠGÐ6Ð6¥¥c¨!¬)¡n¤nÑ 5Ô 5Ð6Ñ6Ô6Ñ7Ô7ð
ð 
ð 
r/   zpsutil.cpu_timesrÿ   )r4   r8  rP   r   rT   r)  )r;   Ú
zero_timesr;  rÖ   s       r-   Ú#test_per_cpu_times_percent_negativez/TestCpuAPIs.test_per_cpu_times_percent_negative,  s)  € åÔ ¨Ð-Ñ-Ô-Ð-ð
ð 
åÔ%¨TÐ2Ñ2Ô2ð
ñ 
ô 
ˆ
õ ŒZÐ*¸ÐDÑDÔDð 	@ð 	@ÝÔ/°tÐ<Ñ<Ô<ð @ð @�Ø"ð @ð @�GØ×*Ò*¨7°D¸$Ñ?Ô?Ð?Ð?ð@ð@ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 	@ð 	@s   Á5BÂBÂBc                 ó°   — t          j        ¦   «         }|j        dk    sJ ‚|j        D ]-}t          ||¦  «        }|dk    sJ ‚t          s|dv r|dk    sJ ‚Œ.d S )N)Úctx_switchesÚ
interruptsÚsoft_interruptsÚsyscallsr   >   rD  rC  )r4   Ú	cpu_statsrÞ   rÉ   r   )r;   Úinfosr¹   râ   s       r-   Útest_cpu_statszTestCpuAPIs.test_cpu_stats8  sˆ   € åÔ Ñ"Ô"ˆØŒ}ð !
ò 
ð 
ð 
ð 
ð ”Mð 	!ð 	!ˆDÝ˜E 4Ñ(Ô(ˆEØ˜A’:�:�:�:åð !˜4Ð#AÐAÐAØ˜q’y�y�y�yøð	!ð 	!r/   Úarm64zskipped due to #1892únot supportedc                 ó2  — d„ }t          j        d¬¦  «        }t          st          r|st	          j        d¦  «        ‚|s
J |¦   «         ‚ |t          j        d¬¦  «        g¦  «         t          r&t          |¦  «        t          j        ¦   «         k    sJ ‚d S d S )Nc                 óä   — | D ]l}|j         dk    sJ ‚|j        dk    r|j        |j        k    sJ ‚|j         D ]8}t          ||¦  «        }t	          |t
          t          f¦  «        sJ ‚|dk    sJ ‚Œ9Œmd S )N)ÚcurrentÚminr¦   r¶   r   )rÞ   r¦   rN  rÉ   r¯   rß   r°   )rI   Úntr¹   râ   s       r-   Úcheck_lsz+TestCpuAPIs.test_cpu_freq.<locals>.check_lsN  s�   € Øð &ð &�Ø”zÐ%>Ò>Ð>Ð>Ð>Ø”6˜S’=�=Øœ:¨¬Ò/Ð/Ð/Ð/ØœJð &ð &�DÝ# B¨Ñ-Ô-�EÝ% e­cµ5¨\Ñ:Ô:Ð:Ð:Ð:Ø  Aš:˜:˜:˜:˜:ð&ð	&ð &r/   Trì   z/returns empty list on FreeBSD and Linux aarch64F)	r4   Úcpu_freqr   r   r!   ró   r   r‡   rî   )r;   rQ  rI   s      r-   Útest_cpu_freqzTestCpuAPIs.test_cpu_freqI  s»   € ð
	&ð 	&ð 	&õ Œ_ DÐ)Ñ)Ô)ˆÝð 	•wð 	¨ð 	Ý”+ØAñô ð ð ˆˆ�2‰ŒˆØˆ•&”/¨Ð/Ñ/Ô/Ð0Ñ1Ô1Ð1åð 	1Ý�r‘7”7�fÔ.Ñ0Ô0Ò0Ð0Ð0Ð0ð	1ð 	1Ø0Ð0r/   c                 óž   — t          j        ¦   «         }t          |¦  «        dk    sJ ‚|D ]!}t          |t          ¦  «        sJ ‚|dk    sJ ‚Œ"d S )Nr€   r¶   )r4   Ú
getloadavgr‡   r¯   r°   )r;   ÚloadavgÚloads      r-   Útest_getloadavgzTestCpuAPIs.test_getloadavgd  se   € åÔ#Ñ%Ô%ˆÝ�7‰|Œ|˜qÒ Ð Ð Ð Øð 	ð 	ˆDÝ˜d¥EÑ*Ô*Ð*Ð*Ð*Ø˜3’;�;�;�;�;ð	ð 	r/   N)rm   rn   ro   r÷   rý   r  r	  r  r  r  r!   r¨   r©   r   r
   r"   r!  r)  r2  r6  r9  r<  rA  rI  r   rÍ   Úmachiner   rS  r   rX  r'   r/   r-   rê   rê   e  sñ  € € € € € ð
Ið 
Ið 
Ið	$ð 	$ð 	$ð ð  ð  ð
ð 
ð 
ð<2ð 2ð 2ð
ð 
ð 
ðD ð  ð  ð „[×ÒØÐ�wÐ'Cð ñ ô ð Ð�bÑÔðð ñ Ôñô ðð
ð 
ð 
ð,ð ,ð ,ð	9ð 	9ð 	9ð	2ð 	2ð 	2ð	ð 	ð 	ð
@ð 
@ð 
@ð!ð !ð !ð" „[×ÒØÐ/Ð"�(Ô"Ñ$Ô$¨Ò/Ð8Nð ñ ô ð „[×Ò˜LÐ(°ÐÑAÔAð1ð 1ñ BÔAñô ð1ð. „[×Ò˜NÐ*°?ÐÑCÔCðð ñ DÔCðð ð r/   rê   c                   ó   — e Zd Zej                             eoe d¬¦  «        d„ ¦   «         Zej                             e	 d¬¦  «        d„ ¦   «         Z
d„ Zd„ Zej                             eoej                             d¦  «         d	¬¦  «        ej                             eo ej        ¦   «          d
¬¦  «        d„ ¦   «         ¦   «         Zd„ ZdS )ÚTestDiskAPIszunreliable on PYPY32 + 32BITrr   c                 ó|  — 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        |j        k    s
J |¦   «         ‚|j        |j        k    s
J |¦   «         ‚d|j        cxk    rdk    sn J |j        ¦   «         ‚t          t          d¦  «        r„t          j        t          j        ¦   «         ¦  «        }d}|j        |j        k    sJ ‚t          |j        |j        z
  ¦  «        |k     sJ ‚t          s"t          |j        |j        z
  ¦  «        |k     sJ ‚|                      ¦   «         }t          j        t           ¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r×   rÜ   rÝ   rÖ   r   rÕ   Ú
disk_usagei  P )r4   r]  r2   ÚgetcwdrÞ   r×   rÜ   rÝ   rÖ   r“   Úshutilr  r   Ú
get_testfnr!   r[   ÚFileNotFoundError)r;   ÚusageÚshutil_usageÚ	toleranceÚfnames        r-   Útest_disk_usagezTestDiskAPIs.test_disk_usagen  s  € õ Ô!¥"¤)¡+¤+Ñ.Ô.ˆØŒ}Ð DÒDÐDÐDÐDàŒ{˜QŠˆˆ ‰ŒˆØŒz˜AŠ~ˆ~ˆ~˜u‰~Œ~ˆ~ØŒz˜AŠ~ˆ~ˆ~˜u‰~Œ~ˆ~ØŒ{˜UœZÒ'Ð'Ð'¨Ñ'Ô'Ð'ØŒ{˜UœZÒ'Ð'Ð'¨Ñ'Ô'Ð'Ø�E”MÐ(Ð(Ò(Ð( SÒ(Ð(Ð(Ð(Ð(¨%¬-Ñ(Ô(Ð(Ý•6˜<Ñ(Ô(ð 	Gå!Ô,­R¬Y©[¬[Ñ9Ô9ˆLØ'ˆIØ”; ,Ô"4Ò4Ð4Ð4Ð4Ý�u”z LÔ$5Ñ5Ñ6Ô6¸ÒBÐBÐBÐBÝð Gå˜5œ:¨Ô(9Ñ9Ñ:Ô:¸YÒFÐFÐFÐFð —’Ñ!Ô!ˆÝŒ]Õ,Ñ-Ô-ð 	%ð 	%ÝÔ˜eÑ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   ÆF1Æ1F5Æ8F5znot an ASCII fsc                 óœ   — t          j        t          ¦  «        5  t          j        t
          ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S rA   )r!   r[   ÚUnicodeEncodeErrorr4   r]  r   rk   s    r-   Útest_disk_usage_unicodez$TestDiskAPIs.test_disk_usage_unicode‹  sŠ   € õ Œ]Õ-Ñ.Ô.ð 	.ð 	.ÝÔ�nÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   šAÁAÁAc                 ó.   — t          j        d¦  «         d S )Nó   .)r4   r]  rk   s    r-   Útest_disk_usage_bytesz"TestDiskAPIs.test_disk_usage_bytes‘  s   € ÝÔ˜$ÑÔÐÐÐr/   c                 óÌ  — d„ }t          j        d¬¦  «        }|sJ ‚|D ]š} ||¦  «         t          r
d|j        v rŒt          s/t
          j                             |j        ¦  «        s
J |¦   «         ‚n|j         t
          j                             |j	        ¦  «        s
J |¦   «         ‚|j
        s
J |¦   «         ‚Œ›t          j        d¬¦  «        }|sJ ‚t          j        d¬¦  «        D ]Ã} ||¦  «         t          s¯|j	        r¨	 t          j        |j	        ¦  «         t
          j                             |j	        ¦  «        s
J |¦   «         ‚Œd# t          $ rR}t          r!t          r|j        t          j        k    rY d }~Œ–|j        t          j        t          j        hvr‚ Y d }~Œ»d }~ww xY wŒÄd„ } |t&          ¦  «        }d„ t          j        d¬¦  «        D ¦   «         }||v sJ ‚d S )Nc                 óæ   — t          | j        t          ¦  «        sJ ‚t          | j        t          ¦  «        sJ ‚t          | j        t          ¦  «        sJ ‚t          | j        t          ¦  «        sJ ‚d S rA   )r¯   Údevicerº   Ú
mountpointÚfstypeÚopts©rP  s    r-   Úcheck_ntuplez7TestDiskAPIs.test_disk_partitions.<locals>.check_ntuple•  sh   € Ý˜bœi­Ñ-Ô-Ð-Ð-Ð-Ý˜bœm­SÑ1Ô1Ð1Ð1Ð1Ý˜bœi­Ñ-Ô-Ð-Ð-Ð-Ý˜bœg¥sÑ+Ô+Ð+Ð+Ð+Ð+Ð+r/   F)ÚallÚcdromTc                 ó"  — t           j                             | ¦  «        } t           j                             | ¦  «        s>t           j                             | ¦  «        } t           j                             | ¦  «        ¯>|                      ¦   «         S rA   )r2   rï   ÚabspathÚismountÚdirnamerÎ   )rï   s    r-   Úfind_mount_pointz;TestDiskAPIs.test_disk_partitions.<locals>.find_mount_pointÀ  sd   € Ý”7—?’? 4Ñ(Ô(ˆDÝ”g—o’o dÑ+Ô+ð -Ý”w—’ tÑ,Ô,�õ ”g—o’o dÑ+Ô+ð -à—:’:‘<”<Ðr/   c                 óN   — g | ]"}|j         ¯	|j                              ¦   «         ‘Œ#S r'   )rp  rÎ   r*   s     r-   r.   z5TestDiskAPIs.test_disk_partitions.<locals>.<listcomp>Ç  s>   € ð 
ð 
ð 
àØŒ|ð
ØŒL×ÒÑ Ô ð
ð 
ð 
r/   )r4   Údisk_partitionsr   rr  r   r2   rï   rð   ro  rp  rq  ÚstatÚOSErrorr   r   ÚerrnoÚEIOÚEPERMÚEACCESÚ__file__)r;   rt  rI   Údiskr(  r{  ÚmountÚmountss           r-   Útest_disk_partitionsz!TestDiskAPIs.test_disk_partitions”  sR  € ð	,ð 	,ð 	,õ Ô#¨Ð.Ñ.Ô.ˆØˆ	ˆ	ˆ	Øð 	%ð 	%ˆDØˆL˜ÑÔÐÝð ˜7 d¤iÐ/Ð/ØÝð Ý”w—~’~ d¤kÑ2Ô2Ð8Ð8°DÑ8Ô8Ð8Ð8ð ”�å”7—>’> $¤/Ñ2Ô2Ð8Ð8°DÑ8Ô8Ð8Ø”;Ð$Ð$ Ñ$Ô$Ð$Ð$õ Ô#¨Ð-Ñ-Ô-ˆØˆ	ˆ	ˆ	ÝÔ*¨tÐ4Ñ4Ô4ð 	Að 	AˆDØˆL˜ÑÔÐÝð A˜tœð Að
AÝ”G˜DœOÑ,Ô,Ð,õ œ7Ÿ>š>¨$¬/Ñ:Ô:Ð@Ð@¸DÑ@Ô@Ð@Ð@øõ ð ð ð Ý%ð !­%ð !°C´IÅÄÒ4JÐ4JØ ˜˜˜˜ð ”y­¬µe´lÐ(CÐCÐCØð DÐCÐCÐCÐCøøøøðøøøøð	 ð 	 ð 	 ð !Ð ¥Ñ*Ô*ˆð
ð 
åÔ+°Ð5Ñ5Ô5ð
ñ 
ô 
ˆð
 ˜ˆˆˆˆˆˆs   ÄEÅ
F(Å#F#Å> F#Æ#F(z/proc/diskstatsz3/proc/diskstats not available on this linux versionr³   c                 ó0  — d„ }t          j        d¬¦  «        }|€
J d¦   «         ‚ ||¦  «         t          j        d¬¦  «        }t          |¦  «        t          t          |¦  «        ¦  «        k    sJ ‚|D ]}|s
J |¦   «         ‚ |||         ¦  «         Œ d S )Nc                 ó  — | d         | j         k    sJ ‚| d         | j        k    sJ ‚| d         | j        k    sJ ‚| d         | j        k    sJ ‚t          sˆt
          s�| d         | j        k    sJ ‚| d         | j        k    sJ ‚t          r:| d         | j	        k    sJ ‚| d         | j
        k    sJ ‚| d	         | j        k    sJ ‚nt          r| d         | j        k    sJ ‚| j        D ] }t          | |¦  «        dk    s
J | ¦   «         ‚Œ!d S )
Nr   r~   rM   r€   é   é   rú   é   é   )Ú
read_countÚwrite_countÚ
read_bytesÚwrite_bytesr
   r	   Ú	read_timeÚ
write_timer   Úread_merged_countÚwrite_merged_countÚ	busy_timer   rÞ   rÉ   )rP  r¹   s     r-   rt  z8TestDiskAPIs.test_disk_io_counters.<locals>.check_ntupleÖ  sM  € Ø�a”5˜BœMÒ)Ð)Ð)Ð)Ø�a”5˜BœNÒ*Ð*Ð*Ð*Ø�a”5˜BœMÒ)Ð)Ð)Ð)Ø�a”5˜BœNÒ*Ð*Ð*Ð*Ýð 1�vð 1Ø˜!”u ¤Ò,Ð,Ð,Ð,Ø˜!”u ¤Ò-Ð-Ð-Ð-Ýð 1Ø˜aœ5 BÔ$8Ò8Ð8Ð8Ð8Ø˜aœ5 BÔ$9Ò9Ð9Ð9Ð9Ø˜aœ5 B¤LÒ0Ð0Ð0Ð0Ð0Ýð 1Ø˜aœ5 B¤LÒ0Ð0Ð0Ð0Øœ
ð 2ð 2�Ý˜r 4Ñ(Ô(¨AÒ-Ð-Ð-¨rÑ-Ô-Ð-Ð-ð2ð 2r/   F©Úperdiskzno disks on this system?T)r4   Údisk_io_countersr‡   rH   ©r;   rt  ÚretrD   s       r-   Útest_disk_io_countersz"TestDiskAPIs.test_disk_io_countersÎ  s»   € ð	2ð 	2ð 	2õ" Ô%¨eÐ4Ñ4Ô4ˆØˆˆÐ :‰ŒˆØˆ�SÑÔÐÝÔ%¨dÐ3Ñ3Ô3ˆå�3‰xŒx�3�s 3™xœx™=œ=Ò(Ð(Ð(Ð(Øð 	#ð 	#ˆCØˆOˆO˜‰OŒOˆOØˆL˜˜SœÑ"Ô"Ð"Ð"ð	#ð 	#r/   c                 óÜ   — t          j        di ¬¦  «        5 }t          j        d¬¦  «        �J ‚t          j        d¬¦  «        i k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz#psutil._psplatform.disk_io_countersrÿ   Fr˜  T)r   rT   r4   rš  rd   ©r;   rf   s     r-   Útest_disk_io_counters_no_disksz+TestDiskAPIs.test_disk_io_counters_no_disksñ  sÈ   € õ ŒZØ1Àð
ñ 
ô 
ð 	àÝÔ*°5Ð9Ñ9Ô9ÐAÐAÐAÝÔ*°4Ð8Ñ8Ô8¸BÒ>Ð>Ð>Ð>Ø”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ó   —<A!Á!A%Á(A%N)rm   rn   ro   r!   r¨   r©   r   r   rf  r   ri  rl  rˆ  r   r2   rï   rð   r   r4   rš  r�  r   r'   r/   r-   r[  r[  m  sI  € € € € € Ø„[×ÒØÐ�X�Ð&Dð ñ ô ð%ð %ñô ð%ð4 „[×Ò˜H˜Ð->ÐÑ?Ô?ð.ð .ñ @Ô?ð.ð
 ð  ð  ð8ð 8ð 8ðt „[×ÒØÐ7�b”g—n’nÐ%6Ñ7Ô7Ð7ØDð ñ ô ð „[×ÒØÐ4Ð2˜6Ô2Ñ4Ô4Ð4Ð=Oð ñ ô ð#ð #ñô ñ	ô ð#ð8ð ð ð ð r/   r[  c                   ó  — e Zd Zej                             e d¬¦  «        d„ ¦   «         Zej                             e d¬¦  «        d„ ¦   «         Zd„ Z	d„ Z
d„ Zej                             epepe d¬¦  «        d	„ ¦   «         Zd
S )ÚTestNetAPIsrK  rr   c                 óè   — d„ }t          j        d¬¦  «        } ||¦  «         t          j        d¬¦  «        }|g k    sJ ‚|D ].}|sJ ‚t          |t          ¦  «        sJ ‚ |||         ¦  «         Œ/d S )Nc                 ó†  — | 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         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 | ¦   «         ‚| j        dk    s
J | ¦   «         ‚| j        dk    s
J | ¦   «         ‚d S )	Nr   r~   rM   r€   r‹  rŒ  rú   r�  )Ú
bytes_sentÚ
bytes_recvÚpackets_sentÚpackets_recvÚerrinÚerroutÚdropinÚdropoutrs  s    r-   rt  z6TestNetAPIs.test_net_io_counters.<locals>.check_ntupleÿ  s~  € Ø�a”5˜BœMÒ)Ð)Ð)Ð)Ø�a”5˜BœMÒ)Ð)Ð)Ð)Ø�a”5˜BœOÒ+Ð+Ð+Ð+Ø�a”5˜BœOÒ+Ð+Ð+Ð+Ø�a”5˜BœHÒ$Ð$Ð$Ð$Ø�a”5˜BœIÒ%Ð%Ð%Ð%Ø�a”5˜BœIÒ%Ð%Ð%Ð%Ø�a”5˜BœJÒ&Ð&Ð&Ð&Ø”= AÒ%Ð%Ð% rÑ%Ô%Ð%Ø”= AÒ%Ð%Ð% rÑ%Ô%Ð%Ø”? aÒ'Ð'Ð'¨Ñ'Ô'Ð'Ø”? aÒ'Ð'Ð'¨Ñ'Ô'Ð'Ø”8˜q’=�=�= "‘=”=�=Ø”9 ’>�>�> 2‘>”>�>Ø”9 ’>�>�> 2‘>”>�>Ø”: ’?�?�? B‘?”?�?�?�?r/   F©ÚpernicT)r4   Únet_io_countersr¯   rº   r›  s       r-   Útest_net_io_countersz TestNetAPIs.test_net_io_countersý  s¥   € ð	'ð 	'ð 	'õ$ Ô$¨EÐ2Ñ2Ô2ˆØˆ�SÑÔÐÝÔ$¨DÐ1Ñ1Ô1ˆØ�bŠyˆyˆyˆyØð 	#ð 	#ˆCØˆJˆJˆJÝ˜c¥3Ñ'Ô'Ð'Ð'Ð'ØˆL˜˜SœÑ"Ô"Ð"Ð"ð	#ð 	#r/   c                 óÜ   — t          j        di ¬¦  «        5 }t          j        d¬¦  «        �J ‚t          j        d¬¦  «        i k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nz"psutil._psplatform.net_io_countersrÿ   Fr®  T)r   rT   r4   r°  rd   rŸ  s     r-   Útest_net_io_counters_no_nicsz(TestNetAPIs.test_net_io_counters_no_nics  sÈ   € õ ŒZØ0¸rð
ñ 
ô 
ð 	àÝÔ)°Ð7Ñ7Ô7Ð?Ð?Ð?ÝÔ)°Ð6Ñ6Ô6¸"Ò<Ð<Ð<Ð<Ø”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	r¡  c           
      ó’  — t          j        ¦   «         }|s
J |¦   «         ‚t          j        ¦   «         }t          j        t          j        t           j        h}|                     ¦   «         D �]Ñ\  }}t          |t          ¦  «        sJ ‚t          t          |¦  «        ¦  «        t          |¦  «        k    sJ ‚|D �]�}t          |j        t          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚t          |j        t          t!          d ¦  «        f¦  «        sJ ‚t          |j        t          t!          d ¦  «        f¦  «        sJ ‚|j        |v sJ ‚t          |j        t$          j        ¦  «        sJ ‚||         j        �r|j        t          j        k    rNt          j        |j        ¦  «        5 }|                     |j        df¦  «         d d d ¦  «         n# 1 swxY w Y   n¢|j        t          j        k    r�t          j        |j        dt          j        t          j        dt          j        ¦  «        d         }|\  }	}
}}}t          j        |	|
|¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |j        |j        |j        |j        fD ].}|�*|j        t          j        k    rt5          ||j        ¦  «         Œ/|j        r
|j        �J ‚n|j        r	|j        �J ‚|j        r@|j        r9|j        t          j        t          j        hv r|j        t7          |¦  «        k    sJ ‚�Œƒ�ŒÓt8          st:          st<          r5t?          t          d¦  «        rt           j        t          j        k    sJ ‚d S d S t@          rt           j        t          j!        k    sJ ‚d S tD          rt           j        dk    sJ ‚d S d S )Nr   ÚAF_LINKr|   )#r4   Únet_if_addrsÚnet_if_statsÚsocketÚAF_INETÚAF_INET6rµ  Úitemsr¯   rº   r‡   rH   Úfamilyrß   ÚaddressÚnetmaskr¼   Ú	broadcastÚenumÚIntEnumÚisupÚbindÚgetaddrinfoÚSOCK_STREAMÚ
AI_PASSIVEÚptpr    r   r   r   r   r“   r   Ú	AF_PACKETr   )r;   ÚnicsÚ	nic_statsÚfamiliesÚnicÚaddrsÚaddrÚsra   ÚafÚsocktypeÚprotoÚ
_canonnameÚsaÚips                  r-   Útest_net_if_addrszTestNetAPIs.test_net_if_addrs%  s4  € ÝÔ"Ñ$Ô$ˆØÐÐ�TÑÔÐåÔ'Ñ)Ô)ˆ	õ ”N¥F¤OµV´^ÐDˆØŸ*š*™,œ,ð 4	Bñ 4	B‰JˆC�Ý˜c¥3Ñ'Ô'Ð'Ð'Ð'Ý•s˜5‘z”z‘?”?¥c¨%¡j¤jÒ0Ð0Ð0Ð0Øð 1Bñ 1B�Ý! $¤+­sÑ3Ô3Ð3Ð3Ð3Ý! $¤,µÑ4Ô4Ð4Ð4Ð4Ý! $¤,µµd¸4±j´jÐ0AÑBÔBÐBÐBÐBÝ! $¤.µ3½¸T¹
¼
Ð2CÑDÔDÐDÐDÐDØ”{ hÐ.Ð.Ð.Ð.Ý! $¤+­t¬|Ñ<Ô<Ð<Ð<Ð<Ø˜S”>Ô&ñ 'ð ”{¥f¤nÒ4Ð4Ý#œ]¨4¬;Ñ7Ô7ð 6¸1ØŸFšF D¤L°!Ð#4Ñ5Ô5Ð5ð6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6ð 6ð 6ð 6øøøð 6ð 6ð 6ð 6øàœ­¬Ò7Ð7Ý%Ô1Ø œLØÝ"œOÝ"Ô.ØÝ"Ô-ñ ô  ð ô ˜ð ?CÑ;˜˜H e¨Z¸Ý#œ]¨2¨x¸Ñ?Ô?ð 'À1ØŸFšF 2™JœJ˜Jð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð ”LØ”LØ”NØ”Hð	ð ?ð ?�Bð �~ð  œ;­&¬/Ò9Ð9Ý-¨b°$´+Ñ>Ô>Ð>øà”>ð 2Øœ8Ð+Ð+Ð+Ð+Ø”Xð 2Øœ>Ð1Ð1Ð1ð ”NðBàœðBð œ­¬½¼Ð'HÐHÐHàœ>­^¸DÑ-AÔ-AÒAÐAÐAÐAùñc1Bõf ð 	(•%ð 	(�5ð 	(Ý•v˜yÑ)Ô)ð 8Ý”~­¬Ò7Ð7Ð7Ð7ð8ð 8Ø7Ð7Ýð 	(Ý”>¥VÔ%5Ò5Ð5Ð5Ð5Ð5Ð5Ýð 	(Ý”> RÒ'Ð'Ð'Ð'ð	(ð 	(Ø'Ð's$   Æ1GÇGÇ!GÉI=É=JÊJc                 ó4  — t           rdt          j        dd d d fg}ndg}t          j        d|¬¦  «        5 }t          j        ¦   «         d         d         }|j        sJ ‚t           r|j        dk    sJ ‚n|j        dk    sJ ‚d d d ¦  «         d S # 1 swxY w Y   d S )	NÚem1z06:3d:29)rØ  r|   z06-3d-29NNNzpsutil._psplatform.net_if_addrsrÿ   r   z06:3d:29:00:00:00z06-3d-29-00-00-00)r   r4   rµ  r   rT   r¶  rd   r½  )r;   rœ  rf   rÎ  s       r-   Ú test_net_if_addrs_mac_null_bytesz,TestNetAPIs.test_net_if_addrs_mac_null_byteso  s  € õ ð 	>Ø�6œ>¨:°t¸TÀ4ÐHÐIˆCˆCà<Ð=ˆCÝŒZØ-¸Cð
ñ 
ô 
ð 	;àÝÔ&Ñ(Ô(¨Ô/°Ô2ˆDØ”8ˆOˆOˆOÝð ;Ø”|Ð':Ò:Ð:Ð:Ð:Ð:à”|Ð':Ò:Ð:Ð:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s   µABÂBÂBc                 ó�  — t          j        ¦   «         }|s
J |¦   «         ‚t           j        t           j        t           j        f}|                     ¦   «         D ]n\  }}t          |t          ¦  «        sJ ‚|\  }}}}}	t          |t          ¦  «        sJ ‚||v sJ ‚||v sJ ‚|dk    sJ ‚|dk    sJ ‚t          |	t          ¦  «        sJ ‚Œod S r­   )	r4   r·  ÚNIC_DUPLEX_FULLÚNIC_DUPLEX_HALFÚNIC_DUPLEX_UNKNOWNr»  r¯   rº   rÊ   )
r;   rÉ  Úall_duplexesr¹   ÚstatsrÂ  ÚduplexÚspeedÚmtuÚflagss
             r-   Útest_net_if_statszTestNetAPIs.test_net_if_stats�  sõ   € ÝÔ"Ñ$Ô$ˆØÐÐ�TÑÔÐåÔ"ÝÔ"ÝÔ%ð
ˆð
  Ÿ:š:™<œ<ð 	*ð 	*‰KˆD�%Ý˜d¥CÑ(Ô(Ð(Ð(Ð(Ø.3Ñ+ˆD�&˜%  eÝ˜d¥DÑ)Ô)Ð)Ð)Ð)Ø˜\Ð)Ð)Ð)Ð)Ø˜\Ð)Ð)Ð)Ð)Ø˜A’:�:�:�:Ø˜!’8�8�8�8Ý˜e¥SÑ)Ô)Ð)Ð)Ð)Ð)ð	*ð 	*r/   zLINUX or BSD or MACOS specificc                 óÞ   — t          j        dt          t          j        d¦  «        ¬¦  «        5 }t          j        ¦   «         }|i k    sJ ‚|j        sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzpsutil._psutil_posix.net_if_mtur_   rN   )r   rT   r  r€  ÚENODEVr4   r·  rd   )r;   rf   rœ  s      r-   Útest_net_if_stats_enodevz$TestNetAPIs.test_net_if_stats_enodev“  s¹   € õ
 ŒZØ-Ý¥¤¨bÑ1Ô1ð
ñ 
ô 
ð 	ð ÝÔ%Ñ'Ô'ˆCØ˜"’9�9�9�9Ø”8ˆOˆOˆOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ¯%A"Á"A&Á)A&N)rm   rn   ro   r!   r¨   r©   r   r±  r³  rÖ  rÙ  rä  r   r   r   rç  r'   r/   r-   r£  r£  ü  s÷   € € € € € Ø„[×ÒÐ/Ð/¸ÐÑHÔHð#ð #ñ IÔHð#ð8 „[×ÒÐ/Ð/¸ÐÑHÔHðð ñ IÔHððH(ð H(ð H(ðT;ð ;ð ;ð$*ð *ð *ð$ „[×ÒØÐ"�cÐ"˜UÐ#Ð,Lð ñ ô ðð ñô ðð ð r/   r£  c                   ó„  — e Zd Zej                             e d¬¦  «        d„ ¦   «         Zej                             e d¬¦  «        d„ ¦   «         Zej                             e	 d¬¦  «        ej                             e
 d¬¦  «        d„ ¦   «         ¦   «         Zej                             e d¬¦  «        d„ ¦   «         ZdS )	ÚTestSensorsAPIsrK  rr   c                 óH  — t          j        ¦   «         }|                     ¦   «         D ]y\  }}t          |t          ¦  «        sJ ‚|D ]Z}t          |j        t          ¦  «        sJ ‚|j        �|j        dk    sJ ‚|j        �|j        dk    sJ ‚|j        �|j        dk    sJ ‚Œ[Œzd S r­   )	r4   Úsensors_temperaturesr»  r¯   rº   ÚlabelrN  ÚhighÚcritical)r;   Útempsr¹   ÚentriesÚentrys        r-   Útest_sensors_temperaturesz)TestSensorsAPIs.test_sensors_temperatures¢  sÅ   € åÔ+Ñ-Ô-ˆØ"Ÿ[š[™]œ]ð 		/ð 		/‰MˆD�'Ý˜d¥CÑ(Ô(Ð(Ð(Ð(Ø ð /ð /�Ý! %¤+­sÑ3Ô3Ð3Ð3Ð3Ø”=Ð,Ø œ=¨AÒ-Ð-Ð-Ð-Ø”:Ð)Ø œ:¨š?˜?˜?˜?Ø”>Ð-Ø œ>¨QÒ.Ð.Ð.Ð.øð/ð		/ð 		/r/   c                 ó  — ddgi}t          j        d|¬¦  «        5 }t          j        d¬¦  «        d         d         }|j        sJ ‚|j        dk    sJ ‚|j        d	k    sJ ‚|j        d
k    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )NÚcoretemp)rì  g      I@g      N@g     €Q@z'psutil._psplatform.sensors_temperaturesrÿ   T)Ú
fahrenheitr   g     €^@g     €a@g     Àc@)r   rT   r4   rë  rd   rN  rí  rî  )r;   Údrf   rï  s       r-   Ú#test_sensors_temperatures_fahreneitz3TestSensorsAPIs.test_sensors_temperatures_fahreneit°  sò   € àÐ5Ð6Ð7ˆÝŒZØ5ÀAð
ñ 
ô 
ð 	+àÝÔ/¸4Ð@Ñ@Ô@ÀÔLÈQÔOˆEØ”8ˆOˆOˆOØ”= EÒ)Ð)Ð)Ð)Ø”: Ò&Ð&Ð&Ð&Ø”> UÒ*Ð*Ð*Ð*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   œAA<Á<B ÂB z
no batteryc                 ó.  — t          j        ¦   «         }|j        dk    sJ ‚|j        dk    sJ ‚|j        t           j        t           j        hvr|j        dk    sJ ‚n|j        t           j        k    r	|j        sJ ‚t          |j        t          ¦  «        sJ ‚d S )Nr   rÕ   )	r4   Úsensors_batteryrÖ   ÚsecsleftÚPOWER_TIME_UNKNOWNÚPOWER_TIME_UNLIMITEDÚpower_pluggedr¯   rÊ   )r;   rœ  s     r-   Útest_sensors_batteryz$TestSensorsAPIs.test_sensors_battery¼  s®   € õ Ô$Ñ&Ô&ˆØŒ{˜aÒÐÐÐØŒ{˜cÒ!Ð!Ð!Ð!ØŒ<ÝÔ%ÝÔ'ð 
ð 
ð 
ð ”< 1Ò$Ð$Ð$Ð$Ð$ØŒ\�VÔ8Ò8Ð8ØÔ$Ð$Ð$Ð$Ý˜#Ô+­TÑ2Ô2Ð2Ð2Ð2Ð2Ð2r/   c                 ó"  — t          j        ¦   «         }|                     ¦   «         D ]f\  }}t          |t          ¦  «        sJ ‚|D ]G}t          |j        t          ¦  «        sJ ‚t          |j        t          ¦  «        sJ ‚|j        dk    sJ ‚ŒHŒgd S r­   )r4   Úsensors_fansr»  r¯   rº   rì  rN  rß   )r;   Úfansr¹   rð  rñ  s        r-   Útest_sensors_fansz!TestSensorsAPIs.test_sensors_fansË  s¥   € åÔ"Ñ$Ô$ˆØ!ŸZšZ™\œ\ð 	*ð 	*‰MˆD�'Ý˜d¥CÑ(Ô(Ð(Ð(Ð(Ø ð *ð *�Ý! %¤+­sÑ3Ô3Ð3Ð3Ð3Ý! %¤-µÑ5Ô5Ð5Ð5Ð5Ø”}¨Ò)Ð)Ð)Ð)Ð)ð*ð	*ð 	*r/   N)rm   rn   ro   r!   r¨   r©   r   rò  r÷  r   r   rþ  r   r  r'   r/   r-   ré  ré  ¡  s  € € € € € Ø„[×ÒÐ4Ð4¸_ÐÑMÔMð/ð /ñ NÔMð/ð „[×ÒÐ4Ð4¸_ÐÑMÔMð	+ð 	+ñ NÔMð	+ð „[×ÒÐ/Ð/¸ÐÑHÔHØ„[×Ò˜K˜°ÐÑ=Ô=ð3ð 3ñ >Ô=ñ IÔHð3ð „[×ÒÐ,Ð,°_ÐÑEÔEð*ð *ñ FÔEð*ð *ð *r/   ré  )8Ú__doc__r¿   rÀ  r€  r2   rÍ   r$  r_  r–   r¸  rÌ   r’   Úunittestr   r4   r   r   r   r   r   r	   r
   r   r   r   Úpsutil._commonr   Úpsutil.testsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r$   rq   r«   rÓ   rê   r[  r£  ré  r'   r/   r-   ú<module>r     sJ  ðð Ð à €€€Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø  Ð  Ð  Ð  Ð  Ð  Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø !Ð !Ð !Ð !Ð !Ð !Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )ðE ð E ð E ð E ð E �nñ E ô E ð E ðPc.ð c.ð c.ð c.ð c.�nñ c.ô c.ð c.ðLL3ð L3ð L3ð L3ð L3�>ñ L3ô L3ð L3ð^("ð ("ð ("ð ("ð ("�^ñ ("ô ("ð ("ðVEð Eð Eð Eð E�.ñ Eô Eð EðPLð Lð Lð Lð L�>ñ Lô Lð Lð^bð bð bð bð b�.ñ bô bð bðJ2*ð 2*ð 2*ð 2*ð 2*�nñ 2*ô 2*ð 2*ð 2*ð 2*r/   